diff --git a/crypto/src/security/CipherUtilities.cs b/crypto/src/security/CipherUtilities.cs
index e09eff8d6..3217f3183 100644
--- a/crypto/src/security/CipherUtilities.cs
+++ b/crypto/src/security/CipherUtilities.cs
@@ -54,6 +54,9 @@ namespace Org.BouncyCastle.Security
SERPENT,
SKIPJACK,
TEA,
+ THREEFISH_256,
+ THREEFISH_512,
+ THREEFISH_1024,
TNEPRES,
TWOFISH,
VMPC,
@@ -433,6 +436,15 @@ namespace Org.BouncyCastle.Security
case CipherAlgorithm.TEA:
blockCipher = new TeaEngine();
break;
+ case CipherAlgorithm.THREEFISH_256:
+ blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_256);
+ break;
+ case CipherAlgorithm.THREEFISH_512:
+ blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_512);
+ break;
+ case CipherAlgorithm.THREEFISH_1024:
+ blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_1024);
+ break;
case CipherAlgorithm.TNEPRES:
blockCipher = new TnepresEngine();
break;
@@ -729,6 +741,9 @@ namespace Org.BouncyCastle.Security
case CipherAlgorithm.SERPENT: return new SerpentEngine();
case CipherAlgorithm.SKIPJACK: return new SkipjackEngine();
case CipherAlgorithm.TEA: return new TeaEngine();
+ case CipherAlgorithm.THREEFISH_256: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_256);
+ case CipherAlgorithm.THREEFISH_512: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_512);
+ case CipherAlgorithm.THREEFISH_1024: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_1024);
case CipherAlgorithm.TNEPRES: return new TnepresEngine();
case CipherAlgorithm.TWOFISH: return new TwofishEngine();
case CipherAlgorithm.XTEA: return new XteaEngine();
diff --git a/crypto/src/security/GeneratorUtilities.cs b/crypto/src/security/GeneratorUtilities.cs
index 2104a67ba..3beebd05b 100644
--- a/crypto/src/security/GeneratorUtilities.cs
+++ b/crypto/src/security/GeneratorUtilities.cs
@@ -109,6 +109,9 @@ namespace Org.BouncyCastle.Security
AddKgAlgorithm("SERPENT");
AddKgAlgorithm("SKIPJACK");
AddKgAlgorithm("TEA");
+ AddKgAlgorithm("THREEFISH-256");
+ AddKgAlgorithm("THREEFISH-512");
+ AddKgAlgorithm("THREEFISH-1024");
AddKgAlgorithm("TNEPRES");
AddKgAlgorithm("TWOFISH");
AddKgAlgorithm("VMPC");
@@ -180,13 +183,12 @@ namespace Org.BouncyCastle.Security
AddDefaultKeySizeEntries(160, "HMACRIPEMD160", "HMACSHA1");
AddDefaultKeySizeEntries(192, "AES", "AES192", "CAMELLIA192", "DESEDE3", "HMACTIGER",
"RIJNDAEL", "SERPENT", "TNEPRES");
- AddDefaultKeySizeEntries(224, "HMACSHA224");
+ AddDefaultKeySizeEntries(224, "HMACSHA224", "HMACSHA512/224");
AddDefaultKeySizeEntries(256, "AES256", "CAMELLIA", "CAMELLIA256", "CAST6", "GOST28147",
- "HC256", "HMACSHA256", "RC5-64", "RC6", "TWOFISH");
+ "HC256", "HMACSHA256", "HMACSHA512/256", "RC5-64", "RC6", "THREEFISH-256", "TWOFISH");
AddDefaultKeySizeEntries(384, "HMACSHA384");
- AddDefaultKeySizeEntries(512, "HMACSHA512");
- AddDefaultKeySizeEntries(224, "HMACSHA512/224");
- AddDefaultKeySizeEntries(256, "HMACSHA512/256");
+ AddDefaultKeySizeEntries(512, "HMACSHA512", "THREEFISH-512");
+ AddDefaultKeySizeEntries(1024, "THREEFISH-1024");
}
private static void AddDefaultKeySizeEntries(int size, params string[] algorithms)
diff --git a/crypto/src/security/ParameterUtilities.cs b/crypto/src/security/ParameterUtilities.cs
index 8fc3732f5..c12155878 100644
--- a/crypto/src/security/ParameterUtilities.cs
+++ b/crypto/src/security/ParameterUtilities.cs
@@ -104,6 +104,9 @@ namespace Org.BouncyCastle.Security
AddAlgorithm("SERPENT");
AddAlgorithm("SKIPJACK");
AddAlgorithm("TEA");
+ AddAlgorithm("THREEFISH-256");
+ AddAlgorithm("THREEFISH-512");
+ AddAlgorithm("THREEFISH-1024");
AddAlgorithm("TNEPRES");
AddAlgorithm("TWOFISH");
AddAlgorithm("VMPC");
diff --git a/crypto/test/src/test/BlockCipherTest.cs b/crypto/test/src/test/BlockCipherTest.cs
index 9a7c6a944..e6f92b84e 100644
--- a/crypto/test/src/test/BlockCipherTest.cs
+++ b/crypto/test/src/test/BlockCipherTest.cs
@@ -268,12 +268,12 @@ namespace Org.BouncyCastle.Tests
"6cd6f7c5d2c65555d2b31f8614f54ec654f5e7888d515008d59302c3edfcc6cb",
"Twofish/CTR/NoPadding",
"821c54b1b54ae113cf74595eefe10c83d09e95d4599190b9bbd5bc71dd703730",
- //"Threefish-256/CTR/NoPadding",
- //"546ea995dd302f1efcb1f27d14bad468280a3a7994c2af75dfdf1e9fc5ef2373",
- //"Threefish-512/CTR/NoPadding",
- //"152df966484ecc2e9ddfc386559732f7f632e4008920804a1bde4efcf2e6e2f2",
- //"Threefish-1024/CTR/NoPadding",
- //"03953ac751a7377812c6e3e4d14b36c6953f9b390acaa892811c10001c9be454",
+ "Threefish-256/CTR/NoPadding",
+ "546ea995dd302f1efcb1f27d14bad468280a3a7994c2af75dfdf1e9fc5ef2373",
+ "Threefish-512/CTR/NoPadding",
+ "152df966484ecc2e9ddfc386559732f7f632e4008920804a1bde4efcf2e6e2f2",
+ "Threefish-1024/CTR/NoPadding",
+ "03953ac751a7377812c6e3e4d14b36c6953f9b390acaa892811c10001c9be454",
"RC2/CTR/NoPadding",
"0a07cb78537cb04c8c5a0a39a15977a7eb19f3c48a42759c234868c391a99c63",
"RC5/CTR/NoPadding",
|