Most visited

Recently visited

Added in API level 1

X509CRL

public abstract class X509CRL
extends CRL implements X509Extension

java.lang.Object
   ↳ java.security.cert.CRL
     ↳ java.security.cert.X509CRL


X.509证书吊销列表(CRL)的抽象类。 CRL是标识撤销证书的时间戳列表。 它由认证中心(CA)签署并在公共存储库中免费提供。

每个撤销的证书都通过证书序列号在CRL中标识。 当证书使用系统使用证书(例如,用于验证远程用户的数字签名)时,该系统不仅检查证书签名和有效性,而且还获取适当的最近CRL并检查证书序列号不在CRL。 “适当 - 最近”的含义可能因地方政策而异,但通常意味着最近发布的CRL。 CA定期发布新的CRL(例如,每小时,每天或每周)。 当撤销发生时,条目将被添加到CRL中,并且在达到证书到期日期时可能会删除条目。

X.509 v2 CRL格式在ASN.1中描述如下:

 CertificateList  ::=  SEQUENCE  {
     tbsCertList          TBSCertList,
     signatureAlgorithm   AlgorithmIdentifier,
     signature            BIT STRING  }
 

更多信息可以在 RFC 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile找到。

ASN.1定义 tbsCertList是:

 TBSCertList  ::=  SEQUENCE  {
     version                 Version OPTIONAL,
                             -- if present, must be v2
     signature               AlgorithmIdentifier,
     issuer                  Name,
     thisUpdate              ChoiceOfTime,
     nextUpdate              ChoiceOfTime OPTIONAL,
     revokedCertificates     SEQUENCE OF SEQUENCE  {
         userCertificate         CertificateSerialNumber,
         revocationDate          ChoiceOfTime,
         crlEntryExtensions      Extensions OPTIONAL
                                 -- if present, must be v2
         }  OPTIONAL,
     crlExtensions           [0]  EXPLICIT Extensions OPTIONAL
                                  -- if present, must be v2
     }
 

CRL使用证书工厂实例化。 以下是如何实例化X.509 CRL的示例:


 InputStream inStream = null;
 try {
     inStream = new FileInputStream("fileName-of-crl");
     CertificateFactory cf = CertificateFactory.getInstance("X.509");
     X509CRL crl = (X509CRL)cf.generateCRL(inStream);
 } finally {
     if (inStream != null) {
         inStream.close();
     }
 }
 

也可以看看:

Summary

Protected constructors

X509CRL()

X.509 CRL的构造函数。

Public methods

boolean equals(Object other)

比较此CRL与给定对象是否相等。

abstract byte[] getEncoded()

返回此CRL的ASN.1 DER编码形式。

abstract Principal getIssuerDN()

诋毁 ,取而代之的是 getIssuerX500Principal()

X500Principal getIssuerX500Principal()

X500Principal身份从CRL中返回发行人(发行人专有名称)值。

abstract Date getNextUpdate()

获取CRL的 nextUpdate日期。

X509CRLEntry getRevokedCertificate(X509Certificate certificate)

获取给定证书的CRL条目(如果有的话)。

abstract X509CRLEntry getRevokedCertificate(BigInteger serialNumber)

获取具有给定证书serialNumber的CRL条目(如果有)。

abstract Set<? extends X509CRLEntry> getRevokedCertificates()

获取此CRL的所有条目。

abstract String getSigAlgName()

获取CRL签名算法的签名算法名称。

abstract String getSigAlgOID()

从CRL获取签名算法OID字符串。

abstract byte[] getSigAlgParams()

从此CRL的签名算法中获取DER编码的签名算法参数。

abstract byte[] getSignature()

获取来自CRL的 signature值(原始签名位)。

abstract byte[] getTBSCertList()

从此CRL获取DER编码的CRL信息,即 tbsCertList

abstract Date getThisUpdate()

获取CRL的 thisUpdate日期。

abstract int getVersion()

获取CRL中的 version (版本号)值。

int hashCode()

从其编码形式返回此CRL的哈希码值。

abstract void verify(PublicKey key)

验证此CRL是否使用与给定公钥对应的私钥进行签名。

abstract void verify(PublicKey key, String sigProvider)

验证此CRL是否使用与给定公钥对应的私钥进行签名。

Inherited methods

From class java.security.cert.CRL
From class java.lang.Object
From interface java.security.cert.X509Extension

Protected constructors

X509CRL

Added in API level 1
X509CRL ()

X.509 CRL的构造函数。

Public methods

equals

Added in API level 1
boolean equals (Object other)

比较此CRL与给定对象是否相等。 如果other对象是instanceof X509CRL ,则检索其编码形式并与此CRL的编码形式进行比较。

Parameters
other Object: the object to test for equality with this CRL.
Returns
boolean true iff the encoded forms of the two CRLs match, false otherwise.

getEncoded

Added in API level 1
byte[] getEncoded ()

返回此CRL的ASN.1 DER编码形式。

Returns
byte[] the encoded form of this certificate
Throws
CRLException if an encoding error occurs.

getIssuerDN

Added in API level 1
Principal getIssuerDN ()

贬低 ,由getIssuerX500Principal()取代。 此方法返回issuer作为实现特定的主体对象,这不应该由可移植代码来依赖。

从CRL获取issuer (发行人专有名称)值。 发行者名称标识签署(并发行)CRL的实体。

颁发机构名称字段包含X.500专有名称(DN)。 ASN.1对此的定义是:

 issuer    Name

 Name ::= CHOICE { RDNSequence }
 RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
 RelativeDistinguishedName ::=
     SET OF AttributeValueAssertion

 AttributeValueAssertion ::= SEQUENCE {
                               AttributeType,
                               AttributeValue }
 AttributeType ::= OBJECT IDENTIFIER
 AttributeValue ::= ANY
 
The Name describes a hierarchical name composed of attributes, such as country name, and corresponding values, such as US. The type of the AttributeValue component is determined by the AttributeType; in general it will be a directoryString. A directoryString is usually one of PrintableString, TeletexString or UniversalString.

Returns
Principal a Principal whose name is the issuer distinguished name.

getIssuerX500Principal

Added in API level 1
X500Principal getIssuerX500Principal ()

从CRL中返回发行人(发行人专有名称)值 X500Principal

建议子类重写此方法。

Returns
X500Principal an X500Principal representing the issuer distinguished name

getNextUpdate

Added in API level 1
Date getNextUpdate ()

从CRL获取 nextUpdate日期。

Returns
Date the nextUpdate date from the CRL, or null if not present.

getRevokedCertificate

Added in API level 1
X509CRLEntry getRevokedCertificate (X509Certificate certificate)

获取给定证书的CRL条目(如果有的话)。

此方法可用于查找间接CRL中的CRL条目,这意味着包含来自CRL发行者以外的发行者的条目的CRL。 默认实现将仅返回由CRL发布者发布的证书的条目。 希望支持间接CRL的子类应该重写此方法。

Parameters
certificate X509Certificate: the certificate for which a CRL entry is to be looked up
Returns
X509CRLEntry the entry for the given certificate, or null if no such entry exists in this CRL.
Throws
NullPointerException if certificate is null

getRevokedCertificate

Added in API level 1
X509CRLEntry getRevokedCertificate (BigInteger serialNumber)

获取具有给定证书serialNumber的CRL条目(如果有)。

Parameters
serialNumber BigInteger: the serial number of the certificate for which a CRL entry is to be looked up
Returns
X509CRLEntry the entry with the given serial number, or null if no such entry exists in this CRL.

也可以看看:

getRevokedCertificates

Added in API level 1
Set<? extends X509CRLEntry> getRevokedCertificates ()

获取此CRL的所有条目。 这会返回一组X509CRLEntry对象。

Returns
Set<? extends X509CRLEntry> all the entries or null if there are none present.

也可以看看:

getSigAlgName

Added in API level 1
String getSigAlgName ()

获取CRL签名算法的签名算法名称。 一个例子是字符串“SHA256withRSA”。 ASN.1对此的定义是:

 signatureAlgorithm   AlgorithmIdentifier

AlgorithmIdentifier :: = SEQUENCE {algorithm OBJECT IDENTIFIER,参数ANY DEFINED BY algorithm OPTIONAL} - 包含一个类型值 - 注册用于 - 算法对象标识符值

算法名称由 algorithm OID字符串确定。

Returns
String the signature algorithm name.

getSigAlgOID

Added in API level 1
String getSigAlgOID ()

从CRL获取签名算法OID字符串。 一个OID由一组由周期分隔的非负整数表示。 例如,字符串“1.2.840.10040.4.3”用RFC 3279: Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and CRL Profile中定义的DSA签名算法标识SHA-1。

有关ASN.1定义,请参阅 getSigAlgName

Returns
String the signature algorithm OID string.

getSigAlgParams

Added in API level 1
byte[] getSigAlgParams ()

从此CRL的签名算法中获取DER编码的签名算法参数。 在大多数情况下,签名算法参数为空; 参数通常由公钥提供。 如果需要访问单个参数值,则使用AlgorithmParameters并使用由getSigAlgName返回的名称进行实例化。

相关ASN.1定义见 getSigAlgName

Returns
byte[] the DER-encoded signature algorithm parameters, or null if no parameters are present.

getSignature

Added in API level 1
byte[] getSignature ()

获取来自CRL的signature值(原始签名位)。 ASN.1对此的定义是:

 signature     BIT STRING
 

Returns
byte[] the signature.

getTBSCertList

Added in API level 1
byte[] getTBSCertList ()

从此CRL获取DER编码的CRL信息, tbsCertList 这可以用来独立验证签名。

Returns
byte[] the DER-encoded CRL information.
Throws
CRLException if an encoding error occurs.

getThisUpdate

Added in API level 1
Date getThisUpdate ()

从CRL获取thisUpdate日期。 ASN.1对此的定义是:

 thisUpdate   ChoiceOfTime
 ChoiceOfTime ::= CHOICE {
     utcTime        UTCTime,
     generalTime    GeneralizedTime }
 

Returns
Date the thisUpdate date from the CRL.

getVersion

Added in API level 1
int getVersion ()

获取CRL中的version (版本号)值。 ASN.1对此的定义是:

 version    Version OPTIONAL,
             -- if present, must be v2

Version :: = INTEGER {v1(0),v2(1),v3(2)} - v3不适用于CRL,但出于一致性 - 定义了Version for certs

Returns
int the version number, i.e. 1 or 2.

hashCode

Added in API level 1
int hashCode ()

从其编码形式返回此CRL的哈希码值。

Returns
int the hashcode value.

verify

Added in API level 1
void verify (PublicKey key)

验证此CRL是否使用与给定公钥对应的私钥进行签名。

Parameters
key PublicKey: the PublicKey used to carry out the verification.
Throws
NoSuchAlgorithmException on unsupported signature algorithms.
InvalidKeyException on incorrect key.
NoSuchProviderException if there's no default provider.
SignatureException on signature errors.
CRLException on encoding errors.

verify

Added in API level 1
void verify (PublicKey key, 
                String sigProvider)

验证此CRL是否使用与给定公钥对应的私钥进行签名。 此方法使用由给定提供者提供的签名验证引擎。

Parameters
key PublicKey: the PublicKey used to carry out the verification.
sigProvider String: the name of the signature provider.
Throws
NoSuchAlgorithmException on unsupported signature algorithms.
InvalidKeyException on incorrect key.
NoSuchProviderException on incorrect provider.
SignatureException on signature errors.
CRLException on encoding errors.

Hooray!