如何将 JCE 算法名称转换为 AlgorithmIdentifier 对象?
How do you convert a JCE algorithm name into an AlgorithmIdentifier object?
我正在使用 BouncyCastle 1.54。
我有一个 JCE 算法字符串 - 比如 "ECDSAwithSHA256"(例如)。
我需要一个 org.bouncycastle.asn1.x509.AlgorithmIdentifier 对象。
或者,我可以从 OID 创建一个 AlgorithmIdentifier 对象,但这回避了如何将算法字符串转换为 OID 的问题。
我可以创造一个巨人 if/else,但必须有一个标准的方法来做到这一点。
您可以使用 BouncyCastle 的算法查找器(参见 javadoc)
import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;
AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find(signatureAlgorithm);
AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
为 SHA256withECDSA
(不是 ECDSAwithSHA256
,参见 bouncycastle specifications)获得的 AlgorithmIdentifier
OID 将是
1.2.840.10045.4.3.2
2.16.840.1.101.3.4.2.1
我正在使用 BouncyCastle 1.54。
我有一个 JCE 算法字符串 - 比如 "ECDSAwithSHA256"(例如)。
我需要一个 org.bouncycastle.asn1.x509.AlgorithmIdentifier 对象。
或者,我可以从 OID 创建一个 AlgorithmIdentifier 对象,但这回避了如何将算法字符串转换为 OID 的问题。
我可以创造一个巨人 if/else,但必须有一个标准的方法来做到这一点。
您可以使用 BouncyCastle 的算法查找器(参见 javadoc)
import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;
AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find(signatureAlgorithm);
AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
为 SHA256withECDSA
(不是 ECDSAwithSHA256
,参见 bouncycastle specifications)获得的 AlgorithmIdentifier
OID 将是
1.2.840.10045.4.3.2
2.16.840.1.101.3.4.2.1