blob: a2f598a01bdee76958e1971f04c97243e69b0e72 [file] [log] [blame]
package org.bouncycastle.asn1.crmf;
import java.math.BigInteger;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DERSequence;
/**
* <pre>
* PKIPublicationInfo ::= SEQUENCE {
* action INTEGER {
* dontPublish (0),
* pleasePublish (1) },
* pubInfos SEQUENCE SIZE (1..MAX) OF SinglePubInfo OPTIONAL }
* -- pubInfos MUST NOT be present if action is "dontPublish"
* -- (if action is "pleasePublish" and pubInfos is omitted,
* -- "dontCare" is assumed)
* </pre>
*/
public class PKIPublicationInfo
extends ASN1Object
{
public static final ASN1Integer dontPublish = new ASN1Integer(0);
public static final ASN1Integer pleasePublish = new ASN1Integer(1);
private ASN1Integer action;
private ASN1Sequence pubInfos;
private PKIPublicationInfo(ASN1Sequence seq)
{
action = ASN1Integer.getInstance(seq.getObjectAt(0));
if (seq.size() > 1)
{
pubInfos = ASN1Sequence.getInstance(seq.getObjectAt(1));
}
}
public static PKIPublicationInfo getInstance(Object o)
{
if (o instanceof PKIPublicationInfo)
{
return (PKIPublicationInfo)o;
}
if (o != null)
{
return new PKIPublicationInfo(ASN1Sequence.getInstance(o));
}
return null;
}
public PKIPublicationInfo(BigInteger action)
{
this(new ASN1Integer(action));
}
public PKIPublicationInfo(ASN1Integer action)
{
this.action = action;
}
/**
* Constructor with a single pubInfo, assumes pleasePublish as the action.
*
* @param pubInfo the pubInfo to be published (can be null if don't care is required).
*/
public PKIPublicationInfo(SinglePubInfo pubInfo)
{
this(pubInfo != null ? new SinglePubInfo[] { pubInfo } : (SinglePubInfo[])null);
}
/**
* Constructor with multiple pubInfo, assumes pleasePublish as the action.
*
* @param pubInfos the pubInfos to be published (can be null if don't care is required).
*/
public PKIPublicationInfo(SinglePubInfo[] pubInfos)
{
this.action = pleasePublish;
if (pubInfos != null)
{
this.pubInfos = new DERSequence(pubInfos);
}
else
{
this.pubInfos = null;
}
}
public ASN1Integer getAction()
{
return action;
}
public SinglePubInfo[] getPubInfos()
{
if (pubInfos == null)
{
return null;
}
SinglePubInfo[] results = new SinglePubInfo[pubInfos.size()];
for (int i = 0; i != results.length; i++)
{
results[i] = SinglePubInfo.getInstance(pubInfos.getObjectAt(i));
}
return results;
}
/**
* Return the primitive representation of PKIPublicationInfo.
*
* @return a basic ASN.1 object representation.
*/
public ASN1Primitive toASN1Primitive()
{
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(action);
if (pubInfos != null)
{
v.add(pubInfos);
}
return new DERSequence(v);
}
}