15db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootpackage org.bouncycastle.jcajce.spec; 25db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 35db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport javax.crypto.spec.PBEKeySpec; 45db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 55db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport org.bouncycastle.asn1.x509.AlgorithmIdentifier; 65db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 7d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root/** 8d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * Extension of PBEKeySpec which takes into account the PRF algorithm setting available in PKCS#5 PBKDF2. 9d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root */ 105db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootpublic class PBKDF2KeySpec 115db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root extends PBEKeySpec 125db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root{ 135db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root private AlgorithmIdentifier prf; 145db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 15d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root /** 16d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * Base constructor. 17d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * 18d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * @param password password to use as the seed of the PBE key generator. 19d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * @param salt salt to use in the generator, 20d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * @param iterationCount iteration count to use in the generator. 21d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * @param keySize size of the key to be generated. 22d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root * @param prf identifier and parameters for the PRF algorithm to use. 23d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root */ 245db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root public PBKDF2KeySpec(char[] password, byte[] salt, int iterationCount, int keySize, AlgorithmIdentifier prf) 255db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 265db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root super(password, salt, iterationCount, keySize); 275db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 285db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root this.prf = prf; 295db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 305db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 315db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root public AlgorithmIdentifier getPrf() 325db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 335db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root return prf; 345db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 355db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root} 36