sleeping_kangaroo12 0.0.1 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (296) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +27 -0
  3. data/README.md +48 -53
  4. data/ext/Rakefile +12 -37
  5. data/ext/binding/sleeping_kangaroo12.c +1 -16
  6. data/ext/{xkcp → k12}/Makefile +0 -0
  7. data/ext/k12/Makefile.build +118 -0
  8. data/ext/k12/README.markdown +86 -0
  9. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-ARMv8Asha3.S +623 -0
  10. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-SnP.h +65 -0
  11. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-opt64.c +227 -0
  12. data/ext/{xkcp/lib/low/KeccakP-1600/compact → k12/lib/Inplace32BI}/KeccakP-1600-SnP.h +4 -9
  13. data/ext/{xkcp/lib/low/KeccakP-1600/plain-32bits-inplace → k12/lib/Inplace32BI}/KeccakP-1600-inplace32BI.c +65 -160
  14. data/ext/k12/lib/KangarooTwelve.c +332 -0
  15. data/ext/{xkcp/lib/high/KangarooTwelve → k12/lib}/KangarooTwelve.h +53 -16
  16. data/ext/{xkcp/lib/low/KeccakP-1600/AVX2 → k12/lib/Optimized64}/KeccakP-1600-AVX2.s +122 -558
  17. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512-plainC.c +241 -0
  18. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512.s +551 -0
  19. data/ext/k12/lib/Optimized64/KeccakP-1600-SnP.h +74 -0
  20. data/ext/{xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros → k12/lib/Optimized64/KeccakP-1600-opt64.c} +447 -169
  21. data/ext/k12/lib/Optimized64/KeccakP-1600-runtimeDispatch.c +406 -0
  22. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX2.c +419 -0
  23. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX512.c +458 -0
  24. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-SSSE3.c +438 -0
  25. data/ext/{xkcp/lib/low/KeccakP-1600/plain-64bits → k12/lib/Plain64}/KeccakP-1600-SnP.h +14 -20
  26. data/ext/{xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h → k12/lib/Plain64/KeccakP-1600-plain64.c} +9 -8
  27. data/ext/{xkcp/lib/common → k12/lib}/align.h +3 -2
  28. data/ext/{xkcp/lib/common → k12/lib}/brg_endian.h +0 -0
  29. data/ext/{xkcp → k12}/support/Build/ExpandProducts.xsl +0 -0
  30. data/ext/{xkcp → k12}/support/Build/ToGlobalMakefile.xsl +0 -0
  31. data/ext/{xkcp → k12}/support/Build/ToOneTarget.xsl +0 -0
  32. data/ext/{xkcp → k12}/support/Build/ToTargetConfigFile.xsl +0 -0
  33. data/ext/{xkcp → k12}/support/Build/ToTargetMakefile.xsl +10 -16
  34. data/ext/{xkcp → k12}/support/Build/ToVCXProj.xsl +0 -0
  35. data/lib/sleeping_kangaroo12/binding.rb +2 -1
  36. data/lib/sleeping_kangaroo12/build/loader.rb +1 -0
  37. data/lib/sleeping_kangaroo12/build/platform.rb +1 -0
  38. data/lib/sleeping_kangaroo12/digest.rb +38 -4
  39. data/lib/sleeping_kangaroo12/version.rb +1 -1
  40. metadata +48 -288
  41. data/ext/config/xkcp.build +0 -17
  42. data/ext/xkcp/LICENSE +0 -1
  43. data/ext/xkcp/Makefile.build +0 -200
  44. data/ext/xkcp/README.markdown +0 -296
  45. data/ext/xkcp/lib/HighLevel.build +0 -143
  46. data/ext/xkcp/lib/LowLevel.build +0 -757
  47. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +0 -301
  48. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +0 -81
  49. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +0 -125
  50. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +0 -48
  51. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +0 -79
  52. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +0 -81
  53. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +0 -73
  54. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +0 -195
  55. data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +0 -111
  56. data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +0 -76
  57. data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +0 -314
  58. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +0 -61
  59. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +0 -67
  60. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +0 -128
  61. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +0 -93
  62. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +0 -599
  63. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +0 -573
  64. data/ext/xkcp/lib/high/Ketje/Ketjev2.c +0 -87
  65. data/ext/xkcp/lib/high/Ketje/Ketjev2.h +0 -88
  66. data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +0 -274
  67. data/ext/xkcp/lib/high/Keyak/Keyakv2.c +0 -132
  68. data/ext/xkcp/lib/high/Keyak/Keyakv2.h +0 -217
  69. data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +0 -81
  70. data/ext/xkcp/lib/high/Keyak/Motorist.inc +0 -953
  71. data/ext/xkcp/lib/high/Kravatte/Kravatte.c +0 -533
  72. data/ext/xkcp/lib/high/Kravatte/Kravatte.h +0 -115
  73. data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +0 -557
  74. data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +0 -247
  75. data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +0 -66
  76. data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +0 -336
  77. data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +0 -26
  78. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +0 -55
  79. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +0 -35
  80. data/ext/xkcp/lib/high/Xoofff/Xoofff.c +0 -634
  81. data/ext/xkcp/lib/high/Xoofff/Xoofff.h +0 -147
  82. data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +0 -483
  83. data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +0 -241
  84. data/ext/xkcp/lib/high/common/Phases.h +0 -25
  85. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +0 -41
  86. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +0 -1666
  87. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +0 -1655
  88. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +0 -1268
  89. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +0 -1264
  90. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +0 -1178
  91. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +0 -1175
  92. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +0 -1338
  93. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +0 -1336
  94. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +0 -1343
  95. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +0 -1339
  96. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +0 -42
  97. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +0 -823
  98. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +0 -831
  99. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +0 -31
  100. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +0 -540
  101. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +0 -42
  102. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +0 -733
  103. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +0 -1121
  104. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +0 -52
  105. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +0 -623
  106. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +0 -47
  107. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +0 -6
  108. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +0 -6
  109. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +0 -6
  110. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +0 -1031
  111. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +0 -53
  112. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +0 -44
  113. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +0 -476
  114. data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +0 -6
  115. data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +0 -6
  116. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +0 -305
  117. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +0 -420
  118. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +0 -43
  119. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +0 -565
  120. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +0 -7
  121. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +0 -7
  122. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +0 -8
  123. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +0 -6
  124. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +0 -6
  125. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +0 -44
  126. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +0 -23
  127. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +0 -625
  128. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +0 -44
  129. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +0 -440
  130. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +0 -42
  131. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +0 -1196
  132. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +0 -1124
  133. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +0 -1196
  134. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +0 -1392
  135. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +0 -1394
  136. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +0 -42
  137. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +0 -7
  138. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +0 -7
  139. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +0 -7
  140. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +0 -850
  141. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +0 -51
  142. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +0 -957
  143. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +0 -49
  144. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +0 -8
  145. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +0 -8
  146. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +0 -9
  147. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +0 -9
  148. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +0 -45
  149. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +0 -37
  150. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +0 -1321
  151. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +0 -55
  152. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +0 -7
  153. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +0 -7
  154. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +0 -7
  155. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +0 -7
  156. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +0 -7
  157. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +0 -7
  158. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +0 -881
  159. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +0 -51
  160. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +0 -45
  161. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +0 -37
  162. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +0 -45
  163. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +0 -38
  164. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +0 -1615
  165. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +0 -57
  166. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +0 -7
  167. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +0 -7
  168. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +0 -7
  169. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +0 -45
  170. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +0 -37
  171. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +0 -45
  172. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +0 -38
  173. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +0 -45
  174. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +0 -38
  175. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +0 -41
  176. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +0 -442
  177. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +0 -446
  178. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +0 -419
  179. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +0 -427
  180. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +0 -41
  181. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +0 -647
  182. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +0 -39
  183. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +0 -190
  184. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +0 -43
  185. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +0 -412
  186. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +0 -23
  187. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +0 -41
  188. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +0 -454
  189. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +0 -458
  190. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +0 -455
  191. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +0 -458
  192. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +0 -41
  193. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +0 -728
  194. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +0 -43
  195. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +0 -414
  196. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +0 -23
  197. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +0 -42
  198. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +0 -527
  199. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +0 -533
  200. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +0 -528
  201. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +0 -534
  202. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +0 -521
  203. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +0 -527
  204. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +0 -517
  205. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +0 -523
  206. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +0 -550
  207. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +0 -556
  208. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +0 -32
  209. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +0 -432
  210. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +0 -42
  211. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +0 -929
  212. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +0 -40
  213. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +0 -244
  214. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +0 -46
  215. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +0 -184
  216. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +0 -454
  217. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +0 -459
  218. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +0 -83
  219. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +0 -88
  220. data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +0 -7
  221. data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +0 -7
  222. data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +0 -7
  223. data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +0 -7
  224. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +0 -44
  225. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +0 -437
  226. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +0 -23
  227. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +0 -57
  228. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +0 -475
  229. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +0 -480
  230. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +0 -590
  231. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +0 -590
  232. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +0 -126
  233. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +0 -68
  234. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +0 -174
  235. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +0 -80
  236. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +0 -68
  237. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +0 -142
  238. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +0 -55
  239. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +0 -1086
  240. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +0 -1092
  241. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +0 -721
  242. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +0 -726
  243. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +0 -723
  244. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +0 -729
  245. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +0 -1164
  246. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +0 -1165
  247. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +0 -562
  248. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +0 -563
  249. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +0 -563
  250. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +0 -565
  251. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +0 -55
  252. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +0 -476
  253. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +0 -485
  254. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +0 -362
  255. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +0 -367
  256. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +0 -43
  257. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +0 -1341
  258. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +0 -581
  259. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +0 -58
  260. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +0 -332
  261. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +0 -329
  262. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +0 -53
  263. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +0 -355
  264. data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +0 -79
  265. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +0 -56
  266. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +0 -399
  267. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +0 -127
  268. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +0 -43
  269. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +0 -253
  270. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +0 -1044
  271. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +0 -49
  272. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +0 -45
  273. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +0 -37
  274. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +0 -1587
  275. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +0 -48
  276. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +0 -1202
  277. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +0 -48
  278. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +0 -484
  279. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +0 -44
  280. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +0 -45
  281. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +0 -37
  282. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +0 -939
  283. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +0 -49
  284. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +0 -1216
  285. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +0 -48
  286. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +0 -45
  287. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +0 -37
  288. data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +0 -290
  289. data/ext/xkcp/lib/low/common/SnP-Relaned.h +0 -141
  290. data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +0 -133
  291. data/ext/xkcp/support/Kernel-PMU/Makefile +0 -8
  292. data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +0 -129
  293. data/ext/xkcp/support/Kernel-PMU/load-module +0 -1
  294. data/ext/xkcp/util/KeccakSum/KeccakSum.c +0 -394
  295. data/ext/xkcp/util/KeccakSum/base64.c +0 -86
  296. data/ext/xkcp/util/KeccakSum/base64.h +0 -12
@@ -1,533 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- Kravatte, designed by Guido Bertoni, Joan Daemen, Seth Hoffert, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
6
-
7
- Implementation by Ronny Van Keer, hereby denoted as "the implementer".
8
-
9
- For more information, feedback or questions, please refer to the Keccak Team website:
10
- https://keccak.team/
11
-
12
- To the extent possible under law, the implementer has waived all copyright
13
- and related or neighboring rights to the source code in this file.
14
- http://creativecommons.org/publicdomain/zero/1.0/
15
- */
16
-
17
- #if DEBUG
18
- #include <assert.h>
19
- #endif
20
- #include <string.h>
21
- #include <stdlib.h>
22
- #include "brg_endian.h"
23
- #include "Kravatte.h"
24
-
25
- #ifdef XKCP_has_KeccakP1600times2
26
- #include "KeccakP-1600-times2-SnP.h"
27
- #endif
28
-
29
- #ifdef XKCP_has_KeccakP1600times4
30
- #include "KeccakP-1600-times4-SnP.h"
31
- #endif
32
-
33
- #ifdef XKCP_has_KeccakP1600times8
34
- #include "KeccakP-1600-times8-SnP.h"
35
- #endif
36
-
37
- /*
38
- ** Uncomment this define if calls to KeccakP1600_Initialize() and
39
- ** KeccakP1600times##Parallellism##_InitializeAll() are mandatory to make it work,
40
- ** mostly not needed.
41
- **
42
- #define NEED_INITIALIZE
43
- */
44
-
45
- /*
46
- ** Uncomment this define for more debugging dumps.
47
- **
48
- #define DEBUG_DUMP
49
- */
50
-
51
- #define MaxParallellism 8
52
- #define laneSize 8
53
- #define widthInLanes (SnP_widthInBytes/laneSize)
54
- #define SnP_width (SnP_widthInBytes*8)
55
-
56
- #define MyMin(a, b) (((a) < (b)) ? (a) : (b))
57
-
58
- #if defined(_MSC_VER)
59
- #define ROL64(a, offset) _rotl64(a, offset)
60
- #elif defined(KeccakP1600_useSHLD)
61
- #define ROL64(x,N) ({ \
62
- register uint64_t __out; \
63
- register uint64_t __in = x; \
64
- __asm__ ("shld %2,%0,%0" : "=r"(__out) : "0"(__in), "i"(N)); \
65
- __out; \
66
- })
67
- #else
68
- #define ROL64(a, offset) ((((uint64_t)a) << (offset)) | (((uint64_t)a) >> (64-(offset))))
69
- #endif
70
-
71
- #if defined(NEED_INITIALIZE)
72
- #define mInitialize(argState) KeccakP1600_Initialize(argState)
73
- #define mInitializePl(argStates, Parallellism) KeccakP1600times##Parallellism##_InitializeAll(argStates)
74
- #else
75
- #define mInitialize(argState)
76
- #define mInitializePl(argStates, Parallellism)
77
- #endif
78
-
79
- #if defined(DEBUG_DUMP)
80
- static void DUMP( const unsigned char * pText, const unsigned char * pData, unsigned int size )
81
- {
82
- unsigned int i;
83
- printf("%s (%u bytes):", pText, size);
84
- for(i=0; i<size; i++)
85
- printf(" %02x", (int)pData[i]);
86
- printf("\n");
87
- }
88
-
89
- static void DUMP64( const unsigned char * pText, const unsigned char * pData, unsigned int size )
90
- {
91
- unsigned int i;
92
- size /=8;
93
- printf("%s (%u lanes):", pText, size);
94
- for(i=0; i<size; i++)
95
- printf(" %016lx", ((uint64_t*)pData)[i]);
96
- printf("\n");
97
- }
98
- #else
99
- #define DUMP(pText, pData, size )
100
- #define DUMP64(pText, pData, size )
101
- #endif
102
-
103
- #define ParallelCompressLoopFast( Parallellism ) \
104
- if ( messageByteLen >= Parallellism * SnP_widthInBytes ) { \
105
- size_t processed = KeccakP1600times##Parallellism##_KravatteCompress((uint64_t*)x, (uint64_t*)k, message, messageByteLen); \
106
- message += processed; \
107
- messageByteLen -= processed; \
108
- }
109
-
110
- #define ParallelExpandLoopFast( Parallellism ) \
111
- if ( outputByteLen >= Parallellism * SnP_widthInBytes ) { \
112
- size_t processed = KeccakP1600times##Parallellism##_KravatteExpand((uint64_t*)kv->yAccu.a, (uint64_t*)kv->kRoll.a, output, outputByteLen); \
113
- output += processed; \
114
- outputByteLen -= processed; \
115
- }
116
-
117
- #define ParallelCompressLoopPlSnP( Parallellism ) \
118
- if ( messageByteLen >= Parallellism * SnP_widthInBytes ) { \
119
- ALIGN(KeccakP1600times##Parallellism##_statesAlignment) unsigned char states[KeccakP1600times##Parallellism##_statesSizeInBytes]; \
120
- unsigned int i; \
121
- \
122
- KeccakP1600times##Parallellism##_StaticInitialize(); \
123
- mInitializePl(states, Parallellism); \
124
- do { \
125
- Kravatte_Rollc( (uint64_t*)k, encbuf, Parallellism ); \
126
- KeccakP1600times##Parallellism##_OverwriteLanesAll(states, k, Kravatte_RollcOffset/8, 0); \
127
- i = 0; \
128
- do { \
129
- KeccakP1600times##Parallellism##_OverwriteBytes(states, i, encbuf + i * Kravatte_RollcSizeInBytes, Kravatte_RollcOffset, Kravatte_RollcSizeInBytes); \
130
- } while ( ++i < Parallellism ); \
131
- KeccakP1600times##Parallellism##_AddLanesAll(states, message, widthInLanes, widthInLanes); \
132
- DUMP("msg pn", message, Parallellism * SnP_widthInBytes); \
133
- KeccakP1600times##Parallellism##_PermuteAll_6rounds(states); \
134
- i = 0; \
135
- do { \
136
- KeccakP1600times##Parallellism##_ExtractAndAddBytes(states, i, x, x, 0, SnP_widthInBytes); \
137
- DUMP("xAc pn", x, SnP_widthInBytes); \
138
- } while ( ++i < Parallellism ); \
139
- message += Parallellism * SnP_widthInBytes; \
140
- messageByteLen -= Parallellism * SnP_widthInBytes; \
141
- } while ( messageByteLen >= Parallellism * SnP_widthInBytes ); \
142
- }
143
-
144
- #define ParallelExpandLoopPlSnP( Parallellism ) \
145
- if ( outputByteLen >= Parallellism * SnP_widthInBytes ) { \
146
- ALIGN(KeccakP1600times##Parallellism##_statesAlignment) unsigned char states[KeccakP1600times##Parallellism##_statesSizeInBytes]; \
147
- unsigned int i; \
148
- \
149
- KeccakP1600times##Parallellism##_StaticInitialize(); \
150
- mInitializePl(states, Parallellism); \
151
- do { \
152
- Kravatte_Rolle( (uint64_t*)kv->yAccu.a, encbuf, Parallellism ); \
153
- KeccakP1600times##Parallellism##_OverwriteLanesAll(states, kv->yAccu.a, Kravatte_RolleOffset/8, 0); \
154
- i = 0; \
155
- do { \
156
- KeccakP1600times##Parallellism##_OverwriteBytes(states, i, encbuf + i * Kravatte_RolleSizeInBytes, Kravatte_RolleOffset, Kravatte_RolleSizeInBytes); \
157
- } while ( ++i < Parallellism ); \
158
- KeccakP1600times##Parallellism##_PermuteAll_6rounds(states); \
159
- i = 0; \
160
- do { \
161
- KeccakP1600times##Parallellism##_ExtractAndAddBytes(states, i, kv->kRoll.a, output, 0, SnP_widthInBytes); \
162
- DUMP("out n", output, SnP_widthInBytes); \
163
- output += SnP_widthInBytes; \
164
- } while ( ++i < Parallellism ); \
165
- outputByteLen -= Parallellism * SnP_widthInBytes; \
166
- } while ( outputByteLen >= Parallellism * SnP_widthInBytes ); \
167
- }
168
-
169
- static void Kravatte_Rollc( uint64_t *x, unsigned char *encbuf, unsigned int parallellism )
170
- {
171
- uint64_t x0 = x[20];
172
- uint64_t x1 = x[21];
173
- uint64_t x2 = x[22];
174
- uint64_t x3 = x[23];
175
- uint64_t x4 = x[24];
176
- uint64_t t;
177
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
178
- uint64_t *pEnc = (uint64_t*)encbuf;
179
- #endif
180
-
181
- do {
182
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
183
- *(pEnc++) = x0;
184
- *(pEnc++) = x1;
185
- *(pEnc++) = x2;
186
- *(pEnc++) = x3;
187
- *(pEnc++) = x4;
188
- DUMP("Rollc", pEnc - Kravatte_RollcSizeInBytes/8, Kravatte_RollcSizeInBytes);
189
- #else
190
- #error todo
191
- #endif
192
-
193
- t = x0;
194
- x0 = x1;
195
- x1 = x2;
196
- x2 = x3;
197
- x3 = x4;
198
- x4 = ROL64(t, 7) ^ x0 ^ (x0 >> 3);
199
- } while(--parallellism != 0);
200
-
201
- x[20] = x0;
202
- x[21] = x1;
203
- x[22] = x2;
204
- x[23] = x3;
205
- x[24] = x4;
206
- DUMP("Rollc state", pEnc - Kravatte_RollcSizeInBytes/8, Kravatte_RollcSizeInBytes);
207
-
208
- }
209
-
210
- static void Kravatte_Rolle( uint64_t *x, unsigned char *encbuf, unsigned int parallellism )
211
- {
212
- uint64_t x0 = x[15];
213
- uint64_t x1 = x[16];
214
- uint64_t x2 = x[17];
215
- uint64_t x3 = x[18];
216
- uint64_t x4 = x[19];
217
- uint64_t x5 = x[20];
218
- uint64_t x6 = x[21];
219
- uint64_t x7 = x[22];
220
- uint64_t x8 = x[23];
221
- uint64_t x9 = x[24];
222
- uint64_t t;
223
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
224
- uint64_t *pEnc = (uint64_t*)encbuf;
225
- #endif
226
-
227
- do {
228
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
229
- *(pEnc++) = x0;
230
- *(pEnc++) = x1;
231
- *(pEnc++) = x2;
232
- *(pEnc++) = x3;
233
- *(pEnc++) = x4;
234
- *(pEnc++) = x5;
235
- *(pEnc++) = x6;
236
- *(pEnc++) = x7;
237
- *(pEnc++) = x8;
238
- *(pEnc++) = x9;
239
- DUMP("Rolle", pEnc - Kravatte_RolleSizeInBytes/8, Kravatte_RolleSizeInBytes);
240
- #else
241
- #error todo
242
- #endif
243
-
244
- t = x0;
245
- x0 = x1;
246
- x1 = x2;
247
- x2 = x3;
248
- x3 = x4;
249
- x4 = x5;
250
- x5 = x6;
251
- x6 = x7;
252
- x7 = x8;
253
- x8 = x9;
254
- x9 = ROL64(t, 7) ^ ROL64(x0, 18) ^ (x1 & (x0 >> 1));
255
- } while(--parallellism != 0);
256
-
257
- x[15] = x0;
258
- x[16] = x1;
259
- x[17] = x2;
260
- x[18] = x3;
261
- x[19] = x4;
262
- x[20] = x5;
263
- x[21] = x6;
264
- x[22] = x7;
265
- x[23] = x8;
266
- x[24] = x9;
267
- DUMP("Rolle state", pEnc - Kravatte_RolleSizeInBytes/8, Kravatte_RolleSizeInBytes);
268
-
269
- }
270
-
271
- static const unsigned char * Kra_Compress( unsigned char *k, unsigned char *x, const BitSequence *message, BitLength *messageBitLen, int lastFlag )
272
- {
273
- unsigned char encbuf[MaxParallellism*Kravatte_RollcSizeInBytes];
274
- size_t messageByteLen = *messageBitLen / 8; /* do not include partial last byte */
275
-
276
- #if defined(KeccakP1600times8_implementation) && !defined(KeccakP1600times8_isFallback)
277
- #if defined(KeccakF1600times8_FastKravatte_supported)
278
- ParallelCompressLoopFast( 8 )
279
- #else
280
- ParallelCompressLoopPlSnP( 8 )
281
- #endif
282
- #endif
283
- #if defined(KeccakP1600times4_implementation) && !defined(KeccakP1600times4_isFallback)
284
- #if defined(KeccakF1600times4_FastKravatte_supported)
285
- ParallelCompressLoopFast( 4 )
286
- #else
287
- ParallelCompressLoopPlSnP( 4 )
288
- #endif
289
- #endif
290
- #if defined(KeccakP1600times2_implementation) && !defined(KeccakP1600times2_isFallback)
291
- #if defined(KeccakF1600times2_FastKravatte_supported)
292
- ParallelCompressLoopFast( 2 )
293
- #else
294
- ParallelCompressLoopPlSnP( 2 )
295
- #endif
296
- #endif
297
-
298
- if (messageByteLen >= SnP_widthInBytes) {
299
- ALIGN(KeccakP1600_stateAlignment) unsigned char state[KeccakP1600_stateSizeInBytes];
300
-
301
- KeccakP1600_StaticInitialize();
302
- mInitialize(state);
303
- do {
304
- KeccakP1600_OverwriteBytes(state, k, 0, SnP_widthInBytes);
305
- Kravatte_Rollc((uint64_t*)k, encbuf, 1);
306
- KeccakP1600_AddBytes(state, message, 0, SnP_widthInBytes);
307
- DUMP("msg p1", message, SnP_widthInBytes);
308
- KeccakP1600_Permute_Nrounds(state, 6);
309
- KeccakP1600_ExtractAndAddBytes(state, x, x, 0, SnP_widthInBytes);
310
- DUMP("xAc p1", x, SnP_widthInBytes);
311
- message += SnP_widthInBytes;
312
- messageByteLen -= SnP_widthInBytes;
313
- } while ( messageByteLen >= SnP_widthInBytes );
314
- }
315
- *messageBitLen %= SnP_width;
316
- if ( lastFlag != 0 ) {
317
- ALIGN(KeccakP1600_stateAlignment) unsigned char state[KeccakP1600_stateSizeInBytes];
318
-
319
- #if DEBUG
320
- assert(messageByteLen < SnP_widthInBytes);
321
- #endif
322
- KeccakP1600_StaticInitialize();
323
- mInitialize(state);
324
- KeccakP1600_OverwriteBytes(state, k, 0, SnP_widthInBytes); /* write k */
325
- Kravatte_Rollc((uint64_t*)k, encbuf, 1);
326
- KeccakP1600_AddBytes(state, message, 0, (unsigned int)messageByteLen); /* add message */
327
- DUMP("msg pL", state, SnP_widthInBytes);
328
- message += messageByteLen;
329
- *messageBitLen %= 8;
330
- if (*messageBitLen != 0) /* padding */
331
- KeccakP1600_AddByte(state, *message++ | (1 << *messageBitLen), (unsigned int)messageByteLen);
332
- else
333
- KeccakP1600_AddByte(state, 1, (unsigned int)messageByteLen);
334
- KeccakP1600_Permute_Nrounds(state, 6);
335
- KeccakP1600_ExtractAndAddBytes(state, x, x, 0, SnP_widthInBytes);
336
- DUMP("xAc pL", x, SnP_widthInBytes);
337
- Kravatte_Rollc((uint64_t*)k, encbuf, 1);
338
- *messageBitLen = 0;
339
- }
340
- return message;
341
- }
342
-
343
- int Kravatte_MaskDerivation(Kravatte_Instance *kv, const BitSequence *Key, BitLength KeyBitLen)
344
- {
345
- ALIGN(KeccakP1600_stateAlignment) unsigned char state[KeccakP1600_stateSizeInBytes];
346
- BitSequence lastByte;
347
- unsigned int numberOfBits;
348
-
349
- /* Check max K length (b-1) */
350
- if (KeyBitLen >= SnP_width)
351
- return 1;
352
- /* Compute k from K */
353
- memset(kv->k.a, 0, SnP_widthInBytes);
354
- memcpy(kv->k.a, Key, KeyBitLen/8);
355
- numberOfBits = KeyBitLen & 7;
356
- if ((numberOfBits) != 0) {
357
- lastByte = (Key[KeyBitLen/8] & ((1 << numberOfBits) - 1)) | (1 << numberOfBits);
358
- }
359
- else {
360
- lastByte = 1;
361
- }
362
- kv->k.a[KeyBitLen/8] = lastByte;
363
- KeccakP1600_StaticInitialize();
364
- mInitialize(state);
365
- KeccakP1600_OverwriteBytes(state, kv->k.a, 0, SnP_widthInBytes);
366
- KeccakP1600_Permute_Nrounds(state, 6);
367
- KeccakP1600_ExtractBytes(state, kv->k.a, 0, SnP_widthInBytes);
368
- memcpy( kv->kRoll.a, kv->k.a, SnP_widthInBytes );
369
- memset( kv->xAccu.a, 0, SnP_widthInBytes );
370
- kv->phase = COMPRESSING;
371
- kv->queueOffset = 0;
372
-
373
- return 0;
374
- }
375
-
376
- int Kra(Kravatte_Instance *kv, const BitSequence *input, BitLength inputBitLen, int flags)
377
- {
378
- int finalFlag = flags & KRAVATTE_FLAG_LAST_PART;
379
-
380
- if ((finalFlag == 0) && ((inputBitLen & 7) != 0))
381
- return 1;
382
- if ( (flags & KRAVATTE_FLAG_INIT) != 0 ) {
383
- memcpy(kv->kRoll.a, kv->k.a, SnP_widthInBytes);
384
- memset(kv->xAccu.a, 0, SnP_widthInBytes);
385
- kv->queueOffset = 0;
386
- }
387
- if (kv->phase != COMPRESSING) {
388
- kv->phase = COMPRESSING;
389
- kv->queueOffset = 0;
390
- }
391
- else if ( kv->queueOffset != 0 ) { /* we have already some data queued */
392
- unsigned int bitlen = (unsigned int)MyMin(inputBitLen, SnP_width - kv->queueOffset);
393
- unsigned int bytelen = (bitlen + 7) / 8;
394
-
395
- memcpy(kv->queue.a + kv->queueOffset / 8, input, bytelen);
396
- input += bytelen;
397
- inputBitLen -= bitlen;
398
- kv->queueOffset += bitlen;
399
- if ( kv->queueOffset == SnP_width ) { /* queue full */
400
- Kra_Compress(kv->kRoll.a, kv->xAccu.a, kv->queue.a, &kv->queueOffset, 0);
401
- kv->queueOffset = 0;
402
- }
403
- else if ( finalFlag != 0 ) {
404
- Kra_Compress(kv->kRoll.a, kv->xAccu.a, kv->queue.a, &kv->queueOffset, 1);
405
- return 0;
406
- }
407
- }
408
- if ( (inputBitLen >= SnP_width) || (finalFlag != 0) ) { /* Compress blocks */
409
- input = Kra_Compress(kv->kRoll.a, kv->xAccu.a, input, &inputBitLen, finalFlag);
410
- }
411
- if ( inputBitLen != 0 ) { /* Queue eventual residual message bytes */
412
- #if DEBUG
413
- assert( inputBitLen < SnP_width );
414
- assert( finalFlag == 0 );
415
- #endif
416
- memcpy(kv->queue.a, input, inputBitLen/8);
417
- kv->queueOffset = inputBitLen;
418
- }
419
- return 0;
420
- }
421
-
422
- int Vatte(Kravatte_Instance *kv, BitSequence *output, BitLength outputBitLen, int flags)
423
- {
424
- size_t outputByteLen;
425
- unsigned char encbuf[MaxParallellism*Kravatte_RolleSizeInBytes];
426
- int finalFlag = flags & KRAVATTE_FLAG_LAST_PART;
427
-
428
- if ((finalFlag == 0) && ((outputBitLen & 7) != 0))
429
- return 1;
430
- if ( kv->phase == COMPRESSING) {
431
- if ( kv->queueOffset != 0 )
432
- return 1;
433
- if ((flags & KRAVATTE_FLAG_SHORT) != 0) {
434
- memcpy(kv->yAccu.a, kv->xAccu.a, SnP_widthInBytes);
435
- }
436
- else {
437
- ALIGN(KeccakP1600_stateAlignment) unsigned char state[KeccakP1600_stateSizeInBytes];
438
-
439
- KeccakP1600_StaticInitialize();
440
- mInitialize(state);
441
- KeccakP1600_OverwriteBytes(state, kv->xAccu.a, 0, SnP_widthInBytes);
442
- KeccakP1600_Permute_Nrounds(state, 6);
443
- KeccakP1600_ExtractBytes(state, kv->yAccu.a, 0, SnP_widthInBytes);
444
- }
445
- kv->phase = EXPANDING;
446
- DUMP("yAccu", kv->yAccu.a, SnP_widthInBytes);
447
- DUMP("key ", kv->k.a, SnP_widthInBytes);
448
- }
449
- else if (kv->phase != EXPANDING)
450
- return 1;
451
- if ( kv->queueOffset != 0 ) { /* we have already some data for output in stock */
452
- unsigned int bitlen = (unsigned int)MyMin(outputBitLen, SnP_widthInBytes*8 - kv->queueOffset);
453
- unsigned int bytelen = (bitlen + 7) / 8;
454
-
455
- memcpy(output, kv->queue.a + kv->queueOffset / 8, bytelen);
456
- kv->queueOffset += bitlen;
457
- if (kv->queueOffset == SnP_widthInBytes*8)
458
- kv->queueOffset = 0;
459
- output += bytelen;
460
- outputBitLen -= bitlen;
461
- if ((finalFlag != 0) && (outputBitLen == 0)) {
462
- bitlen &= 7;
463
- if (bitlen != 0) /* cleanup last incomplete byte */
464
- *(output - 1) &= (1 << bitlen) - 1;
465
- kv->phase = EXPANDED;
466
- return 0;
467
- }
468
- }
469
-
470
- outputByteLen = (outputBitLen + 7) / 8;
471
- #if defined(KeccakP1600times8_implementation) && !defined(KeccakP1600times8_isFallback)
472
- #if defined(KeccakF1600times8_FastKravatte_supported)
473
- ParallelExpandLoopFast( 8 )
474
- #else
475
- ParallelExpandLoopPlSnP( 8 )
476
- #endif
477
- #endif
478
- #if defined(KeccakP1600times4_implementation) && !defined(KeccakP1600times4_isFallback)
479
- #if defined(KeccakF1600times4_FastKravatte_supported)
480
- ParallelExpandLoopFast( 4 )
481
- #else
482
- ParallelExpandLoopPlSnP( 4 )
483
- #endif
484
- #endif
485
- #if defined(KeccakP1600times2_implementation) && !defined(KeccakP1600times2_isFallback)
486
- #if defined(KeccakF1600times2_FastKravatte_supported)
487
- ParallelExpandLoopFast( 2 )
488
- #else
489
- ParallelExpandLoopPlSnP( 2 )
490
- #endif
491
- #endif
492
- if ( outputByteLen != 0 ) {
493
- ALIGN(KeccakP1600_stateAlignment) unsigned char state[KeccakP1600_stateSizeInBytes];
494
- unsigned int len;
495
-
496
- KeccakP1600_StaticInitialize();
497
- mInitialize(state);
498
- do {
499
- len = (unsigned int)MyMin(outputByteLen, SnP_widthInBytes);
500
- KeccakP1600_OverwriteBytes(state, kv->yAccu.a, 0, SnP_widthInBytes);
501
- Kravatte_Rolle((uint64_t*)kv->yAccu.a, encbuf, 1);
502
- KeccakP1600_Permute_Nrounds(state, 6);
503
- KeccakP1600_ExtractAndAddBytes(state, kv->kRoll.a, output, 0, len);
504
- DUMP("out 1", output, len);
505
- output += len;
506
- outputByteLen -= len;
507
- } while ( outputByteLen != 0 );
508
- if (!finalFlag && (len != SnP_widthInBytes)) { /* Put rest of expanded data into queue */
509
- unsigned int offset = len;
510
- len = SnP_widthInBytes - len;
511
- KeccakP1600_ExtractAndAddBytes(state, kv->kRoll.a + offset, kv->queue.a + offset, offset, len);
512
- kv->queueOffset = offset * 8; /* current bit offset in queue buffer */
513
- }
514
- }
515
- if (finalFlag != 0) {
516
- outputBitLen &= 7;
517
- if (outputBitLen != 0) { /* cleanup last incomplete byte */
518
- *(output - 1) &= (1 << outputBitLen) - 1;
519
- DUMP("out L", output - 1, 1);
520
- }
521
- kv->phase = EXPANDED;
522
- }
523
- return 0;
524
- }
525
-
526
- int Kravatte(Kravatte_Instance *kv, const BitSequence *input, BitLength inputBitLen, BitSequence *output, BitLength outputBitLen, int flags)
527
- {
528
-
529
- flags |= KRAVATTE_FLAG_LAST_PART;
530
- if ( Kra(kv, input, inputBitLen, flags) != 0 )
531
- return 1;
532
- return Vatte(kv, output, outputBitLen, flags);
533
- }
@@ -1,115 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- Kravatte, designed by Guido Bertoni, Joan Daemen, Seth Hoffert, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
6
-
7
- Implementation by Ronny Van Keer, hereby denoted as "the implementer".
8
-
9
- For more information, feedback or questions, please refer to the Keccak Team website:
10
- https://keccak.team/
11
-
12
- To the extent possible under law, the implementer has waived all copyright
13
- and related or neighboring rights to the source code in this file.
14
- http://creativecommons.org/publicdomain/zero/1.0/
15
- */
16
-
17
- #ifndef _Kravatte_h_
18
- #define _Kravatte_h_
19
-
20
- #include "config.h"
21
- #ifdef XKCP_has_KeccakP1600
22
-
23
- #include <stddef.h>
24
- #include <stdint.h>
25
- #include "align.h"
26
- #include "KeccakP-1600-SnP.h"
27
-
28
-
29
- #define SnP_widthInBytes 200
30
- #define Kravatte_RollcSizeInBytes (5*8)
31
- #define Kravatte_RollcOffset (SnP_widthInBytes-Kravatte_RollcSizeInBytes)
32
- #define Kravatte_RolleSizeInBytes (10*8)
33
- #define Kravatte_RolleOffset (SnP_widthInBytes-Kravatte_RolleSizeInBytes)
34
-
35
- #define KRAVATTE_FLAG_NONE 0
36
- #define KRAVATTE_FLAG_INIT 1 /* If set, initialize a new Kra session */
37
- #define KRAVATTE_FLAG_LAST_PART 2 /* If set, indicates the last part of input/output */
38
- #define KRAVATTE_FLAG_SHORT 4 /* If set, indicates Short-Kravatte will be performed */
39
-
40
- #define KRAVATTE_ALIGNMENT KeccakP1600_stateAlignment
41
-
42
- typedef unsigned char BitSequence;
43
- typedef size_t BitLength;
44
-
45
- typedef enum
46
- {
47
- NOT_INITIALIZED_YET,
48
- COMPRESSING,
49
- EXPANDING,
50
- EXPANDED,
51
- } Kravatte_Phases;
52
-
53
- ALIGN(KRAVATTE_ALIGNMENT) typedef struct
54
- {
55
- unsigned char a[SnP_widthInBytes];
56
- } Kravatte_AlignedArray;
57
-
58
- typedef struct {
59
- Kravatte_AlignedArray k;
60
- Kravatte_AlignedArray kRoll;
61
- Kravatte_AlignedArray xAccu;
62
- Kravatte_AlignedArray yAccu;
63
- Kravatte_AlignedArray queue; /* input/output queue buffer */
64
- BitLength queueOffset; /* current offset in queue */
65
- Kravatte_Phases phase;
66
- } Kravatte_Instance;
67
-
68
- /**
69
- * Function to initialize a Kravatte instance with given key.
70
- * @param kvInstance Pointer to the instance to be initialized.
71
- * @param Key Pointer to the key (K).
72
- * @param KeyBitLen The length of the key in bits.
73
- * @return 0 if successful, 1 otherwise.
74
- */
75
- int Kravatte_MaskDerivation(Kravatte_Instance *kvInstance, const BitSequence *Key, BitLength KeyBitLen);
76
-
77
- /**
78
- * Function to give input data to be compressed.
79
- * @param kvInstance Pointer to the instance initialized by Kravatte_MaskDerivation().
80
- * @param input Pointer to the input message data (M).
81
- * @param inputBitLen The number of bits provided in the input message data.
82
- * This must be a multiple of 8 if KRAVATTE_FLAG_LAST_PART flag not set.
83
- * @param flags Bitwise or combination of KRAVATTE_FLAG_NONE, KRAVATTE_FLAG_INIT, KRAVATTE_FLAG_LAST_PART.
84
- * @return 0 if successful, 1 otherwise.
85
- */
86
- int Kra(Kravatte_Instance *kvInstance, const BitSequence *input, BitLength inputBitLen, int flags);
87
-
88
- /**
89
- * Function to expand output data.
90
- * @param kvInstance Pointer to the hash instance initialized by Kravatte_MaskDerivation().
91
- * @param output Pointer to the buffer where to store the output data.
92
- * @param outputBitLen The number of output bits desired.
93
- * This must be a multiple of 8 if KRAVATTE_FLAG_LAST_PART flag not set.
94
- * @param flags Bitwise or combination of KRAVATTE_FLAG_NONE, KRAVATTE_FLAG_SHORT, KRAVATTE_FLAG_LAST_PART.
95
- * @return 0 if successful, 1 otherwise.
96
- */
97
- int Vatte(Kravatte_Instance *kvInstance, BitSequence *output, BitLength outputBitLen, int flags);
98
-
99
- /** Function to compress input data and expand output data.
100
- * @param kvInstance Pointer to the instance initialized by Kravatte_MaskDerivation().
101
- * @param input Pointer to the input message (M).
102
- * @param inputBitLen The number of bits provided in the input message data.
103
- * @param output Pointer to the output buffer.
104
- * @param outputBitLen The number of output bits desired.
105
- * @param flags Bitwise or combination of KRAVATTE_FLAG_NONE, KRAVATTE_FLAG_INIT, KRAVATTE_FLAG_SHORT, KRAVATTE_FLAG_LAST_PART.
106
- * KRAVATTE_FLAG_LAST_PART is internally forced to true for input and output.
107
- * @return 0 if successful, 1 otherwise.
108
- */
109
- int Kravatte(Kravatte_Instance *kvInstance, const BitSequence *input, BitLength inputBitLen, BitSequence *output, BitLength outputBitLen, int flags);
110
-
111
- #else
112
- #error This requires an implementation of Keccak-p[1600]
113
- #endif
114
-
115
- #endif