java-Android 6上的ecdsa-with-SHA384的签名验证问题

我在验证在Android 6.0及更高版本上使用SHA384与ECDSA签名的证书时遇到问题.但是,它适用于Android 4.1-5.1.我将其跟踪到Certificate类中的错误.在verify方法中抛出一个异常:

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

知道为什么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:

这就引出了一个问题-为什么BoringSSL在解码此证书中的公钥时会遇到问题?而且我想这一定是BoringSSL中的错误.我用OpenSSL检查了证书,那里没有问题.

当在加载中间证书并稍后验证文档签名证书的签名时显式使用Spongycastle Provider时,一切正常.

上一篇:腾讯防水墙实现验证码


下一篇:linux-如何强制rpm -V验证所有文件?