com.bouncycastle.asn1.x509.NoticeReference Maven / Gradle / Ivy
package com.bouncycastle.asn1.x509;
import java.util.Enumeration;
import java.util.Vector;
import com.bouncycastle.asn1.ASN1Encodable;
import com.bouncycastle.asn1.ASN1EncodableVector;
import com.bouncycastle.asn1.ASN1Sequence;
import com.bouncycastle.asn1.DERInteger;
import com.bouncycastle.asn1.DERObject;
import com.bouncycastle.asn1.DERSequence;
/**
* NoticeReference
class, used in
* CertificatePolicies
X509 V3 extensions
* (in policy qualifiers).
*
*
* NoticeReference ::= SEQUENCE {
* organization DisplayText,
* noticeNumbers SEQUENCE OF INTEGER }
*
*
*
* @see PolicyQualifierInfo
* @see PolicyInformation
*/
public class NoticeReference
extends ASN1Encodable
{
private DisplayText organization;
private ASN1Sequence noticeNumbers;
/**
* Creates a new NoticeReference
instance.
*
* @param orgName a String
value
* @param numbers a Vector
value
*/
public NoticeReference(
String orgName,
Vector numbers)
{
organization = new DisplayText(orgName);
Object o = numbers.elementAt(0);
ASN1EncodableVector av = new ASN1EncodableVector();
if (o instanceof Integer)
{
Enumeration it = numbers.elements();
while (it.hasMoreElements())
{
Integer nm = (Integer) it.nextElement();
DERInteger di = new DERInteger(nm.intValue());
av.add (di);
}
}
noticeNumbers = new DERSequence(av);
}
/**
* Creates a new NoticeReference
instance.
*
* @param orgName a String
value
* @param numbers an ASN1EncodableVector
value
*/
public NoticeReference(
String orgName,
ASN1Sequence numbers)
{
organization = new DisplayText (orgName);
noticeNumbers = numbers;
}
/**
* Creates a new NoticeReference
instance.
*
* @param displayTextType an int
value
* @param orgName a String
value
* @param numbers an ASN1EncodableVector
value
*/
public NoticeReference(
int displayTextType,
String orgName,
ASN1Sequence numbers)
{
organization = new DisplayText(displayTextType,
orgName);
noticeNumbers = numbers;
}
/**
* Creates a new NoticeReference
instance.
* Useful for reconstructing a NoticeReference
* instance from its encodable/encoded form.
*
* @param as an ASN1Sequence
value obtained from either
* calling @{link toASN1Object()} for a NoticeReference
* instance or from parsing it from a DER-encoded stream.
*/
public NoticeReference(
ASN1Sequence as)
{
if (as.size() != 2)
{
throw new IllegalArgumentException("Bad sequence size: "
+ as.size());
}
organization = DisplayText.getInstance(as.getObjectAt(0));
noticeNumbers = ASN1Sequence.getInstance(as.getObjectAt(1));
}
public static NoticeReference getInstance(
Object as)
{
if (as instanceof NoticeReference)
{
return (NoticeReference)as;
}
else if (as instanceof ASN1Sequence)
{
return new NoticeReference((ASN1Sequence)as);
}
throw new IllegalArgumentException("unknown object in getInstance.");
}
public DisplayText getOrganization()
{
return organization;
}
public ASN1Sequence getNoticeNumbers()
{
return noticeNumbers;
}
/**
* Describe toASN1Object
method here.
*
* @return a DERObject
value
*/
public DERObject toASN1Object()
{
ASN1EncodableVector av = new ASN1EncodableVector();
av.add (organization);
av.add (noticeNumbers);
return new DERSequence (av);
}
}