buildHeader static method

Uint8List buildHeader({
  1. required int version,
  2. required int keyId,
  3. required String label,
  4. required Uint8List iv,
})

Builds the header bytes for the given values.

Implementation

static Uint8List buildHeader({
  required int version,
  required int keyId,
  required String label,
  required Uint8List iv,
}) {
  final labelBytes = utf8.encode(label);
  if (labelBytes.length > maxLabelLength) {
    throw ArgumentError.value(
      label,
      'label',
      'must encode to at most $maxLabelLength UTF-8 bytes',
    );
  }
  final header =
      Uint8List(fixedHeaderLength + labelBytes.length + ivLength);
  header.setAll(0, magic);
  header[4] = version;
  header[5] = (keyId >> 8) & 0xFF;
  header[6] = keyId & 0xFF;
  header[7] = labelBytes.length;
  header.setAll(fixedHeaderLength, labelBytes);
  header.setAll(fixedHeaderLength + labelBytes.length, iv);
  return header;
}