blob: 288bd60d89776da2abb94efd4949734bb07269ea [file] [log] [blame]
// See file LICENSE for more information.
library test.impl_test;
import 'package:pointycastle/src/platform_check/platform_check.dart';
import 'package:test/test.dart';
import 'test/runners/registry.dart';
void main() {
group('impl:', () {
test('AsymmetricBlockCipher returns valid implementations', () {
testAsymmetricBlockCipher('RSA');
testAsymmetricBlockCipher('RSA/PKCS1');
testAsymmetricBlockCipher('RSA/OAEP');
});
test('BlockCipher returns valid implementations', () {
testBlockCipher('AES');
});
test('Digest returns valid implementations', () {
testDigest('Blake2b');
testDigest('MD2');
testDigest('MD4');
testDigest('MD5');
testDigest('RIPEMD-128');
testDigest('RIPEMD-160');
testDigest('RIPEMD-256');
testDigest('RIPEMD-320');
testDigest('SHA-1');
testDigest('SHA-224');
testDigest('SHA-256');
testDigest('SHA3-224');
testDigest('SHA3-256');
testDigest('SHA3-384');
testDigest('SHA3-512');
testDigest('Keccak/128');
testDigest('Keccak/224');
testDigest('Keccak/256');
testDigest('Keccak/288');
testDigest('Keccak/384');
testDigest('Keccak/512');
testDigest('SHAKE-128');
testDigest('SHAKE-256');
testDigest('CSHAKE-128');
testDigest('CSHAKE-256');
testDigest('SHA-384');
testDigest('SHA-512');
testDigest('SHA-512/448');
testDigest('Tiger');
testDigest('Whirlpool');
});
test('ECDomainParameters returns valid implementations', () {
testECDomainParameters('prime192v1');
});
test('KeyDerivator returns valid implementations', () {
testKeyDerivator('SHA-1/HMAC/PBKDF2');
testKeyDerivator('scrypt');
});
test('KeyGenerator returns valid implementations', () {
testKeyGenerator('EC');
testKeyGenerator('RSA');
});
if (Platform.instance.fullWidthInteger) {
test(
'Mac returns valid implementations on platforms with full width integer',
() {
testMac('SHA-1/HMAC');
testMac('SHA-256/HMAC');
testMac('SHA3-256/HMAC');
testMac('RIPEMD-160/HMAC');
testMac('AES/Poly1305');
testMac('AES/CMAC');
testMac('AES/CBC_CMAC');
testMac('AES/CBC_CMAC/PKCS7');
testMac('SHAKE-128/HMAC');
testMac('CSHAKE-128/HMAC');
testMac('SHA3-256/HMAC');
});
} else {
test(
'Mac returns valid implementations on platforms without full width integer',
() {
testMac('SHA-1/HMAC');
testMac('SHA-256/HMAC');
testMac('SHA3-256/HMAC');
testMac('RIPEMD-160/HMAC');
// testMac('AES/Poly1305');
testMac('AES/CMAC');
testMac('AES/CBC_CMAC');
testMac('AES/CBC_CMAC/PKCS7');
testMac('SHAKE-128/HMAC');
testMac('CSHAKE-128/HMAC');
testMac('SHA3-256/HMAC');
});
}
test('BlockCipher returns valid implementations for modes of operation',
() {
testBlockCipher('AES/CBC');
testBlockCipher('AES/CFB-64');
testBlockCipher('AES/CTR');
testBlockCipher('AES/ECB');
testBlockCipher('AES/OFB-64/GCTR');
testBlockCipher('AES/OFB-64');
testBlockCipher('AES/SIC');
testBlockCipher('AES/GCM');
});
test('PaddedBlockCipher returns valid implementations', () {
testPaddedBlockCipher('AES/SIC/PKCS7');
});
test('Padding returns valid implementations', () {
testPadding('PKCS7');
testPadding('ISO7816-4');
});
test('SecureRandom returns valid implementations', () {
testSecureRandom('AES/CTR/AUTO-SEED-PRNG');
testSecureRandom('AES/CTR/PRNG');
testSecureRandom('Fortuna');
});
test('Signer returns valid implementations', () {
testSigner('SHA-1/ECDSA');
testSigner('MD2/RSA');
testSigner('MD4/RSA');
testSigner('MD5/RSA');
testSigner('RIPEMD-128/RSA');
testSigner('RIPEMD-160/RSA');
testSigner('RIPEMD-256/RSA');
testSigner('SHA-1/RSA');
testSigner('SHA-224/RSA');
testSigner('SHA-256/RSA');
testSigner('SHA-384/RSA');
testSigner('SHA-512/RSA');
});
if (Platform.instance.fullWidthInteger) {
test(
'StreamCipher returns valid implementations full width integer platforms',
() {
testStreamCipher('Salsa20');
testStreamCipher('AES/SIC');
testStreamCipher('AES/CTR');
testStreamCipher('ChaCha20/20');
testStreamCipher('ChaCha7539/20');
testAEADCipher('ChaCha20-Poly1305');
});
} else {
test(
'StreamCipher returns valid implementations on platforms without full width integer',
() {
testStreamCipher('Salsa20');
testStreamCipher('AES/SIC');
testStreamCipher('AES/CTR');
testStreamCipher('ChaCha20/20');
testStreamCipher('ChaCha7539/20');
//testAEADCipher('ChaCha20-Poly1305');
});
}
});
}