twonly-app-dependencies/pointycastle/lib/block/modes/ecb.dart
2025-12-07 16:10:41 +01:00

43 lines
1.2 KiB
Dart

// See file LICENSE for more information.
library impl.block_cipher.modes.ecb;
import 'dart:typed_data';
import 'package:pointycastle/api.dart';
import 'package:pointycastle/src/registry/registry.dart';
import 'package:pointycastle/src/impl/base_block_cipher.dart';
/// Implementation of Electronic Code Book (ECB) mode on top of a [BlockCipher].
class ECBBlockCipher extends BaseBlockCipher {
/// Intended for internal use.
static final FactoryConfig factoryConfig = DynamicFactoryConfig.suffix(
BlockCipher,
'/ECB',
(_, final Match match) => () {
var underlying = BlockCipher(match.group(1)!);
return ECBBlockCipher(underlying);
});
final BlockCipher _underlyingCipher;
ECBBlockCipher(this._underlyingCipher);
@override
String get algorithmName => '${_underlyingCipher.algorithmName}/ECB';
@override
int get blockSize => _underlyingCipher.blockSize;
@override
void reset() {
_underlyingCipher.reset();
}
@override
void init(bool forEncryption, CipherParameters? params) {
_underlyingCipher.init(forEncryption, params);
}
@override
int processBlock(Uint8List inp, int inpOff, Uint8List out, int outOff) =>
_underlyingCipher.processBlock(inp, inpOff, out, outOff);
}