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