cryptopp 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/Gemfile +14 -0
  4. data/Guardfile +17 -0
  5. data/MIT-LICENSE +1 -1
  6. data/Rakefile +20 -27
  7. data/VERSION +1 -0
  8. data/cryptopp.gemspec +7 -182
  9. data/ext/Rakefile +2 -2
  10. data/ext/ciphers.cpp +619 -619
  11. data/ext/cryptopp.cpp +220 -217
  12. data/ext/cryptopp_ruby_api.h +7 -7
  13. data/ext/defs/hashes.def +16 -0
  14. data/ext/defs/hmacs.def +16 -0
  15. data/ext/digests.cpp +635 -601
  16. data/ext/extconf.rb +61 -19
  17. data/ext/j3way.cpp +5 -5
  18. data/ext/j3way.h +6 -6
  19. data/ext/jadler32.h +6 -6
  20. data/ext/jaes.cpp +5 -5
  21. data/ext/jaes.h +6 -6
  22. data/ext/jarc4.cpp +5 -5
  23. data/ext/jarc4.h +6 -6
  24. data/ext/jbase.cpp +94 -94
  25. data/ext/jbase.h +49 -55
  26. data/ext/jbasiccipherinfo.h +23 -23
  27. data/ext/jblowfish.cpp +5 -5
  28. data/ext/jblowfish.h +6 -6
  29. data/ext/jcamellia.cpp +5 -7
  30. data/ext/jcamellia.h +6 -8
  31. data/ext/jcast128.cpp +5 -5
  32. data/ext/jcast128.h +6 -6
  33. data/ext/jcast256.cpp +5 -5
  34. data/ext/jcast256.h +6 -6
  35. data/ext/jcipher.cpp +62 -62
  36. data/ext/jcipher.h +24 -24
  37. data/ext/jcipher_t.h +383 -383
  38. data/ext/jconfig.h +29 -46
  39. data/ext/jconstants.h +120 -122
  40. data/ext/jcrc32.h +6 -6
  41. data/ext/jdes.cpp +5 -5
  42. data/ext/jdes.h +6 -6
  43. data/ext/jdes_ede2.cpp +5 -5
  44. data/ext/jdes_ede2.h +6 -6
  45. data/ext/jdes_ede3.cpp +5 -5
  46. data/ext/jdes_ede3.h +6 -6
  47. data/ext/jdes_xex3.cpp +5 -5
  48. data/ext/jdes_xex3.h +6 -6
  49. data/ext/jdiamond2.cpp +5 -5
  50. data/ext/jdiamond2.h +6 -6
  51. data/ext/jdiamond2lite.cpp +5 -5
  52. data/ext/jdiamond2lite.h +6 -6
  53. data/ext/jexception.h +5 -5
  54. data/ext/jgost.cpp +5 -5
  55. data/ext/jgost.h +6 -6
  56. data/ext/jhash.cpp +51 -51
  57. data/ext/jhash.h +22 -27
  58. data/ext/jhash_t.h +59 -59
  59. data/ext/jhaval.h +15 -15
  60. data/ext/jhelpers.cpp +54 -54
  61. data/ext/jhelpers.h +3 -3
  62. data/ext/jhmac.cpp +20 -20
  63. data/ext/jhmac.h +15 -15
  64. data/ext/jhmac_t.h +40 -72
  65. data/ext/jidea.cpp +5 -5
  66. data/ext/jidea.h +6 -6
  67. data/ext/jmarc4.cpp +5 -5
  68. data/ext/jmarc4.h +6 -6
  69. data/ext/jmars.cpp +5 -5
  70. data/ext/jmars.h +6 -6
  71. data/ext/jmd2.h +9 -9
  72. data/ext/jmd4.h +9 -9
  73. data/ext/jmd5.h +9 -9
  74. data/ext/jpanamacipher.cpp +7 -7
  75. data/ext/jpanamacipher.h +9 -9
  76. data/ext/jpanamahash.h +9 -9
  77. data/ext/jrc2.cpp +15 -15
  78. data/ext/jrc2.h +11 -11
  79. data/ext/jrc5.cpp +5 -5
  80. data/ext/jrc5.h +6 -6
  81. data/ext/jrc6.cpp +5 -5
  82. data/ext/jrc6.h +6 -6
  83. data/ext/jripemd160.h +28 -28
  84. data/ext/jsafer.cpp +7 -7
  85. data/ext/jsafer.h +9 -9
  86. data/ext/jseal.cpp +7 -7
  87. data/ext/jseal.h +9 -9
  88. data/ext/jserpent.cpp +5 -5
  89. data/ext/jserpent.h +6 -6
  90. data/ext/jsha.h +38 -37
  91. data/ext/jsha3.h +130 -0
  92. data/ext/jsha3_blocksizes.h +73 -0
  93. data/ext/jshacal2.cpp +5 -5
  94. data/ext/jshacal2.h +6 -6
  95. data/ext/jshark.cpp +5 -7
  96. data/ext/jshark.h +6 -8
  97. data/ext/jsink.cpp +57 -57
  98. data/ext/jsink.h +127 -123
  99. data/ext/jskipjack.cpp +5 -5
  100. data/ext/jskipjack.h +6 -6
  101. data/ext/jsquare.cpp +5 -5
  102. data/ext/jsquare.h +6 -6
  103. data/ext/jstream.cpp +3 -3
  104. data/ext/jstream.h +3 -3
  105. data/ext/jstream_t.h +74 -126
  106. data/ext/jtea.cpp +5 -5
  107. data/ext/jtea.h +6 -6
  108. data/ext/jtiger.h +9 -11
  109. data/ext/jtwofish.cpp +5 -5
  110. data/ext/jtwofish.h +6 -6
  111. data/ext/jwhirlpool.h +9 -11
  112. data/ext/utils.cpp +3 -3
  113. data/extras/parser_c.rb +102 -102
  114. data/test/ciphers_test.rb +24 -30
  115. data/test/data/ciphers/3desval.yml +13 -0
  116. data/test/data/ciphers/3wayval.yml +17 -0
  117. data/test/data/ciphers/arc4.yml +22 -0
  118. data/test/data/ciphers/blowfish.yml +9 -0
  119. data/test/data/ciphers/camellia.yml +21 -0
  120. data/test/data/ciphers/cast128v.yml +13 -0
  121. data/test/data/ciphers/cast256v.yml +13 -0
  122. data/test/data/ciphers/descert.yml +723 -0
  123. data/test/data/ciphers/diamond.yml +31 -0
  124. data/test/data/ciphers/gostval.yml +33 -0
  125. data/test/data/ciphers/ideaval.yml +45 -0
  126. data/test/data/ciphers/marsval.yml +37 -0
  127. data/test/data/ciphers/panamac.yml +11 -0
  128. data/test/data/ciphers/rc2val.yml +49 -0
  129. data/test/data/ciphers/rc5val.yml +26 -0
  130. data/test/data/ciphers/rc6val.yml +25 -0
  131. data/test/data/ciphers/rijndael.yml +37 -0
  132. data/test/data/ciphers/saferval.yml +77 -0
  133. data/test/data/ciphers/seal.yml +6 -0
  134. data/test/data/ciphers/serpentv.yml +37 -0
  135. data/test/data/ciphers/shacal2.yml +21 -0
  136. data/test/data/ciphers/sharkval.yml +29 -0
  137. data/test/data/ciphers/skipjack.yml +5 -0
  138. data/test/data/ciphers/squareva.yml +33 -0
  139. data/test/data/ciphers/twofishv.yml +37 -0
  140. data/test/data/digests/adler32.yml +19 -0
  141. data/test/data/digests/crc32.yml +25 -0
  142. data/test/data/digests/haval.yml +7 -0
  143. data/test/data/digests/havalcer.yml +1 -0
  144. data/test/data/digests/md2.yml +22 -0
  145. data/test/data/digests/md4.yml +22 -0
  146. data/test/data/digests/md5.yml +22 -0
  147. data/test/data/digests/panamah.yml +13 -0
  148. data/test/data/digests/ripemd.yml +97 -0
  149. data/test/data/digests/sha.yml +25 -0
  150. data/test/data/digests/sha3.yml +23 -0
  151. data/test/data/digests/tiger.yml +30 -0
  152. data/test/data/digests/whirlpool.yml +25 -0
  153. data/test/data/hmacs/hmac.yml +14 -0
  154. data/test/digests_test.rb +17 -23
  155. data/test/hmacs_test.rb +25 -31
  156. data/test/test_helper.rb +31 -37
  157. metadata +70 -82
  158. data/test/data/ciphers/3desval.dat +0 -7
  159. data/test/data/ciphers/3wayval.dat +0 -6
  160. data/test/data/ciphers/arc4.dat +0 -8
  161. data/test/data/ciphers/blowfish.dat +0 -5
  162. data/test/data/ciphers/camellia.dat +0 -7
  163. data/test/data/ciphers/cast128v.dat +0 -5
  164. data/test/data/ciphers/cast256v.dat +0 -5
  165. data/test/data/ciphers/descert.dat +0 -198
  166. data/test/data/ciphers/diamond.dat +0 -9
  167. data/test/data/ciphers/gostval.dat +0 -10
  168. data/test/data/ciphers/ideaval.dat +0 -13
  169. data/test/data/ciphers/marsval.dat +0 -11
  170. data/test/data/ciphers/panamac.dat +0 -7
  171. data/test/data/ciphers/rc2val.dat +0 -10
  172. data/test/data/ciphers/rc5val.dat +0 -7
  173. data/test/data/ciphers/rc6val.dat +0 -8
  174. data/test/data/ciphers/rijndael.dat +0 -11
  175. data/test/data/ciphers/saferval.dat +0 -27
  176. data/test/data/ciphers/seal.dat +0 -3
  177. data/test/data/ciphers/serpentv.dat +0 -11
  178. data/test/data/ciphers/shacal2.dat +0 -7
  179. data/test/data/ciphers/sharkval.dat +0 -9
  180. data/test/data/ciphers/skipjack.dat +0 -3
  181. data/test/data/ciphers/squareva.dat +0 -10
  182. data/test/data/ciphers/twofishv.dat +0 -11
  183. data/test/data/digests/adler32.dat +0 -8
  184. data/test/data/digests/crc32.dat +0 -10
  185. data/test/data/digests/haval.dat +0 -4
  186. data/test/data/digests/havalcer.dat +0 -23
  187. data/test/data/digests/md2.dat +0 -9
  188. data/test/data/digests/md4.dat +0 -9
  189. data/test/data/digests/md5.dat +0 -9
  190. data/test/data/digests/panamah.dat +0 -8
  191. data/test/data/digests/ripemd.dat +0 -43
  192. data/test/data/digests/sha.dat +0 -19
  193. data/test/data/digests/tiger.dat +0 -11
  194. data/test/data/digests/whirlpool.dat +0 -13
  195. data/test/data/hmacs/hmac.dat +0 -6
@@ -1,8 +1,8 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
- * Crypto++ copyright (c) 1995-2010 Wei Dai
5
- * See COPYING for the extact license
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
6
  */
7
7
 
8
8
  #include "jsafer.h"
@@ -10,23 +10,23 @@
10
10
  #if ENABLED_SAFER_K_CIPHER
11
11
  BlockCipher* JSAFER_K::getEncryptionObject()
12
12
  {
13
- return new SAFER_K_Encryption((byte*) itsKey.data(), itsKeylength, itsRounds);
13
+ return new SAFER_K_Encryption((byte*) itsKey.data(), itsKeylength, itsRounds);
14
14
  }
15
15
 
16
16
  BlockCipher* JSAFER_K::getDecryptionObject()
17
17
  {
18
- return new SAFER_K_Decryption((byte*) itsKey.data(), itsKeylength, itsRounds);
18
+ return new SAFER_K_Decryption((byte*) itsKey.data(), itsKeylength, itsRounds);
19
19
  }
20
20
  #endif
21
21
 
22
22
  #if ENABLED_SAFER_SK_CIPHER
23
23
  BlockCipher* JSAFER_SK::getEncryptionObject()
24
24
  {
25
- return new SAFER_SK_Encryption((byte*) itsKey.data(), itsKeylength, itsRounds);
25
+ return new SAFER_SK_Encryption((byte*) itsKey.data(), itsKeylength, itsRounds);
26
26
  }
27
27
 
28
28
  BlockCipher* JSAFER_SK::getDecryptionObject()
29
29
  {
30
- return new SAFER_SK_Decryption((byte*) itsKey.data(), itsKeylength, itsRounds);
30
+ return new SAFER_SK_Decryption((byte*) itsKey.data(), itsKeylength, itsRounds);
31
31
  }
32
32
  #endif
@@ -1,8 +1,8 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
- * Crypto++ copyright (c) 1995-2010 Wei Dai
5
- * See COPYING for the extact license
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
6
  */
7
7
 
8
8
  #ifndef __JSAFER_H__
@@ -23,18 +23,18 @@ using namespace CryptoPP;
23
23
  #if ENABLED_SAFER_K_CIPHER
24
24
  class JSAFER_K : public JCipher_Template<SAFER_K_Info, SAFER_K_CIPHER, 6, 1, 13>
25
25
  {
26
- protected:
27
- BlockCipher* getEncryptionObject();
28
- BlockCipher* getDecryptionObject();
26
+ protected:
27
+ BlockCipher* getEncryptionObject();
28
+ BlockCipher* getDecryptionObject();
29
29
  };
30
30
  #endif
31
31
 
32
32
  #if ENABLED_SAFER_SK_CIPHER
33
33
  class JSAFER_SK : public JCipher_Template<SAFER_SK_Info, SAFER_SK_CIPHER, 6, 1, 13>
34
34
  {
35
- protected:
36
- BlockCipher* getEncryptionObject();
37
- BlockCipher* getDecryptionObject();
35
+ protected:
36
+ BlockCipher* getEncryptionObject();
37
+ BlockCipher* getDecryptionObject();
38
38
  };
39
39
  #endif
40
40
 
@@ -1,8 +1,8 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
- * Crypto++ copyright (c) 1995-2010 Wei Dai
5
- * See COPYING for the extact license
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
6
  */
7
7
 
8
8
  #include "jseal.h"
@@ -10,23 +10,23 @@
10
10
  #if ENABLED_SEAL_LITTLE_ENDIAN_CIPHER
11
11
  SymmetricCipher* JSEAL_LE::getEncryptionObject()
12
12
  {
13
- return new SEAL<LittleEndian>::Encryption((byte*) itsKey.data(), itsKeylength, (byte*) itsIV.data());
13
+ return new SEAL<LittleEndian>::Encryption((byte*) itsKey.data(), itsKeylength, (byte*) itsIV.data());
14
14
  }
15
15
 
16
16
  SymmetricCipher* JSEAL_LE::getDecryptionObject()
17
17
  {
18
- return getEncryptionObject();
18
+ return getEncryptionObject();
19
19
  }
20
20
  #endif
21
21
 
22
22
  #if ENABLED_SEAL_BIG_ENDIAN_CIPHER
23
23
  SymmetricCipher* JSEAL_BE::getEncryptionObject()
24
24
  {
25
- return new SEAL<BigEndian>::Encryption((byte*) itsKey.data(), itsKeylength, (byte*) itsIV.data());
25
+ return new SEAL<BigEndian>::Encryption((byte*) itsKey.data(), itsKeylength, (byte*) itsIV.data());
26
26
  }
27
27
 
28
28
  SymmetricCipher* JSEAL_BE::getDecryptionObject()
29
29
  {
30
- return getEncryptionObject();
30
+ return getEncryptionObject();
31
31
  }
32
32
  #endif
@@ -1,8 +1,8 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
- * Crypto++ copyright (c) 1995-2010 Wei Dai
5
- * See COPYING for the extact license
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
6
  */
7
7
 
8
8
  #ifndef __JSEAL_H__
@@ -23,18 +23,18 @@ using namespace CryptoPP;
23
23
  #if ENABLED_SEAL_LITTLE_ENDIAN_CIPHER
24
24
  class JSEAL_LE : public JStream_Template<SEAL_Info<LittleEndian>, SEAL_LITTLE_ENDIAN_CIPHER>
25
25
  {
26
- protected:
27
- SymmetricCipher* getEncryptionObject();
28
- SymmetricCipher* getDecryptionObject();
26
+ protected:
27
+ SymmetricCipher* getEncryptionObject();
28
+ SymmetricCipher* getDecryptionObject();
29
29
  };
30
30
  #endif
31
31
 
32
32
  #if ENABLED_SEAL_BIG_ENDIAN_CIPHER
33
33
  class JSEAL_BE : public JStream_Template<SEAL_Info<BigEndian>, SEAL_BIG_ENDIAN_CIPHER>
34
34
  {
35
- protected:
36
- SymmetricCipher* getEncryptionObject();
37
- SymmetricCipher* getDecryptionObject();
35
+ protected:
36
+ SymmetricCipher* getEncryptionObject();
37
+ SymmetricCipher* getDecryptionObject();
38
38
  };
39
39
  #endif
40
40
 
@@ -1,8 +1,8 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
- * Crypto++ copyright (c) 1995-2010 Wei Dai
5
- * See COPYING for the extact license
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
6
  */
7
7
 
8
8
  #include "jserpent.h"
@@ -11,12 +11,12 @@
11
11
 
12
12
  BlockCipher* JSerpent::getEncryptionObject()
13
13
  {
14
- return new SerpentEncryption((byte*) itsKey.data(), itsKeylength);
14
+ return new SerpentEncryption((byte*) itsKey.data(), itsKeylength);
15
15
  }
16
16
 
17
17
  BlockCipher* JSerpent::getDecryptionObject()
18
18
  {
19
- return new SerpentDecryption((byte*) itsKey.data(), itsKeylength);
19
+ return new SerpentDecryption((byte*) itsKey.data(), itsKeylength);
20
20
  }
21
21
 
22
22
  #endif
@@ -1,8 +1,8 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
- * Crypto++ copyright (c) 1995-2010 Wei Dai
5
- * See COPYING for the extact license
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
6
  */
7
7
 
8
8
  #ifndef __JSERPENT_H__
@@ -22,9 +22,9 @@ using namespace CryptoPP;
22
22
 
23
23
  class JSerpent : public JCipher_Template<Serpent_Info, SERPENT_CIPHER>
24
24
  {
25
- protected:
26
- BlockCipher* getEncryptionObject();
27
- BlockCipher* getDecryptionObject();
25
+ protected:
26
+ BlockCipher* getEncryptionObject();
27
+ BlockCipher* getDecryptionObject();
28
28
  };
29
29
 
30
30
  #endif
data/ext/jsha.h CHANGED
@@ -1,8 +1,8 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
- * Crypto++ copyright (c) 1995-2010 Wei Dai
5
- * See COPYING for the extact license
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
6
  */
7
7
 
8
8
  #ifndef __JSHA_H__
@@ -10,14 +10,21 @@
10
10
 
11
11
  #include "jconfig.h"
12
12
 
13
- #if ENABLED_SHA1_HASH || ENABLED_SHA256_HASH || (defined(WORD64_AVAILABLE) && (ENABLED_SHA384_HASH || ENABLED_SHA512_HASH)) || \
14
- ENABLED_SHA1_HMAC || ENABLED_SHA256_HMAC || (defined(WORD64_AVAILABLE) && (ENABLED_SHA384_HMAC || ENABLED_SHA512_HMAC))
13
+ #define ANY_SHA_HASH_ENABLED \
14
+ ENABLED_SHA1_HASH || ENABLED_SHA_256_HASH || \
15
+ ENABLED_SHA_384_HASH || ENABLED_SHA_512_HASH
15
16
 
16
- #if ENABLED_SHA1_HASH || ENABLED_SHA256_HASH || (defined(WORD64_AVAILABLE) && (ENABLED_SHA384_HASH || ENABLED_SHA512_HASH))
17
+ #define ANY_SHA_HMAC_ENABLED \
18
+ ENABLED_SHA1_HMAC || ENABLED_SHA_256_HMAC || \
19
+ ENABLED_SHA_384_HMAC || ENABLED_SHA_512_HMAC
20
+
21
+ #if ANY_SHA_HASH_ENABLED || ANY_SHA_HMAC_ENABLED
22
+
23
+ #if ANY_SHA_HASH_ENABLED
17
24
  #include "jhash_t.h"
18
25
  #endif
19
26
 
20
- #if ENABLED_SHA1_HMAC || ENABLED_SHA256_HMAC || (defined(WORD64_AVAILABLE) && (ENABLED_SHA384_HMAC || ENABLED_SHA512_HMAC))
27
+ #if ANY_SHA_HMAC_ENABLED
21
28
  #include "jhmac_t.h"
22
29
  #endif
23
30
 
@@ -31,10 +38,10 @@ using namespace CryptoPP;
31
38
  #if ENABLED_SHA1_HASH
32
39
  class JSHA1 : public JHash_Template<SHA1, SHA1_HASH>
33
40
  {
34
- public:
35
- JSHA1(string plaintext = "") : JHash_Template<SHA1, SHA1_HASH>(plaintext) { }
41
+ public:
42
+ JSHA1(string plaintext = "") : JHash_Template<SHA1, SHA1_HASH>(plaintext) { }
36
43
 
37
- static string getHashName() { return "SHA1"; }
44
+ static string getHashName() { return "SHA1"; }
38
45
  };
39
46
 
40
47
  typedef JSHA1 JSHA;
@@ -43,31 +50,30 @@ typedef JSHA1 JSHA;
43
50
  #if ENABLED_SHA256_HASH
44
51
  class JSHA256 : public JHash_Template<SHA256, SHA256_HASH>
45
52
  {
46
- public:
47
- JSHA256(string plaintext = "") : JHash_Template<SHA256, SHA256_HASH>(plaintext) { }
53
+ public:
54
+ JSHA256(string plaintext = "") : JHash_Template<SHA256, SHA256_HASH>(plaintext) { }
48
55
 
49
- static string getHashName() { return "SHA-256"; }
56
+ static string getHashName() { return "SHA-256"; }
50
57
  };
51
58
  #endif
52
59
 
53
- #ifdef WORD64_AVAILABLE
54
60
  #if ENABLED_SHA384_HASH
55
61
  class JSHA384 : public JHash_Template<SHA384, SHA384_HASH>
56
62
  {
57
- public:
58
- JSHA384(string plaintext = "") : JHash_Template<SHA384, SHA384_HASH>(plaintext) { }
63
+ public:
64
+ JSHA384(string plaintext = "") : JHash_Template<SHA384, SHA384_HASH>(plaintext) { }
59
65
 
60
- static string getHashName() { return "SHA-384"; }
66
+ static string getHashName() { return "SHA-384"; }
61
67
  };
62
68
  #endif
63
69
 
64
70
  #if ENABLED_SHA512_HASH
65
71
  class JSHA512 : public JHash_Template<SHA512, SHA512_HASH>
66
72
  {
67
- public:
68
- JSHA512(string plaintext = "") : JHash_Template<SHA512, SHA512_HASH>(plaintext) { }
73
+ public:
74
+ JSHA512(string plaintext = "") : JHash_Template<SHA512, SHA512_HASH>(plaintext) { }
69
75
 
70
- static string getHashName() { return "SHA-512"; }
76
+ static string getHashName() { return "SHA-512"; }
71
77
  };
72
78
  #endif
73
79
  #endif
@@ -76,10 +82,10 @@ class JSHA512 : public JHash_Template<SHA512, SHA512_HASH>
76
82
  #if ENABLED_SHA1_HMAC
77
83
  class JSHA1_HMAC : public JHMAC_Template<SHA1, SHA1_HMAC>
78
84
  {
79
- public:
80
- JSHA1_HMAC(string plaintext = "") : JHMAC_Template<SHA1, SHA1_HMAC>(plaintext) { }
85
+ public:
86
+ JSHA1_HMAC(string plaintext = "") : JHMAC_Template<SHA1, SHA1_HMAC>(plaintext) { }
81
87
 
82
- static string getHashName() { return "SHA1-HMAC"; }
88
+ static string getHashName() { return "SHA1-HMAC"; }
83
89
  };
84
90
 
85
91
  typedef JSHA1_HMAC JSHA_HMAC;
@@ -88,35 +94,30 @@ typedef JSHA1_HMAC JSHA_HMAC;
88
94
  #if ENABLED_SHA256_HMAC
89
95
  class JSHA256_HMAC : public JHMAC_Template<SHA256, SHA256_HMAC>
90
96
  {
91
- public:
92
- JSHA256_HMAC(string plaintext = "") : JHMAC_Template<SHA256, SHA256_HMAC>(plaintext) { }
97
+ public:
98
+ JSHA256_HMAC(string plaintext = "") : JHMAC_Template<SHA256, SHA256_HMAC>(plaintext) { }
93
99
 
94
- static string getHashName() { return "SHA-256-HMAC"; }
100
+ static string getHashName() { return "SHA-256-HMAC"; }
95
101
  };
96
102
  #endif
97
103
 
98
- #ifdef WORD64_AVAILABLE
99
104
  #if ENABLED_SHA384_HMAC
100
105
  class JSHA384_HMAC : public JHMAC_Template<SHA384, SHA384_HMAC>
101
106
  {
102
- public:
103
- JSHA384_HMAC(string plaintext = "") : JHMAC_Template<SHA384, SHA384_HMAC>(plaintext) { }
107
+ public:
108
+ JSHA384_HMAC(string plaintext = "") : JHMAC_Template<SHA384, SHA384_HMAC>(plaintext) { }
104
109
 
105
- static string getHashName() { return "SHA-384-HMAC"; }
110
+ static string getHashName() { return "SHA-384-HMAC"; }
106
111
  };
107
112
  #endif
108
113
 
109
114
  #if ENABLED_SHA512_HMAC
110
115
  class JSHA512_HMAC : public JHMAC_Template<SHA512, SHA512_HMAC>
111
116
  {
112
- public:
113
- JSHA512_HMAC(string plaintext = "") : JHMAC_Template<SHA512, SHA512_HMAC>(plaintext) { }
117
+ public:
118
+ JSHA512_HMAC(string plaintext = "") : JHMAC_Template<SHA512, SHA512_HMAC>(plaintext) { }
114
119
 
115
- static string getHashName() { return "SHA-512-HMAC"; }
120
+ static string getHashName() { return "SHA-512-HMAC"; }
116
121
  };
117
122
  #endif
118
123
  #endif
119
-
120
-
121
- #endif
122
- #endif
@@ -0,0 +1,130 @@
1
+
2
+ /*
3
+ * Copyright (c) 2002-2014 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2013 Wei Dai
5
+ * See MIT-LICENSE for the extact license
6
+ */
7
+
8
+ #ifndef __JSHA3_H__
9
+ #define __JSHA3_H__
10
+
11
+ #include "jconfig.h"
12
+
13
+ #define ANY_SHA3_HASH_ENABLED \
14
+ ENABLED_SHA3_HASH || ENABLED_SHA3_224_HASH || \
15
+ ENABLED_SHA3_256_HASH || ENABLED_SHA3_384_HASH || \
16
+ ENABLED_SHA3_512_HASH
17
+
18
+ #define ANY_SHA3_HMAC_ENABLED\
19
+ ENABLED_SHA3_HMAC || ENABLED_SHA3_224_HMAC || \
20
+ ENABLED_SHA3_256_HMAC || ENABLED_SHA3_384_HMAC || \
21
+ ENABLED_SHA3_512_HMAC
22
+
23
+ #if ANY_SHA3_HASH_ENABLED || ANY_SHA3_HMAC_ENABLED
24
+
25
+ #if ANY_SHA3_HASH_ENABLED
26
+ #include "jhash_t.h"
27
+ #endif
28
+
29
+ #if ANY_SHA3_HMAC_ENABLED
30
+ #include "jhmac_t.h"
31
+ #endif
32
+
33
+
34
+ // Crypto++ headers...
35
+
36
+ #ifdef HAVE_CRYPTOPP_SHA3_BLOCKSIZE
37
+ #include "sha3.h"
38
+ #else
39
+ #include "jsha3_blocksizes.h"
40
+ #endif
41
+
42
+ using namespace CryptoPP;
43
+
44
+ #if ENABLED_SHA3_224_HASH
45
+ class JSHA3_224 : public JHash_Template<SHA3_224, SHA3_224_HASH>
46
+ {
47
+ public:
48
+ JSHA3_224(string plaintext = "") : JHash_Template<SHA3_224, SHA3_224_HASH>(plaintext) { }
49
+
50
+ static string getHashName() { return "SHA3-224"; }
51
+ };
52
+
53
+ typedef JSHA3_224 JSHA3;
54
+ #endif
55
+
56
+ #if ENABLED_SHA3_256_HASH
57
+ class JSHA3_256 : public JHash_Template<SHA3_256, SHA3_256_HASH>
58
+ {
59
+ public:
60
+ JSHA3_256(string plaintext = "") : JHash_Template<SHA3_256, SHA3_256_HASH>(plaintext) { }
61
+
62
+ static string getHashName() { return "SHA-256"; }
63
+ };
64
+ #endif
65
+
66
+ #if ENABLED_SHA3_384_HASH
67
+ class JSHA3_384 : public JHash_Template<SHA3_384, SHA3_384_HASH>
68
+ {
69
+ public:
70
+ JSHA3_384(string plaintext = "") : JHash_Template<SHA3_384, SHA3_384_HASH>(plaintext) { }
71
+
72
+ static string getHashName() { return "SHA-384"; }
73
+ };
74
+ #endif
75
+
76
+ #if ENABLED_SHA3_512_HASH
77
+ class JSHA3_512 : public JHash_Template<SHA3_512, SHA3_512_HASH>
78
+ {
79
+ public:
80
+ JSHA3_512(string plaintext = "") : JHash_Template<SHA3_512, SHA3_512_HASH>(plaintext) { }
81
+
82
+ static string getHashName() { return "SHA-512"; }
83
+ };
84
+ #endif
85
+
86
+
87
+ #if ENABLED_SHA3_224_HMAC
88
+ class JSHA3_224_HMAC : public JHMAC_Template<SHA3_224, SHA3_224_HMAC>
89
+ {
90
+ public:
91
+ JSHA3_224_HMAC(string plaintext = "") : JHMAC_Template<SHA3_224, SHA3_224_HMAC>(plaintext) { }
92
+
93
+ static string getHashName() { return "SHA-224-HMAC"; }
94
+ };
95
+
96
+ typedef JSHA3_224_HMAC JSHA3_HMAC;
97
+ #endif
98
+
99
+ #if ENABLED_SHA3_256_HMAC
100
+ class JSHA3_256_HMAC : public JHMAC_Template<SHA3_256, SHA3_256_HMAC>
101
+ {
102
+ public:
103
+ JSHA3_256_HMAC(string plaintext = "") : JHMAC_Template<SHA3_256, SHA3_256_HMAC>(plaintext) { }
104
+
105
+ static string getHashName() { return "SHA-256-HMAC"; }
106
+ };
107
+ #endif
108
+
109
+ #if ENABLED_SHA3_384_HMAC
110
+ class JSHA3_384_HMAC : public JHMAC_Template<SHA3_384, SHA3_384_HMAC>
111
+ {
112
+ public:
113
+ JSHA3_384_HMAC(string plaintext = "") : JHMAC_Template<SHA3_384, SHA3_384_HMAC>(plaintext) { }
114
+
115
+ static string getHashName() { return "SHA-384-HMAC"; }
116
+ };
117
+ #endif
118
+
119
+ #if ENABLED_SHA3_512_HMAC
120
+ class JSHA3_512_HMAC : public JHMAC_Template<SHA3_512, SHA3_512_HMAC>
121
+ {
122
+ public:
123
+ JSHA3_512_HMAC(string plaintext = "") : JHMAC_Template<SHA3_512, SHA3_512_HMAC>(plaintext) { }
124
+
125
+ static string getHashName() { return "SHA-512-HMAC"; }
126
+ };
127
+ #endif
128
+
129
+ #endif
130
+ #endif