initSession static method

AEADSession? initSession(
  1. Uint8List key,
  2. AEADAlgorithm aeadAlgorithm, {
  3. int? tagLength,
})

Implementation

static AEADSession? initSession(Uint8List key, AEADAlgorithm aeadAlgorithm, {int? tagLength}) {
  if (key.length != aeadAlgorithm.keyLength) {
    logger.log(
      'AEADSession.initSession: Invalid key length for ${aeadAlgorithm.name}. Expected ${aeadAlgorithm.keyLength}, but got ${key.length}',
    );
    return null;
  }
  final instance = AEADSession._(aeadAlgorithm);
  arenaWrapper((arena) {
    final keyPtr = key.toFFIPointer(arena);
    instance._contextPtr = ffiBindings.EVP_AEAD_CTX_new(
      aeadAlgorithm.objectPtr,
      keyPtr,
      aeadAlgorithm.keyLength,
      tagLength??0,
    );
  });

  if (instance._contextPtr == ffi.nullptr) {
    return null;
  }

  _finalizer.attach(instance._aeadAlgorithm, instance, detach: instance._aeadAlgorithm);

  return instance;
}