package org.bouncycastle.asn1.cmp;

import java.io.IOException;

import org.bouncycastle.asn1.ASN1Choice;
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.x509.AttributeCertificate;
import org.bouncycastle.asn1.x509.Certificate;

public class CMPCertificate
    extends ASN1Object
    implements ASN1Choice
{
    private Certificate x509v3PKCert;

    private int        otherTagValue;
    private ASN1Object otherCert;

    
Note: the addition of attribute certificates is a BC extension. If you use this constructor they will be added with a tag value of 1.
Deprecated:use (type. otherCert) constructor
/** * Note: the addition of attribute certificates is a BC extension. If you use this constructor they * will be added with a tag value of 1. * @deprecated use (type. otherCert) constructor */
public CMPCertificate(AttributeCertificate x509v2AttrCert) { this(1, x509v2AttrCert); }
Note: the addition of other certificates is a BC extension. If you use this constructor they will be added with an explicit tag value of type.
Params:
  • type – the type of the certificate (used as a tag value).
  • otherCert – the object representing the certificate
/** * Note: the addition of other certificates is a BC extension. If you use this constructor they * will be added with an explicit tag value of type. * * @param type the type of the certificate (used as a tag value). * @param otherCert the object representing the certificate */
public CMPCertificate(int type, ASN1Object otherCert) { this.otherTagValue = type; this.otherCert = otherCert; } public CMPCertificate(Certificate x509v3PKCert) { if (x509v3PKCert.getVersionNumber() != 3) { throw new IllegalArgumentException("only version 3 certificates allowed"); } this.x509v3PKCert = x509v3PKCert; } public static CMPCertificate getInstance(Object o) { if (o == null || o instanceof CMPCertificate) { return (CMPCertificate)o; } if (o instanceof byte[]) { try { o = ASN1Primitive.fromByteArray((byte[])o); } catch (IOException e) { throw new IllegalArgumentException("Invalid encoding in CMPCertificate"); } } if (o instanceof ASN1Sequence) { return new CMPCertificate(Certificate.getInstance(o)); } if (o instanceof ASN1TaggedObject) { ASN1TaggedObject taggedObject = (ASN1TaggedObject)o; return new CMPCertificate(taggedObject.getTagNo(), taggedObject.getObject()); } throw new IllegalArgumentException("Invalid object: " + o.getClass().getName()); } public boolean isX509v3PKCert() { return x509v3PKCert != null; } public Certificate getX509v3PKCert() { return x509v3PKCert; }
Return an AttributeCertificate interpretation of otherCert.
Deprecated:use getOtherCert and getOtherTag to make sure message is really what it should be.
Returns: an AttributeCertificate
/** * Return an AttributeCertificate interpretation of otherCert. * @deprecated use getOtherCert and getOtherTag to make sure message is really what it should be. * * @return an AttributeCertificate */
public AttributeCertificate getX509v2AttrCert() { return AttributeCertificate.getInstance(otherCert); } public int getOtherCertTag() { return otherTagValue; } public ASN1Object getOtherCert() { return otherCert; }
CMPCertificate ::= CHOICE {
           x509v3PKCert    Certificate
           otherCert      [tag] EXPLICIT ANY DEFINED BY tag
 }
Note: the addition of the explicit tagging is a BC extension. We apologise for the warped syntax, but hopefully you get the idea.
Returns:a basic ASN.1 object representation.
/** * <pre> * CMPCertificate ::= CHOICE { * x509v3PKCert Certificate * otherCert [tag] EXPLICIT ANY DEFINED BY tag * } * </pre> * Note: the addition of the explicit tagging is a BC extension. We apologise for the warped syntax, but hopefully you get the idea. * * @return a basic ASN.1 object representation. */
public ASN1Primitive toASN1Primitive() { if (otherCert != null) { // explicit following CMP conventions return new DERTaggedObject(true, otherTagValue, otherCert); } return x509v3PKCert.toASN1Primitive(); } }