blob: e1a671daaf5336b118eb93903ff275f1d773769f [file] [log] [blame]
// See file LICENSE for more information.
library impl.adapters.stream_cipher_as_block_cipher;
import 'dart:typed_data';
import 'package:pointycastle/api.dart';
import 'package:pointycastle/src/impl/base_block_cipher.dart';
/// An adapter to convert an [StreamCipher] to a [BlockCipher]
class StreamCipherAsBlockCipher extends BaseBlockCipher {
final StreamCipher streamCipher;
@override
final int blockSize;
/// Create a [BlockCipher] from [streamCipher] simulating the given [blockSize]
StreamCipherAsBlockCipher(this.blockSize, this.streamCipher);
@override
String get algorithmName => streamCipher.algorithmName;
@override
void reset() {
streamCipher.reset();
}
@override
void init(bool forEncryption, CipherParameters? params) {
streamCipher.init(forEncryption, params);
}
@override
int processBlock(Uint8List inp, int inpOff, Uint8List out, int outOff) {
streamCipher.processBytes(inp, inpOff, blockSize, out, outOff);
return blockSize;
}
}