- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在努力通过使用 ECDSA 实现 DTLS 1.2 握手来取得成功,但我在使用客户端证书时遇到了问题。当我生成它时,subjectPublicKeyInfo 似乎不正确:在 wireshark 中,我没有在算法中看到 ECParameters: namedCurve
,我似乎得到了一个未解析的 OID。
我正在像这样生成证书(我希望这充满了错误,我希望那里有任何指导!):
生成 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/
我获取了一个开源代码,并尝试在我的项目中使用它,但出现此错误:X509Generator 类型的方法SubjectKeyIdentifier(SubjectPublicKeyInfo) 未定义。我的代
我正在努力通过使用 ECDSA 实现 DTLS 1.2 握手来取得成功,但我在使用客户端证书时遇到了问题。当我生成它时,subjectPublicKeyInfo 似乎不正确:在 wireshark 中
尝试使用我的应用传输肥皂请求时,我收到 NoClassDefFoundError。 我读到,NoClassDefFoundError 通常可能是由初始化相关类的异常引起的,但我查看了日志,这是应用程序
N Developer Preview 中有关其网络安全配置的文档提供了以下说明: Certificate pinning is done by providing a set of certific
我正在构建一个 oauth 1.0a 服务,它将被 Jira 中的一个小工具使用,它是一个用 C# 编写的 .Net 3.5 应用程序。 Jira 使用 RSA-SHA1 签名方法向此服务发出请求,这
我是一名优秀的程序员,十分优秀!