15faee297baafbc31667954a404d0451916ef5c59Brian Carlstrompackage org.bouncycastle.asn1.pkcs;
25faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
35faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport java.util.Enumeration;
45faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
55faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.ASN1EncodableVector;
64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier;
74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive;
85faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.ASN1Sequence;
95faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.DERSequence;
105faee297baafbc31667954a404d0451916ef5c59Brian Carlstromimport org.bouncycastle.asn1.x509.AlgorithmIdentifier;
115faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
125faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom/**
135faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom * @deprecated - use AlgorithmIdentifier and PBES2Parameters
145faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom */
155faee297baafbc31667954a404d0451916ef5c59Brian Carlstrompublic class PBES2Algorithms
165faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    extends AlgorithmIdentifier implements PKCSObjectIdentifiers
175faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom{
184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    private ASN1ObjectIdentifier objectId;
195faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    private KeyDerivationFunc   func;
205faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    private EncryptionScheme    scheme;
215faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
225faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    public PBES2Algorithms(
235faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        ASN1Sequence  obj)
245faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    {
255faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        super(obj);
265faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
275faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        Enumeration     e = obj.getObjects();
285faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        objectId = (ASN1ObjectIdentifier)e.nextElement();
305faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
315faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        ASN1Sequence seq = (ASN1Sequence)e.nextElement();
325faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
335faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        e = seq.getObjects();
345faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
355faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        ASN1Sequence  funcSeq = (ASN1Sequence)e.nextElement();
365faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
375faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        if (funcSeq.getObjectAt(0).equals(id_PBKDF2))
385faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        {
395faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom            func = new KeyDerivationFunc(id_PBKDF2, PBKDF2Params.getInstance(funcSeq.getObjectAt(1)));
405faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        }
415faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        else
425faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        {
435faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom            func = new KeyDerivationFunc(funcSeq);
445faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        }
455faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
465faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        scheme = new EncryptionScheme((ASN1Sequence)e.nextElement());
475faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    }
485faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1ObjectIdentifier getObjectId()
505faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    {
515faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        return objectId;
525faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    }
535faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
545faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    public KeyDerivationFunc getKeyDerivationFunc()
555faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    {
565faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        return func;
575faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    }
585faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
595faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    public EncryptionScheme getEncryptionScheme()
605faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    {
615faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        return scheme;
625faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    }
635faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive getASN1Primitive()
655faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    {
665faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        ASN1EncodableVector  v = new ASN1EncodableVector();
675faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        ASN1EncodableVector  subV = new ASN1EncodableVector();
685faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
695faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        v.add(objectId);
705faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
715faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        subV.add(func);
725faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        subV.add(scheme);
735faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        v.add(new DERSequence(subV));
745faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom
755faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom        return new DERSequence(v);
765faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom    }
775faee297baafbc31667954a404d0451916ef5c59Brian Carlstrom}
78