Java 使用BouncyCastle,如何为任何类型的密钥算法生成证书?
我想在Java 使用BouncyCastle,如何为任何类型的密钥算法生成证书?,java,android,bouncycastle,Java,Android,Bouncycastle,我想在AndroidKeyStore中存储一个密钥对,这需要创建一个证书。适用于RSA密钥,但在我的示例中,KeyPair由ssh库提供,可以是多种密钥,包括DSA、RSA、EC和Ed25519密钥 我想出了这个代码,看起来很有效: 专用接口SignerBuilder{ BcContentSignerBuilder make(算法标识符sigAlgId, 算法识别器(digAlgId); } //根据Tolga Okur的回答改编https://stackoverflow.com/a/59182
AndroidKeyStore
中存储一个密钥对
,这需要创建一个证书。适用于RSA密钥,但在我的示例中,KeyPair
由ssh库提供,可以是多种密钥,包括DSA
、RSA
、EC
和Ed25519
密钥
我想出了这个代码,看起来很有效:
专用接口SignerBuilder{
BcContentSignerBuilder make(算法标识符sigAlgId,
算法识别器(digAlgId);
}
//根据Tolga Okur的回答改编https://stackoverflow.com/a/59182063/1449683
公共静态X509证书生成证书(密钥对密钥对)
引发IOException、OperatorCreationException、CertificateException{
...
字符串签名算法;
SignerBuilder SignerBuilder;
开关(键控算法){
案例“RSA”:
signingAlgorithm=“SHA256withRSA”;
signerBuilder=BcRSAContentSignerBuilder::new;
打破
案例“EC”:
signingAlgorithm=“SHA256withECDSA”;
signerBuilder=BcECContentSignerBuilder::new;
打破
案例“DSA”:
signingAlgorithm=“SHA256withDSA”;
signerBuilder=BcDSAContentSignerBuilder::new;
打破
违约:
抛出新的RuntimeException(“无法为密钥算法生成证书”+keyAlgorithm);
}
...
ContentSigner-signer=signerBuilder.make(sigalid,digalid.build)(keyParam);
...
}
但是-我在这里硬编码所有的东西,这可能会失败的一些关键,这并不是未来的证据。是否有更好的方法获取签名算法
和内容签名者