32 lines
944 B
Dart
32 lines
944 B
Dart
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);
|
|
}
|
|
}
|