14eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootpackage org.bouncycastle.cert.ocsp;
24eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
34eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport java.util.Date;
44eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport java.util.List;
54eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport java.util.Set;
64eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
74eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1ObjectIdentifier;
84eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ocsp.CertStatus;
94eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ocsp.RevokedInfo;
104eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ocsp.SingleResponse;
114eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.x509.Extension;
124eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.x509.Extensions;
134eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
144eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootpublic class SingleResp
154eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root{
164eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    private SingleResponse  resp;
174eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    private Extensions extensions;
184eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
194eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public SingleResp(
204eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        SingleResponse  resp)
214eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
224eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        this.resp = resp;
234eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        this.extensions = resp.getSingleExtensions();
244eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
254eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
264eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public CertificateID getCertID()
274eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
284eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return new CertificateID(resp.getCertID());
294eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
304eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
314eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    /**
324eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * Return the status object for the response - null indicates good.
334eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     *
344eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * @return the status object for the response, null if it is good.
354eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     */
364eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public CertificateStatus getCertStatus()
374eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
384eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        CertStatus  s = resp.getCertStatus();
394eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
404eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        if (s.getTagNo() == 0)
414eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
424eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            return null;            // good
434eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
444eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        else if (s.getTagNo() == 1)
454eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
464eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            return new RevokedStatus(RevokedInfo.getInstance(s.getStatus()));
474eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
484eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
494eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return new UnknownStatus();
504eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
514eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
524eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public Date getThisUpdate()
534eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
544eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return OCSPUtils.extractDate(resp.getThisUpdate());
554eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
564eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
574eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    /**
584eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * return the NextUpdate value - note: this is an optional field so may
594eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * be returned as null.
604eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     *
614eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * @return nextUpdate, or null if not present.
624eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     */
634eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public Date getNextUpdate()
644eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
654eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        if (resp.getNextUpdate() == null)
664eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
674eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            return null;
684eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
694eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
704eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return OCSPUtils.extractDate(resp.getNextUpdate());
714eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
724eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
734eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public boolean hasExtensions()
744eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
754eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return extensions != null;
764eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
774eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
784eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public Extension getExtension(ASN1ObjectIdentifier oid)
794eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
804eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        if (extensions != null)
814eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
824eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            return extensions.getExtension(oid);
834eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
844eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
854eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return null;
864eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
874eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
884eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public List getExtensionOIDs()
894eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
904eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return OCSPUtils.getExtensionOIDs(extensions);
914eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
924eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
934eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public Set getCriticalExtensionOIDs()
944eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
954eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return OCSPUtils.getCriticalExtensionOIDs(extensions);
964eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
974eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
984eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public Set getNonCriticalExtensionOIDs()
994eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
1004eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return OCSPUtils.getNonCriticalExtensionOIDs(extensions);
1014eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
1024eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root}
103