PBKDF2Params.java revision a198e1ecc615e26a167d0f2dca9fa7e5fc62de10
1package org.bouncycastle.asn1.pkcs; 2 3import java.math.BigInteger; 4import java.util.Enumeration; 5 6import org.bouncycastle.asn1.ASN1EncodableVector; 7import org.bouncycastle.asn1.ASN1Integer; 8import org.bouncycastle.asn1.ASN1Object; 9import org.bouncycastle.asn1.ASN1OctetString; 10import org.bouncycastle.asn1.ASN1Primitive; 11import org.bouncycastle.asn1.ASN1Sequence; 12import org.bouncycastle.asn1.DEROctetString; 13import org.bouncycastle.asn1.DERSequence; 14 15public class PBKDF2Params 16 extends ASN1Object 17{ 18 private ASN1OctetString octStr; 19 private ASN1Integer iterationCount; 20 private ASN1Integer keyLength; 21 22 public static PBKDF2Params getInstance( 23 Object obj) 24 { 25 if (obj instanceof PBKDF2Params) 26 { 27 return (PBKDF2Params)obj; 28 } 29 30 if (obj != null) 31 { 32 return new PBKDF2Params(ASN1Sequence.getInstance(obj)); 33 } 34 35 return null; 36 } 37 38 public PBKDF2Params( 39 byte[] salt, 40 int iterationCount) 41 { 42 this.octStr = new DEROctetString(salt); 43 this.iterationCount = new ASN1Integer(iterationCount); 44 } 45 46 public PBKDF2Params( 47 byte[] salt, 48 int iterationCount, 49 int keyLength) 50 { 51 this(salt, iterationCount); 52 53 this.keyLength = new ASN1Integer(keyLength); 54 } 55 56 private PBKDF2Params( 57 ASN1Sequence seq) 58 { 59 Enumeration e = seq.getObjects(); 60 61 octStr = (ASN1OctetString)e.nextElement(); 62 iterationCount = (ASN1Integer)e.nextElement(); 63 64 if (e.hasMoreElements()) 65 { 66 keyLength = (ASN1Integer)e.nextElement(); 67 } 68 else 69 { 70 keyLength = null; 71 } 72 } 73 74 public byte[] getSalt() 75 { 76 return octStr.getOctets(); 77 } 78 79 public BigInteger getIterationCount() 80 { 81 return iterationCount.getValue(); 82 } 83 84 public BigInteger getKeyLength() 85 { 86 if (keyLength != null) 87 { 88 return keyLength.getValue(); 89 } 90 91 return null; 92 } 93 94 public ASN1Primitive toASN1Primitive() 95 { 96 ASN1EncodableVector v = new ASN1EncodableVector(); 97 98 v.add(octStr); 99 v.add(iterationCount); 100 101 if (keyLength != null) 102 { 103 v.add(keyLength); 104 } 105 106 return new DERSequence(v); 107 } 108} 109