gpt4 book ai didi

java - EC_SIGN_P256_SHA256 的 BouncycaSTLe 算法标识符

转载 作者:行者123 更新时间:2023-12-01 19:40:42 24 4
gpt4 key购买 nike

我需要使用来自 google KMS 的 key 签署证书,然后验证,即将到来的证书实际上是使用该 key 签署的。我使用 bouncycaSTLe 提供程序来处理大多数内容,但无法为 EC_SIGN_P256_SHA256(Google 用于签署内容的算法)找到正确的 AlgorithmIdentifier。

证书创建如下所示:

X509v3CertificateBuilder certificateBuilder = new X509v3CertificateBuilder(...);
ContentSigner contentSigner = new ContentSigner() {
...
public AlgorithmIdentifier getAlgorithmIdentifier() {
return new AlgorithmIdentifier(X9ObjectIdentifiers.prime256v1); // wrong
}

public byte[] getSignature() {
byte[] messageHash = MessageDigest.getInstance("SHA-256").digest(this.out.toByteArray());
return signAsymmetric(getKmsKeyName(), messageHash);
}
}
X509CertificateHolder certificateHolder = certificateBuilder.build(contentSigner);
Certificate cert = new JcaX509CertificateConverter().getCertificate(certificateHolder);

signAsymmetry - 或多或少是从谷歌示例中复制粘贴的,看起来没问题。

验证是这样完成的:

public void verifyCertificate(Certificate signatureCertificate) {
PublicKey publicKey = getAsymmetricPublicKey(getKmsKeyName());
signatureCertificate.verify(publicKey);
}

如果我在signatureCertificate.verify(...)上使用prime256v1,它会给出“java.security.NoSuchAlgorithmException:1.2.840.10045.3.1.7签名不可用”,而对于其他一些算法,它只会给出签名验证异常。那么正确的方法或算法 id 应该使用什么?或者根本不可能以这种方式实现?

最佳答案

我相信您会需要X9ObjectIdentifiers.ecdsa_with_SHA256

关于java - EC_SIGN_P256_SHA256 的 BouncycaSTLe 算法标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55474669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com