calculateMac static method
Future<Hash>
calculateMac(
- Uint8List preAuthenticationEncoding, {
- required SymmetricSubkeys subkeys,
Implementation
static Future<Hash> calculateMac(
Uint8List preAuthenticationEncoding, {
required SymmetricSubkeys subkeys,
}) async {
final hashAlgorithm = Sha384();
final key = List.filled(hashAlgorithm.blockLengthInBytes, 0);
List.copyRange(
key,
0,
subkeys.authenticationKey.bytes.sublist(0, nonceLength),
);
final opad =
Uint8List.fromList(List.filled(hashAlgorithm.blockLengthInBytes, 0x5c));
for (var i = 0; i < key.length; i++) {
opad[i] = key[i] ^ opad[i];
}
final ipad =
Uint8List.fromList(List.filled(hashAlgorithm.blockLengthInBytes, 0x36));
for (var i = 0; i < key.length; i++) {
ipad[i] = key[i] ^ ipad[i];
}
final hash = await hashAlgorithm
.hash(Uint8List.fromList(ipad + preAuthenticationEncoding));
final hash2 =
await hashAlgorithm.hash(Uint8List.fromList(opad + hash.bytes));
return hash2;
}