]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/util/PinHashing.java
Use var instead of explicit types
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / util / PinHashing.java
1 package org.asamk.signal.manager.util;
2
3 import org.bouncycastle.crypto.generators.Argon2BytesGenerator;
4 import org.bouncycastle.crypto.params.Argon2Parameters;
5 import org.whispersystems.signalservice.api.KeyBackupService;
6 import org.whispersystems.signalservice.api.kbs.HashedPin;
7 import org.whispersystems.signalservice.internal.registrationpin.PinHasher;
8
9 public final class PinHashing {
10
11 private PinHashing() {
12 }
13
14 public static HashedPin hashPin(String pin, KeyBackupService.HashSession hashSession) {
15 final var params = new Argon2Parameters.Builder(Argon2Parameters.ARGON2_id).withParallelism(1)
16 .withIterations(32)
17 .withVersion(Argon2Parameters.ARGON2_VERSION_13)
18 .withMemoryAsKB(16 * 1024)
19 .withSalt(hashSession.hashSalt())
20 .build();
21
22 final var generator = new Argon2BytesGenerator();
23 generator.init(params);
24
25 return PinHasher.hashPin(PinHasher.normalize(pin), password -> {
26 var output = new byte[64];
27 generator.generateBytes(password, output);
28 return output;
29 });
30 }
31 }