signChallenge static method
String
signChallenge({
- required String secret,
- required Extra challenge,
- AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8,
Implementation
static String signChallenge({
required String secret,
required Extra challenge,
AuthenticationStringEncoding stringEncoding =
AuthenticationStringEncoding.utf8,
}) {
if (challenge.challenge == null) {
throw ArgumentError('challenge.challenge is required');
}
Uint8List key;
if (challenge.salt == null) {
key = Uint8List.fromList(
encodeString(secret, stringEncoding: stringEncoding),
);
} else {
key = deriveKey(
secret,
encodeString(challenge.salt!, stringEncoding: stringEncoding),
iterations: challenge.iterations == null || challenge.iterations! <= 0
? defaultIterations
: challenge.iterations!,
keylen: challenge.keyLen == null || challenge.keyLen! <= 0
? defaultKeyLength
: challenge.keyLen!,
stringEncoding: stringEncoding,
);
}
final keyLen = challenge.keyLen == null || challenge.keyLen! <= 0
? defaultKeyLength
: challenge.keyLen!;
return encodeHmac(
Uint8List.fromList(base64.encode(key).codeUnits),
keyLen,
Uint8List.fromList(
encodeString(challenge.challenge!, stringEncoding: stringEncoding),
),
);
}