Class OpenSSLX509Certificate
- All Implemented Interfaces:
Serializable,X509Extension
public class OpenSSLX509Certificate extends X509Certificate
- See Also:
- Serialized Form
-
Nested Class Summary
Nested classes/interfaces inherited from class java.security.cert.Certificate
Certificate.CertificateRep -
Method Summary
Modifier and Type Method Description voidcheckValidity()Checks whether the certificate is currently valid.voidcheckValidity(Date date)Checks whether the certificate is valid at the specified date.booleanequals(Object other)Compares the argument to the certificate, and returnstrueif they represent the same object using a class specific comparison.protected voidfinalize()Invoked when the garbage collector has detected that this instance is no longer reachable.static List<OpenSSLX509Certificate>fromPkcs7DerInputStream(InputStream is)static List<OpenSSLX509Certificate>fromPkcs7PemInputStream(InputStream is)static OpenSSLX509CertificatefromX509Der(byte[] encoded)static OpenSSLX509CertificatefromX509DerInputStream(InputStream is)static OpenSSLX509CertificatefromX509PemInputStream(InputStream is)intgetBasicConstraints()Returns the path length of the certificate constraints from theBasicContraintsextension.Set<String>getCriticalExtensionOIDs()Returns the set of OIDs of the extension(s) marked as CRITICAL, that this implementation manages.byte[]getEncoded()Returns the encoded representation for this certificate.List<String>getExtendedKeyUsage()Returns a read-only list of OID strings representing theExtKeyUsageSyntaxfield of the extended key usage extension.byte[]getExtensionValue(String oid)Returns the extension value as DER-encoded OCTET string for the specified OID.Collection<List<?>>getIssuerAlternativeNames()Returns a read-only list of the issuer alternative names from theIssuerAltNameextension.PrincipalgetIssuerDN()Returns theissuer(issuer distinguished name) as an implementation specificPrincipalobject.boolean[]getIssuerUniqueID()Returns theissuerUniqueIDfrom the certificate.X500PrincipalgetIssuerX500Principal()Returns theissuer(issuer distinguished name) as anX500Principal.boolean[]getKeyUsage()Returns theKeyUsageextension as abooleanarray.Set<String>getNonCriticalExtensionOIDs()Returns the set of OIDs of the extension(s) marked as NON-CRITICAL, that this implementation manages.DategetNotAfter()Returns thenotAfterdate of the validity period of the certificate.DategetNotBefore()Returns thenotBeforedate from the validity period of the certificate.PublicKeygetPublicKey()Returns the public key corresponding to this certificate.BigIntegergetSerialNumber()Returns theserialNumberof the certificate.StringgetSigAlgName()Returns the name of the algorithm for the certificate signature.StringgetSigAlgOID()Returns the OID of the signature algorithm from the certificate.byte[]getSigAlgParams()Returns the parameters of the signature algorithm in DER-encoded format.byte[]getSignature()Returns the raw signature bits from the certificate.Collection<List<?>>getSubjectAlternativeNames()Returns a read-only list of the subject alternative names from theSubjectAltNameextension.PrincipalgetSubjectDN()Returns thesubject(subject distinguished name) as an implementation specificPrincipalobject.boolean[]getSubjectUniqueID()Returns thesubjectUniqueIDfrom the certificate.X500PrincipalgetSubjectX500Principal()Returns thesubject(subject distinguished name) as anX500Principal.byte[]getTBSCertificate()Returns thetbsCertificateinformation from this certificate in DER-encoded format.intgetVersion()Returns the certificatesversion(version number).inthashCode()Returns an integer hash code for the certificate.booleanhasUnsupportedCriticalExtension()Returns whether this instance has an extension marked as CRITICAL that it cannot support.StringtoString()Returns a string containing a concise, human-readable description of the certificate.voidverify(PublicKey key)Verifies that this certificate was signed with the given public key.voidverify(PublicKey key, String sigProvider)Verifies that this certificate was signed with the given public key.Methods inherited from class java.security.cert.Certificate
getType, writeReplace
-
Method Details
-
fromX509DerInputStream
public static OpenSSLX509Certificate fromX509DerInputStream(InputStream is) throws org.conscrypt.OpenSSLX509CertificateFactory.ParsingException- Throws:
org.conscrypt.OpenSSLX509CertificateFactory.ParsingException
-
fromX509Der
-
fromPkcs7DerInputStream
public static List<OpenSSLX509Certificate> fromPkcs7DerInputStream(InputStream is) throws org.conscrypt.OpenSSLX509CertificateFactory.ParsingException- Throws:
org.conscrypt.OpenSSLX509CertificateFactory.ParsingException
-
fromX509PemInputStream
public static OpenSSLX509Certificate fromX509PemInputStream(InputStream is) throws org.conscrypt.OpenSSLX509CertificateFactory.ParsingException- Throws:
org.conscrypt.OpenSSLX509CertificateFactory.ParsingException
-
fromPkcs7PemInputStream
public static List<OpenSSLX509Certificate> fromPkcs7PemInputStream(InputStream is) throws org.conscrypt.OpenSSLX509CertificateFactory.ParsingException- Throws:
org.conscrypt.OpenSSLX509CertificateFactory.ParsingException
-
getCriticalExtensionOIDs
Description copied from interface:X509ExtensionReturns the set of OIDs of the extension(s) marked as CRITICAL, that this implementation manages.- Returns:
- the set of extension OIDs marked as CRITIAL, an empty set if none
are marked as CRITICAL, or
nullif no extensions are present.
-
getExtensionValue
Description copied from interface:X509ExtensionReturns the extension value as DER-encoded OCTET string for the specified OID.- Parameters:
oid- the object identifier to get the extension value for.- Returns:
- the extension value as DER-encoded OCTET string, or
nullif no extension for the specified OID can be found.
-
getNonCriticalExtensionOIDs
Description copied from interface:X509ExtensionReturns the set of OIDs of the extension(s) marked as NON-CRITICAL, that this implementation manages.- Returns:
- the set of extension OIDs marked as NON-CRITIAL, an empty set if
none are marked as NON-.CRITICAL, or
nullif no extensions are present.
-
hasUnsupportedCriticalExtension
public boolean hasUnsupportedCriticalExtension()Description copied from interface:X509ExtensionReturns whether this instance has an extension marked as CRITICAL that it cannot support.- Returns:
trueif an unsupported CRITICAL extension is present,falseotherwise.
-
checkValidity
Description copied from class:X509CertificateChecks whether the certificate is currently valid.The validity defined in ASN.1:
validity Validity Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate } CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }- Specified by:
checkValidityin classX509Certificate- Throws:
CertificateExpiredException- if the certificate has expired.CertificateNotYetValidException- if the certificate is not yet valid.
-
checkValidity
public void checkValidity(Date date) throws CertificateExpiredException, CertificateNotYetValidExceptionDescription copied from class:X509CertificateChecks whether the certificate is valid at the specified date.- Specified by:
checkValidityin classX509Certificate- Parameters:
date- the date to check the validity against.- Throws:
CertificateExpiredException- if the certificate has expired.CertificateNotYetValidException- if the certificate is not yet valid.- See Also:
X509Certificate.checkValidity()
-
getVersion
public int getVersion()Description copied from class:X509CertificateReturns the certificatesversion(version number).The version defined is ASN.1:
Version ::= INTEGER { v1(0), v2(1), v3(2) }- Specified by:
getVersionin classX509Certificate- Returns:
- the version number.
-
getSerialNumber
Description copied from class:X509CertificateReturns theserialNumberof the certificate.The ASN.1 definition of
serialNumber:CertificateSerialNumber ::= INTEGER
- Specified by:
getSerialNumberin classX509Certificate- Returns:
- the serial number.
-
getIssuerDN
Description copied from class:X509CertificateReturns theissuer(issuer distinguished name) as an implementation specificPrincipalobject.The ASN.1 definition of
issuer:issuer Name Name ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY AttributeTypereplaced by:X509Certificate.getIssuerX500Principal().- Specified by:
getIssuerDNin classX509Certificate- Returns:
- the
issueras an implementation specificPrincipal.
-
getSubjectDN
Description copied from class:X509CertificateReturns thesubject(subject distinguished name) as an implementation specificPrincipalobject.The ASN.1 definition of
subject:subject Name Name ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY AttributeTypereplaced by:
X509Certificate.getSubjectX500Principal().- Specified by:
getSubjectDNin classX509Certificate- Returns:
- the
subject(subject distinguished name).
-
getNotBefore
Description copied from class:X509CertificateReturns thenotBeforedate from the validity period of the certificate.- Specified by:
getNotBeforein classX509Certificate- Returns:
- the start of the validity period.
-
getNotAfter
Description copied from class:X509CertificateReturns thenotAfterdate of the validity period of the certificate.- Specified by:
getNotAfterin classX509Certificate- Returns:
- the end of the validity period.
-
getTBSCertificate
Description copied from class:X509CertificateReturns thetbsCertificateinformation from this certificate in DER-encoded format.- Specified by:
getTBSCertificatein classX509Certificate- Returns:
- the DER-encoded certificate information.
- Throws:
CertificateEncodingException- if an error occurs in encoding
-
getSignature
public byte[] getSignature()Description copied from class:X509CertificateReturns the raw signature bits from the certificate.- Specified by:
getSignaturein classX509Certificate- Returns:
- the raw signature bits from the certificate.
-
getSigAlgName
Description copied from class:X509CertificateReturns the name of the algorithm for the certificate signature.- Specified by:
getSigAlgNamein classX509Certificate- Returns:
- the signature algorithm name.
-
getSigAlgOID
Description copied from class:X509CertificateReturns the OID of the signature algorithm from the certificate.- Specified by:
getSigAlgOIDin classX509Certificate- Returns:
- the OID of the signature algorithm.
-
getSigAlgParams
public byte[] getSigAlgParams()Description copied from class:X509CertificateReturns the parameters of the signature algorithm in DER-encoded format.- Specified by:
getSigAlgParamsin classX509Certificate- Returns:
- the parameters of the signature algorithm, or
nullif none are used.
-
getIssuerUniqueID
public boolean[] getIssuerUniqueID()Description copied from class:X509CertificateReturns theissuerUniqueIDfrom the certificate.- Specified by:
getIssuerUniqueIDin classX509Certificate- Returns:
- the
issuerUniqueIDornullif there's none in the certificate.
-
getSubjectUniqueID
public boolean[] getSubjectUniqueID()Description copied from class:X509CertificateReturns thesubjectUniqueIDfrom the certificate.- Specified by:
getSubjectUniqueIDin classX509Certificate- Returns:
- the
subjectUniqueIDor null if there's none in the certificate.
-
getKeyUsage
public boolean[] getKeyUsage()Description copied from class:X509CertificateReturns theKeyUsageextension as abooleanarray.The ASN.1 definition of
KeyUsage:KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) }- Specified by:
getKeyUsagein classX509Certificate- Returns:
- the
KeyUsageextension ornullif there's none in the certificate.
-
getBasicConstraints
public int getBasicConstraints()Description copied from class:X509CertificateReturns the path length of the certificate constraints from theBasicContraintsextension. If the certificate has no basic constraints or is not a certificate authority,-1is returned. If the certificate is a certificate authority without a path length,Integer.MAX_VALUEis returned. Otherwise, the certificate authority's path length is returned.- Specified by:
getBasicConstraintsin classX509Certificate
-
getEncoded
Description copied from class:CertificateReturns the encoded representation for this certificate.- Specified by:
getEncodedin classCertificate- Returns:
- the encoded representation for this certificate.
- Throws:
CertificateEncodingException- if the encoding fails.
-
verify
public void verify(PublicKey key) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureExceptionDescription copied from class:CertificateVerifies that this certificate was signed with the given public key.- Specified by:
verifyin classCertificate- Parameters:
key- PublicKey public key for which verification should be performed.- Throws:
CertificateException- if encoding errors are detected.NoSuchAlgorithmException- if an unsupported algorithm is detected.InvalidKeyException- if an invalid key is detected.NoSuchProviderException- if there is no default provider.SignatureException- if signature errors are detected.
-
verify
public void verify(PublicKey key, String sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureExceptionDescription copied from class:CertificateVerifies that this certificate was signed with the given public key. It Uses the signature algorithm given by the provider.- Specified by:
verifyin classCertificate- Parameters:
key- PublicKey public key for which verification should be performed.sigProvider- String the name of the signature provider.- Throws:
CertificateException- if encoding errors are detected.NoSuchAlgorithmException- if an unsupported algorithm is detected.InvalidKeyException- if an invalid key is detected.NoSuchProviderException- if the specified provider does not exists.SignatureException- if signature errors are detected.
-
toString
Description copied from class:CertificateReturns a string containing a concise, human-readable description of the certificate.- Specified by:
toStringin classCertificate- Returns:
- a printable representation for the certificate.
-
getPublicKey
Description copied from class:CertificateReturns the public key corresponding to this certificate.- Specified by:
getPublicKeyin classCertificate- Returns:
- the public key corresponding to this certificate.
-
getIssuerX500Principal
Description copied from class:X509CertificateReturns theissuer(issuer distinguished name) as anX500Principal.- Overrides:
getIssuerX500Principalin classX509Certificate- Returns:
- the
issuer(issuer distinguished name).
-
getSubjectX500Principal
Description copied from class:X509CertificateReturns thesubject(subject distinguished name) as anX500Principal.- Overrides:
getSubjectX500Principalin classX509Certificate- Returns:
- the
subject(subject distinguished name)
-
getExtendedKeyUsage
Description copied from class:X509CertificateReturns a read-only list of OID strings representing theExtKeyUsageSyntaxfield of the extended key usage extension.- Overrides:
getExtendedKeyUsagein classX509Certificate- Returns:
- the extended key usage extension, or
nullif there's none in the certificate. - Throws:
CertificateParsingException- if the extension decoding fails.
-
getSubjectAlternativeNames
Description copied from class:X509CertificateReturns a read-only list of the subject alternative names from theSubjectAltNameextension.The ASN.1 definition of
SubjectAltName:SubjectAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] AnotherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER }- Overrides:
getSubjectAlternativeNamesin classX509Certificate- Returns:
- the subject alternative names or
nullif there are none in the certificate. - Throws:
CertificateParsingException- if decoding of the extension fails.
-
getIssuerAlternativeNames
Description copied from class:X509CertificateReturns a read-only list of the issuer alternative names from theIssuerAltNameextension.The ASN.1 definition of
IssuerAltName:IssuerAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] AnotherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER }- Overrides:
getIssuerAlternativeNamesin classX509Certificate- Returns:
- the issuer alternative names of
nullif there are none in the certificate. - Throws:
CertificateParsingException- if decoding of the extension fails.
-
equals
Description copied from class:CertificateCompares the argument to the certificate, and returnstrueif they represent the same object using a class specific comparison. The implementation in Object returnstrueonly if the argument is the exact same object as the callee (==).- Overrides:
equalsin classCertificate- Parameters:
other- the object to compare with this object.- Returns:
trueif the object is the same as this object,falseif it is different from this object.- See Also:
Certificate.hashCode()
-
hashCode
public int hashCode()Description copied from class:CertificateReturns an integer hash code for the certificate. Any two objects which returntruewhen passed toequalsmust return the same value for this method.- Overrides:
hashCodein classCertificate- Returns:
- the certificate's hash
- See Also:
Certificate.equals(java.lang.Object)
-
finalize
Description copied from class:ObjectInvoked when the garbage collector has detected that this instance is no longer reachable. The default implementation does nothing, but this method can be overridden to free resources.Note that objects that override
finalizeare significantly more expensive than objects that don't. Finalizers may be run a long time after the object is no longer reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup. Note also that finalizers are run on a single VM-wide finalizer thread, so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary for a class that has a native peer and needs to call a native method to destroy that peer. Even then, it's better to provide an explicitclosemethod (and implementCloseable), and insist that callers manually dispose of instances. This works well for something like files, but less well for something like aBigIntegerwhere typical calling code would have to deal with lots of temporaries. Unfortunately, code that creates lots of temporaries is the worst kind of code from the point of view of the single finalizer thread.If you must use finalizers, consider at least providing your own
ReferenceQueueand having your own thread process that queue.Unlike constructors, finalizers are not automatically chained. You are responsible for calling
super.finalize()yourself.Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See Effective Java Item 7, "Avoid finalizers" for more.
-