blob: d7fa5586af9614971314f9d821db4b4eb8c62838 [file] [log] [blame]
library src.srp_verifier_generator;
import 'dart:typed_data';
import 'package:pointycastle/srp/srp6_standard_groups.dart';
import 'package:pointycastle/srp/srp6_util.dart';
import 'package:pointycastle/pointycastle.dart';
/// Generates new SRP verifier for user
class SRP6VerifierGenerator {
late BigInt N;
late BigInt g;
Digest digest;
SRP6VerifierGenerator(
{required SRP6GroupParameters group, required this.digest}) {
N = group.N;
g = group.g;
}
/// Creates a new SRP verifier
/// [salt] The salt to use, generally should be large and random
/// [identity] The user's identifying information (eg. username)
/// [password] The user's password
/// returns A new verifier for use in future SRP authentication
BigInt generateVerifier(
Uint8List salt, Uint8List identity, Uint8List password) {
var x = SRP6Util.calculateX(digest, N, salt, identity, password);
return g.modPow(x, N);
}
}