001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs;
002
003import java.util.Enumeration;
004
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
010import org.apache.commons.ssl.org.bouncycastle.asn1.x509.AlgorithmIdentifier;
011
012/**
013 * @deprecated - use AlgorithmIdentifier and PBES2Parameters
014 */
015public class PBES2Algorithms
016    extends AlgorithmIdentifier implements PKCSObjectIdentifiers
017{
018    private ASN1ObjectIdentifier objectId;
019    private KeyDerivationFunc   func;
020    private EncryptionScheme scheme;
021
022    public PBES2Algorithms(
023        ASN1Sequence  obj)
024    {
025        super(obj);
026
027        Enumeration     e = obj.getObjects();
028
029        objectId = (ASN1ObjectIdentifier)e.nextElement();
030
031        ASN1Sequence seq = (ASN1Sequence)e.nextElement();
032
033        e = seq.getObjects();
034
035        ASN1Sequence  funcSeq = (ASN1Sequence)e.nextElement();
036
037        if (funcSeq.getObjectAt(0).equals(id_PBKDF2))
038        {
039            func = new KeyDerivationFunc(id_PBKDF2, PBKDF2Params.getInstance(funcSeq.getObjectAt(1)));
040        }
041        else
042        {
043            func = KeyDerivationFunc.getInstance(funcSeq);
044        }
045
046        scheme = EncryptionScheme.getInstance(e.nextElement());
047    }
048
049    public ASN1ObjectIdentifier getObjectId()
050    {
051        return objectId;
052    }
053
054    public KeyDerivationFunc getKeyDerivationFunc()
055    {
056        return func;
057    }
058
059    public EncryptionScheme getEncryptionScheme()
060    {
061        return scheme;
062    }
063
064    public ASN1Primitive getASN1Primitive()
065    {
066        ASN1EncodableVector  v = new ASN1EncodableVector();
067        ASN1EncodableVector  subV = new ASN1EncodableVector();
068
069        v.add(objectId);
070
071        subV.add(func);
072        subV.add(scheme);
073        v.add(new DERSequence(subV));
074
075        return new DERSequence(v);
076    }
077}