Home | History | Annotate | Download | only in pkcs
      1 package org.bouncycastle.asn1.pkcs;
      2 
      3 import java.math.BigInteger;
      4 
      5 import org.bouncycastle.asn1.ASN1EncodableVector;
      6 import org.bouncycastle.asn1.ASN1Integer;
      7 import org.bouncycastle.asn1.ASN1Object;
      8 import org.bouncycastle.asn1.ASN1OctetString;
      9 import org.bouncycastle.asn1.ASN1Primitive;
     10 import org.bouncycastle.asn1.ASN1Sequence;
     11 import org.bouncycastle.asn1.DEROctetString;
     12 import org.bouncycastle.asn1.DERSequence;
     13 
     14 public class PBEParameter
     15     extends ASN1Object
     16 {
     17     ASN1Integer      iterations;
     18     ASN1OctetString salt;
     19 
     20     public PBEParameter(
     21         byte[]      salt,
     22         int         iterations)
     23     {
     24         if (salt.length != 8)
     25         {
     26             throw new IllegalArgumentException("salt length must be 8");
     27         }
     28         this.salt = new DEROctetString(salt);
     29         this.iterations = new ASN1Integer(iterations);
     30     }
     31 
     32     private PBEParameter(
     33         ASN1Sequence  seq)
     34     {
     35         salt = (ASN1OctetString)seq.getObjectAt(0);
     36         iterations = (ASN1Integer)seq.getObjectAt(1);
     37     }
     38 
     39     public static PBEParameter getInstance(
     40         Object  obj)
     41     {
     42         if (obj instanceof PBEParameter)
     43         {
     44             return (PBEParameter)obj;
     45         }
     46         else if (obj != null)
     47         {
     48             return new PBEParameter(ASN1Sequence.getInstance(obj));
     49         }
     50 
     51         return null;
     52     }
     53 
     54     public BigInteger getIterationCount()
     55     {
     56         return iterations.getValue();
     57     }
     58 
     59     public byte[] getSalt()
     60     {
     61         return salt.getOctets();
     62     }
     63 
     64     public ASN1Primitive toASN1Primitive()
     65     {
     66         ASN1EncodableVector  v = new ASN1EncodableVector();
     67 
     68         v.add(salt);
     69         v.add(iterations);
     70 
     71         return new DERSequence(v);
     72     }
     73 }
     74