2016-06-07 1 views
3

У меня проблемы с проверкой сертификата, подписанного с ECDSA с SHA384 на Android 6.0 и выше. Тем не менее, он работает для Android 4.1 - 5.1. Я отследил его до ошибки в классе Certificate. Исключение в методе проверки:Проблемы с проверкой подписи для ecdsa-with-SHA384 на Android 6

java.lang.RuntimeException: error:0f092074:elliptic curve routines:ec_asn1_pkparameters2group:NON_NAMED_CURVE 

Любая идея, почему это происходит с Android 6.0 и как это можно исправить? Я уже тестировал его с помощью Spongycastle в качестве поставщика безопасности, но функция проверки всегда выбрасывает это исключение.

Благодарности & Привет

ответ

4

Наконец нашел вопрос - не проверка подписи сама была проблема, но загрузка промежуточного сертификата, который держит открытый ключ ес.

Subject Public Key Info: 
     Public Key Algorithm: id-ecPublicKey 
     Unable to load Public Key 
2536673920:error:0f092074:elliptic curve routines:ec_asn1_pkparameters2group:NON_NAMED_CURVE:external/boringssl/src/crypto/ec/ec_asn1.c:225: 
2536673920:error:0f07f076:elliptic curve routines:d2i_ECPKParameters:PKPARAMETERS2GROUP_FAILURE:external/boringssl/src/crypto/ec/ec_asn1.c:253: 
2536673920:error:0f08000f:elliptic curve routines:d2i_ECParameters:elliptic curve routines:external/boringssl/src/crypto/ec/ec_asn1.c:503: 
2536673920:error:0608808f:public key routines:eckey_type2param:DECODE_ERROR:external/boringssl/src/crypto/evp/p_ec_asn1.c:140: 
2536673920:error:0608600f:public key routines:eckey_pub_decode:elliptic curve routines:external/boringssl/src/crypto/evp/p_ec_asn1.c:180: 
2536673920:error:0b07c07c:X.509 certificate routines:X509_PUBKEY_get:PUBLIC_KEY_DECODE_ERROR:external/boringssl/src/crypto/x509/x_pubkey.c:168: 

Это приводит к вопросу - почему BoringSSL имеет проблемы с расшифровкой открытого ключа в этом сертификате? И я предполагаю, что это должно быть ошибкой в ​​BoringSSL. Я проверил сертификат с OpenSSL и не имел никаких проблем.

Когда поставщик Spongycastle явно используется при загрузке промежуточного сертификата, а затем проверяет подпись сертификата подписи документа, все работает нормально.

+0

СПАСИБО! Это решило мою проблему и для использования secp256k1. Я получал: java.security.InvalidKeyException: java.lang.RuntimeException: error: 0f00007b: процедуры эллиптической кривой: OPENSSL_internal: UNKNOWN_GROUP – joakimb

Смежные вопросы