001package org.apache.commons.ssl.org.bouncycastle.asn1.x509;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1GeneralizedTime;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
009
010public class AttCertValidityPeriod
011    extends ASN1Object
012{
013    ASN1GeneralizedTime  notBeforeTime;
014    ASN1GeneralizedTime  notAfterTime;
015
016    public static AttCertValidityPeriod getInstance(
017            Object  obj)
018    {
019        if (obj instanceof AttCertValidityPeriod)
020        {
021            return (AttCertValidityPeriod)obj;
022        }
023        else if (obj != null)
024        {
025            return new AttCertValidityPeriod(ASN1Sequence.getInstance(obj));
026        }
027        
028        return null;
029    }
030    
031    private AttCertValidityPeriod(
032        ASN1Sequence    seq)
033    {
034        if (seq.size() != 2)
035        {
036            throw new IllegalArgumentException("Bad sequence size: "
037                    + seq.size());
038        }
039
040        notBeforeTime = ASN1GeneralizedTime.getInstance(seq.getObjectAt(0));
041        notAfterTime = ASN1GeneralizedTime.getInstance(seq.getObjectAt(1));
042    }
043
044    /**
045     * @param notBeforeTime
046     * @param notAfterTime
047     */
048    public AttCertValidityPeriod(
049        ASN1GeneralizedTime notBeforeTime,
050        ASN1GeneralizedTime notAfterTime)
051    {
052        this.notBeforeTime = notBeforeTime;
053        this.notAfterTime = notAfterTime;
054    }
055
056    public ASN1GeneralizedTime getNotBeforeTime()
057    {
058        return notBeforeTime;
059    }
060
061    public ASN1GeneralizedTime getNotAfterTime()
062    {
063        return notAfterTime;
064    }
065
066    /**
067     * Produce an object suitable for an ASN1OutputStream.
068     * <pre>
069     *  AttCertValidityPeriod  ::= SEQUENCE {
070     *       notBeforeTime  GeneralizedTime,
071     *       notAfterTime   GeneralizedTime
072     *  } 
073     * </pre>
074     */
075    public ASN1Primitive toASN1Primitive()
076    {
077        ASN1EncodableVector  v = new ASN1EncodableVector();
078
079        v.add(notBeforeTime);
080        v.add(notAfterTime);
081
082        return new DERSequence(v);
083    }
084}