package org.bouncycastle.jcajce.spec;

import javax.crypto.spec.PBEKeySpec;

import org.bouncycastle.asn1.DERNull;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;

Extension of PBEKeySpec which takes into account the PRF algorithm setting available in PKCS#5 PBKDF2.
/** * Extension of PBEKeySpec which takes into account the PRF algorithm setting available in PKCS#5 PBKDF2. */
public class PBKDF2KeySpec extends PBEKeySpec { private static final AlgorithmIdentifier defaultPRF = new AlgorithmIdentifier(PKCSObjectIdentifiers.id_hmacWithSHA1, DERNull.INSTANCE); private AlgorithmIdentifier prf;
Base constructor.
Params:
  • password – password to use as the seed of the PBE key generator.
  • salt – salt to use in the generator,
  • iterationCount – iteration count to use in the generator.
  • keySize – size of the key to be generated (in bits).
  • prf – identifier and parameters for the PRF algorithm to use.
/** * Base constructor. * * @param password password to use as the seed of the PBE key generator. * @param salt salt to use in the generator, * @param iterationCount iteration count to use in the generator. * @param keySize size of the key to be generated (in bits). * @param prf identifier and parameters for the PRF algorithm to use. */
public PBKDF2KeySpec(char[] password, byte[] salt, int iterationCount, int keySize, AlgorithmIdentifier prf) { super(password, salt, iterationCount, keySize); this.prf = prf; }
Return true if this spec is for the default PRF (HmacSHA1), false otherwise.
Returns:true if this spec uses the default PRF, false otherwise.
/** * Return true if this spec is for the default PRF (HmacSHA1), false otherwise. * * @return true if this spec uses the default PRF, false otherwise. */
public boolean isDefaultPrf() { return defaultPRF.equals(prf); }
Return an AlgorithmIdentifier representing the PRF.
Returns:the PRF's AlgorithmIdentifier.
/** * Return an AlgorithmIdentifier representing the PRF. * * @return the PRF's AlgorithmIdentifier. */
public AlgorithmIdentifier getPrf() { return prf; } }