gpt4 book ai didi

ssl - 无法获取 EC 参数 : namedcurve in subjectPublicKeyInfo of certificate

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:25 30 4
gpt4 key购买 nike

我正在努力通过使用 ECDSA 实现 DTLS 1.2 握手来取得成功,但我在使用客户端证书时遇到了问题。当我生成它时,subjectPublicKeyInfo 似乎不正确:在 wireshark 中,我没有在算法中看到 ECParameters: namedCurve,我似乎得到了一个未解析的 OID。

我的期望: What I expect我所看到的: What I see

我正在像这样生成证书(我希望这充满了错误,我希望那里有任何指导!):

生成 key 对:

private fun generateEcKeyPair(): AsymmetricCipherKeyPair {
val generator = ECKeyPairGenerator()

val curveSpec = ECNamedCurveTable.getParameterSpec("secp256r1")
generator.init(
ECKeyGenerationParameters(
ECDomainParameters(
curveSpec.curve,
curveSpec.g,
curveSpec.n,
curveSpec.h,
curveSpec.seed
),
SecureRandom()
)
)
return generator.generateKeyPair()
}

生成证书(使用上述方法生成的 key 对):

private fun generateX509Certificate(
subject: X500Name,
keyPair: AsymmetricCipherKeyPair
): org.bouncycastle.asn1.x509.Certificate {
val now = System.currentTimeMillis()
val notBefore = Date(now - Duration.ofDays(1).toMillis())
val notAfter = Date(now + Duration.ofDays(7).toMillis())

val certBuilder = X509v3CertificateBuilder(
subject,
BigInteger.valueOf(now),
notBefore,
notAfter,
subject,
SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(keyPair.public)
)
val signatureAlgoIdentifier =
DefaultSignatureAlgorithmIdentifierFinder().find(signatureAlgo)
val digestAlgoIdentifier =
DefaultDigestAlgorithmIdentifierFinder().find(signatureAlgoIdentifier)
val signer =
BcECContentSignerBuilder(signatureAlgoIdentifier, digestAlgoIdentifier).build(keyPair.private)

return certBuilder.build(signer).toASN1Structure()
}

我在这里做错了什么?我大致走在正确的轨道上吗?

最佳答案

我想我设法解决了这个问题。我将 generateEcKeyPair 实现更改为以下内容(在添加 BouncyCaSTLeProvider 作为提供者之后):

fun generateEcKeyPair(): KeyPair {
val keyGen = KeyPairGenerator.getInstance("EC", "BC")
val ecCurveSpec = ECNamedCurveTable.getParameterSpec("secp256r1")

keyGen.initialize(ecCurveSpec)

return keyGen.generateKeyPair()
}

看起来我现在正在证书中正确命名曲线。

可能是我之前传错了参数?或者手动创建它没有正确保留命名曲线?

关于ssl - 无法获取 EC 参数 : namedcurve in subjectPublicKeyInfo of certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55564289/

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