Search in sources :

Example 1 with PBKDF2Params

use of org.xwiki.crypto.password.internal.kdf.PBKDF2Params in project xwiki-commons by xwiki.

the class BcPKCS5S2KeyDerivationFunctionFactory method getInstance.

@Override
public KeyDerivationFunction getInstance(KeyDerivationFunctionParameters params) {
    if (!(params instanceof PBKDF2Parameters)) {
        throw new IllegalArgumentException("Invalid parameter used for PKCS5S2 function: " + params.getClass().getName());
    }
    PBKDF2Parameters kdfParams = (PBKDF2Parameters) params;
    PKCS5S2ParametersGenerator generator;
    BcDigestFactory factory = null;
    if (kdfParams.getPseudoRandomFuntionHint() != null) {
        factory = this.getDigestFactory(kdfParams.getPseudoRandomFuntionHint());
        generator = new PKCS5S2ParametersGenerator(factory.getDigestInstance());
    } else {
        generator = new PKCS5S2ParametersGenerator();
    }
    return new AbstractBcPBKDF2(generator, (PBKDF2Parameters) params, (factory != null) ? toHmacAlgId(factory.getAlgorithmIdentifier()) : HMAC_SHA1) {

        @Override
        public KeyDerivationFunc getKeyDerivationFunction() {
            PBKDF2Parameters parameters = (PBKDF2Parameters) getParameters();
            AlgorithmIdentifier algId = getPRFAlgorithmIdentifier();
            return new KeyDerivationFunc(PKCSObjectIdentifiers.id_PBKDF2, (isKeySizeOverwritten()) ? new PBKDF2Params(parameters.getSalt(), parameters.getIterationCount(), algId) : new PBKDF2Params(parameters.getSalt(), parameters.getIterationCount(), parameters.getKeySize(), algId));
        }
    };
}
Also used : PKCS5S2ParametersGenerator(org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator) PBKDF2Parameters(org.xwiki.crypto.password.params.PBKDF2Parameters) KeyDerivationFunc(org.bouncycastle.asn1.pkcs.KeyDerivationFunc) PBKDF2Params(org.xwiki.crypto.password.internal.kdf.PBKDF2Params) AbstractBcDigestFactory(org.xwiki.crypto.internal.digest.factory.AbstractBcDigestFactory) BcDigestFactory(org.xwiki.crypto.internal.digest.factory.BcDigestFactory) AbstractBcPBKDF2(org.xwiki.crypto.password.internal.kdf.AbstractBcPBKDF2) AlgorithmIdentifier(org.bouncycastle.asn1.x509.AlgorithmIdentifier)

Example 2 with PBKDF2Params

use of org.xwiki.crypto.password.internal.kdf.PBKDF2Params in project xwiki-commons by xwiki.

the class BcPKCS5S2KeyDerivationFunctionFactory method getInstance.

@Override
public KeyDerivationFunction getInstance(ASN1Encodable parameters) {
    KeyDerivationFunc kdf = KeyDerivationFunc.getInstance(parameters);
    if (!kdf.getAlgorithm().equals(PKCSObjectIdentifiers.id_PBKDF2)) {
        throw new IllegalArgumentException("Illegal algorithm identifier for PBKDF2: " + kdf.getAlgorithm().getId());
    }
    PBKDF2Params params = PBKDF2Params.getInstance(kdf.getParameters());
    return getInstance(new PBKDF2Parameters((params.getKeyLength() != null) ? params.getKeyLength().intValue() : -1, params.getIterationCount().intValue(), params.getSalt(), toDigestHint(params.getPseudoRandomFunctionIdentifier())));
}
Also used : PBKDF2Parameters(org.xwiki.crypto.password.params.PBKDF2Parameters) KeyDerivationFunc(org.bouncycastle.asn1.pkcs.KeyDerivationFunc) PBKDF2Params(org.xwiki.crypto.password.internal.kdf.PBKDF2Params)

Aggregations

KeyDerivationFunc (org.bouncycastle.asn1.pkcs.KeyDerivationFunc)2 PBKDF2Params (org.xwiki.crypto.password.internal.kdf.PBKDF2Params)2 PBKDF2Parameters (org.xwiki.crypto.password.params.PBKDF2Parameters)2 AlgorithmIdentifier (org.bouncycastle.asn1.x509.AlgorithmIdentifier)1 PKCS5S2ParametersGenerator (org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator)1 AbstractBcDigestFactory (org.xwiki.crypto.internal.digest.factory.AbstractBcDigestFactory)1 BcDigestFactory (org.xwiki.crypto.internal.digest.factory.BcDigestFactory)1 AbstractBcPBKDF2 (org.xwiki.crypto.password.internal.kdf.AbstractBcPBKDF2)1