generateAndStoreKey method

Future<EncryptionOptions> generateAndStoreKey({
  1. String? keyName,
  2. EncryptionAlgorithm algorithm = EncryptionAlgorithm.aes256,
})

Generates a secure random key and stores it in secure storage.

The keyName parameter can be used to specify a custom name for the key. If not provided, a default name will be used.

Returns the generated encryption options.

Implementation

Future<EncryptionOptions> generateAndStoreKey({
  String? keyName,
  EncryptionAlgorithm algorithm = EncryptionAlgorithm.aes256,
}) async {
  final key = Encryption.generateSecureKey();
  final effectiveKeyName = keyName ?? _defaultKeyName;

  await _secureStorage.write(
    key: _getKey(effectiveKeyName),
    value: key,
  );

  await _secureStorage.write(
    key: _getKey(_defaultAlgorithmName),
    value: algorithm.toString().split('.').last,
  );

  _log.info('Generated and stored encryption key: $effectiveKeyName');

  return EncryptionOptions(
    algorithm: algorithm,
    key: key,
  );
}