calculateMac static method

Future<Hash> calculateMac(
  1. Uint8List preAuthenticationEncoding, {
  2. 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;
}