org.bouncycastle.asn1.cmp.CMPCertificate Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcutil-fips Show documentation
Show all versions of bcutil-fips Show documentation
The Bouncy Castle Java APIs for ASN.1 extension and utility APIs used to support bcpkix and bctls with the BC FIPS provider. The APIs may also be used with other providers although if being used in a FIPS context it is the responsibility of the user to ensure that any other providers used are FIPS certified and used appropriately.
/***************************************************************/
/****** DO NOT EDIT THIS CLASS bc-java SOURCE FILE ******/
/***************************************************************/
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
*/
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.
*
* @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.
*
* @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.
*
* @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();
}
}