diff options
author | David Hook <dgh@cryptoworkshop.com> | 2013-05-31 11:07:45 +0400 |
---|---|---|
committer | David Hook <dgh@cryptoworkshop.com> | 2013-05-31 11:07:45 +0400 |
commit | 2b976f5364cfdbc37d3086019d93483c983eb80b (patch) | |
tree | cb846af3fd1d43f9c2562a1fb2d06b997ad8f229 /core/src/main/java/org/bouncycastle/asn1/dvcs/CertEtcToken.java | |
parent | 5f714bd92fbd780d22406f4bc3681be005f6f04a (diff) |
initial reshuffle
Diffstat (limited to 'core/src/main/java/org/bouncycastle/asn1/dvcs/CertEtcToken.java')
-rw-r--r-- | core/src/main/java/org/bouncycastle/asn1/dvcs/CertEtcToken.java | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/core/src/main/java/org/bouncycastle/asn1/dvcs/CertEtcToken.java b/core/src/main/java/org/bouncycastle/asn1/dvcs/CertEtcToken.java new file mode 100644 index 00000000..3f69c52f --- /dev/null +++ b/core/src/main/java/org/bouncycastle/asn1/dvcs/CertEtcToken.java @@ -0,0 +1,171 @@ +package org.bouncycastle.asn1.dvcs; + +import org.bouncycastle.asn1.ASN1Choice; +import org.bouncycastle.asn1.ASN1Encodable; +import org.bouncycastle.asn1.ASN1Object; +import org.bouncycastle.asn1.ASN1Primitive; +import org.bouncycastle.asn1.ASN1Sequence; +import org.bouncycastle.asn1.ASN1TaggedObject; +import org.bouncycastle.asn1.DERTaggedObject; +import org.bouncycastle.asn1.cmp.PKIStatusInfo; +import org.bouncycastle.asn1.cms.ContentInfo; +import org.bouncycastle.asn1.ess.ESSCertID; +import org.bouncycastle.asn1.ocsp.CertID; +import org.bouncycastle.asn1.ocsp.CertStatus; +import org.bouncycastle.asn1.ocsp.OCSPResponse; +import org.bouncycastle.asn1.smime.SMIMECapabilities; +import org.bouncycastle.asn1.x509.Certificate; +import org.bouncycastle.asn1.x509.CertificateList; +import org.bouncycastle.asn1.x509.Extension; + +/** + * <pre> + * CertEtcToken ::= CHOICE { + * certificate [0] IMPLICIT Certificate , + * esscertid [1] ESSCertId , + * pkistatus [2] IMPLICIT PKIStatusInfo , + * assertion [3] ContentInfo , + * crl [4] IMPLICIT CertificateList, + * ocspcertstatus [5] CertStatus, + * oscpcertid [6] IMPLICIT CertId , + * oscpresponse [7] IMPLICIT OCSPResponse, + * capabilities [8] SMIMECapabilities, + * extension Extension + * } + * </pre> + */ +public class CertEtcToken + extends ASN1Object + implements ASN1Choice +{ + public static final int TAG_CERTIFICATE = 0; + public static final int TAG_ESSCERTID = 1; + public static final int TAG_PKISTATUS = 2; + public static final int TAG_ASSERTION = 3; + public static final int TAG_CRL = 4; + public static final int TAG_OCSPCERTSTATUS = 5; + public static final int TAG_OCSPCERTID = 6; + public static final int TAG_OCSPRESPONSE = 7; + public static final int TAG_CAPABILITIES = 8; + + private static final boolean[] explicit = new boolean[] + { + false, true, false, true, false, true, false, false, true + }; + + private int tagNo; + private ASN1Encodable value; + private Extension extension; + + public CertEtcToken(int tagNo, ASN1Encodable value) + { + this.tagNo = tagNo; + this.value = value; + } + + public CertEtcToken(Extension extension) + { + this.tagNo = -1; + this.extension = extension; + } + + private CertEtcToken(ASN1TaggedObject choice) + { + this.tagNo = choice.getTagNo(); + + switch (tagNo) + { + case TAG_CERTIFICATE: + value = Certificate.getInstance(choice, false); + break; + case TAG_ESSCERTID: + value = ESSCertID.getInstance(choice.getObject()); + break; + case TAG_PKISTATUS: + value = PKIStatusInfo.getInstance(choice, false); + break; + case TAG_ASSERTION: + value = ContentInfo.getInstance(choice.getObject()); + break; + case TAG_CRL: + value = CertificateList.getInstance(choice, false); + break; + case TAG_OCSPCERTSTATUS: + value = CertStatus.getInstance(choice.getObject()); + break; + case TAG_OCSPCERTID: + value = CertID.getInstance(choice, false); + break; + case TAG_OCSPRESPONSE: + value = OCSPResponse.getInstance(choice, false); + break; + case TAG_CAPABILITIES: + value = SMIMECapabilities.getInstance(choice.getObject()); + break; + default: + throw new IllegalArgumentException("Unknown tag: " + tagNo); + } + } + + public static CertEtcToken getInstance(Object obj) + { + if (obj instanceof CertEtcToken) + { + return (CertEtcToken)obj; + } + else if (obj instanceof ASN1TaggedObject) + { + return new CertEtcToken((ASN1TaggedObject)obj); + } + else if (obj != null) + { + return new CertEtcToken(Extension.getInstance(obj)); + } + + return null; + } + + public ASN1Primitive toASN1Primitive() + { + if (extension == null) + { + return new DERTaggedObject(explicit[tagNo], tagNo, value); + } + else + { + return extension.toASN1Primitive(); + } + } + + public int getTagNo() + { + return tagNo; + } + + public ASN1Encodable getValue() + { + return value; + } + + public Extension getExtension() + { + return extension; + } + + public String toString() + { + return "CertEtcToken {\n" + value + "}\n"; + } + + public static CertEtcToken[] arrayFromSequence(ASN1Sequence seq) + { + CertEtcToken[] tmp = new CertEtcToken[seq.size()]; + + for (int i = 0; i != tmp.length; i++) + { + tmp[i] = CertEtcToken.getInstance(seq.getObjectAt(i)); + } + + return tmp; + } +} |