我使用BouncyCastle的1.54。
我有一个JCE算法串 - 像“ECDSAwithSHA256”(例如)。
我需要一个org.bouncycastle.asn1.x509.AlgorithmIdentifier对象。
或者,我可以创建从OID在AlgorithmIdentifier对象,但回避了如何进行运算,而不是字符串翻译成OID的问题。
我可以创建一个巨大的if / else,但一定是这样做的标准方式。
我使用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);
在AlgorithmIdentifier
OID对获得SHA256withECDSA
(不ECDSAwithSHA256
,见BouncyCastle的规格 )会
1.2.840.10045.4.3.2
2.16.840.1.101.3.4.2.1