| 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); |
| } |
| } |