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

📄 x509certificateobject.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            X509Extensions  extensions = c.getTBSCertificate().getExtensions();            if (extensions != null)            {                Enumeration     e = extensions.oids();                while (e.hasMoreElements())                {                    DERObjectIdentifier oid = (DERObjectIdentifier)e.nextElement();                    X509Extension       ext = extensions.getExtension(oid);                    if (ext.isCritical())                    {                        set.add(oid.getId());                    }                }                return set;            }        }        return null;    }    private byte[] getExtensionBytes(String oid)    {        X509Extensions exts = c.getTBSCertificate().getExtensions();        if (exts != null)        {            X509Extension   ext = exts.getExtension(new DERObjectIdentifier(oid));            if (ext != null)            {                return ext.getValue().getOctets();            }        }        return null;    }    public byte[] getExtensionValue(String oid)     {        X509Extensions exts = c.getTBSCertificate().getExtensions();        if (exts != null)        {            X509Extension   ext = exts.getExtension(new DERObjectIdentifier(oid));            if (ext != null)            {                try                {                    return ext.getValue().getEncoded();                }                catch (Exception e)                {                    throw new IllegalStateException("error parsing " + e.toString());                }            }        }        return null;    }    public Set getNonCriticalExtensionOIDs()     {        if (this.getVersion() == 3)        {            Set             set = new HashSet();            X509Extensions  extensions = c.getTBSCertificate().getExtensions();            if (extensions != null)            {                Enumeration     e = extensions.oids();                while (e.hasMoreElements())                {                    DERObjectIdentifier oid = (DERObjectIdentifier)e.nextElement();                    X509Extension       ext = extensions.getExtension(oid);                    if (!ext.isCritical())                    {                        set.add(oid.getId());                    }                }                return set;            }        }        return null;    }    public boolean hasUnsupportedCriticalExtension()    {        if (this.getVersion() == 3)        {            X509Extensions  extensions = c.getTBSCertificate().getExtensions();            if (extensions != null)            {                Enumeration     e = extensions.oids();                while (e.hasMoreElements())                {                    DERObjectIdentifier oid = (DERObjectIdentifier)e.nextElement();                    String              oidId = oid.getId();                    if (oidId.equals(RFC3280CertPathUtilities.KEY_USAGE)                     || oidId.equals(RFC3280CertPathUtilities.CERTIFICATE_POLICIES)                     || oidId.equals(RFC3280CertPathUtilities.POLICY_MAPPINGS)                     || oidId.equals(RFC3280CertPathUtilities.INHIBIT_ANY_POLICY)                     || oidId.equals(RFC3280CertPathUtilities.CRL_DISTRIBUTION_POINTS)                     || oidId.equals(RFC3280CertPathUtilities.ISSUING_DISTRIBUTION_POINT)                     || oidId.equals(RFC3280CertPathUtilities.DELTA_CRL_INDICATOR)                     || oidId.equals(RFC3280CertPathUtilities.POLICY_CONSTRAINTS)                     || oidId.equals(RFC3280CertPathUtilities.BASIC_CONSTRAINTS)                     || oidId.equals(RFC3280CertPathUtilities.SUBJECT_ALTERNATIVE_NAME)                     || oidId.equals(RFC3280CertPathUtilities.NAME_CONSTRAINTS))                    {                        continue;                    }                    X509Extension       ext = extensions.getExtension(oid);                    if (ext.isCritical())                    {                        return true;                    }                }            }        }        return false;    }    public PublicKey getPublicKey()    {        return JDKKeyFactory.createPublicKeyFromPublicKeyInfo(c.getSubjectPublicKeyInfo());    }    public byte[] getEncoded()        throws CertificateEncodingException    {        ByteArrayOutputStream   bOut = new ByteArrayOutputStream();        DEROutputStream         dOut = new DEROutputStream(bOut);        try        {            dOut.writeObject(c);            return bOut.toByteArray();        }        catch (IOException e)        {            throw new CertificateEncodingException(e.toString());        }    }    public boolean equals(        Object o)    {        if (o == this)        {            return true;        }                if (!(o instanceof Certificate))        {            return false;        }        Certificate other = (Certificate)o;                try        {            byte[] b1 = this.getEncoded();            byte[] b2 = other.getEncoded();                        return Arrays.areEqual(b1, b2);        }        catch (CertificateEncodingException e)        {            return false;        }    }        public synchronized int hashCode()    {        if (!hashValueSet)        {            hashValue = calculateHashCode();            hashValueSet = true;        }        return hashValue;    }        private int calculateHashCode()    {        try        {            return Arrays.hashCode(this.getEncoded());        }        catch (CertificateEncodingException e)        {            return 0;        }    }    public void setBagAttribute(        DERObjectIdentifier oid,        DEREncodable        attribute)    {        attrCarrier.setBagAttribute(oid, attribute);    }    public DEREncodable getBagAttribute(        DERObjectIdentifier oid)    {        return attrCarrier.getBagAttribute(oid);    }    public Enumeration getBagAttributeKeys()    {        return attrCarrier.getBagAttributeKeys();    }    public String toString()    {        StringBuffer    buf = new StringBuffer();        String          nl = System.getProperty("line.separator");        buf.append("  [0]         Version: ").append(this.getVersion()).append(nl);        buf.append("         SerialNumber: ").append(this.getSerialNumber()).append(nl);        buf.append("             IssuerDN: ").append(this.getIssuerDN()).append(nl);        buf.append("           Start Date: ").append(this.getNotBefore()).append(nl);        buf.append("           Final Date: ").append(this.getNotAfter()).append(nl);        buf.append("            SubjectDN: ").append(this.getSubjectDN()).append(nl);        buf.append("           Public Key: ").append(this.getPublicKey()).append(nl);        buf.append("  Signature Algorithm: ").append(this.getSigAlgName()).append(nl);        byte[]  sig = this.getSignature();        buf.append("            Signature: ").append(new String(Hex.encode(sig, 0, 20))).append(nl);        for (int i = 20; i < sig.length; i += 20)        {            if (i < sig.length - 20)            {                buf.append("                       ").append(new String(Hex.encode(sig, i, 20))).append(nl);            }            else            {                buf.append("                       ").append(new String(Hex.encode(sig, i, sig.length - i))).append(nl);            }        }        X509Extensions  extensions = c.getTBSCertificate().getExtensions();        if (extensions != null)        {            Enumeration     e = extensions.oids();            if (e.hasMoreElements())            {                buf.append("       Extensions: \n");            }            while (e.hasMoreElements())            {                DERObjectIdentifier     oid = (DERObjectIdentifier)e.nextElement();                X509Extension           ext = extensions.getExtension(oid);                if (ext.getValue() != null)                {                    byte[]                  octs = ext.getValue().getOctets();                    ASN1InputStream         dIn = new ASN1InputStream(octs);                    buf.append("                       critical(").append(ext.isCritical()).append(") ");                    try                    {                        if (oid.equals(X509Extensions.BasicConstraints))                        {                            buf.append(new BasicConstraints((ASN1Sequence)dIn.readObject())).append(nl);                        }                        else if (oid.equals(X509Extensions.KeyUsage))                        {                            buf.append(new KeyUsage((DERBitString)dIn.readObject())).append(nl);                        }                        else if (oid.equals(MiscObjectIdentifiers.netscapeCertType))                        {                            buf.append(new NetscapeCertType((DERBitString)dIn.readObject())).append(nl);                        }                        else if (oid.equals(MiscObjectIdentifiers.netscapeRevocationURL))                        {                            buf.append(new NetscapeRevocationURL((DERIA5String)dIn.readObject())).append(nl);                        }                        else if (oid.equals(MiscObjectIdentifiers.verisignCzagExtension))                        {                            buf.append(new VerisignCzagExtension((DERIA5String)dIn.readObject())).append(nl);                        }                        else                         {                            buf.append(oid.getId());                            buf.append(" value = ").append(ASN1Dump.dumpAsString(dIn.readObject())).append(nl);                            //buf.append(" value = ").append("*****").append(nl);                        }                    }                    catch (Exception ex)                    {                        buf.append(oid.getId());                   //     buf.append(" value = ").append(new String(Hex.encode(ext.getValue().getOctets()))).append(nl);                        buf.append(" value = ").append("*****").append(nl);                    }                }                else                {                    buf.append(nl);                }            }        }        return buf.toString();    }    public final void verify(        PublicKey   key)        throws CertificateException, NoSuchAlgorithmException,        InvalidKeyException, NoSuchProviderException, SignatureException    {        Signature   signature;        String      sigName = X509SignatureUtil.getSignatureName(c.getSignatureAlgorithm());                try        {            signature = Signature.getInstance(sigName, "BC");        }        catch (Exception e)        {            signature = Signature.getInstance(sigName);        }                checkSignature(key, signature);    }        public final void verify(        PublicKey   key,        String      sigProvider)        throws CertificateException, NoSuchAlgorithmException,        InvalidKeyException, NoSuchProviderException, SignatureException    {        String    sigName = X509SignatureUtil.getSignatureName(c.getSignatureAlgorithm());        Signature signature = Signature.getInstance(sigName, sigProvider);                checkSignature(key, signature);    }    private void checkSignature(        PublicKey key,         Signature signature)         throws CertificateException, NoSuchAlgorithmException,             SignatureException, InvalidKeyException    {        if (!c.getSignatureAlgorithm().equals(c.getTBSCertificate().getSignature()))        {            throw new CertificateException("signature algorithm in TBS cert not same as outer cert");        }        DEREncodable params = c.getSignatureAlgorithm().getParameters();        // TODO This should go after the initVerify?        X509SignatureUtil.setSignatureParameters(signature, params);        signature.initVerify(key);        signature.update(this.getTBSCertificate());        if (!signature.verify(this.getSignature()))        {            throw new InvalidKeyException("Public key presented not for certificate signature");        }    }}

⌨️ 快捷键说明

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