我想创建一个带有证书策略扩展名的证书,并使用以下代码。
CertificatePolicyId certificatePolicyId2=new CertificatePolicyId(new DerValue("2.5.29.32.1"));
PolicyInformation policyInformation2=new PolicyInformation(certificatePolicyId2, null);
List<PolicyInformation> policyInformations=new ArrayList<PolicyInformation>();
policyInformations.add(policyInformation2);
certificateExtensions.set(CertificatePoliciesExtension.NAME, new CertificatePoliciesExtension(policyInformations));
但抛出了一个例外:
java.io.IOException: DerValue.getOID, not an OID 19
at sun.security.util.DerValue.getOID(DerValue.java:447)
at sun.security.x509.CertificatePolicyId.<init>(CertificatePolicyId.java:56)
如何设置String arg0
的{{1}}?
谢谢!
答案 0 :(得分:0)
sun.security.util.DerValue
(不是x509)基本上是ASN.1中定义和编码的十几种类型中的任何一种的包装器/持有者; DerValue(String)
构造函数创建(包含的包装)仅ASN.1类型PrintableString
或UTF8String
(不是OID)。
有一个不同的类sun.security.util.ObjectIdentifier
,它专门代表一个OID,(String)
构造函数将该文本格式解析为OID对象:
import sun.security.util.ObjectIdentifier;
...
ObjectIdentifier oid = new ObjectIdentifier ("2.5.29.32.1");