chacha20poly1305 function

AEADResultWithIV chacha20poly1305(
  1. List<int> message,
  2. List<int> key, {
  3. List<int>? mac,
  4. List<int>? nonce,
  5. List<int>? aad,
  6. Nonce64? counter,
})

Encrypts or Decrypts the message using ChaCha20 cipher and generates an authentication tag with Poly1305.

Parameters:

  • message : arbitrary length plain-text.
  • key : Either 16 or 32 bytes key.
  • nonce : Either 8 or 12 bytes nonce.
  • aad : Additional authenticated data.
  • counter : Initial block number.
  • mac : A 128-bit or 16-bytes long authentication tag for verification.

Throws: AssertionError on mac verification failure.

Both the encryption and decryption can be done using this same method.

Implementation

AEADResultWithIV chacha20poly1305(
  List<int> message,
  List<int> key, {
  List<int>? mac,
  List<int>? nonce,
  List<int>? aad,
  Nonce64? counter,
}) {
  var algo = ChaCha20Poly1305(
    key,
    nonce: nonce,
    counter: counter,
    aad: aad,
  );
  if (mac != null && !algo.verify(message, mac)) {
    throw AssertionError('Message authenticity check failed');
  }
  return algo.sign(message);
}