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,399 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- The Xoodoo permutation, designed by Joan Daemen, Seth Hoffert, 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
- #include <stdio.h>
18
- #include <string.h>
19
- #include "Xoodoo.h"
20
-
21
- #define VERBOSE 0
22
-
23
- #if (VERBOSE > 0)
24
- #define Dump(__t) printf(__t "\n"); \
25
- printf("a00 %08x, a01 %08x, a02 %08x, a03 %08x\n", a00, a01, a02, a03 ); \
26
- printf("a10 %08x, a11 %08x, a12 %08x, a13 %08x\n", a10, a11, a12, a13 ); \
27
- printf("a20 %08x, a21 %08x, a22 %08x, a23 %08x\n\n", a20, a21, a22, a23 );
28
- #else
29
- #define Dump(__t)
30
- #endif
31
-
32
- #if (VERBOSE >= 1)
33
- #define Dump1(__t) Dump(__t)
34
- #else
35
- #define Dump1(__t)
36
- #endif
37
-
38
- #if (VERBOSE >= 2)
39
- #define Dump2(__t) Dump(__t)
40
- #else
41
- #define Dump2(__t)
42
- #endif
43
-
44
- #if (VERBOSE >= 3)
45
- #define Dump3(__t) Dump(__t)
46
- #else
47
- #define Dump3(__t)
48
- #endif
49
-
50
- /* ---------------------------------------------------------------- */
51
-
52
- void Xoodoo_Initialize(void *state)
53
- {
54
- memset(state, 0, NLANES*sizeof(tXoodooLane));
55
- }
56
-
57
- /* ---------------------------------------------------------------- */
58
-
59
- void Xoodoo_AddBytes(void *argState, const unsigned char *argdata, unsigned int offset, unsigned int length)
60
- {
61
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
62
- if (length == (3*4*4)) {
63
- uint32_t *state = (uint32_t *)argState;
64
- uint32_t *data = (uint32_t *)argdata;
65
- state[0] ^= data[0];
66
- state[1] ^= data[1];
67
- state[2] ^= data[2];
68
- state[3] ^= data[3];
69
- state[4] ^= data[4];
70
- state[5] ^= data[5];
71
- state[6] ^= data[6];
72
- state[7] ^= data[7];
73
- state[8] ^= data[8];
74
- state[9] ^= data[9];
75
- state[10] ^= data[10];
76
- state[11] ^= data[11];
77
- }
78
- else {
79
- unsigned int sizeLeft = length;
80
- unsigned int lanePosition = offset/4;
81
- unsigned int offsetInLane = offset%4;
82
- const unsigned char *curData = argdata;
83
- uint32_t *state = (uint32_t*)argState;
84
-
85
- state += lanePosition;
86
- if ((sizeLeft > 0) && (offsetInLane != 0)) {
87
- unsigned int bytesInLane = 4 - offsetInLane;
88
- uint32_t lane = 0;
89
- if (bytesInLane > sizeLeft)
90
- bytesInLane = sizeLeft;
91
- memcpy((unsigned char*)&lane + offsetInLane, curData, bytesInLane);
92
- *state++ ^= lane;
93
- sizeLeft -= bytesInLane;
94
- curData += bytesInLane;
95
- }
96
-
97
- while(sizeLeft >= 4) {
98
- *state++ ^= READ32_UNALIGNED( curData );
99
- sizeLeft -= 4;
100
- curData += 4;
101
- }
102
-
103
- if (sizeLeft > 0) {
104
- uint32_t lane = 0;
105
- memcpy(&lane, curData, sizeLeft);
106
- *state ^= lane;
107
- }
108
- }
109
- #else
110
- #error "Not yet implemented"
111
- #endif
112
- }
113
-
114
- /* ---------------------------------------------------------------- */
115
-
116
- void Xoodoo_OverwriteBytes(void *argstate, const unsigned char *argdata, unsigned int offset, unsigned int length)
117
- {
118
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
119
- if (length == (3*4*4)) {
120
- uint32_t *state = (uint32_t *)argstate;
121
- uint32_t *data = (uint32_t *)argdata;
122
- state[0] = data[0];
123
- state[1] = data[1];
124
- state[2] = data[2];
125
- state[3] = data[3];
126
- state[4] = data[4];
127
- state[5] = data[5];
128
- state[6] = data[6];
129
- state[7] = data[7];
130
- state[8] = data[8];
131
- state[9] = data[9];
132
- state[10] = data[10];
133
- state[11] = data[11];
134
- }
135
- else
136
- memcpy((unsigned char*)argstate+offset, argdata, length);
137
- #else
138
- #error "Not yet implemented"
139
- #endif
140
- }
141
-
142
- /* ---------------------------------------------------------------- */
143
-
144
- void Xoodoo_OverwriteWithZeroes(void *argstate, unsigned int byteCount)
145
- {
146
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
147
- memset(argstate, 0, byteCount);
148
- #else
149
- #error "Not yet implemented"
150
- #endif
151
- }
152
-
153
- /* ---------------------------------------------------------------- */
154
-
155
- void Xoodoo_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length)
156
- {
157
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
158
- memcpy(data, (unsigned char*)state+offset, length);
159
- #else
160
- #error "Not yet implemented"
161
- #endif
162
- }
163
-
164
- /* ---------------------------------------------------------------- */
165
-
166
- void Xoodoo_ExtractAndAddBytes(const void *argState, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
167
- {
168
- #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
169
- if (length == (3*4*4)) {
170
- uint32_t *state = (uint32_t *)argState;
171
- const uint32_t *ii = (const uint32_t *)input;
172
- uint32_t *oo = (uint32_t *)output;
173
-
174
- oo[0] = state[0] ^ ii[0];
175
- oo[1] = state[1] ^ ii[1];
176
- oo[2] = state[2] ^ ii[2];
177
- oo[3] = state[3] ^ ii[3];
178
- oo[4] = state[4] ^ ii[4];
179
- oo[5] = state[5] ^ ii[5];
180
- oo[6] = state[6] ^ ii[6];
181
- oo[7] = state[7] ^ ii[7];
182
- oo[8] = state[8] ^ ii[8];
183
- oo[9] = state[9] ^ ii[9];
184
- oo[10] = state[10] ^ ii[10];
185
- oo[11] = state[11] ^ ii[11];
186
- }
187
- else {
188
- unsigned int sizeLeft = length;
189
- unsigned int lanePosition = offset/4;
190
- unsigned int offsetInLane = offset%4;
191
- const unsigned char *curInput = input;
192
- unsigned char *curOutput = output;
193
- const uint32_t *state = (const uint32_t*)argState;
194
-
195
- state += lanePosition;
196
- if ((sizeLeft > 0) && (offsetInLane != 0)) {
197
- unsigned int bytesInLane = 4 - offsetInLane;
198
- uint32_t lane = *state++ >> (offsetInLane * 8);
199
- if (bytesInLane > sizeLeft)
200
- bytesInLane = sizeLeft;
201
- sizeLeft -= bytesInLane;
202
- do {
203
- *curOutput++ = (*curInput++) ^ (unsigned char)lane;
204
- lane >>= 8;
205
- }
206
- while ( --bytesInLane != 0);
207
- }
208
-
209
- while(sizeLeft >= 4) {
210
- WRITE32_UNALIGNED( curOutput, READ32_UNALIGNED( curInput ) ^ *state++ );
211
- sizeLeft -= 4;
212
- curInput += 4;
213
- curOutput += 4;
214
- }
215
-
216
- if (sizeLeft > 0) {
217
- uint32_t lane = *state;
218
- do {
219
- *curOutput++ = (*curInput++) ^ (unsigned char)lane;
220
- lane >>= 8;
221
- }
222
- while ( --sizeLeft != 0 );
223
- }
224
- }
225
- #else
226
- #error "Not yet implemented"
227
- #endif
228
- }
229
-
230
- /* ---------------------------------------------------------------- */
231
-
232
- #define DeclareVars uint32_t a00, a01, a02, a03; \
233
- uint32_t a10, a11, a12, a13; \
234
- uint32_t a20, a21, a22, a23; \
235
- uint32_t v1, v2
236
-
237
- #define State2Vars a00 = state[0+0], a01 = state[0+1], a02 = state[0+2], a03 = state[0+3]; \
238
- a10 = state[4+0], a11 = state[4+1], a12 = state[4+2], a13 = state[4+3]; \
239
- a20 = state[8+0], a21 = state[8+1], a22 = state[8+2], a23 = state[8+3]
240
-
241
- #define Vars2State state[0+0] = a00, state[0+1] = a01, state[0+2] = a02, state[0+3] = a03; \
242
- state[4+0] = a10, state[4+1] = a11, state[4+2] = a12, state[4+3] = a13; \
243
- state[8+0] = a20, state[8+1] = a21, state[8+2] = a22, state[8+3] = a23
244
-
245
- /*
246
- ** Theta: Column Parity Mixer
247
- */
248
- #define Theta() \
249
- v1 = a03 ^ a13 ^ a23; \
250
- v2 = a00 ^ a10 ^ a20; \
251
- v1 = ROTL32(v1, 5) ^ ROTL32(v1, 14); \
252
- a00 ^= v1; \
253
- a10 ^= v1; \
254
- a20 ^= v1; \
255
- v1 = a01 ^ a11 ^ a21; \
256
- v2 = ROTL32(v2, 5) ^ ROTL32(v2, 14); \
257
- a01 ^= v2; \
258
- a11 ^= v2; \
259
- a21 ^= v2; \
260
- v2 = a02 ^ a12 ^ a22; \
261
- v1 = ROTL32(v1, 5) ^ ROTL32(v1, 14); \
262
- a02 ^= v1; \
263
- a12 ^= v1; \
264
- a22 ^= v1; \
265
- v2 = ROTL32(v2, 5) ^ ROTL32(v2, 14); \
266
- a03 ^= v2; \
267
- a13 ^= v2; \
268
- a23 ^= v2
269
-
270
- /*
271
- ** Rho-west: Plane shift
272
- */
273
- #define Rho_west() \
274
- a20 = ROTL32(a20, 11); \
275
- a21 = ROTL32(a21, 11); \
276
- a22 = ROTL32(a22, 11); \
277
- a23 = ROTL32(a23, 11); \
278
- v1 = a13; \
279
- a13 = a12; \
280
- a12 = a11; \
281
- a11 = a10; \
282
- a10 = v1
283
-
284
- /*
285
- ** Iota: Round constants
286
- */
287
- #define Iota(__rc) a00 ^= __rc
288
-
289
- /*
290
- ** Chi: Non linear step, on colums
291
- */
292
- #define Chi() \
293
- a00 ^= ~a10 & a20; \
294
- a10 ^= ~a20 & a00; \
295
- a20 ^= ~a00 & a10; \
296
- \
297
- a01 ^= ~a11 & a21; \
298
- a11 ^= ~a21 & a01; \
299
- a21 ^= ~a01 & a11; \
300
- \
301
- a02 ^= ~a12 & a22; \
302
- a12 ^= ~a22 & a02; \
303
- a22 ^= ~a02 & a12; \
304
- \
305
- a03 ^= ~a13 & a23; \
306
- a13 ^= ~a23 & a03; \
307
- a23 ^= ~a03 & a13
308
-
309
- /*
310
- ** Rho-east: Plane shift
311
- */
312
- #define Rho_east() \
313
- a10 = ROTL32(a10, 1); \
314
- a11 = ROTL32(a11, 1); \
315
- a12 = ROTL32(a12, 1); \
316
- a13 = ROTL32(a13, 1); \
317
- v1 = ROTL32(a23, 8); \
318
- a23 = ROTL32(a21, 8); \
319
- a21 = v1; \
320
- v1 = ROTL32(a22, 8); \
321
- a22 = ROTL32(a20, 8); \
322
- a20 = v1
323
-
324
- #define Round(__rc) \
325
- Theta(); \
326
- Dump3("Theta"); \
327
- Rho_west(); \
328
- Dump3("Rho-west"); \
329
- Iota(__rc); \
330
- Dump3("Iota"); \
331
- Chi(); \
332
- Dump3("Chi"); \
333
- Rho_east(); \
334
- Dump3("Rho-east")
335
-
336
- static const uint32_t RC[MAXROUNDS] = {
337
- _rc12,
338
- _rc11,
339
- _rc10,
340
- _rc9,
341
- _rc8,
342
- _rc7,
343
- _rc6,
344
- _rc5,
345
- _rc4,
346
- _rc3,
347
- _rc2,
348
- _rc1
349
- };
350
-
351
- void Xoodoo_Permute_Nrounds( uint32_t * state, uint32_t nr )
352
- {
353
- DeclareVars;
354
- uint32_t i;
355
-
356
- State2Vars;
357
- for (i = MAXROUNDS - nr; i < MAXROUNDS; ++i ) {
358
- Round(RC[i]);
359
- Dump2("Round");
360
- }
361
- Dump1("Permutation");
362
- Vars2State;
363
- }
364
-
365
- void Xoodoo_Permute_6rounds( uint32_t * state)
366
- {
367
- DeclareVars;
368
-
369
- State2Vars;
370
- Round(_rc6);
371
- Round(_rc5);
372
- Round(_rc4);
373
- Round(_rc3);
374
- Round(_rc2);
375
- Round(_rc1);
376
- Dump1("Permutation");
377
- Vars2State;
378
- }
379
-
380
- void Xoodoo_Permute_12rounds( uint32_t * state)
381
- {
382
- DeclareVars;
383
-
384
- State2Vars;
385
- Round(_rc12);
386
- Round(_rc11);
387
- Round(_rc10);
388
- Round(_rc9);
389
- Round(_rc8);
390
- Round(_rc7);
391
- Round(_rc6);
392
- Round(_rc5);
393
- Round(_rc4);
394
- Round(_rc3);
395
- Round(_rc2);
396
- Round(_rc1);
397
- Dump1("Permutation");
398
- Vars2State;
399
- }
@@ -1,127 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- The Xoodoo permutation, designed by Joan Daemen, Seth Hoffert, 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
- #include <stdint.h>
18
- #include <string.h>
19
- #include <stdlib.h>
20
- #include "Xoodoo-SnP.h"
21
- #include "Xoodyak-parameters.h"
22
-
23
- #ifdef OUTPUT
24
- #include <stdio.h>
25
- #endif
26
-
27
- #define SnP_AddByte Xoodoo_AddByte
28
- #define SnP_AddBytes Xoodoo_AddBytes
29
- #define SnP_ExtractBytes Xoodoo_ExtractBytes
30
- #define SnP_ExtractAndAddBytes Xoodoo_ExtractAndAddBytes
31
- #define SnP_Permute Xoodoo_Permute_12rounds
32
- #define SnP_OverwriteBytes Xoodoo_OverwriteBytes
33
-
34
- size_t Xoodyak_AbsorbKeyedFullBlocks(void *state, const uint8_t *X, size_t XLen)
35
- {
36
- size_t initialLength = XLen;
37
-
38
- do {
39
- SnP_Permute(state); /* Xoodyak_Up(instance, NULL, 0, 0); */
40
- SnP_AddBytes(state, X, 0, Xoodyak_Rkin); /* Xoodyak_Down(instance, X, Xoodyak_Rkin, 0); */
41
- SnP_AddByte(state, 0x01, Xoodyak_Rkin);
42
- X += Xoodyak_Rkin;
43
- XLen -= Xoodyak_Rkin;
44
- } while (XLen >= Xoodyak_Rkin);
45
-
46
- return initialLength - XLen;
47
- }
48
-
49
- size_t Xoodyak_AbsorbHashFullBlocks(void *state, const uint8_t *X, size_t XLen)
50
- {
51
- size_t initialLength = XLen;
52
-
53
- do {
54
- SnP_Permute(state); /* Xoodyak_Up(instance, NULL, 0, 0); */
55
- SnP_AddBytes(state, X, 0, Xoodyak_Rhash); /* Xoodyak_Down(instance, X, Xoodyak_Rhash, 0); */
56
- SnP_AddByte(state, 0x01, Xoodyak_Rhash);
57
- X += Xoodyak_Rhash;
58
- XLen -= Xoodyak_Rhash;
59
- } while (XLen >= Xoodyak_Rhash);
60
-
61
- return initialLength - XLen;
62
- }
63
-
64
-
65
- size_t Xoodyak_SqueezeKeyedFullBlocks(void *state, uint8_t *Y, size_t YLen)
66
- {
67
- size_t initialLength = YLen;
68
-
69
- do {
70
- SnP_AddByte(state, 0x01, 0); /* Xoodyak_Down(instance, NULL, 0, 0); */
71
- SnP_Permute(state); /* Xoodyak_Up(instance, Y, Xoodyak_Rkout, 0); */
72
- SnP_ExtractBytes(state, Y, 0, Xoodyak_Rkout);
73
- Y += Xoodyak_Rkout;
74
- YLen -= Xoodyak_Rkout;
75
- } while (YLen >= Xoodyak_Rkout);
76
-
77
- return initialLength - YLen;
78
- }
79
-
80
- size_t Xoodyak_SqueezeHashFullBlocks(void *state, uint8_t *Y, size_t YLen)
81
- {
82
- size_t initialLength = YLen;
83
-
84
- do {
85
- SnP_AddByte(state, 0x01, 0); /* Xoodyak_Down(instance, NULL, 0, 0); */
86
- SnP_Permute(state); /* Xoodyak_Up(instance, Y, Xoodyak_Rhash, 0); */
87
- SnP_ExtractBytes(state, Y, 0, Xoodyak_Rhash);
88
- Y += Xoodyak_Rhash;
89
- YLen -= Xoodyak_Rhash;
90
- } while (YLen >= Xoodyak_Rhash);
91
-
92
- return initialLength - YLen;
93
- }
94
-
95
- size_t Xoodyak_EncryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
96
- {
97
- size_t initialLength = IOLen;
98
-
99
- do {
100
- SnP_Permute(state);
101
- SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout);
102
- SnP_OverwriteBytes(state, O, 0, Xoodyak_Rkout);
103
- SnP_AddByte(state, 0x01, Xoodyak_Rkout);
104
- I += Xoodyak_Rkout;
105
- O += Xoodyak_Rkout;
106
- IOLen -= Xoodyak_Rkout;
107
- } while (IOLen >= Xoodyak_Rkout);
108
-
109
- return initialLength - IOLen;
110
- }
111
-
112
- size_t Xoodyak_DecryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
113
- {
114
- size_t initialLength = IOLen;
115
-
116
- do {
117
- SnP_Permute(state);
118
- SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout);
119
- SnP_AddBytes(state, O, 0, Xoodyak_Rkout);
120
- SnP_AddByte(state, 0x01, Xoodyak_Rkout);
121
- I += Xoodyak_Rkout;
122
- O += Xoodyak_Rkout;
123
- IOLen -= Xoodyak_Rkout;
124
- } while (IOLen >= Xoodyak_Rkout);
125
-
126
- return initialLength - IOLen;
127
- }
@@ -1,43 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- The Xoodoo permutation, designed by Joan Daemen, Seth Hoffert, 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 _Xoodoo_SnP_h_
18
- #define _Xoodoo_SnP_h_
19
-
20
- #include <stddef.h>
21
- #include <stdint.h>
22
-
23
- /** For the documentation, see SnP-documentation.h.
24
- */
25
-
26
- #define Xoodoo_implementation "32-bit reference implementation"
27
- #define Xoodoo_stateSizeInBytes (3*4*4)
28
- #define Xoodoo_stateAlignment 4
29
- #define Xoodoo_HasNround
30
-
31
- void Xoodoo_StaticInitialize( void );
32
- void Xoodoo_Initialize(void *state);
33
- #define Xoodoo_AddByte(argS, argData, argOffset) ((uint8_t*)argS)[argOffset] ^= (argData)
34
- void Xoodoo_AddBytes(void *state, const uint8_t *data, unsigned int offset, unsigned int length);
35
- void Xoodoo_OverwriteBytes(void *state, const uint8_t *data, unsigned int offset, unsigned int length);
36
- void Xoodoo_OverwriteWithZeroes(void *state, unsigned int byteCount);
37
- void Xoodoo_Permute_Nrounds(void *state, unsigned int nrounds);
38
- void Xoodoo_Permute_6rounds(void *state);
39
- void Xoodoo_Permute_12rounds(void *state);
40
- void Xoodoo_ExtractBytes(const void *state, uint8_t *data, unsigned int offset, unsigned int length);
41
- void Xoodoo_ExtractAndAddBytes(const void *state, const uint8_t *input, uint8_t *output, unsigned int offset, unsigned int length);
42
-
43
- #endif