104 lines
2.8 KiB
Dart
104 lines
2.8 KiB
Dart
import 'dart:convert';
|
|
import 'dart:typed_data';
|
|
|
|
import 'package:pointycastle/export.dart';
|
|
|
|
import 'package:test/test.dart';
|
|
|
|
import '../test/src/helpers.dart';
|
|
|
|
void main() {
|
|
group('RC2 Engine', () {
|
|
blockCipherTest(
|
|
0,
|
|
RC2Engine(),
|
|
RC2Parameters(createUint8ListFromHexString('0000000000000000'),
|
|
bits: 63),
|
|
'0000000000000000',
|
|
'EBB773F993278EFF');
|
|
blockCipherTest(
|
|
1,
|
|
RC2Engine(),
|
|
RC2Parameters(createUint8ListFromHexString('ffffffffffffffff'),
|
|
bits: 64),
|
|
'ffffffffffffffff',
|
|
'278b27e42e2f0d49');
|
|
|
|
blockCipherTest(
|
|
2,
|
|
RC2Engine(),
|
|
RC2Parameters(createUint8ListFromHexString('3000000000000000'),
|
|
bits: 64),
|
|
'1000000000000001',
|
|
'30649edf9be7d2c2');
|
|
|
|
blockCipherTest(
|
|
3,
|
|
RC2Engine(),
|
|
RC2Parameters(createUint8ListFromHexString('88'), bits: 64),
|
|
'0000000000000000',
|
|
'61a8a244adacccf0');
|
|
blockCipherTest(
|
|
4,
|
|
RC2Engine(),
|
|
RC2Parameters(createUint8ListFromHexString('88bca90e90875a'), bits: 64),
|
|
'0000000000000000',
|
|
'6ccf4308974c267f');
|
|
blockCipherTest(
|
|
5,
|
|
RC2Engine(),
|
|
RC2Parameters(
|
|
createUint8ListFromHexString('88bca90e90875a7f0f79c384627bafb2'),
|
|
bits: 64),
|
|
'0000000000000000',
|
|
'1a807d272bbe5db1');
|
|
blockCipherTest(
|
|
6,
|
|
RC2Engine(),
|
|
RC2Parameters(
|
|
createUint8ListFromHexString('88bca90e90875a7f0f79c384627bafb2'),
|
|
bits: 128),
|
|
'0000000000000000',
|
|
'2269552ab0f85ca6');
|
|
blockCipherTest(
|
|
7,
|
|
RC2Engine(),
|
|
RC2Parameters(
|
|
createUint8ListFromHexString(
|
|
'88bca90e90875a7f0f79c384627bafb216f80a6f85920584c42fceb0be255daf1e'),
|
|
bits: 129),
|
|
'0000000000000000',
|
|
'5b78d3a43dfff1f1');
|
|
});
|
|
|
|
test('test openssl rc2-40-cbc', () {
|
|
// CMD = openssl enc -e -rc2-40-cbc -a -p -nosalt -iv c7d90059b29e97f7 -v
|
|
// Password = test
|
|
// Input = helloworld
|
|
var engine = CBCBlockCipher(RC2Engine());
|
|
engine.reset();
|
|
|
|
var params = ParametersWithIV(
|
|
RC2Parameters(
|
|
createUint8ListFromHexString('098F6BCD46'),
|
|
bits: 40,
|
|
),
|
|
createUint8ListFromHexString('C7D90059B29E97F7'),
|
|
);
|
|
var input = createUint8ListFromHexString('68656c6c6f776f726c64');
|
|
var output = '3MN/S1ipU7V7lOHQGmGW6g==';
|
|
|
|
engine.init(true, params);
|
|
|
|
var padded = addPKCS7Padding(input, 8);
|
|
final cipherText = Uint8List(padded.length);
|
|
|
|
var offset = 0;
|
|
while (offset < padded.length) {
|
|
offset += engine.processBlock(padded, offset, cipherText, offset);
|
|
}
|
|
|
|
var out = base64.decode(output);
|
|
expect(cipherText, out);
|
|
});
|
|
}
|