org.jnotary.dvcs.CertEtcToken.java Source code

Java tutorial

Introduction

Here is the source code for org.jnotary.dvcs.CertEtcToken.java

Source

/*******************************************************************************
 * Copyright (c) 2013 aib.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Contributors:
 *     aib - initial API and implementation
 ******************************************************************************/
package org.jnotary.dvcs;

import org.bouncycastle.asn1.ASN1Choice;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Primitive;
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;
import org.bouncycastle.asn1.x509.X509Extension;

/*
CertEtcToken ::= CHOICE {
    
certificate                  [0] IMPLICIT Certificate ,
esscertid                    [1] ESSCertId ,
pkistatus                    [2] IMPLICIT PKIStatusInfo ,
assertion                    [3] ContentInfo ,
crl                          [4] IMPLICIT CertificateList,
ocspcertstatus               [5] IMPLICIT CertStatus,
oscpcertid                   [6] IMPLICIT CertId ,
oscpresponse                 [7] IMPLICIT OCSPResponse,
capabilities                 [8] SMIMECapabilities,
extension                    Extension }
*/
public class CertEtcToken extends ASN1Object implements ASN1Choice {
    private Certificate certificate = null;
    private ESSCertID esscertid = null;
    private PKIStatusInfo pkistatus = null;
    private ContentInfo assertion = null;
    private CertificateList crl = null;
    private CertStatus ocspcertstatus = null;
    private CertID oscpcertid = null;
    private OCSPResponse oscpresponse = null;
    private SMIMECapabilities capabilities = null;
    private Extension extension = null;

    public CertEtcToken(Certificate certificate) {
        this.certificate = certificate;
    }

    public CertEtcToken(ESSCertID esscertid) {
        this.esscertid = esscertid;
    }

    public CertEtcToken(PKIStatusInfo pkistatus) {
        this.pkistatus = pkistatus;
    }

    public CertEtcToken(ContentInfo assertion) {
        this.assertion = assertion;
    }

    public CertEtcToken(CertificateList crl) {
        this.crl = crl;
    }

    public CertEtcToken(CertStatus ocspcertstatus) {
        this.ocspcertstatus = ocspcertstatus;
    }

    public CertEtcToken(CertID oscpcertid) {
        this.oscpcertid = oscpcertid;
    }

    public CertEtcToken(OCSPResponse oscpresponse) {
        this.oscpresponse = oscpresponse;
    }

    public CertEtcToken(SMIMECapabilities capabilities) {
        this.capabilities = capabilities;
    }

    public CertEtcToken(Extension extension) {
        this.extension = extension;
    }

    public Certificate getCertificate() {
        return certificate;
    }

    public ESSCertID getEsscertid() {
        return esscertid;
    }

    public PKIStatusInfo getPkistatus() {
        return pkistatus;
    }

    public ContentInfo getAssertion() {
        return assertion;
    }

    public CertificateList getCrl() {
        return crl;
    }

    public CertStatus getOcspcertstatus() {
        return ocspcertstatus;
    }

    public CertID getOscpcertid() {
        return oscpcertid;
    }

    public OCSPResponse getOscpresponse() {
        return oscpresponse;
    }

    public SMIMECapabilities getCapabilities() {
        return capabilities;
    }

    public Extension getExtension() {
        return extension;
    }

    private CertEtcToken(Object obj) {
        if (obj instanceof X509Extension) {
            extension = null; //TODO: Das muss verstanden werden
        } else {
            ASN1TaggedObject tagObj = (ASN1TaggedObject) obj;
            switch (tagObj.getTagNo()) {
            case 0:
                certificate = Certificate.getInstance(tagObj.getObject());
                break;
            case 1:
                esscertid = ESSCertID.getInstance(tagObj.getObject());
                break;
            case 2:
                pkistatus = PKIStatusInfo.getInstance(tagObj.getObject());
                break;
            case 3:
                assertion = ContentInfo.getInstance(tagObj.getObject());
                break;
            case 4:
                crl = CertificateList.getInstance(tagObj.getObject());
                break;
            case 5:
                ocspcertstatus = CertStatus.getInstance(tagObj.getObject());
                break;
            case 6:
                oscpcertid = CertID.getInstance(tagObj.getObject());
                break;
            case 7:
                oscpresponse = OCSPResponse.getInstance(tagObj.getObject());
                break;
            case 8:
                capabilities = SMIMECapabilities.getInstance(tagObj.getObject());
                break;
            }

        }

    }

    public static CertEtcToken getInstance(Object obj) {
        if (obj instanceof CertEtcToken) {
            return (CertEtcToken) obj;
        } else if (obj != null) {
            return new CertEtcToken(obj);
        }

        return null;
    }

    @Override
    public ASN1Primitive toASN1Primitive() {

        if (certificate != null)
            return new DERTaggedObject(true, 0, certificate).toASN1Primitive();
        if (esscertid != null)
            return new DERTaggedObject(true, 1, esscertid).toASN1Primitive();
        if (pkistatus != null)
            return new DERTaggedObject(true, 2, pkistatus).toASN1Primitive();
        if (assertion != null)
            return new DERTaggedObject(true, 3, assertion).toASN1Primitive();
        if (crl != null)
            return new DERTaggedObject(true, 4, crl).toASN1Primitive();
        if (ocspcertstatus != null)
            return new DERTaggedObject(true, 5, ocspcertstatus).toASN1Primitive();
        if (oscpcertid != null)
            return new DERTaggedObject(true, 6, oscpcertid).toASN1Primitive();
        if (oscpresponse != null)
            return new DERTaggedObject(true, 7, oscpresponse).toASN1Primitive();
        if (capabilities != null)
            return new DERTaggedObject(true, 8, capabilities).toASN1Primitive();
        if (extension != null)
            return extension.getParsedValue().toASN1Primitive();
        return null;
    }
}