1 // regtest3.cpp - originally written and placed in the public domain by Wei Dai
2 //                regtest.cpp split into 3 files due to OOM kills by JW
3 //                in April 2017. A second split occurred in July 2018.
4 
5 #define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
6 
7 #include "cryptlib.h"
8 #include "factory.h"
9 #include "bench.h"
10 #include "cpu.h"
11 
12 #include "modes.h"
13 #include "aria.h"
14 #include "seed.h"
15 #include "hight.h"
16 #include "camellia.h"
17 #include "shacal2.h"
18 #include "tea.h"
19 #include "aes.h"
20 #include "tiger.h"
21 #include "ccm.h"
22 #include "gcm.h"
23 #include "eax.h"
24 #include "xts.h"
25 #include "twofish.h"
26 #include "serpent.h"
27 #include "cast.h"
28 #include "rc6.h"
29 #include "mars.h"
30 #include "kalyna.h"
31 #include "threefish.h"
32 #include "cham.h"
33 #include "lea.h"
34 #include "simeck.h"
35 #include "simon.h"
36 #include "speck.h"
37 #include "sm4.h"
38 #include "des.h"
39 #include "idea.h"
40 #include "rc5.h"
41 #include "skipjack.h"
42 #include "blowfish.h"
43 #include "chachapoly.h"
44 
45 // Aggressive stack checking with VS2005 SP1 and above.
46 #if (_MSC_FULL_VER >= 140050727)
47 # pragma strict_gs_check (on)
48 #endif
49 
50 #if CRYPTOPP_MSC_VERSION
51 # pragma warning(disable: 4505 4355)
52 #endif
53 
USING_NAMESPACE(CryptoPP)54 USING_NAMESPACE(CryptoPP)
55 
56 // Shared key ciphers
57 void RegisterFactories4()
58 {
59 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SHACAL2> >();
60 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<ARIA> >();
61 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<HIGHT> >();
62 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<HIGHT> >();
63 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<HIGHT> >();
64 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<Camellia> >();
65 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<TEA> >();
66 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<XTEA> >();
67 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<AES> >();
68 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<AES> >();
69 	RegisterSymmetricCipherDefaultFactories<CFB_Mode<AES> >();
70 	RegisterSymmetricCipherDefaultFactories<OFB_Mode<AES> >();
71 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<AES> >();
72 	RegisterSymmetricCipherDefaultFactories<XTS_Mode<AES> >();
73 
74 	RegisterAuthenticatedSymmetricCipherDefaultFactories<CCM<AES> >();
75 	RegisterAuthenticatedSymmetricCipherDefaultFactories<GCM<AES> >();
76 	RegisterAuthenticatedSymmetricCipherDefaultFactories<EAX<AES> >();
77 	RegisterAuthenticatedSymmetricCipherDefaultFactories<ChaCha20Poly1305>();
78 	RegisterAuthenticatedSymmetricCipherDefaultFactories<XChaCha20Poly1305>();
79 
80 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<ARIA> >();  // For test vectors
81 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<ARIA> >();
82 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Camellia> >();
83 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Twofish> >();
84 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Serpent> >();
85 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<CAST256> >();
86 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<RC6> >();
87 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<MARS> >();
88 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<MARS> >();
89 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SHACAL2> >();
90 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<DES> >();
91 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<DES_XEX3> >();
92 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<DES_EDE3> >();
93 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<IDEA> >();
94 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<RC5> >();
95 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<TEA> >();
96 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<XTEA> >();
97 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<CAST128> >();
98 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SKIPJACK> >();
99 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SKIPJACK> >();
100 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<SKIPJACK> >();
101 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Blowfish> >();
102 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SEED> >();
103 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SEED> >();
104 
105 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<Kalyna128> >();  // Test Vectors
106 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<Kalyna128> >();  // Test Vectors
107 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<Kalyna256> >();  // Test Vectors
108 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<Kalyna256> >();  // Test Vectors
109 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<Kalyna512> >();  // Test Vectors
110 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<Kalyna512> >();  // Test Vectors
111 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Kalyna128> >();  // Benchmarks
112 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Kalyna256> >();  // Benchmarks
113 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Kalyna512> >();  // Benchmarks
114 
115 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish256> >();  // Test Vectors
116 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish256> >();  // Test Vectors
117 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish512> >();  // Test Vectors
118 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish512> >();  // Test Vectors
119 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish1024> >(); // Test Vectors
120 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish1024> >(); // Test Vectors
121 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish256> >();  // Benchmarks
122 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish512> >();  // Benchmarks
123 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish1024> >(); // Benchmarks
124 
125 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<CHAM64> >();  // Test Vectors
126 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<CHAM128> >(); // Test Vectors
127 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<CHAM64> >();  // Benchmarks
128 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<CHAM128> >(); // Benchmarks
129 
130 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<LEA> >(); // Test Vectors
131 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<LEA> >(); // Test Vectors
132 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<LEA> >(); // Benchmarks
133 
134 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SIMECK32> >(); // Test Vectors
135 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SIMECK32> >(); // Benchmarks
136 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SIMECK64> >(); // Test Vectors
137 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SIMECK64> >(); // Benchmarks
138 
139 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SIMON64> >();  // Test Vectors
140 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<SIMON64> >();  // Test Vectors
141 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SIMON128> >(); // Test Vectors
142 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<SIMON128> >(); // Test Vectors
143 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SIMON64> >();  // Benchmarks
144 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SIMON128> >(); // Benchmarks
145 
146 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SPECK64> >();  // Test Vectors
147 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<SPECK64> >();  // Test Vectors
148 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SPECK128> >(); // Test Vectors
149 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<SPECK128> >(); // Test Vectors
150 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SPECK64> >();  // Benchmarks
151 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SPECK128> >(); // Benchmarks
152 
153 	RegisterSymmetricCipherDefaultFactories<ECB_Mode<SM4> >();  // Test Vectors
154 	RegisterSymmetricCipherDefaultFactories<CBC_Mode<SM4> >();  // Test Vectors
155 	RegisterSymmetricCipherDefaultFactories<CTR_Mode<SM4> >();  // Benchmarks
156 }
157