org.bouncycastle.asn1.ocsp.CertStatus.java Source code

Java tutorial

Introduction

Here is the source code for org.bouncycastle.asn1.ocsp.CertStatus.java

Source

package org.bouncycastle.asn1.ocsp;

import org.bouncycastle.asn1.ASN1Choice;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERNull;
import org.bouncycastle.asn1.DERTaggedObject;

public class CertStatus extends ASN1Object implements ASN1Choice {
    private int tagNo;
    private ASN1Encodable value;

    /**
     * create a CertStatus object with a tag of zero.
     */
    public CertStatus() {
        tagNo = 0;
        value = DERNull.INSTANCE;
    }

    public CertStatus(RevokedInfo info) {
        tagNo = 1;
        value = info;
    }

    public CertStatus(int tagNo, ASN1Encodable value) {
        this.tagNo = tagNo;
        this.value = value;
    }

    private CertStatus(ASN1TaggedObject choice) {
        this.tagNo = choice.getTagNo();

        switch (choice.getTagNo()) {
        case 0:
            value = DERNull.INSTANCE;
            break;
        case 1:
            value = RevokedInfo.getInstance(choice, false);
            break;
        case 2:
            value = DERNull.INSTANCE;
            break;
        default:
            throw new IllegalArgumentException("Unknown tag encountered: " + choice.getTagNo());
        }
    }

    public static CertStatus getInstance(Object obj) {
        if (obj == null || obj instanceof CertStatus) {
            return (CertStatus) obj;
        } else if (obj instanceof ASN1TaggedObject) {
            return new CertStatus((ASN1TaggedObject) obj);
        }

        throw new IllegalArgumentException("unknown object in factory: " + obj.getClass().getName());
    }

    public static CertStatus getInstance(ASN1TaggedObject obj, boolean explicit) {
        return getInstance(obj.getObject()); // must be explicitly tagged
    }

    public int getTagNo() {
        return tagNo;
    }

    public ASN1Encodable getStatus() {
        return value;
    }

    /**
     * Produce an object suitable for an ASN1OutputStream.
     * <pre>
     *  CertStatus ::= CHOICE {
     *                  good        [0]     IMPLICIT NULL,
     *                  revoked     [1]     IMPLICIT RevokedInfo,
     *                  unknown     [2]     IMPLICIT UnknownInfo }
     * </pre>
     */
    public ASN1Primitive toASN1Primitive() {
        return new DERTaggedObject(false, tagNo, value);
    }
}