blob: fbaf7fb7973956a2fc3a8459eb7d7cae78894723 [file] [log] [blame]
// See file LICENSE for more information.
import 'dart:typed_data';
import 'package:pointycastle/pointycastle.dart';
import '../benchmark/rate_benchmark.dart';
typedef CipherParametersFactory = CipherParameters Function();
class BlockCipherBenchmark extends RateBenchmark {
final String _blockCipherName;
final bool _forEncryption;
final CipherParametersFactory _cipherParametersFactory;
Uint8List? _data;
late BlockCipher _blockCipher;
BlockCipherBenchmark(String blockCipherName, String blockCipherVariant,
bool forEncryption, this._cipherParametersFactory)
: _blockCipherName = blockCipherName,
_forEncryption = forEncryption,
super('BlockCipher | $blockCipherName - $blockCipherVariant - '
'${forEncryption ? 'encrypt' : 'decrypt'}');
@override
void setup() {
_blockCipher = BlockCipher(_blockCipherName);
_blockCipher.init(_forEncryption, _cipherParametersFactory());
_data = Uint8List(_blockCipher.blockSize);
}
@override
void run() {
_blockCipher.process(_data!);
addSample(_data!.length);
}
}