⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x509certificateobject.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.bouncycastle.jce.provider;import org.bouncycastle.asn1.ASN1InputStream;import org.bouncycastle.asn1.ASN1Object;import org.bouncycastle.asn1.ASN1OutputStream;import org.bouncycastle.asn1.ASN1Sequence;import org.bouncycastle.asn1.DERBitString;import org.bouncycastle.asn1.DEREncodable;import org.bouncycastle.asn1.DERIA5String;import org.bouncycastle.asn1.DERObjectIdentifier;import org.bouncycastle.asn1.DEROutputStream;import org.bouncycastle.asn1.misc.MiscObjectIdentifiers;import org.bouncycastle.asn1.misc.NetscapeCertType;import org.bouncycastle.asn1.misc.NetscapeRevocationURL;import org.bouncycastle.asn1.misc.VerisignCzagExtension;import org.bouncycastle.asn1.util.ASN1Dump;import org.bouncycastle.asn1.x509.BasicConstraints;import org.bouncycastle.asn1.x509.KeyUsage;import org.bouncycastle.asn1.x509.X509CertificateStructure;import org.bouncycastle.asn1.x509.X509Extension;import org.bouncycastle.asn1.x509.X509Extensions;import org.bouncycastle.jce.X509Principal;import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier;import org.bouncycastle.util.Arrays;import org.bouncycastle.util.encoders.Hex;import javax.security.auth.x500.X500Principal;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.math.BigInteger;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.NoSuchProviderException;import java.security.Principal;import java.security.Provider;import java.security.PublicKey;import java.security.Security;import java.security.Signature;import java.security.SignatureException;import java.security.cert.Certificate;import java.security.cert.CertificateEncodingException;import java.security.cert.CertificateException;import java.security.cert.CertificateExpiredException;import java.security.cert.CertificateNotYetValidException;import java.security.cert.CertificateParsingException;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.Collections;import java.util.Date;import java.util.Enumeration;import java.util.HashSet;import java.util.List;import java.util.Set;public class X509CertificateObject    extends X509Certificate    implements PKCS12BagAttributeCarrier{    private X509CertificateStructure    c;    private BasicConstraints            basicConstraints;    private boolean[]                   keyUsage;    private boolean                     hashValueSet;    private int                         hashValue;    private PKCS12BagAttributeCarrier   attrCarrier = new PKCS12BagAttributeCarrierImpl();    public X509CertificateObject(        X509CertificateStructure    c)        throws CertificateParsingException    {        this.c = c;        try        {            byte[]  bytes = this.getExtensionBytes("2.5.29.19");            if (bytes != null)            {                basicConstraints = BasicConstraints.getInstance(ASN1Object.fromByteArray(bytes));            }        }        catch (Exception e)        {            throw new CertificateParsingException("cannot construct BasicConstraints: " + e);        }        try        {            byte[] bytes = this.getExtensionBytes("2.5.29.15");            if (bytes != null)            {                DERBitString    bits = DERBitString.getInstance(ASN1Object.fromByteArray(bytes));                bytes = bits.getBytes();                int length = (bytes.length * 8) - bits.getPadBits();                keyUsage = new boolean[(length < 9) ? 9 : length];                for (int i = 0; i != length; i++)                {                    keyUsage[i] = (bytes[i / 8] & (0x80 >>> (i % 8))) != 0;                }            }            else            {                keyUsage = null;            }        }        catch (Exception e)        {            throw new CertificateParsingException("cannot construct KeyUsage: " + e);        }    }    public void checkValidity()        throws CertificateExpiredException, CertificateNotYetValidException    {        this.checkValidity(new Date());    }    public void checkValidity(        Date    date)        throws CertificateExpiredException, CertificateNotYetValidException    {        if (date.getTime() > this.getNotAfter().getTime())  // for other VM compatibility        {            throw new CertificateExpiredException("certificate expired on " + c.getEndDate().getTime());        }        if (date.getTime() < this.getNotBefore().getTime())        {            throw new CertificateNotYetValidException("certificate not valid till " + c.getStartDate().getTime());        }    }    public int getVersion()    {        return c.getVersion();    }    public BigInteger getSerialNumber()    {        return c.getSerialNumber().getValue();    }    public Principal getIssuerDN()    {        return new X509Principal(c.getIssuer());    }    public X500Principal getIssuerX500Principal()    {        try        {            ByteArrayOutputStream   bOut = new ByteArrayOutputStream();            ASN1OutputStream        aOut = new ASN1OutputStream(bOut);            aOut.writeObject(c.getIssuer());            return new X500Principal(bOut.toByteArray());        }        catch (IOException e)        {            throw new IllegalStateException("can't encode issuer DN");        }    }    public Principal getSubjectDN()    {        return new X509Principal(c.getSubject());    }    public X500Principal getSubjectX500Principal()    {        try        {            ByteArrayOutputStream   bOut = new ByteArrayOutputStream();            ASN1OutputStream        aOut = new ASN1OutputStream(bOut);            aOut.writeObject(c.getSubject());            return new X500Principal(bOut.toByteArray());        }        catch (IOException e)        {            throw new IllegalStateException("can't encode issuer DN");        }    }    public Date getNotBefore()    {        return c.getStartDate().getDate();    }    public Date getNotAfter()    {        return c.getEndDate().getDate();    }    public byte[] getTBSCertificate()        throws CertificateEncodingException    {        ByteArrayOutputStream   bOut = new ByteArrayOutputStream();        DEROutputStream         dOut = new DEROutputStream(bOut);        try        {            dOut.writeObject(c.getTBSCertificate());            return bOut.toByteArray();        }        catch (IOException e)        {            throw new CertificateEncodingException(e.toString());        }    }    public byte[] getSignature()    {        return c.getSignature().getBytes();    }    /**     * return a more "meaningful" representation for the signature algorithm used in     * the certficate.     */    public String getSigAlgName()    {        Provider    prov = Security.getProvider("BC");        if (prov != null)        {            String      algName = prov.getProperty("Alg.Alias.Signature." + this.getSigAlgOID());            if (algName != null)            {                return algName;            }        }        Provider[] provs = Security.getProviders();        //        // search every provider looking for a real algorithm        //        for (int i = 0; i != provs.length; i++)        {            String algName = provs[i].getProperty("Alg.Alias.Signature." + this.getSigAlgOID());            if (algName != null)            {                return algName;            }        }        return this.getSigAlgOID();    }    /**     * return the object identifier for the signature.     */    public String getSigAlgOID()    {        return c.getSignatureAlgorithm().getObjectId().getId();    }    /**     * return the signature parameters, or null if there aren't any.     */    public byte[] getSigAlgParams()    {        if (c.getSignatureAlgorithm().getParameters() != null)        {            return c.getSignatureAlgorithm().getParameters().getDERObject().getDEREncoded();        }        else        {            return null;        }    }    public boolean[] getIssuerUniqueID()    {        DERBitString    id = c.getTBSCertificate().getIssuerUniqueId();        if (id != null)        {            byte[]          bytes = id.getBytes();            boolean[]       boolId = new boolean[bytes.length * 8 - id.getPadBits()];            for (int i = 0; i != boolId.length; i++)            {                boolId[i] = (bytes[i / 8] & (0x80 >>> (i % 8))) != 0;            }            return boolId;        }                    return null;    }    public boolean[] getSubjectUniqueID()    {        DERBitString    id = c.getTBSCertificate().getSubjectUniqueId();        if (id != null)        {            byte[]          bytes = id.getBytes();            boolean[]       boolId = new boolean[bytes.length * 8 - id.getPadBits()];            for (int i = 0; i != boolId.length; i++)            {                boolId[i] = (bytes[i / 8] & (0x80 >>> (i % 8))) != 0;            }            return boolId;        }                    return null;    }    public boolean[] getKeyUsage()    {        return keyUsage;    }    public List getExtendedKeyUsage()         throws CertificateParsingException    {        byte[]  bytes = this.getExtensionBytes("2.5.29.37");        if (bytes != null)        {            try            {                ASN1InputStream dIn = new ASN1InputStream(bytes);                ASN1Sequence    seq = (ASN1Sequence)dIn.readObject();                List            list = new ArrayList();                for (int i = 0; i != seq.size(); i++)                {                    list.add(((DERObjectIdentifier)seq.getObjectAt(i)).getId());                }                                return Collections.unmodifiableList(list);            }            catch (Exception e)            {                throw new CertificateParsingException("error processing extended key usage extension");            }        }        return null;    }        public int getBasicConstraints()    {        if (basicConstraints != null)        {            if (basicConstraints.isCA())            {                if (basicConstraints.getPathLenConstraint() == null)                {                    return Integer.MAX_VALUE;                }                else                {                    return basicConstraints.getPathLenConstraint().intValue();                }            }            else            {                return -1;            }        }        return -1;    }    public Set getCriticalExtensionOIDs()     {        if (this.getVersion() == 3)        {            Set             set = new HashSet();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -