diff options
Diffstat (limited to 'core/src/main/java/org/spongycastle/asn1/esf/CrlOcspRef.java')
-rw-r--r-- | core/src/main/java/org/spongycastle/asn1/esf/CrlOcspRef.java | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/core/src/main/java/org/spongycastle/asn1/esf/CrlOcspRef.java b/core/src/main/java/org/spongycastle/asn1/esf/CrlOcspRef.java new file mode 100644 index 00000000..6d57769f --- /dev/null +++ b/core/src/main/java/org/spongycastle/asn1/esf/CrlOcspRef.java @@ -0,0 +1,106 @@ +package org.spongycastle.asn1.esf; + +import java.util.Enumeration; + +import org.spongycastle.asn1.ASN1EncodableVector; +import org.spongycastle.asn1.ASN1Object; +import org.spongycastle.asn1.ASN1Primitive; +import org.spongycastle.asn1.ASN1Sequence; +import org.spongycastle.asn1.DERSequence; +import org.spongycastle.asn1.DERTaggedObject; + +/** + * <pre> + * CrlOcspRef ::= SEQUENCE { + * crlids [0] CRLListID OPTIONAL, + * ocspids [1] OcspListID OPTIONAL, + * otherRev [2] OtherRevRefs OPTIONAL + * } + * </pre> + */ +public class CrlOcspRef + extends ASN1Object +{ + + private CrlListID crlids; + private OcspListID ocspids; + private OtherRevRefs otherRev; + + public static CrlOcspRef getInstance(Object obj) + { + if (obj instanceof CrlOcspRef) + { + return (CrlOcspRef)obj; + } + else if (obj != null) + { + return new CrlOcspRef(ASN1Sequence.getInstance(obj)); + } + + return null; + } + + private CrlOcspRef(ASN1Sequence seq) + { + Enumeration e = seq.getObjects(); + while (e.hasMoreElements()) + { + DERTaggedObject o = (DERTaggedObject)e.nextElement(); + switch (o.getTagNo()) + { + case 0: + this.crlids = CrlListID.getInstance(o.getObject()); + break; + case 1: + this.ocspids = OcspListID.getInstance(o.getObject()); + break; + case 2: + this.otherRev = OtherRevRefs.getInstance(o.getObject()); + break; + default: + throw new IllegalArgumentException("illegal tag"); + } + } + } + + public CrlOcspRef(CrlListID crlids, OcspListID ocspids, + OtherRevRefs otherRev) + { + this.crlids = crlids; + this.ocspids = ocspids; + this.otherRev = otherRev; + } + + public CrlListID getCrlids() + { + return this.crlids; + } + + public OcspListID getOcspids() + { + return this.ocspids; + } + + public OtherRevRefs getOtherRev() + { + return this.otherRev; + } + + public ASN1Primitive toASN1Primitive() + { + ASN1EncodableVector v = new ASN1EncodableVector(); + if (null != this.crlids) + { + v.add(new DERTaggedObject(true, 0, this.crlids.toASN1Primitive())); + } + if (null != this.ocspids) + { + v.add(new DERTaggedObject(true, 1, this.ocspids.toASN1Primitive())); + } + if (null != this.otherRev) + { + v.add(new DERTaggedObject(true, 2, this.otherRev.toASN1Primitive())); + } + return new DERSequence(v); + } +} |