Skip to content

Commit

Permalink
Remove variable block size for Threefish (GH #535)
Browse files Browse the repository at this point in the history
  • Loading branch information
noloader committed Nov 18, 2017
1 parent dbd79a1 commit b9bd51f
Show file tree
Hide file tree
Showing 5 changed files with 275 additions and 226 deletions.
49 changes: 24 additions & 25 deletions TestVectors/threefish.txt
@@ -1,5 +1,21 @@
AlgorithmType: SymmetricCipher
Name: Threefish/ECB
Name: Threefish-256(256)/ECB
Comment: Test Vector 5, Threefish-256, null tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0000000000000000 0000000000000000
Key: word64 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Plaintext: word64 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Ciphertext: word64 94EEEA8B1F2ADA84 ADF103313EAE6670 952419A1F4B16D53 D83F13E63C9F6B11
Test: Encrypt
Name: Threefish-256(256)/ECB
Comment: Test Vector 6, Threefish-256, tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0706050403020100 0F0E0D0C0B0A0908
Key: word64 1716151413121110 1F1E1D1C1B1A1918 2726252423222120 2F2E2D2C2B2A2928
Plaintext: word64 F8F9FAFBFCFDFEFF F0F1F2F3F4F5F6F7 E8E9EAEBECEDEEEF E0E1E2E3E4E5E6E7
Ciphertext: word64 DF8FEA0EFF91D0E0 D50AD82EE69281C9 76F48D58085D869D DF975E95B5567065
Test: Encrypt
Name: Threefish-512(512)/ECB
Comment: Test Vector 1
Source: Botan test vectors (threefish.vec)
Key: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 \
Expand All @@ -9,7 +25,7 @@ Plaintext: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Ciphertext: B1A2BBC6EF6025BC 40EB3822161F36E3 75D1BB0AEE3186FB D19E47C5D479947B \
7BC2F8586E35F0CF F7E7F03084B0B7B1 F1AB3961A580A3E9 7EB41EA14A6D7BBE
Test: Encrypt
Name: Threefish/ECB
Name: Threefish-512(512)/ECB
Comment: Test Vector 2
Source: Botan test vectors (threefish.vec)
Key: B1A2BBC6EF6025BC 40EB3822161F36E3 75D1BB0AEE3186FB D19E47C5D479947B \
Expand All @@ -19,7 +35,7 @@ Plaintext: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Ciphertext: F13CA06760DD9BBE AB87B6C56F3BBBDB E9D08A77978B942A C02D471DC10268F2 \
261C3D4330D6CA34 1F4BD4115DEE16A2 1DCDA2A34A0A76FB A976174E4CF1E306
Test: Encrypt
Name: Threefish/ECB
Name: Threefish-512(512)/ECB
Comment: Test Vector 3
Source: Botan test vectors (threefish.vec)
Key: F13CA06760DD9BBE AB87B6C56F3BBBDB E9D08A77978B942A C02D471DC10268F2 \
Expand All @@ -29,7 +45,7 @@ Plaintext: B1A2BBC6EF6025BC 40EB3822161F36E3 75D1BB0AEE3186FB D19E47C5D479947B \
Ciphertext: 1BEC82CBA1357566 B34E1CF1FBF123A1 41C8F4089F6E4CE3 209AEA10095AEC93 \
C900D068BDC7F7A2 DD58513C11DEC956 B93169B1C4F24CED E31A265DE83E36B4
Test: Encrypt
Name: Threefish/ECB
Name: Threefish-512(512)/ECB
Comment: Test Vector 4
Source: Botan test vectors (threefish.vec)
Key: F13CA06760DD9BBE AB87B6C56F3BBBDB E9D08A77978B942A C02D471DC10268F2 \
Expand All @@ -43,24 +59,7 @@ Ciphertext: 1BEC82CBA1357566 B34E1CF1FBF123A1 41C8F4089F6E4CE3 209AEA10095AEC93
073CB5F8FABFA17D B751477F294EB3DD 4ACD92B78397331F CC36A9C3D3055B81 \
D867CBDD56279037 373359CA1832669A F4B87A1F2FDAF8D3 6E2FB7A6D19F5D45
Test: Encrypt
##################################################################################
Name: Threefish/ECB
Comment: Test Vector 5, Threefish-256, null tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0000000000000000 0000000000000000
Key: word64 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Plaintext: word64 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Ciphertext: word64 94EEEA8B1F2ADA84 ADF103313EAE6670 952419A1F4B16D53 D83F13E63C9F6B11
Test: Encrypt
Name: Threefish/ECB
Comment: Test Vector 6, Threefish-256, tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0706050403020100 0F0E0D0C0B0A0908
Key: word64 1716151413121110 1F1E1D1C1B1A1918 2726252423222120 2F2E2D2C2B2A2928
Plaintext: word64 F8F9FAFBFCFDFEFF F0F1F2F3F4F5F6F7 E8E9EAEBECEDEEEF E0E1E2E3E4E5E6E7
Ciphertext: word64 DF8FEA0EFF91D0E0 D50AD82EE69281C9 76F48D58085D869D DF975E95B5567065
Test: Encrypt
Name: Threefish/ECB
Name: Threefish-512(512)/ECB
Comment: Test Vector 7, Threefish-512, null tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0000000000000000 0000000000000000
Expand All @@ -71,7 +70,7 @@ Plaintext: word64 0000000000000000 0000000000000000 0000000000000000 00000000
Ciphertext: word64 BC2560EFC6BBA2B1 E3361F162238EB40 FB8631EE0ABBD175 7B9479D4C5479ED1 \
CFF0356E58F8C27B B1B7B08430F0E7F7 E9A380A56139ABF1 BE7B6D4AA11EB47E
Test: Encrypt
Name: Threefish/ECB
Name: Threefish-512(512)/ECB
Comment: Test Vector 8, Threefish-512, tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0706050403020100 0F0E0D0C0B0A0908
Expand All @@ -82,7 +81,7 @@ Plaintext: word64 F8F9FAFBFCFDFEFF F0F1F2F3F4F5F6F7 E8E9EAEBECEDEEEF E0E1E2E3
Ciphertext: word64 2C5AD426964304E3 9A2436D6D8CA01B4 DD456DB00E333863 794725970EB9368B \
043546998D0A2A27 25A7C918EA204478 346201A1FEDF11AF 3DAF1C5C3D672789
Test: Encrypt
Name: Threefish/ECB
Name: Threefish-1024(1024)/ECB
Comment: Test Vector 9, Threefish-1024, null tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0000000000000000 0000000000000000
Expand All @@ -99,7 +98,7 @@ Ciphertext: word64 04B3053D0A3D5CF0 0136E0D1C7DD85F7 067B212F6EA78A5C 0DA9C10
540306B460472E0B 71C18254BCEA820D C36B4068BEAF32C8 FA4329597A360095 \
C4A36C28434A5B9A D54331444B1046CF DF11834830B2A460 1E39E8DFE1F7EE4F
Test: Encrypt
Name: Threefish/ECB
Name: Threefish-1024(1024)/ECB
Comment: Test Vector 10, Threefish-1024, tweak
Source: skein_golden_kat_internals.txt
Tweak: word64 0706050403020100 0F0E0D0C0B0A0908
Expand Down
8 changes: 5 additions & 3 deletions bench1.cpp
Expand Up @@ -6,6 +6,8 @@
#include "validate.h"

#include "aes.h"
#include "kalyna.h"
#include "threefish.h"
#include "blumshub.h"
#include "files.h"
#include "filters.h"
Expand Down Expand Up @@ -575,9 +577,9 @@ void Benchmark2(double t, double hertz)
BenchMarkByName<SymmetricCipher>("Camellia/CTR", 16);
BenchMarkByName<SymmetricCipher>("Camellia/CTR", 32);
BenchMarkByName<SymmetricCipher>("Twofish/CTR");
BenchMarkByName<SymmetricCipher>("Threefish/CTR", 32, "Threefish/CTR (256-bit key)", MakeParameters(Name::BlockSize(), 32));
BenchMarkByName<SymmetricCipher>("Threefish/CTR", 64, "Threefish/CTR (512-bit key)", MakeParameters(Name::BlockSize(), 64));
BenchMarkByName<SymmetricCipher>("Threefish/CTR", 128, "Threefish/CTR (1024-bit key)", MakeParameters(Name::BlockSize(), 128));
BenchMarkByName<SymmetricCipher>("Threefish-256(256)/CTR", 32);
BenchMarkByName<SymmetricCipher>("Threefish-512(512)/CTR", 64);
BenchMarkByName<SymmetricCipher>("Threefish-1024(1024)/CTR", 128);
BenchMarkByName<SymmetricCipher>("Serpent/CTR");
BenchMarkByName<SymmetricCipher>("CAST-256/CTR");
BenchMarkByName<SymmetricCipher>("RC6/CTR");
Expand Down
14 changes: 11 additions & 3 deletions regtest2.cpp
Expand Up @@ -142,9 +142,17 @@ void RegisterFactories2()
RegisterSymmetricCipherDefaultFactories<ECB_Mode<Kalyna> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Kalyna> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Kalyna> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish> >(); // Benchmarks

RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish256> >("Threefish-256(256)/ECB"); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish256> >("Threefish-256(256)/CBC"); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish512> >("Threefish-512(512)/ECB"); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish512> >("Threefish-512(512)/CBC"); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish1024> >("Threefish-1024(1024)/ECB"); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish1024> >("Threefish-1024(1024)/CBC"); // Test Vectors

RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish256> >("Threefish-256(256)/CTR"); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish512> >("Threefish-512(512)/CTR"); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish1024> >("Threefish-1024(1024)/CTR"); // Benchmarks

RegisterDefaultFactoryFor<KeyDerivationFunction, HKDF<SHA1> >();
RegisterDefaultFactoryFor<KeyDerivationFunction, HKDF<SHA256> >();
Expand Down

1 comment on commit b9bd51f

@noloader
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.