我正在构建iOS ble fido2身份验证器。收到注册请求后,将以下注册响应(无证明)作为3个块发送(块大小为101)。还确保已成功接收到块,但webauthn客户端未发送任何错误/确认/未更改用户界面。
长期困扰这个问题。无法找到以下响应出了什么问题。
[131,0,237,0,163,1,100,110,111,110,101,2,88,224,116,166,234,146,19,201,156,47,116, 178、36、146、179、32、207、64、38、42、148、193、169、80、160、57、127、41、37、11、96、132、30、240、69、217, 93、96、1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、32、51、85、191、68、43 240、76、144、137、91、65、40、160、206、219、169、96、183、153、21、21、63、46、204、106、131、137、30、106、102, 13,92,99,165,1,2,3,38,32,1,33,152,32,24,138,24,231,24,213,24,124,24,203,24,71, 24、212、24、46、16、24、184、24、207、24、210、24、170、24、59、24、99、24、39、24、250、24、81、24、98, 24、27、24、25、24、39、24、75、24、202、24、62、24、163、24、64、24、126、24、214、24、63、24、247、24, 197、34、152、32、12、24、214、24、121、24、78、24、132、24、152、24、104、12、18、24、120、24、156、24、177, 24、101、24、45、24、227、24、177、24、213、24、151、24、76、24、136、24、121、24、39、24、47、24、153、24, 196、24、24、24、100、24、82、24、163、24、83、24 ,193,24,38,3,160]
[131,0,237,0,......] 131 =>味精 0 => LLen 237 =>赫伦 0 =>成功 然后是authData。...
AUTHDATA(224个字节) [116、166、234、146、19、201、156、47、116、178、36、146、179、32、207、64、38、42、148、193、169、80、160、57、127 ,41、37、11、96、132、30、240、69、217、93、96、1、0、0、0、0、0、0、0、0、0、0、0、0 ,0,0,0,32,51,85,191,68,43,240,76,144,137,91,65,40,160,206,219,169,96,183,153,21,21 ,63,46,204,106,131,137,30,106,102,13,92,99,165,1,2,3,38,32,1,33,152,32,24,138,24 ,231、24、213、24、124、24、203、24、71、24、212、24、46、16、24、184、24、207、24、210、24、170、24、59、24 ,99、24、39、24、250、24、81、24、98、24、27、24、25、24、39、24、75、24、202、24、62、24、163、24、64 ,24,126,24,214,24,63,24,247,24,197,34,152,32,12,24,214,24,121,24,78,24,132,24,152,24 ,104,12,18,24,120,24,156,24,177,24,101,24,45,24,227,24,177,24,213,24,151,24,76,24,136 ,24、121、24、39、24、47、24、153、24、196、24、24、24、100、24、82、24、163、24、83、24、193、24、38] < / p>
1. RPID => [116, 166, 234, 146, ..., 240] position: {0 - 31} 32 BYTES
2. Flags => [69] position: {32} 1 BYTE
3. Counter => [217, 93, 96, 1] position: {33 - 36} 4 BYTES
4. Attestation Cred Data=> below
目标凭证数据(187字节) [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,51,85,191,68,43,240,76,144 ,137,91,65,40,160,206,219,169,96,183,153,21,21,63,46,204,106,131,137,30,106,102,13,92,99 ,165、1、2、3、38、32、1、33、152、32、24、138、24、231、24、213、24、124、24、203、24、71、24、212、24 ,46、16、24、184、24、207、24、210、24、170、24、59、24、99、24、39、24、250、24、81、24、98、24、27、24 ,25,24,39,24,75,24,202,24,62,24,163,24,64,24,126,24,214,24,63,24,247,24,197,34,152 ,32、12、24、214、24、121、24、78、24、132、24、152、24、104、12、18、24、120、24、156、24、177、24、101、24 ,45,24,227,24,177,24,213,24,151,24,76,24,136,24,121,24,39,24,47,24,153,24,196,24,24 ,24、100、24、82、24、163、24、83、24、193、24、38]
1. AAGUID => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] position: {0 - 15} 16 BYTES
2. CredID len => [32] position: {17} 2 BYTES
3. CredID => [51, 85, 191, ... 92] position: {18....48} 32 BYTES
4. PubKey => [99, 165, ..., 38] position: {18....48} 138 BYTES
答案 0 :(得分:2)
我相信您在蓝牙通信中遇到了 MTU 问题
让我们说这是从身份验证者到客户端的凭据响应
8303F300A301667061636B65640258A4C46CEF82AD1B546477591D008B08759EC3E6D2ECB4F39474BFEA6969925D03B7450000000000112233445566778899AABBCCDDEEFF0020C04206F5430D6A902F2BFBDD063BD9FCE9FB68B10FC99DA93A01A51268D8E690A501020326200121582016B52F38710D6C002E47F8A7DF3AFA388C784F1A336B4182C004E16C137F9C992258209504397DCD350EFEC42AB01AE39ABE64B7B7C52531B470D0FE10C1FEDBFB2E7203A363616C67266373696758473045022100ADF472CC5BAB76EF5A8E23155525C74496C3E91EA81F0CFDDF2D353C2159BC78022052AC7BB3F403BE90C76BF7021FBE4FF909DB6319FE397C9897B4571172405CDE63783563815902E6308202E2308201CAA0030201020209009FA732A3246276C3300D06092A864886F70D01010B0500306B310B3009060355040613025347310B300906035504080C025347310F300D06035504070C064C6F6E646F6E310E300C060355040A0C05562D6B6579310B3009060355040B0C0250533121301F06035504030C184174746573746174696F6E20497373756572202D2042414F301E170D3139303631343034333132385A170D3239303631313034333132385A308183310B3009060355040613025347310B300906035504080C025347310F300D06035504070C064C6F6E646F6E3 10C300A060355040A0C0342414F31223020060355040B0C1941757468656E74696361746F72204174746573746174696F6E3124302206035504030C1B4174746573746174696F6E20636572746963617465202D2042414F3059301306072A8648CE3D020106082A8648CE3D0301070342000470E8468E66B1234C67E7BC5348CA5B9F47CA321B0D2D367376C6DAFFB6283B7C7AF8E05B05784A1ABE7273AD77C6655E2BC86AD491A89F284FC72007A07592EEA33B3039301F0603551D230418301680145D556C2CC12DCD2D0EAB8A62A01F875F5E499BDA30090603551D1304023000300B0603551D0F0404030204F0300D06092A864886F70D01010B050003820101004FD8C7397DAA3BA23987282466F10CA754A2CE6ADD223F70C0977D672A36CD9A15B6476077C31B5E3E7BFFEB42D0EBCE819272A503B2710A1501B91E063B3DBAC79B3532AB063CA00EF7A644BE57BF2781710D93C50974CB209629135B1AE7904C56E6858FC3BD2F3DBBD90034D8A2B85E1A6EADCED52E62482B77739F1AB63391F1658E7BF3F7101C2665E2735E68635F0DBC70BE50E519503D4739FAB1D424AF966BCCD1A1098756A4B2E91CA37B38777FE1394E2BC007248B4317FA90E72760A4BCC45A7F9A9BC79B2012F67EF7FEC3899A52B816D5BFD42CA47E8EAF58FDD5F873D4CD1C9B32CD0AD7392E8046712 E9007E1D7FEFBD3D0EF91A5B20A2E19
例如,大小为1014字节,而MTU仅为101字节。
您需要做的是将其拆分为101个字节的数据包
8303F300A301667061636B65640258A4C46CEF82AD1B546477591D008B08759EC3E6D2ECB4F39474BFEA6969925D03B7450000000000112233445566778899AABBCCDDEEFF0020C04206F5430D6A902F2BFBDD063BD9FCE9FB68B1099
00E690A501020326200121582016B52F38710D6C002E47F8A7DF3AFA388C784F1A336B4182C004E16C137F9C992258209504397DCD350EFEC42AB01AE39ABE64B7B7C52531B470D0FE10C1FEDBFB2E7203A363616472630
01CC5BAB76EF5A8E23155525C74496C3E91EA81F0CFDDF2D353C2159BC78022052AC7BB3F403BE90C76BF7021FBE4FF909DB6319FE397C9897B4571172405CDE63783563815902E6308202E2308201CAA00302010600900276
02864886F70D01010B0500306B310B3009060355040613025347310B300906035504080C025347310F300D06035504070C064C6F6E646F6E310E300C060355040A0C05562D6B6579310B3009060355040B0C0250533121301F06035504030C184174746
03746174696F6E20497373756572202D2042414F301E170D3139303631343034333132385A170D3239303631313034333132385A308183310B3009060355040613025347310B300906035504080C025347310F300D06035504070C064C6F6E646F6E310C30
040A060355040A0C0342414F31223020060355040B0C1941757468656E74696361746F72204174746573746174696F6E3124302206035504030C1B4174746573746174696F6E20636572746946963617465202D2042414F3059301306072A8648CE3D02010608
052A8648CE3D0301070342000470E8468E66B1234C67E7BC5348CA5B9F47CA321B0D2D367376C6DAFFB6283B7C7AF8E05B0578405
062D0EAB8A62A01F875F5E499BDA30090603551D1304023000300B0603551D0F0404030204F0300D06092A864886F70D01010B050003820101004FD8C7397DAA3BA23987282466F10CA754A2CE6ADD223F70C0977D672A6E7B43E7B
07EB42D0EBCE819272A503B2710A1501B91E063B3DBAC79B3532AB063CA00EF7A644BE57BF2781710D93C50974CB209629135B1AE7904C56E6858FC3BD2F3DBBD90034D8A2B85E1A6EADCE52E6248222F7B1F1F2F1E1F1E1E1E1E6E1E1E6E1E1E6E1E1E6E1E1E1E6E1E1E6E1E1E6E1E1E6E1E1E6E1E1E1E1E6E1E1E1E1E6E1E1E1E1E1E1
08635F0DBC70BE50E519503D4739FAB1D424AF966BCCD1A1098756A4B2E91CA37B38777FE1394E2BC007248B4317FA90E72760A4BCC45A7F9A9BC79B2012F67EF7FEC3899A52B816D5BFD42CA7E9F9C7E7F3D4D7D7F7D7F3D3D3D3D3D3D3D3D3D3D3D3D3D2E3D2E3D2E3D2D3D3D3D3D3D3D3D1E7
09E1D7FEFBD3D0EF91A5B20A2E19
请注意,每个数据包中都有一个序列号,第一个字节。
对于每个数据包,您可以使用以下方法:
result = peripheralManager.updateValue(packet, for: <...>, onSubscribedCentrals: <...>)
请检查结果,如果结果为FALSE,则应调用此方法
func peripheralManagerIsReady(toUpdateSubscribers peripheral: CBPeripheralManager)
继续发送其余数据包