sleeping_kangaroo12 0.0.1 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,565 +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
- @ WARNING: These functions work only on little endian CPU with@ ARMv7m architecture (Cortex-M3, ...).
18
-
19
-
20
- .thumb
21
- .syntax unified
22
- .text
23
-
24
-
25
- @ ----------------------------------------------------------------------------
26
-
27
- .equ _r0 , 5
28
- .equ _r1 , 14
29
- .equ _t3 , 1
30
-
31
- .equ _w1 , 11
32
-
33
- .equ _e0 , 2
34
- .equ _e1 , 8
35
-
36
- .equ _rc12 , 0x00000058
37
- .equ _rc11 , 0x00000038
38
- .equ _rc10 , 0x000003C0
39
- .equ _rc9 , 0x000000D0
40
- .equ _rc8 , 0x00000120
41
- .equ _rc7 , 0x00000014
42
- .equ _rc6 , 0x00000060
43
- .equ _rc5 , 0x0000002C
44
- .equ _rc4 , 0x00000380
45
- .equ _rc3 , 0x000000F0
46
- .equ _rc2 , 0x000001A0
47
- .equ _rc1 , 0x00000012
48
-
49
- .equ _rc6x1 , 0x00000003
50
- .equ _rc5x2 , 0x0b000000
51
- .equ _rc4x3 , 0x07000000
52
- .equ _rc3x4 , 0x000f0000
53
- .equ _rc2x5 , 0x0000d000
54
- .equ _rc1x6 , 0x00000048
55
-
56
- .equ _rc12x1, 0xc0000002
57
- .equ _rc11x2, 0x0e000000
58
- .equ _rc10x3, 0x07800000
59
- .equ _rc9x4 , 0x000d0000
60
- .equ _rc8x5 , 0x00009000
61
- .equ _rc7x6 , 0x00000050
62
- .equ _rc6x7 , 0x0000000c
63
- .equ _rc5x8 , 0x2c000000
64
- .equ _rc4x9 , 0x1c000000
65
- .equ _rc3x10, 0x003c0000
66
- .equ _rc2x11, 0x00034000
67
- .equ _rc1x12, 0x00000120
68
-
69
- @ ----------------------------------------------------------------------------
70
-
71
- .macro mXor3 ro, a0, a1, a2, rho_e1, rho_e2
72
- .if ((\rho_e1)%32) == 0
73
- eors \ro, \a0, \a1
74
- .else
75
- eor \ro, \a0, \a1, ROR #(32-(\rho_e1))%32
76
- .endif
77
- .if ((\rho_e2)%32) == 0
78
- eors \ro, \ro, \a2
79
- .else
80
- eor \ro, \ro, \a2, ROR #(32-(\rho_e2))%32
81
- .endif
82
- .endm
83
-
84
- .macro mRliXor ro, ri, rot
85
- .if ((\rot)%32) == 0
86
- eors \ro, \ro, \ri
87
- .else
88
- eor \ro, \ro, \ri, ROR #(32-(\rot))%32
89
- .endif
90
- .endm
91
-
92
- .macro mRloXor ro, ri, rot
93
- .if ((\rot)%32) == 0
94
- eors \ro, \ro, \ri
95
- .else
96
- eor \ro, \ri, \ro, ROR #(32-(\rot))%32
97
- .endif
98
- .endm
99
-
100
- .macro mChi3 a0,a1,a2,r0,r1
101
- bic \r0, \a2, \a1, ROR #_w1
102
- eors \a0, \a0, \r0, ROR #32-_w1
103
- bic \r1, \a0, \a2, ROR #32-_w1
104
- eors \a1, \a1, \r1
105
- bic \r1, \a1, \a0
106
- eors \a2, \a2, \r1, ROR #_w1
107
- .endm
108
-
109
- .macro mRound r6i, r7i, r8i, r9i, r6w, r7w, r8w, r9w, r10i, r11i, r12i, lri, rho_e1, rho_we2, rc
110
-
111
- @ Theta: Column Parity Mixer (with late Rho-west, Rho-east bit rotations)
112
- mXor3 r0, r5, \r9i, \lri, \rho_e1, \rho_we2
113
- mXor3 r1, r2, \r6i, \r10i, \rho_e1, \rho_we2
114
- mRliXor r0, r0, _r1-_r0
115
- mRloXor r2, r0, 32-_r0
116
- mRloXor \r6i, r0, \rho_e1-_r0
117
- mRloXor \r10i, r0, \rho_we2-_r0
118
-
119
- mXor3 r0, r3, \r7i, \r11i, \rho_e1, \rho_we2
120
- mRliXor r1, r1, _r1-_r0
121
- mRloXor r3, r1, 32-_r0
122
- mRloXor \r7i, r1, \rho_e1-_r0
123
- mRloXor \r11i, r1, \rho_we2-_r0
124
-
125
- mXor3 r1, r4, \r8i, \r12i, \rho_e1, \rho_we2
126
- mRliXor r0, r0, _r1-_r0
127
- mRloXor r4, r0, 32-_r0
128
- mRloXor \r8i, r0, \rho_e1-_r0
129
- mRloXor \r12i, r0, \rho_we2-_r0
130
-
131
- mRliXor r1, r1, _r1-_r0
132
- mRloXor r5, r1, 32-_r0
133
- mRloXor \r9i, r1, \rho_e1-_r0
134
- mRloXor \lri, r1, \rho_we2-_r0
135
- @ After Theta the whole state is rotated -r0
136
- @ from here we must use a1.w instead of a1.i
137
-
138
- @ Iota: round constant
139
- .if \rc == 0xc0000002
140
- eor r2, r2, #0x00000002
141
- eor r2, r2, #0xc0000000
142
- .else
143
- eor r2, r2, #\rc
144
- .endif
145
-
146
- @ Chi: non linear step, on colums
147
- mChi3 r2, \r6w, \r10i, r0, r1
148
- mChi3 r3, \r7w, \r11i, r0, r1
149
- mChi3 r4, \r8w, \r12i, r0, r1
150
- mChi3 r5, \r9w, \lri, r0, r1
151
- .endm
152
-
153
- .equ offsetInstance , 0
154
- .equ offsetInitialLen , 16
155
- .equ offsetReturn , 20
156
-
157
- @ ----------------------------------------------------------------------------
158
- @
159
- @ Xoodoo_Permute_12roundsAsm: only callable from asm
160
- @
161
- .type Xoodoo_Permute_12roundsAsm, %function;
162
- Xoodoo_Permute_12roundsAsm:
163
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 32, 32, _rc12x1
164
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc11x2
165
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc10x3
166
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc9x4
167
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc8x5
168
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc7x6
169
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc6x7
170
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc5x8
171
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc4x9
172
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc3x10
173
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc2x11
174
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc1x12
175
- ror r2, r2, #32-(12*_r0)%32
176
- ror r3, r3, #32-(12*_r0)%32
177
- ror r4, r4, #32-(12*_r0)%32
178
- ror r5, r5, #32-(12*_r0)%32
179
- ror r6, r6, #32-(12*_r0+1)%32
180
- ror r7, r7, #32-(12*_r0+1)%32
181
- ror r8, r8, #32-(12*_r0+1)%32
182
- ror r9, r9, #32-(12*_r0+1)%32
183
- ror r10, r10, #32-(12*_r0+_e1+_w1)%32
184
- ror r11, r11, #32-(12*_r0+_e1+_w1)%32
185
- ror r12, r12, #32-(12*_r0+_e1+_w1)%32
186
- ror lr, lr, #32-(12*_r0+_e1+_w1)%32
187
- ldr pc, [sp, #offsetReturn]
188
- .align 4
189
-
190
-
191
-
192
- @ ----------------------------------------------------------------------------
193
- @
194
- @ size_t Xoodyak_AbsorbKeyedFullBlocks(void *state, const uint8_t *X, size_t XLen)
195
- @ {
196
- @ size_t initialLength = XLen@
197
- @
198
- @ do {
199
- @ SnP_Permute(state )@ /* Xoodyak_Up(instance, NULL, 0, 0)@ */
200
- @ SnP_AddBytes(state, X, 0, Xoodyak_Rkin)@ /* Xoodyak_Down(instance, X, Xoodyak_Rkin, 0)@ */
201
- @ SnP_AddByte(state, 0x01, Xoodyak_Rkin)@
202
- @ X += Xoodyak_Rkin@
203
- @ XLen -= Xoodyak_Rkin@
204
- @ } while (XLen >= Xoodyak_Rkin)@
205
- @
206
- @ return initialLength - XLen@
207
- @ }
208
- @
209
- .equ offsetAbsorbX , 4
210
- .equ offsetAbsorbXLen , 8
211
-
212
- .global Xoodyak_AbsorbKeyedFullBlocks
213
- .type Xoodyak_AbsorbKeyedFullBlocks, %function;
214
- Xoodyak_AbsorbKeyedFullBlocks:
215
- push {r4-r12,lr}
216
- mov r4, r2 @ r4 initialLength
217
- subs r2, r2, #44
218
- ldr r5, =Xoodyak_AbsorbKeyedFullBlocks_Ret+1
219
- push {r0-r5}
220
- ldmia r0, {r2-r12,lr}
221
- Xoodyak_AbsorbKeyedFullBlocks_Loop:
222
- b.w Xoodoo_Permute_12roundsAsm
223
- Xoodyak_AbsorbKeyedFullBlocks_Ret:
224
- ldr r0, [sp, #offsetAbsorbX]
225
- ldr r1, [r0], #4
226
- eors r2, r2, r1
227
- ldr r1, [r0], #4
228
- eors r3, r3, r1
229
- ldr r1, [r0], #4
230
- eors r4, r4, r1
231
- ldr r1, [r0], #4
232
- eors r5, r5, r1
233
- ldr r1, [r0], #4
234
- eors r6, r6, r1
235
- ldr r1, [r0], #4
236
- eors r7, r7, r1
237
- ldr r1, [r0], #4
238
- eors r8, r8, r1
239
- ldr r1, [r0], #4
240
- eors r9, r9, r1
241
- ldr r1, [r0], #4
242
- eors r10, r10, r1
243
- ldr r1, [r0], #4
244
- eors r11, r11, r1
245
- ldr r1, [r0], #4
246
- eors lr, lr, #1
247
- eors r12, r12, r1
248
- ldr r1, [sp, #offsetAbsorbXLen]
249
- str r0, [sp, #offsetAbsorbX]
250
- subs r1, r1, #44
251
- str r1, [sp, #offsetAbsorbXLen]
252
- bcs Xoodyak_AbsorbKeyedFullBlocks_Loop
253
- ldr r0, [sp, #offsetInstance]
254
- stmia r0, {r2-r12,lr}
255
- pop {r0-r5}
256
- adds r2, r2, #44
257
- sub r0, r4, r2
258
- pop {r4-r12,pc}
259
- .align 4
260
-
261
-
262
- @ ----------------------------------------------------------------------------
263
- @
264
- @ size_t Xoodyak_AbsorbHashFullBlocks(void *state, const uint8_t *X, size_t XLen)
265
- @ {
266
- @ size_t initialLength = XLen@
267
- @
268
- @ do {
269
- @ SnP_Permute(state )@ /* Xoodyak_Up(instance, NULL, 0, 0)@ */
270
- @ SnP_AddBytes(state, X, 0, Xoodyak_Rhash)@ /* Xoodyak_Down(instance, X, Xoodyak_Rhash, 0)@ */
271
- @ SnP_AddByte(state, 0x01, Xoodyak_Rhash)@
272
- @ X += Xoodyak_Rhash@
273
- @ XLen -= Xoodyak_Rhash@
274
- @ } while (XLen >= Xoodyak_Rhash)@
275
- @
276
- @ return initialLength - XLen@
277
- @ }
278
- @
279
- .global Xoodyak_AbsorbHashFullBlocks
280
- .type Xoodyak_AbsorbHashFullBlocks, %function;
281
- Xoodyak_AbsorbHashFullBlocks:
282
- push {r4-r12,lr}
283
- mov r4, r2 @ r4 initialLength
284
- subs r2, r2, #16
285
- ldr r5, =Xoodyak_AbsorbHashFullBlocks_Ret+1
286
- push {r0-r5}
287
- ldmia r0, {r2-r12,lr}
288
- Xoodyak_AbsorbHashFullBlocks_Loop:
289
- b.w Xoodoo_Permute_12roundsAsm
290
- Xoodyak_AbsorbHashFullBlocks_Ret:
291
- ldr r0, [sp, #offsetAbsorbX]
292
- ldr r1, [r0], #4
293
- eors r2, r2, r1
294
- ldr r1, [r0], #4
295
- eors r3, r3, r1
296
- ldr r1, [r0], #4
297
- eors r4, r4, r1
298
- ldr r1, [r0], #4
299
- eors r6, r6, #1
300
- eors r5, r5, r1
301
- ldr r1, [sp, #offsetAbsorbXLen]
302
- str r0, [sp, #offsetAbsorbX]
303
- subs r1, r1, #16
304
- str r1, [sp, #offsetAbsorbXLen]
305
- bcs Xoodyak_AbsorbHashFullBlocks_Loop
306
- ldr r0, [sp, #offsetInstance]
307
- stmia r0, {r2-r12,lr}
308
- pop {r0-r5}
309
- adds r2, r2, #16
310
- sub r0, r4, r2
311
- pop {r4-r12,pc}
312
- .align 4
313
-
314
-
315
- @ ----------------------------------------------------------------------------
316
- @
317
- @ size_t Xoodyak_SqueezeKeyedFullBlocks(void *state, uint8_t *Y, size_t YLen)
318
- @ {
319
- @ size_t initialLength = YLen@
320
- @
321
- @ do {
322
- @ SnP_AddByte(state, 0x01, 0)@ /* Xoodyak_Down(instance, NULL, 0, 0)@ */
323
- @ SnP_Permute(state )@ /* Xoodyak_Up(instance, Y, Xoodyak_Rkout, 0)@ */
324
- @ SnP_ExtractBytes(state, Y, 0, Xoodyak_Rkout)@
325
- @ Y += Xoodyak_Rkout@
326
- @ YLen -= Xoodyak_Rkout@
327
- @ } while (YLen >= Xoodyak_Rkout)@
328
- @
329
- @ return initialLength - YLen@
330
- @ }
331
- @
332
- .equ offsetSqueezeY , 4
333
- .equ offsetSqueezeYLen , 8
334
-
335
- .global Xoodyak_SqueezeKeyedFullBlocks
336
- .type Xoodyak_SqueezeKeyedFullBlocks, %function;
337
- Xoodyak_SqueezeKeyedFullBlocks:
338
- push {r4-r12,lr}
339
- mov r4, r2 @ r4 initialLength
340
- subs r2, r2, #24
341
- ldr r5, =Xoodyak_SqueezeKeyedFullBlocks_Ret+1
342
- push {r0-r5}
343
- ldmia r0, {r2-r12,lr}
344
- Xoodyak_SqueezeKeyedFullBlocks_Loop:
345
- eors r2, r2, #1
346
- b.w Xoodoo_Permute_12roundsAsm
347
- Xoodyak_SqueezeKeyedFullBlocks_Ret:
348
- ldr r0, [sp, #offsetSqueezeY]
349
- str r2, [r0], #4
350
- str r3, [r0], #4
351
- str r4, [r0], #4
352
- str r5, [r0], #4
353
- str r6, [r0], #4
354
- str r7, [r0], #4
355
- ldr r1, [sp, #offsetSqueezeYLen]
356
- str r0, [sp, #offsetSqueezeY]
357
- subs r1, r1, #24
358
- str r1, [sp, #offsetSqueezeYLen]
359
- bcs Xoodyak_SqueezeKeyedFullBlocks_Loop
360
- ldr r0, [sp, #offsetInstance]
361
- stmia r0, {r2-r12,lr}
362
- pop {r0-r5}
363
- adds r2, r2, #24
364
- sub r0, r4, r2
365
- pop {r4-r12,pc}
366
- .align 4
367
-
368
-
369
- @ ----------------------------------------------------------------------------
370
- @
371
- @ size_t Xoodyak_SqueezeHashFullBlocks(void *state, uint8_t *Y, size_t YLen)
372
- @ {
373
- @ size_t initialLength = YLen@
374
- @
375
- @ do {
376
- @ SnP_AddByte(state, 0x01, 0)@ /* Xoodyak_Down(instance, NULL, 0, 0)@ */
377
- @ SnP_Permute(state)@ /* Xoodyak_Up(instance, Y, Xoodyak_Rhash, 0)@ */
378
- @ SnP_ExtractBytes(state, Y, 0, Xoodyak_Rhash)@
379
- @ Y += Xoodyak_Rhash@
380
- @ YLen -= Xoodyak_Rhash@
381
- @ } while (YLen >= Xoodyak_Rhash)@
382
- @
383
- @ return initialLength - YLen@
384
- @ }
385
- @
386
- .global Xoodyak_SqueezeHashFullBlocks
387
- .type Xoodyak_SqueezeHashFullBlocks, %function;
388
- Xoodyak_SqueezeHashFullBlocks:
389
- push {r4-r12,lr}
390
- mov r4, r2 @ r4 initialLength
391
- subs r2, r2, #16
392
- ldr r5, =Xoodyak_SqueezeHashFullBlocks_Ret+1
393
- push {r0-r5}
394
- ldmia r0, {r2-r12,lr}
395
- Xoodyak_SqueezeHashFullBlocks_Loop:
396
- eors r2, r2, #1
397
- b.w Xoodoo_Permute_12roundsAsm
398
- Xoodyak_SqueezeHashFullBlocks_Ret:
399
- ldr r0, [sp, #offsetSqueezeY]
400
- str r2, [r0], #4
401
- str r3, [r0], #4
402
- str r4, [r0], #4
403
- str r5, [r0], #4
404
- ldr r1, [sp, #offsetSqueezeYLen]
405
- str r0, [sp, #offsetSqueezeY]
406
- subs r1, r1, #16
407
- str r1, [sp, #offsetSqueezeYLen]
408
- bcs Xoodyak_SqueezeHashFullBlocks_Loop
409
- ldr r0, [sp, #offsetInstance]
410
- stmia r0, {r2-r12,lr}
411
- pop {r0-r5}
412
- adds r2, r2, #16
413
- sub r0, r4, r2
414
- pop {r4-r12,pc}
415
- .align 4
416
-
417
-
418
- @ ----------------------------------------------------------------------------
419
- @
420
- @ size_t Xoodyak_EncryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
421
- @ {
422
- @ size_t initialLength = IOLen@
423
- @
424
- @ do {
425
- @ SnP_Permute(state)@
426
- @ SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout)@
427
- @ SnP_OverwriteBytes(state, O, 0, Xoodyak_Rkout)@
428
- @ SnP_AddByte(state, 0x01, Xoodyak_Rkout)@
429
- @ I += Xoodyak_Rkout@
430
- @ O += Xoodyak_Rkout@
431
- @ IOLen -= Xoodyak_Rkout@
432
- @ } while (IOLen >= Xoodyak_Rkout)@
433
- @
434
- @ return initialLength - IOLen@
435
- @ }
436
- @
437
- .equ offsetCryptI , 4+8
438
- .equ offsetCryptO , 8+8
439
- .equ offsetCryptIOLen , 12
440
-
441
- .global Xoodyak_EncryptFullBlocks
442
- .type Xoodyak_EncryptFullBlocks, %function;
443
- Xoodyak_EncryptFullBlocks:
444
- push {r4-r12,lr}
445
- mov r4, r3 @ r4 initialLength
446
- subs r3, r3, #24
447
- ldr r5, =Xoodyak_EncryptFullBlocks_Ret+1
448
- push {r0-r5}
449
- ldmia r0, {r2-r12,lr}
450
- Xoodyak_EncryptFullBlocks_Loop:
451
- b.w Xoodoo_Permute_12roundsAsm
452
- Xoodyak_EncryptFullBlocks_Ret:
453
- push {r10, r11}
454
- ldr r11, [sp, #offsetCryptI]
455
- ldr r10, [sp, #offsetCryptO]
456
- ldr r0, [r11], #4
457
- ldr r1, [r11], #4
458
- eors r2, r2, r0
459
- str r2, [r10], #4
460
- eors r3, r3, r1
461
- ldr r0, [r11], #4
462
- str r3, [r10], #4
463
- eors r4, r4, r0
464
- ldr r1, [r11], #4
465
- str r4, [r10], #4
466
- eors r5, r5, r1
467
- ldr r0, [r11], #4
468
- str r5, [r10], #4
469
- eors r6, r6, r0
470
- ldr r1, [r11], #4
471
- str r6, [r10], #4
472
- eors r7, r7, r1
473
- str r7, [r10], #4
474
- str r10, [sp, #offsetCryptO]
475
- str r11, [sp, #offsetCryptI]
476
- pop {r10, r11}
477
- ldr r0, [sp, #offsetCryptIOLen]
478
- eors r8, r8, #1
479
- subs r0, r0, #24
480
- str r0, [sp, #offsetCryptIOLen]
481
- bcs Xoodyak_EncryptFullBlocks_Loop
482
- ldr r0, [sp, #offsetInstance]
483
- stmia r0, {r2-r12,lr}
484
- pop {r0-r5}
485
- adds r3, r3, #24
486
- sub r0, r4, r3
487
- pop {r4-r12,pc}
488
- .align 4
489
-
490
-
491
- @ ----------------------------------------------------------------------------
492
- @
493
- @ size_t Xoodyak_DecryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
494
- @ {
495
- @ size_t initialLength = IOLen@
496
- @
497
- @ do {
498
- @ SnP_Permute(state)@
499
- @ SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout)@
500
- @ SnP_AddBytes(state, O, 0, Xoodyak_Rkout)@
501
- @ SnP_AddByte(state, 0x01, Xoodyak_Rkout)@
502
- @ I += Xoodyak_Rkout@
503
- @ O += Xoodyak_Rkout@
504
- @ IOLen -= Xoodyak_Rkout@
505
- @ } while (IOLen >= Xoodyak_Rkout)@
506
- @
507
- @ return initialLength - IOLen@
508
- @ }
509
- @
510
- .global Xoodyak_DecryptFullBlocks
511
- .type Xoodyak_DecryptFullBlocks, %function;
512
- Xoodyak_DecryptFullBlocks:
513
- push {r4-r12,lr}
514
- mov r4, r3 @ r4 initialLength
515
- subs r3, r3, #24
516
- ldr r5, =Xoodyak_DecryptFullBlocks_Ret+1
517
- push {r0-r5}
518
- ldmia r0, {r2-r12,lr}
519
- Xoodyak_DecryptFullBlocks_Loop:
520
- b.w Xoodoo_Permute_12roundsAsm
521
- Xoodyak_DecryptFullBlocks_Ret:
522
- push {r10, r11}
523
- ldr r11, [sp, #offsetCryptI]
524
- ldr r10, [sp, #offsetCryptO]
525
- ldr r0, [r11], #4
526
- ldr r1, [r11], #4
527
- eors r2, r2, r0
528
- str r2, [r10], #4
529
- mov r2, r0
530
- eors r3, r3, r1
531
- ldr r0, [r11], #4
532
- str r3, [r10], #4
533
- mov r3, r1
534
- eors r4, r4, r0
535
- ldr r1, [r11], #4
536
- str r4, [r10], #4
537
- mov r4, r0
538
- eors r5, r5, r1
539
- ldr r0, [r11], #4
540
- str r5, [r10], #4
541
- mov r5, r1
542
- eors r6, r6, r0
543
- ldr r1, [r11], #4
544
- str r6, [r10], #4
545
- mov r6, r0
546
- eors r7, r7, r1
547
- str r7, [r10], #4
548
- mov r7, r1
549
- str r10, [sp, #offsetCryptO]
550
- str r11, [sp, #offsetCryptI]
551
- pop {r10, r11}
552
- ldr r0, [sp, #offsetCryptIOLen]
553
- eors r8, r8, #1
554
- subs r0, r0, #24
555
- str r0, [sp, #offsetCryptIOLen]
556
- bcs Xoodyak_DecryptFullBlocks_Loop
557
- ldr r0, [sp, #offsetInstance]
558
- stmia r0, {r2-r12,lr}
559
- pop {r0-r5}
560
- adds r3, r3, #24
561
- sub r0, r4, r3
562
- pop {r4-r12,pc}
563
- .align 4
564
-
565
-
@@ -1,55 +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 "Optimized ARM Cortex-A7/8/9 NEON assembler implementation"
27
- #define Xoodoo_stateSizeInBytes (3*4*4)
28
- #define Xoodoo_stateAlignment 16
29
-
30
- #define Xoodoo_StaticInitialize()
31
- void Xoodoo_Initialize(void *state);
32
- #define Xoodoo_AddByte(argS, argData, argOffset) ((uint8_t*)argS)[argOffset] ^= (argData)
33
- void Xoodoo_AddBytes(void *state, const uint8_t *data, unsigned int offset, unsigned int length);
34
- void Xoodoo_OverwriteBytes(void *state, const uint8_t *data, unsigned int offset, unsigned int length);
35
- void Xoodoo_OverwriteWithZeroes(void *state, unsigned int byteCount);
36
- //void Xoodoo_Permute_Nrounds(void *state, unsigned int nrounds);
37
- void Xoodoo_Permute_6rounds(void *state);
38
- void Xoodoo_Permute_12rounds(void *state);
39
- void Xoodoo_ExtractBytes(const void *state, uint8_t *data, unsigned int offset, unsigned int length);
40
- void Xoodoo_ExtractAndAddBytes(const void *state, const uint8_t *input, uint8_t *output, unsigned int offset, unsigned int length);
41
-
42
- #define Xoodoo_FastXoofff_supported
43
- void Xoofff_AddIs(uint8_t *output, const uint8_t *input, size_t bitLen);
44
- size_t Xoofff_CompressFastLoop(uint8_t *kRoll, uint8_t *xAccu, const uint8_t *input, size_t length);
45
- size_t Xoofff_ExpandFastLoop(uint8_t *yAccu, const uint8_t *kRoll, uint8_t *output, size_t length);
46
-
47
- #define CyclistFullBlocks_supported
48
- size_t Xoodyak_AbsorbKeyedFullBlocks(void *state, const uint8_t *X, size_t XLen);
49
- size_t Xoodyak_AbsorbHashFullBlocks(void *state, const uint8_t *X, size_t XLen);
50
- size_t Xoodyak_SqueezeHashFullBlocks(void *state, uint8_t *Y, size_t YLen);
51
- size_t Xoodyak_SqueezeKeyedFullBlocks(void *state, uint8_t *Y, size_t YLen);
52
- size_t Xoodyak_EncryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen);
53
- size_t Xoodyak_DecryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen);
54
-
55
- #endif