Home | History | Annotate | Download | only in jcajce
      1 package org.bouncycastle.jcajce;
      2 
      3 import javax.crypto.interfaces.PBEKey;
      4 
      5 import org.bouncycastle.util.Arrays;
      6 
      7 /**
      8  * A password based key for use with PKCS#12 with full PBE parameters.
      9  */
     10 public class PKCS12KeyWithParameters
     11     extends PKCS12Key
     12     implements PBEKey
     13 {
     14     private final byte[] salt;
     15     private final int iterationCount;
     16 
     17     /**
     18      * Basic constructor for a password based key with generation parameters.
     19      *
     20      * @param password password to use.
     21      * @param salt salt for generation algorithm
     22      * @param iterationCount iteration count for generation algorithm.
     23      */
     24     public PKCS12KeyWithParameters(char[] password, byte[] salt, int iterationCount)
     25     {
     26         super(password);
     27 
     28         this.salt = Arrays.clone(salt);
     29         this.iterationCount = iterationCount;
     30     }
     31 
     32 
     33     /**
     34      * Basic constructor for a password based key with generation parameters, specifying the wrong conversion for
     35      * zero length passwords.
     36      *
     37      * @param password password to use.
     38      * @param salt salt for generation algorithm
     39      * @param iterationCount iteration count for generation algorithm.
     40      * @param useWrongZeroLengthConversion use the incorrect encoding approach (add pad bytes)
     41      */
     42     public PKCS12KeyWithParameters(char[] password, boolean useWrongZeroLengthConversion, byte[] salt, int iterationCount)
     43     {
     44         super(password, useWrongZeroLengthConversion);
     45 
     46         this.salt = Arrays.clone(salt);
     47         this.iterationCount = iterationCount;
     48     }
     49 
     50     /**
     51      * Return the salt to use in the key derivation function.
     52      *
     53      * @return the salt to use in the KDF.
     54      */
     55     public byte[] getSalt()
     56     {
     57         return salt;
     58     }
     59 
     60     /**
     61      * Return the iteration count to use in the key derivation function.
     62      *
     63      * @return the iteration count to use in the KDF.
     64      */
     65     public int getIterationCount()
     66     {
     67         return iterationCount;
     68     }
     69 }
     70