generateKey method
Future<String>
generateKey({
- String? address,
- CrossmintBiometricPolicy biometricPolicy = CrossmintBiometricPolicy.none,
override
Implementation
@override
Future<String> generateKey({
String? address,
CrossmintBiometricPolicy biometricPolicy = CrossmintBiometricPolicy.none,
}) async {
// Generate a random P-256 key pair using pointycastle.
final keyGen = ECKeyGenerator()
..init(
ParametersWithRandom(
ECKeyGeneratorParameters(ECDomainParameters('secp256r1')),
_secureRandom(),
),
);
final pair = keyGen.generateKeyPair();
final publicKey = pair.publicKey;
final privateKey = pair.privateKey;
// Encode public key as uncompressed point (0x04 + x + y), then base64.
final pubBytes = publicKey.Q!.getEncoded(false);
final pubBase64 = base64Encode(pubBytes);
// Store private key bytes.
final privBytes = _bigIntToBytes(privateKey.d!, 32);
_keys[pubBase64] = privBytes;
if (address != null) {
_addressMap[address] = pubBase64;
} else {
_pendingKeys.add(pubBase64);
}
return pubBase64;
}