Example usage for org.bouncycastle.crypto.generators Argon2BytesGenerator init

List of usage examples for org.bouncycastle.crypto.generators Argon2BytesGenerator init

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.generators Argon2BytesGenerator init.

Prototype

public void init(Argon2Parameters parameters) 

Source Link

Document

Initialise the Argon2BytesGenerator from the parameters.

Usage

From source file:org.springframework.security.crypto.argon2.Argon2PasswordEncoder.java

License:Apache License

@Override
public String encode(CharSequence rawPassword) {
    byte[] salt = saltGenerator.generateKey();
    byte[] hash = new byte[hashLength];

    Argon2Parameters params = new Argon2Parameters.Builder(Argon2Parameters.ARGON2_id).withSalt(salt)
            .withParallelism(parallelism).withMemoryAsKB(memory).withIterations(iterations).build();
    Argon2BytesGenerator generator = new Argon2BytesGenerator();
    generator.init(params);
    generator.generateBytes(rawPassword.toString().toCharArray(), hash);

    return Argon2EncodingUtils.encode(hash, params);
}

From source file:org.springframework.security.crypto.argon2.Argon2PasswordEncoder.java

License:Apache License

@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
    if (encodedPassword == null) {
        logger.warn("password hash is null");
        return false;
    }// w w  w  .  ja va2 s.  c  om

    Argon2EncodingUtils.Argon2Hash decoded;

    try {
        decoded = Argon2EncodingUtils.decode(encodedPassword);
    } catch (IllegalArgumentException e) {
        logger.warn("Malformed password hash", e);
        return false;
    }

    byte[] hashBytes = new byte[decoded.getHash().length];

    Argon2BytesGenerator generator = new Argon2BytesGenerator();
    generator.init(decoded.getParameters());
    generator.generateBytes(rawPassword.toString().toCharArray(), hashBytes);

    return constantTimeArrayEquals(decoded.getHash(), hashBytes);
}