iOS FIDO2 BLE Authenticator: неверная кодировка для подписи - PullRequest
0 голосов
/ 17 октября 2019

Я разрабатываю аутентификатор iOS BLE. На данный момент я могу зарегистрироваться, используя НЕТ аттестации. Когда я пытаюсь подтвердить подлинность «Недопустимая кодировка для подписи».

Как я хочу сделать NONE и SURROGATE, следует https://www.w3.org/TR/webauthn/ раздел 6.4.5. Форматы подписи для упакованной аттестации, аттестации FIDO U2F и подписи подтверждения. В нем говорится следующее:

Для COSEAlgorithmIdentifier -7 (ES256) и других алгоритмов на основе ECDSA значение сигнатуры кодируется как значение Ecdsa-Sig DER ASN.1, как определено в [RFC3279]. раздел 2.2.3

    Example:
    30 44; SEQUENCE (68 Bytes)             02 20; INTEGER (32 Bytes)
        |  3d 46 28 7b 8c 6e 8c 8c  26 1c 1b 88 f2 73 b0 9a
        |  32 a6 cf 28 09 fd 6e 30  d5 a7 9f 26 37 00 8f 54
        02 20                            ; INTEGER (32 Bytes)
        |  4e 72 23 6e a3 90 a9 a1  7b cf 5f 7a 09 d6 3a b2
        |  17 6c 92 bb 8e 36 c0 41  98 a2 7b 90 9b 6e 8f 13

My IOS кодируются подпись: 30450221008dec31cc36160522df4419935dd0aa6b5c198b946a90b19a47fd8927d57ceb6502201de973a69e7927e7eadace24bf7de352f38f5e0280c2364f3c108d28ec1d7fa1

1013 * Android кодируются подпись: 304502200ea2e7de7c97c4594148b9a0bc6bd8dcffdf3a5e4cbab2d20f186039768db75d022100e627ac5c71c082f85d5bea2afd212fddd80438e5cfebf1d3d02e149512ebc528

ПриЯ передаю подпись Android на сервер Java, она успешно проверена. Но iOS всегда выдает следующую ошибку:

at com.xxx.fido2.processor.TestSignature.main(TestSignature.java:21) . 
Caused by: java.security.SignatureException: Invalid encoding for signature . 
at sun.security.ec.ECDSASignature.decodeSignature(ECDSASignature.java:468) . 
Caused by: java.security.SignatureException: Invalid encoding for signature . 

at sun.security.ec.ECDSASignature.engineVerify(ECDSASignature.java:390) . 
... 4 more . 
Caused by: java.io.IOException: Sequence tag error . 
Caused by: java.io.IOException: Sequence tag error . 
Caused by: java.security.SignatureException: Invalid encoding for signature . 

at sun.security.ec.ECDSASignature.engineVerify(ECDSASignature.java:390) . 
... 4 more . 
Caused by: java.io.IOException: Sequence tag error . 
Caused by: java.io.IOException: Sequence tag error .

Любая помощь будет оценена. Заранее спасибо.

...