X.509扩展的接口。
为X.509 v3 Certificates和v2 CRLs (证书撤销列表)定义的扩展提供了用于将其他属性与用户或公钥相关联,用于管理证书层次结构以及管理CRL分发的方法。 X.509扩展格式还允许社区定义私有扩展,以承载这些社区特有的信息。
证书/ CRL中的每个扩展可以被指定为关键或非关键。 证书/ CRL使用系统(验证证书/ CRL的应用程序)如果遇到无法识别的关键扩展,则必须拒绝证书/ CRL。 如果无法识别,则可以忽略非关键扩展。
ASN.1的定义是:
Extensions::=SEQUENCE SIZE (1..MAX) OF Extension
Extension::=SEQUENCE{
extnIdOBJECT IDENTIFIER,
criticalBOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- contains a DER encoding of a value
-- of the type registered for use with
-- the extnId object identifier value
}
由于并非所有扩展都是已知的,因此getExtensionValue方法返回扩展值的DER编码的OCTET STRING(即extnValue )。
然后,这可以由了解扩展的类来处理。
获取由实现此接口的对象管理的证书/ CRL中标记为CRITICAL的扩展的OID字符串集。
获取由传入的
oid字符串标识的扩展值(
extnValue )的DER编码的OCTET字符串。
获取由实现此接口的对象管理的证书/ CRL中标记为NON-CRITICAL的扩展的OID字符串集。
检查是否存在不受支持的关键扩展。
检查是否存在不受支持的关键扩展。
获取由实现此接口的对象管理的证书/ CRL中标记为CRITICAL的扩展的OID字符串集。
以下是从X509Certificate获取一组关键扩展并打印OID的示例代码:
X509Certificate cert = null; try (InputStream inStrm = new FileInputStream("DER-encoded-Cert")) { CertificateFactory cf = CertificateFactory.getInstance("X.509"); cert = (X509Certificate)cf.generateCertificate(inStrm); } Set critSet = cert.getCriticalExtensionOIDs(); if (critSet != null && !critSet.isEmpty()) { System.out.println("Set of critical extensions:"); for (String oid : critSet) { System.out.println(oid); } }
获取由实现此接口的对象管理的证书/ CRL中标记为NON-CRITICAL的扩展的OID字符串集。
以下是从X509CRL撤销的证书条目中获取一组非关键扩展并打印OID的示例代码:
CertificateFactory cf = null; X509CRL crl = null; try (InputStream inStrm = new FileInputStream("DER-encoded-CRL")) { cf = CertificateFactory.getInstance("X.509"); crl = (X509CRL)cf.generateCRL(inStrm); } byte[] certData = ByteArrayInputStream bais = new ByteArrayInputStream(certData); X509Certificate cert = (X509Certificate)cf.generateCertificate(bais); X509CRLEntry badCert = crl.getRevokedCertificate(cert.getSerialNumber()); if (badCert != null) { Set nonCritSet = badCert.getNonCriticalExtensionOIDs(); if (nonCritSet != null) for (String oid : nonCritSet) { System.out.println(oid); } }
获取由传入的oid String标识的扩展值( extnValue )的DER编码的OCTET字符串。
oid字符串由一组以句点分隔的非负整数表示。
例如:
Examples of OIDs and extension namesOID (Object Identifier) Extension Name 2.5.29.14 SubjectKeyIdentifier 2.5.29.15 KeyUsage 2.5.29.16 PrivateKeyUsage 2.5.29.17 SubjectAlternativeName 2.5.29.18 IssuerAlternativeName 2.5.29.19 BasicConstraints 2.5.29.30 NameConstraints 2.5.29.33 PolicyMappings 2.5.29.35 AuthorityKeyIdentifier 2.5.29.36 PolicyConstraints
变量和类型
方法
描述
获取由实现此接口的对象管理的证书/ CRL中标记为CRITICAL的扩展的OID字符串集。
byte[]
获取由传入的
oid字符串标识的扩展值(
extnValue )的DER编码的OCTET字符串。
获取由实现此接口的对象管理的证书/ CRL中标记为NON-CRITICAL的扩展的OID字符串集。