]>
nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/util/PinHashing.java
5dc5a5bca5598b0101f079a3295f4daf44bcac4a
1 package org
.asamk
.signal
.manager
.util
;
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
;
9 public final class PinHashing
{
11 private PinHashing() {
14 public static HashedPin
hashPin(String pin
, KeyBackupService
.HashSession hashSession
) {
15 final var params
= new Argon2Parameters
.Builder(Argon2Parameters
.ARGON2_id
).withParallelism(1)
17 .withVersion(Argon2Parameters
.ARGON2_VERSION_13
)
18 .withMemoryAsKB(16 * 1024)
19 .withSalt(hashSession
.hashSalt())
22 final var generator
= new Argon2BytesGenerator();
23 generator
.init(params
);
25 return PinHasher
.hashPin(PinHasher
.normalize(pin
), password
-> {
26 var output
= new byte[64];
27 generator
.generateBytes(password
, output
);