org.spongycastle.jcajce.spec.PBKDF2KeySpec Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of prov Show documentation
Show all versions of prov Show documentation
Spongy Castle is a package-rename (org.bouncycastle.* to org.spongycastle.*) of Bouncy Castle
intended for the Android platform. Android unfortunately ships with a stripped-down version of
Bouncy Castle, which prevents easy upgrades - Spongy Castle overcomes this and provides a full,
up-to-date version of the Bouncy Castle cryptographic libs.
The newest version!
package org.spongycastle.jcajce.spec;
import javax.crypto.spec.PBEKeySpec;
import org.spongycastle.asn1.DERNull;
import org.spongycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.spongycastle.asn1.x509.AlgorithmIdentifier;
/**
* 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.
*
* @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.
*
* @return true if this spec uses the default PRF, false otherwise.
*/
public boolean isDefaultPrf()
{
return defaultPRF.equals(prf);
}
/**
* Return an AlgorithmIdentifier representing the PRF.
*
* @return the PRF's AlgorithmIdentifier.
*/
public AlgorithmIdentifier getPrf()
{
return prf;
}
}