Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用BouncyCastle,如何为任何类型的密钥算法生成证书?_Java_Android_Bouncycastle - Fatal编程技术网

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);
...
}
但是-我在这里硬编码所有的东西,这可能会失败的一些关键,这并不是未来的证据。是否有更好的方法获取
签名算法
内容签名者