respdata.java

来自「bouncycastle 是一个JAVA安全提供者」· Java 代码 · 共 145 行

JAVA
145
字号
package org.bouncycastle.ocsp;import java.io.ByteArrayOutputStream;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Enumeration;import java.util.HashSet;import java.util.Set;import org.bouncycastle.asn1.ASN1Sequence;import org.bouncycastle.asn1.DERObjectIdentifier;import org.bouncycastle.asn1.DEROutputStream;import org.bouncycastle.asn1.ocsp.ResponseData;import org.bouncycastle.asn1.ocsp.SingleResponse;import org.bouncycastle.asn1.x509.X509Extension;import org.bouncycastle.asn1.x509.X509Extensions;public class RespData    implements java.security.cert.X509Extension{    ResponseData    data;    public RespData(        ResponseData    data)    {        this.data = data;    }    public int getVersion()    {        return data.getVersion().getValue().intValue() + 1;    }    public RespID getResponderId()    {        return new RespID(data.getResponderID());    }    public Date getProducedAt()    {        SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmssz");        return dateF.parse(data.getProducedAt().getTime(), new ParsePosition(0));    }    public SingleResp[] getResponses()    {        ASN1Sequence    s = data.getResponses();        SingleResp[]    rs = new SingleResp[s.size()];        for (int i = 0; i != rs.length; i++)        {            rs[i] = new SingleResp(SingleResponse.getInstance(s.getObjectAt(i)));        }        return rs;    }    public X509Extensions getResponseExtensions()    {        return data.getResponseExtensions();    }        /**     * RFC 2650 doesn't specify any critical extensions so we return true     * if any are encountered.     *      * @return true if any critical extensions are present.     */    public boolean hasUnsupportedCriticalExtension()    {        Set extns = getCriticalExtensionOIDs();        if (extns != null && !extns.isEmpty())        {            return true;        }        return false;    }    private Set getExtensionOIDs(boolean critical)    {        Set             set = new HashSet();        X509Extensions  extensions = this.getResponseExtensions();                if (extensions != null)        {            Enumeration     e = extensions.oids();                while (e.hasMoreElements())            {                DERObjectIdentifier oid = (DERObjectIdentifier)e.nextElement();                X509Extension       ext = extensions.getExtension(oid);                    if (critical == ext.isCritical())                {                    set.add(oid.getId());                }            }        }        return set;    }    public Set getCriticalExtensionOIDs()    {        return getExtensionOIDs(true);    }    public Set getNonCriticalExtensionOIDs()    {        return getExtensionOIDs(false);    }    public byte[] getExtensionValue(String oid)    {        X509Extensions exts = this.getResponseExtensions();        if (exts != null)        {            X509Extension   ext = exts.getExtension(new DERObjectIdentifier(oid));            if (ext != null)            {                ByteArrayOutputStream   bOut = new ByteArrayOutputStream();                DEROutputStream dOut = new DEROutputStream(bOut);                try                {                    dOut.writeObject(ext.getValue());                    return bOut.toByteArray();                }                catch (Exception e)                {                    throw new RuntimeException("error encoding " + e.toString());                }            }        }        return null;    }}

⌨️ 快捷键说明

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