001package org.apache.commons.ssl.org.bouncycastle.asn1.esf;
002
003import java.util.Enumeration;
004
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1String;
011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
012import org.apache.commons.ssl.org.bouncycastle.asn1.x509.DisplayText;
013import org.apache.commons.ssl.org.bouncycastle.asn1.x509.NoticeReference;
014
015public class SPUserNotice
016    extends ASN1Object
017{
018    private NoticeReference noticeRef;
019    private DisplayText     explicitText;
020
021    public static SPUserNotice getInstance(
022        Object obj)
023    {
024        if (obj instanceof SPUserNotice)
025        {
026            return (SPUserNotice)obj;
027        }
028        else if (obj != null)
029        {
030            return new SPUserNotice(ASN1Sequence.getInstance(obj));
031        }
032
033        return null;
034    }
035
036    private SPUserNotice(
037        ASN1Sequence seq)
038    {
039        Enumeration e = seq.getObjects();
040        while (e.hasMoreElements())
041        {
042            ASN1Encodable object = (ASN1Encodable)e.nextElement();
043            if (object instanceof DisplayText || object instanceof ASN1String)
044            {
045                explicitText = DisplayText.getInstance(object);
046            }
047            else if (object instanceof NoticeReference || object instanceof ASN1Sequence)
048            {
049                noticeRef = NoticeReference.getInstance(object);
050            }
051            else
052            {
053                throw new IllegalArgumentException("Invalid element in 'SPUserNotice': " + object.getClass().getName());
054            }
055        }
056    }
057
058    public SPUserNotice(
059        NoticeReference noticeRef,
060        DisplayText     explicitText)
061    {
062        this.noticeRef = noticeRef;
063        this.explicitText = explicitText;
064    }
065
066    public NoticeReference getNoticeRef()
067    {
068        return noticeRef;
069    }
070
071    public DisplayText getExplicitText()
072    {
073        return explicitText;
074    }
075
076    /**
077     * <pre>
078     * SPUserNotice ::= SEQUENCE {
079     *     noticeRef NoticeReference OPTIONAL,
080     *     explicitText DisplayText OPTIONAL }
081     * </pre>
082     */
083    public ASN1Primitive toASN1Primitive()
084    {
085        ASN1EncodableVector  v = new ASN1EncodableVector();
086
087        if (noticeRef != null)
088        {
089            v.add(noticeRef);
090        }
091
092        if (explicitText != null)
093        {
094            v.add(explicitText);
095        }
096
097        return new DERSequence(v);
098    }
099}