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
@@ -0,0 +1,623 @@
1
+ # K12 based on the eXtended Keccak Code Package (XKCP)
2
+ # https://github.com/XKCP/XKCP
3
+ #
4
+ # The Keccak-p permutations, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche.
5
+ #
6
+ # Implementation by Gilles Van Assche, hereby denoted as "the implementer".
7
+ # Core subroutine is based on one by Andy Polyakov, available
8
+ # at https://github.com/dot-asm/cryptogams. Used with permission.
9
+ #
10
+ # For more information, feedback or questions, please refer to the Keccak Team website:
11
+ # https://keccak.team/
12
+ #
13
+ # To the extent possible under law, the implementer has waived all copyright
14
+ # and related or neighboring rights to the source code in this file.
15
+ # http://creativecommons.org/publicdomain/zero/1.0/
16
+
17
+ .text
18
+
19
+ .balign 64 // strategic alignment and padding that allows to use
20
+ // address value as loop termination condition...
21
+ .quad 0,0,0,0,0,0,0,0
22
+ .ifdef macOS
23
+ .else
24
+ .type iotas,%object
25
+ .endif
26
+ iotas:
27
+ .quad 0x0000000000000001
28
+ .quad 0x0000000000008082
29
+ .quad 0x800000000000808a
30
+ .quad 0x8000000080008000
31
+ .quad 0x000000000000808b
32
+ .quad 0x0000000080000001
33
+ .quad 0x8000000080008081
34
+ .quad 0x8000000000008009
35
+ .quad 0x000000000000008a
36
+ .quad 0x0000000000000088
37
+ .quad 0x0000000080008009
38
+ .quad 0x000000008000000a
39
+ iotas12:
40
+ .quad 0x000000008000808b
41
+ .quad 0x800000000000008b
42
+ .quad 0x8000000000008089
43
+ .quad 0x8000000000008003
44
+ .quad 0x8000000000008002
45
+ .quad 0x8000000000000080
46
+ .quad 0x000000000000800a
47
+ .quad 0x800000008000000a
48
+ .quad 0x8000000080008081
49
+ .quad 0x8000000000008080
50
+ .quad 0x0000000080000001
51
+ .quad 0x8000000080008008
52
+ .ifdef macOS
53
+ .else
54
+ .size iotas,.-iotas
55
+ .endif
56
+
57
+ .ifdef macOS
58
+ .else
59
+ .type KeccakP1600_ARMv8Asha3_Permute_12rounds_internal,%function
60
+ .endif
61
+ KeccakP1600_ARMv8Asha3_Permute_12rounds_internal:
62
+ .balign 32
63
+ mov x9,#12
64
+ adr x10,iotas12
65
+ b .Loop_ce
66
+ .balign 16
67
+ .Loop_ce:
68
+ ////////////////////////////////////////////////// Theta
69
+ eor3 v25.16b,v20.16b,v15.16b,v10.16b
70
+ eor3 v26.16b,v21.16b,v16.16b,v11.16b
71
+ eor3 v27.16b,v22.16b,v17.16b,v12.16b
72
+ eor3 v28.16b,v23.16b,v18.16b,v13.16b
73
+ eor3 v29.16b,v24.16b,v19.16b,v14.16b
74
+ eor3 v25.16b,v25.16b, v5.16b,v0.16b
75
+ eor3 v26.16b,v26.16b, v6.16b,v1.16b
76
+ eor3 v27.16b,v27.16b, v7.16b,v2.16b
77
+ eor3 v28.16b,v28.16b, v8.16b,v3.16b
78
+ eor3 v29.16b,v29.16b, v9.16b,v4.16b
79
+
80
+ rax1 v30.2d,v25.2d,v27.2d // D[1]
81
+ rax1 v31.2d,v26.2d,v28.2d // D[2]
82
+ rax1 v27.2d,v27.2d,v29.2d // D[3]
83
+ rax1 v28.2d,v28.2d,v25.2d // D[4]
84
+ rax1 v29.2d,v29.2d,v26.2d // D[0]
85
+
86
+ ////////////////////////////////////////////////// Theta+Rho+Pi
87
+ xar v25.2d, v1.2d,v30.2d,#64-1 // C[0]=A[2][0]
88
+
89
+ xar v1.2d,v6.2d,v30.2d,#64-44
90
+ xar v6.2d,v9.2d,v28.2d,#64-20
91
+ xar v9.2d,v22.2d,v31.2d,#64-61
92
+ xar v22.2d,v14.2d,v28.2d,#64-39
93
+ xar v14.2d,v20.2d,v29.2d,#64-18
94
+
95
+ xar v26.2d, v2.2d,v31.2d,#64-62 // C[1]=A[4][0]
96
+
97
+ xar v2.2d,v12.2d,v31.2d,#64-43
98
+ xar v12.2d,v13.2d,v27.2d,#64-25
99
+ xar v13.2d,v19.2d,v28.2d,#64-8
100
+ xar v19.2d,v23.2d,v27.2d,#64-56
101
+ xar v23.2d,v15.2d,v29.2d,#64-41
102
+
103
+ xar v15.2d,v4.2d,v28.2d,#64-27
104
+
105
+ xar v28.2d, v24.2d,v28.2d,#64-14 // D[4]=A[0][4]
106
+ xar v24.2d,v21.2d,v30.2d,#64-2
107
+ xar v8.2d,v8.2d,v27.2d,#64-55 // A[1][3]=A[4][1]
108
+ xar v4.2d,v16.2d,v30.2d,#64-45 // A[0][4]=A[1][3]
109
+ xar v16.2d,v5.2d,v29.2d,#64-36
110
+
111
+ xar v5.2d,v3.2d,v27.2d,#64-28
112
+
113
+ eor v0.16b,v0.16b,v29.16b
114
+
115
+ xar v27.2d, v18.2d,v27.2d,#64-21 // D[3]=A[0][3]
116
+ xar v3.2d,v17.2d,v31.2d,#64-15 // A[0][3]=A[3][3]
117
+ xar v30.2d, v11.2d,v30.2d,#64-10 // D[1]=A[3][2]
118
+ xar v31.2d, v7.2d,v31.2d,#64-6 // D[2]=A[2][1]
119
+ xar v29.2d, v10.2d,v29.2d,#64-3 // D[0]=A[1][2]
120
+
121
+ ////////////////////////////////////////////////// Chi+Iota
122
+ bcax v20.16b,v26.16b, v22.16b,v8.16b // A[1][3]=A[4][1]
123
+ bcax v21.16b,v8.16b,v23.16b,v22.16b // A[1][3]=A[4][1]
124
+ bcax v22.16b,v22.16b,v24.16b,v23.16b
125
+ bcax v23.16b,v23.16b,v26.16b, v24.16b
126
+ bcax v24.16b,v24.16b,v8.16b,v26.16b // A[1][3]=A[4][1]
127
+
128
+ ld1r {v26.2d},[x10],#8
129
+
130
+ bcax v17.16b,v30.16b, v19.16b,v3.16b // A[0][3]=A[3][3]
131
+ bcax v18.16b,v3.16b,v15.16b,v19.16b // A[0][3]=A[3][3]
132
+ bcax v19.16b,v19.16b,v16.16b,v15.16b
133
+ bcax v15.16b,v15.16b,v30.16b, v16.16b
134
+ bcax v16.16b,v16.16b,v3.16b,v30.16b // A[0][3]=A[3][3]
135
+
136
+ bcax v10.16b,v25.16b, v12.16b,v31.16b
137
+ bcax v11.16b,v31.16b, v13.16b,v12.16b
138
+ bcax v12.16b,v12.16b,v14.16b,v13.16b
139
+ bcax v13.16b,v13.16b,v25.16b, v14.16b
140
+ bcax v14.16b,v14.16b,v31.16b, v25.16b
141
+
142
+ bcax v7.16b,v29.16b, v9.16b,v4.16b // A[0][4]=A[1][3]
143
+ bcax v8.16b,v4.16b,v5.16b,v9.16b // A[0][4]=A[1][3]
144
+ bcax v9.16b,v9.16b,v6.16b,v5.16b
145
+ bcax v5.16b,v5.16b,v29.16b, v6.16b
146
+ bcax v6.16b,v6.16b,v4.16b,v29.16b // A[0][4]=A[1][3]
147
+
148
+ bcax v3.16b,v27.16b, v0.16b,v28.16b
149
+ bcax v4.16b,v28.16b, v1.16b,v0.16b
150
+ bcax v0.16b,v0.16b,v2.16b,v1.16b
151
+ bcax v1.16b,v1.16b,v27.16b, v2.16b
152
+ bcax v2.16b,v2.16b,v28.16b, v27.16b
153
+
154
+ eor v0.16b,v0.16b,v26.16b
155
+
156
+ subs x9,x9,#1
157
+ bne .Loop_ce
158
+
159
+ ret
160
+ .ifdef macOS
161
+ .else
162
+ .size KeccakP1600_ARMv8Asha3_Permute_12rounds_internal,.-KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
163
+ .endif
164
+
165
+ .ifdef macOS
166
+ .globl _KeccakP1600_ARMv8Asha3_Permute_12rounds
167
+ _KeccakP1600_ARMv8Asha3_Permute_12rounds:
168
+ .else
169
+ .globl KeccakP1600_ARMv8Asha3_Permute_12rounds
170
+ .type KeccakP1600_ARMv8Asha3_Permute_12rounds,%function
171
+ KeccakP1600_ARMv8Asha3_Permute_12rounds:
172
+ .endif
173
+ .balign 32
174
+ stp x29,x30,[sp,#-80]!
175
+ add x29,sp,#0
176
+ stp d8,d9,[sp,#16] // per ABI requirement
177
+ stp d10,d11,[sp,#32]
178
+ stp d12,d13,[sp,#48]
179
+ stp d14,d15,[sp,#64]
180
+ ldp d0,d1,[x0,#8*0]
181
+ ldp d2,d3,[x0,#8*2]
182
+ ldp d4,d5,[x0,#8*4]
183
+ ldp d6,d7,[x0,#8*6]
184
+ ldp d8,d9,[x0,#8*8]
185
+ ldp d10,d11,[x0,#8*10]
186
+ ldp d12,d13,[x0,#8*12]
187
+ ldp d14,d15,[x0,#8*14]
188
+ ldp d16,d17,[x0,#8*16]
189
+ ldp d18,d19,[x0,#8*18]
190
+ ldp d20,d21,[x0,#8*20]
191
+ ldp d22,d23,[x0,#8*22]
192
+ ldr d24,[x0,#8*24]
193
+ bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
194
+ ldr x30,[sp,#8]
195
+ stp d0,d1,[x0,#8*0]
196
+ stp d2,d3,[x0,#8*2]
197
+ stp d4,d5,[x0,#8*4]
198
+ stp d6,d7,[x0,#8*6]
199
+ stp d8,d9,[x0,#8*8]
200
+ stp d10,d11,[x0,#8*10]
201
+ stp d12,d13,[x0,#8*12]
202
+ stp d14,d15,[x0,#8*14]
203
+ stp d16,d17,[x0,#8*16]
204
+ stp d18,d19,[x0,#8*18]
205
+ stp d20,d21,[x0,#8*20]
206
+ stp d22,d23,[x0,#8*22]
207
+ str d24,[x0,#8*24]
208
+
209
+ ldp d8,d9,[sp,#16]
210
+ ldp d10,d11,[sp,#32]
211
+ ldp d12,d13,[sp,#48]
212
+ ldp d14,d15,[sp,#64]
213
+ ldr x29,[sp],#80
214
+ ret
215
+ .ifdef macOS
216
+ .else
217
+ .size KeccakP1600_ARMv8Asha3_Permute_12rounds,.-KeccakP1600_ARMv8Asha3_Permute_12rounds
218
+ .endif
219
+
220
+ // size_t KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb(
221
+ // void *state(x0),
222
+ // unsigned int laneCount(x1) = 21,
223
+ // const unsigned char *data(x2),
224
+ // size_t dataByteLen(x3))
225
+ .ifdef macOS
226
+ .globl _KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
227
+ _KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb:
228
+ .else
229
+ .globl KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
230
+ .type KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb,%function
231
+ KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb:
232
+ .endif
233
+ .balign 32
234
+ stp x29,x30,[sp,#-80]!
235
+ add x29,sp,#0
236
+ stp d8,d9,[sp,#16] // per ABI requirement
237
+ stp d10,d11,[sp,#32]
238
+ stp d12,d13,[sp,#48]
239
+ stp d14,d15,[sp,#64]
240
+
241
+ ldp d0,d1,[x0,#8*0]
242
+ ldp d2,d3,[x0,#8*2]
243
+ ldp d4,d5,[x0,#8*4]
244
+ ldp d6,d7,[x0,#8*6]
245
+ ldp d8,d9,[x0,#8*8]
246
+ ldp d10,d11,[x0,#8*10]
247
+ ldp d12,d13,[x0,#8*12]
248
+ ldp d14,d15,[x0,#8*14]
249
+ ldp d16,d17,[x0,#8*16]
250
+ ldp d18,d19,[x0,#8*18]
251
+ ldp d20,d21,[x0,#8*20]
252
+ ldp d22,d23,[x0,#8*22]
253
+ ldr d24,[x0,#8*24]
254
+
255
+ // Prepare the return value
256
+ mov x11, #0
257
+ b .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_loop
258
+
259
+ .balign 16
260
+ .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_loop:
261
+ subs x3, x3, #8*21
262
+ b.cc .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_end
263
+
264
+ // Lanes 0-3
265
+ ld1 {v27.8b-v30.8b}, [x2], #32
266
+ eor v0.16b, v0.16b, v27.16b
267
+ eor v1.16b, v1.16b, v28.16b
268
+ eor v2.16b, v2.16b, v29.16b
269
+ eor v3.16b, v3.16b, v30.16b
270
+
271
+ // Lanes 4-7
272
+ ld1 {v27.8b-v30.8b}, [x2], #32
273
+ eor v4.16b, v4.16b, v27.16b
274
+ eor v5.16b, v5.16b, v28.16b
275
+ eor v6.16b, v6.16b, v29.16b
276
+ eor v7.16b, v7.16b, v30.16b
277
+
278
+ // Lanes 8-11
279
+ ld1 {v27.8b-v30.8b}, [x2], #32
280
+ eor v8.16b, v8.16b, v27.16b
281
+ eor v9.16b, v9.16b, v28.16b
282
+ eor v10.16b, v10.16b, v29.16b
283
+ eor v11.16b, v11.16b, v30.16b
284
+
285
+ // Lanes 12-15
286
+ ld1 {v27.8b-v30.8b}, [x2], #32
287
+ eor v12.16b, v12.16b, v27.16b
288
+ eor v13.16b, v13.16b, v28.16b
289
+ eor v14.16b, v14.16b, v29.16b
290
+ eor v15.16b, v15.16b, v30.16b
291
+
292
+ // Lanes 16-20
293
+ ld1 {v27.8b-v30.8b}, [x2], #32
294
+ eor v16.16b, v16.16b, v27.16b
295
+ eor v17.16b, v17.16b, v28.16b
296
+ eor v18.16b, v18.16b, v29.16b
297
+ eor v19.16b, v19.16b, v30.16b
298
+ ld1 {v27.8b}, [x2], #8
299
+ eor v20.16b, v20.16b, v27.16b
300
+
301
+ bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
302
+
303
+ add x11, x11, #8*21
304
+
305
+ b .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_loop
306
+ .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_end:
307
+
308
+ stp d0,d1,[x0,#8*0]
309
+ stp d2,d3,[x0,#8*2]
310
+ stp d4,d5,[x0,#8*4]
311
+ stp d6,d7,[x0,#8*6]
312
+ stp d8,d9,[x0,#8*8]
313
+ stp d10,d11,[x0,#8*10]
314
+ stp d12,d13,[x0,#8*12]
315
+ stp d14,d15,[x0,#8*14]
316
+ stp d16,d17,[x0,#8*16]
317
+ stp d18,d19,[x0,#8*18]
318
+ stp d20,d21,[x0,#8*20]
319
+ stp d22,d23,[x0,#8*22]
320
+ str d24,[x0,#8*24]
321
+
322
+ mov x0, x11
323
+
324
+ ldr x30,[sp,#8]
325
+ ldp d8,d9,[sp,#16]
326
+ ldp d10,d11,[sp,#32]
327
+ ldp d12,d13,[sp,#48]
328
+ ldp d14,d15,[sp,#64]
329
+ ldr x29,[sp],#80
330
+
331
+ ret
332
+ .ifdef macOS
333
+ .else
334
+ .size KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb,.-KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
335
+ .endif
336
+
337
+ .ifdef macOS
338
+ .globl _KeccakP1600times2_ARMv8Asha3_Permute_12rounds
339
+ _KeccakP1600times2_ARMv8Asha3_Permute_12rounds:
340
+ .else
341
+ .globl KeccakP1600times2_ARMv8Asha3_Permute_12rounds
342
+ .type KeccakP1600times2_ARMv8Asha3_Permute_12rounds,%function
343
+ KeccakP1600times2_ARMv8Asha3_Permute_12rounds:
344
+ .endif
345
+ .balign 32
346
+ stp x29,x30,[sp,#-80]!
347
+ add x29,sp,#0
348
+ stp d8,d9,[sp,#16] // per ABI requirement
349
+ stp d10,d11,[sp,#32]
350
+ stp d12,d13,[sp,#48]
351
+ stp d14,d15,[sp,#64]
352
+
353
+ ld1 { v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #64
354
+ ld1 { v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #64
355
+ ld1 { v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #64
356
+ ld1 {v12.2d, v13.2d, v14.2d, v15.2d}, [x0], #64
357
+ ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x0], #64
358
+ ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x0], #64
359
+ ld1 {v24.2d}, [x0]
360
+ sub x0, x0, #64*6
361
+
362
+ bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
363
+
364
+ ldr x30,[sp,#8]
365
+ st1 { v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #64
366
+ st1 { v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #64
367
+ st1 { v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #64
368
+ st1 {v12.2d, v13.2d, v14.2d, v15.2d}, [x0], #64
369
+ st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x0], #64
370
+ st1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x0], #64
371
+ st1 {v24.2d}, [x0]
372
+
373
+ ldp d8,d9,[sp,#16]
374
+ ldp d10,d11,[sp,#32]
375
+ ldp d12,d13,[sp,#48]
376
+ ldp d14,d15,[sp,#64]
377
+ ldr x29,[sp],#80
378
+
379
+ ret
380
+ .ifdef macOS
381
+ .else
382
+ .size KeccakP1600times2_ARMv8Asha3_Permute_12rounds,.-KeccakP1600times2_ARMv8Asha3_Permute_12rounds
383
+ .endif
384
+
385
+ .ifdef macOS
386
+ .globl _KangarooTwelve_ARMv8Asha3_Process2Leaves
387
+ _KangarooTwelve_ARMv8Asha3_Process2Leaves:
388
+ .else
389
+ .globl KangarooTwelve_ARMv8Asha3_Process2Leaves
390
+ .type KangarooTwelve_ARMv8Asha3_Process2Leaves,%function
391
+ KangarooTwelve_ARMv8Asha3_Process2Leaves:
392
+ .endif
393
+ .balign 32
394
+ stp x29,x30,[sp,#-80]!
395
+ add x29,sp,#0
396
+ stp d8,d9,[sp,#16] // per ABI requirement
397
+ stp d10,d11,[sp,#32]
398
+ stp d12,d13,[sp,#48]
399
+ stp d14,d15,[sp,#64]
400
+
401
+ movi v0.2d, #0
402
+ movi v1.2d, #0
403
+ movi v2.2d, #0
404
+ movi v3.2d, #0
405
+ movi v4.2d, #0
406
+ movi v5.2d, #0
407
+ movi v6.2d, #0
408
+ movi v7.2d, #0
409
+ movi v8.2d, #0
410
+ movi v9.2d, #0
411
+ movi v10.2d, #0
412
+ movi v11.2d, #0
413
+ movi v12.2d, #0
414
+ movi v13.2d, #0
415
+ movi v14.2d, #0
416
+ movi v15.2d, #0
417
+ movi v16.2d, #0
418
+ movi v17.2d, #0
419
+ movi v18.2d, #0
420
+ movi v19.2d, #0
421
+ movi v20.2d, #0
422
+ movi v21.2d, #0
423
+ movi v22.2d, #0
424
+ movi v23.2d, #0
425
+ movi v24.2d, #0
426
+
427
+ // x12 is input + chunkSize
428
+ add x12, x0, #8192
429
+
430
+ // Loop over the first 48 blocks
431
+ mov x11, 48
432
+ b .KangarooTwelve_ARMv8Asha3_Process2Leaves_blocks
433
+ .KangarooTwelve_ARMv8Asha3_Process2Leaves_blocks:
434
+
435
+ // Lanes 0-3
436
+ ld1 {v25.1d-v28.1d}, [x0], #32
437
+ ld1 {v25.d}[1], [x12], #8
438
+ ld1 {v26.d}[1], [x12], #8
439
+ ld1 {v27.d}[1], [x12], #8
440
+ ld1 {v28.d}[1], [x12], #8
441
+ #ifdef __AARCH64EB__
442
+ rev64 v25.16b, v25.16b
443
+ rev64 v26.16b, v26.16b
444
+ rev64 v27.16b, v27.16b
445
+ rev64 v28.16b, v28.16b
446
+ #endif
447
+ eor v0.16b, v0.16b, v25.16b
448
+ eor v1.16b, v1.16b, v26.16b
449
+ eor v2.16b, v2.16b, v27.16b
450
+ eor v3.16b, v3.16b, v28.16b
451
+
452
+ // Lanes 4-7
453
+ ld1 {v25.1d-v28.1d}, [x0], #32
454
+ ld1 {v25.d}[1], [x12], #8
455
+ ld1 {v26.d}[1], [x12], #8
456
+ ld1 {v27.d}[1], [x12], #8
457
+ ld1 {v28.d}[1], [x12], #8
458
+ #ifdef __AARCH64EB__
459
+ rev64 v25.16b, v25.16b
460
+ rev64 v26.16b, v26.16b
461
+ rev64 v27.16b, v27.16b
462
+ rev64 v28.16b, v28.16b
463
+ #endif
464
+ eor v4.16b, v4.16b, v25.16b
465
+ eor v5.16b, v5.16b, v26.16b
466
+ eor v6.16b, v6.16b, v27.16b
467
+ eor v7.16b, v7.16b, v28.16b
468
+
469
+ // Lanes 8-11
470
+ ld1 {v25.1d-v28.1d}, [x0], #32
471
+ ld1 {v25.d}[1], [x12], #8
472
+ ld1 {v26.d}[1], [x12], #8
473
+ ld1 {v27.d}[1], [x12], #8
474
+ ld1 {v28.d}[1], [x12], #8
475
+ #ifdef __AARCH64EB__
476
+ rev64 v25.16b, v25.16b
477
+ rev64 v26.16b, v26.16b
478
+ rev64 v27.16b, v27.16b
479
+ rev64 v28.16b, v28.16b
480
+ #endif
481
+ eor v8.16b, v8.16b, v25.16b
482
+ eor v9.16b, v9.16b, v26.16b
483
+ eor v10.16b, v10.16b, v27.16b
484
+ eor v11.16b, v11.16b, v28.16b
485
+
486
+ // Lanes 12-15
487
+ ld1 {v25.1d-v28.1d}, [x0], #32
488
+ ld1 {v25.d}[1], [x12], #8
489
+ ld1 {v26.d}[1], [x12], #8
490
+ ld1 {v27.d}[1], [x12], #8
491
+ ld1 {v28.d}[1], [x12], #8
492
+ #ifdef __AARCH64EB__
493
+ rev64 v25.16b, v25.16b
494
+ rev64 v26.16b, v26.16b
495
+ rev64 v27.16b, v27.16b
496
+ rev64 v28.16b, v28.16b
497
+ #endif
498
+ eor v12.16b, v12.16b, v25.16b
499
+ eor v13.16b, v13.16b, v26.16b
500
+ eor v14.16b, v14.16b, v27.16b
501
+ eor v15.16b, v15.16b, v28.16b
502
+
503
+ // Lanes 16-20
504
+ ld1 {v25.1d-v28.1d}, [x0], #32
505
+ ld1 {v25.d}[1], [x12], #8
506
+ ld1 {v26.d}[1], [x12], #8
507
+ ld1 {v27.d}[1], [x12], #8
508
+ ld1 {v28.d}[1], [x12], #8
509
+ ld1 {v29.d}[0], [x0], #8
510
+ ld1 {v29.d}[1], [x12], #8
511
+ #ifdef __AARCH64EB__
512
+ rev64 v25.16b, v25.16b
513
+ rev64 v26.16b, v26.16b
514
+ rev64 v27.16b, v27.16b
515
+ rev64 v28.16b, v28.16b
516
+ rev64 v29.16b, v29.16b
517
+ #endif
518
+ eor v16.16b, v16.16b, v25.16b
519
+ eor v17.16b, v17.16b, v26.16b
520
+ eor v18.16b, v18.16b, v27.16b
521
+ eor v19.16b, v19.16b, v28.16b
522
+ eor v20.16b, v20.16b, v29.16b
523
+
524
+ bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
525
+
526
+ subs x11, x11, #1
527
+ bne .KangarooTwelve_ARMv8Asha3_Process2Leaves_blocks
528
+
529
+ // Lanes 0-3
530
+ ld1 {v25.1d-v28.1d}, [x0], #32
531
+ ld1 {v25.d}[1], [x12], #8
532
+ ld1 {v26.d}[1], [x12], #8
533
+ ld1 {v27.d}[1], [x12], #8
534
+ ld1 {v28.d}[1], [x12], #8
535
+ #ifdef __AARCH64EB__
536
+ rev64 v25.16b, v25.16b
537
+ rev64 v26.16b, v26.16b
538
+ rev64 v27.16b, v27.16b
539
+ rev64 v28.16b, v28.16b
540
+ #endif
541
+ eor v0.16b, v0.16b, v25.16b
542
+ eor v1.16b, v1.16b, v26.16b
543
+ eor v2.16b, v2.16b, v27.16b
544
+ eor v3.16b, v3.16b, v28.16b
545
+
546
+ // Lanes 4-7
547
+ ld1 {v25.1d-v28.1d}, [x0], #32
548
+ ld1 {v25.d}[1], [x12], #8
549
+ ld1 {v26.d}[1], [x12], #8
550
+ ld1 {v27.d}[1], [x12], #8
551
+ ld1 {v28.d}[1], [x12], #8
552
+ #ifdef __AARCH64EB__
553
+ rev64 v25.16b, v25.16b
554
+ rev64 v26.16b, v26.16b
555
+ rev64 v27.16b, v27.16b
556
+ rev64 v28.16b, v28.16b
557
+ #endif
558
+ eor v4.16b, v4.16b, v25.16b
559
+ eor v5.16b, v5.16b, v26.16b
560
+ eor v6.16b, v6.16b, v27.16b
561
+ eor v7.16b, v7.16b, v28.16b
562
+
563
+ // Lanes 8-11
564
+ ld1 {v25.1d-v28.1d}, [x0], #32
565
+ ld1 {v25.d}[1], [x12], #8
566
+ ld1 {v26.d}[1], [x12], #8
567
+ ld1 {v27.d}[1], [x12], #8
568
+ ld1 {v28.d}[1], [x12], #8
569
+ #ifdef __AARCH64EB__
570
+ rev64 v25.16b, v25.16b
571
+ rev64 v26.16b, v26.16b
572
+ rev64 v27.16b, v27.16b
573
+ rev64 v28.16b, v28.16b
574
+ #endif
575
+ eor v8.16b, v8.16b, v25.16b
576
+ eor v9.16b, v9.16b, v26.16b
577
+ eor v10.16b, v10.16b, v27.16b
578
+ eor v11.16b, v11.16b, v28.16b
579
+
580
+ // Lanes 12-15
581
+ ld1 {v25.1d-v28.1d}, [x0], #32
582
+ ld1 {v25.d}[1], [x12], #8
583
+ ld1 {v26.d}[1], [x12], #8
584
+ ld1 {v27.d}[1], [x12], #8
585
+ ld1 {v28.d}[1], [x12], #8
586
+ #ifdef __AARCH64EB__
587
+ rev64 v25.16b, v25.16b
588
+ rev64 v26.16b, v26.16b
589
+ rev64 v27.16b, v27.16b
590
+ rev64 v28.16b, v28.16b
591
+ #endif
592
+ eor v12.16b, v12.16b, v25.16b
593
+ eor v13.16b, v13.16b, v26.16b
594
+ eor v14.16b, v14.16b, v27.16b
595
+ eor v15.16b, v15.16b, v28.16b
596
+
597
+ mov x13, #0x0B
598
+ dup v25.2d, x13
599
+ mov x13, #0x8000000000000000
600
+ dup v26.2d, x13
601
+ eor v16.16b, v16.16b, v25.16b
602
+ eor v20.16b, v20.16b, v26.16b
603
+
604
+ bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
605
+
606
+ st1 {v0.1d-v3.1d}, [x1], #32
607
+ st1 {v0.d}[1], [x1], #8
608
+ st1 {v1.d}[1], [x1], #8
609
+ st1 {v2.d}[1], [x1], #8
610
+ st1 {v3.d}[1], [x1], #8
611
+
612
+ ldr x30,[sp,#8]
613
+ ldp d8,d9,[sp,#16]
614
+ ldp d10,d11,[sp,#32]
615
+ ldp d12,d13,[sp,#48]
616
+ ldp d14,d15,[sp,#64]
617
+ ldr x29,[sp],#80
618
+
619
+ ret
620
+ .ifdef macOS
621
+ .else
622
+ .size KangarooTwelve_ARMv8Asha3_Process2Leaves,.-KangarooTwelve_ARMv8Asha3_Process2Leaves
623
+ .endif
@@ -0,0 +1,65 @@
1
+ /*
2
+ K12 based on the eXtended Keccak Code Package (XKCP)
3
+ https://github.com/XKCP/XKCP
4
+
5
+ The Keccak-p permutations, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche.
6
+
7
+ Implementation by Gilles Van Assche and 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
+
18
+ Please refer to the XKCP for more details.
19
+ */
20
+
21
+ #ifndef _KeccakP_1600_SnP_h_
22
+ #define _KeccakP_1600_SnP_h_
23
+
24
+ /* Keccak-p[1600] */
25
+
26
+ #define KeccakP1600_stateSizeInBytes 200
27
+ #define KeccakP1600_stateAlignment 8
28
+ #define KeccakP1600_12rounds_FastLoop_supported
29
+
30
+ const char * KeccakP1600_GetImplementation();
31
+ void KeccakP1600_opt64_Initialize(void *state);
32
+ void KeccakP1600_opt64_AddByte(void *state, unsigned char data, unsigned int offset);
33
+ void KeccakP1600_opt64_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length);
34
+ void KeccakP1600_ARMv8Asha3_Permute_12rounds(void *state);
35
+ void KeccakP1600_opt64_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length);
36
+ size_t KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen);
37
+
38
+ #define KeccakP1600_Initialize KeccakP1600_opt64_Initialize
39
+ #define KeccakP1600_AddByte KeccakP1600_opt64_AddByte
40
+ #define KeccakP1600_AddBytes KeccakP1600_opt64_AddBytes
41
+ #define KeccakP1600_Permute_12rounds KeccakP1600_ARMv8Asha3_Permute_12rounds
42
+ #define KeccakP1600_ExtractBytes KeccakP1600_opt64_ExtractBytes
43
+ #define KeccakP1600_12rounds_FastLoop_Absorb KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
44
+
45
+ /* Keccak-p[1600]×2 */
46
+
47
+ int KeccakP1600times2_IsAvailable();
48
+ const char * KeccakP1600times2_GetImplementation();
49
+ void KeccakP1600times2_ARMv8Asha3_Permute_12rounds(void *state);
50
+ void KangarooTwelve_ARMv8Asha3_Process2Leaves(const unsigned char *input, unsigned char *output);
51
+
52
+ #define KeccakP1600times2_Permute_12rounds KeccakP1600times2_ARMv8Asha3_Permute_12rounds
53
+ #define KangarooTwelve_Process2Leaves KangarooTwelve_ARMv8Asha3_Process2Leaves
54
+
55
+ /* Keccak-p[1600]×4 */
56
+
57
+ int KeccakP1600times4_IsAvailable();
58
+ const char * KeccakP1600times4_GetImplementation();
59
+
60
+ /* Keccak-p[1600]×8 */
61
+
62
+ int KeccakP1600times8_IsAvailable();
63
+ const char * KeccakP1600times8_GetImplementation();
64
+
65
+ #endif