001package org.apache.commons.ssl.org.bouncycastle.asn1.x509;
002
003import java.util.Enumeration;
004
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1GeneralizedTime;
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.ASN1TaggedObject;
011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
012import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject;
013
014/**
015 * <pre>
016 *    PrivateKeyUsagePeriod ::= SEQUENCE {
017 *      notBefore       [0]     GeneralizedTime OPTIONAL,
018 *      notAfter        [1]     GeneralizedTime OPTIONAL }
019 * </pre>
020 */
021public class PrivateKeyUsagePeriod
022    extends ASN1Object
023{
024    public static PrivateKeyUsagePeriod getInstance(Object obj)
025    {
026        if (obj instanceof PrivateKeyUsagePeriod)
027        {
028            return (PrivateKeyUsagePeriod)obj;
029        }
030
031        if (obj != null)
032        {
033            return new PrivateKeyUsagePeriod(ASN1Sequence.getInstance(obj));
034        }
035
036        return null;
037    }
038
039    private ASN1GeneralizedTime _notBefore, _notAfter;
040
041    private PrivateKeyUsagePeriod(ASN1Sequence seq)
042    {
043        Enumeration en = seq.getObjects();
044        while (en.hasMoreElements())
045        {
046            ASN1TaggedObject tObj = (ASN1TaggedObject)en.nextElement();
047
048            if (tObj.getTagNo() == 0)
049            {
050                _notBefore = ASN1GeneralizedTime.getInstance(tObj, false);
051            }
052            else if (tObj.getTagNo() == 1)
053            {
054                _notAfter = ASN1GeneralizedTime.getInstance(tObj, false);
055            }
056        }
057    }
058
059    public ASN1GeneralizedTime getNotBefore()
060    {
061        return _notBefore;
062    }
063
064    public ASN1GeneralizedTime getNotAfter()
065    {
066        return _notAfter;
067    }
068
069    public ASN1Primitive toASN1Primitive()
070    {
071        ASN1EncodableVector v = new ASN1EncodableVector();
072
073        if (_notBefore != null)
074        {
075            v.add(new DERTaggedObject(false, 0, _notBefore));
076        }
077        if (_notAfter != null)
078        {
079            v.add(new DERTaggedObject(false, 1, _notAfter));
080        }
081
082        return new DERSequence(v);
083    }
084}