Rom*_*ski 5 java verify x509certificate android-6.0-marshmallow
我在 Android 6.0 及更高版本上验证使用 SHA384 的 ECDSA 签名的证书时遇到问题。但是,它适用于 Android 4.1 - 5.1。我将其追溯到证书类中的错误。在 verify 方法中抛出异常:
java.lang.RuntimeException: error:0f092074:elliptic curve routines:ec_asn1_pkparameters2group:NON_NAMED_CURVE
Run Code Online (Sandbox Code Playgroud)
知道为什么 Android 6.0 会发生这种情况以及如何修复吗?我已经使用 Spongycastle 作为安全提供程序对其进行了测试,但是 verify 函数总是抛出该异常。
感谢和问候
终于找到了问题 - 不是签名本身的验证问题,而是加载包含 ec 公钥的中间证书。
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:
Run Code Online (Sandbox Code Playgroud)
这就引出了一个问题——为什么 BoringSSL 在解码这个证书中的公钥时有问题?我想这一定是 BoringSSL 中的一个错误。我用 OpenSSL 检查了证书,那里没有问题。
当在加载中间证书并稍后验证文档签名证书的签名时明确使用 Spongycastle 提供程序时,一切正常。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |