sleeping_kangaroo12 0.0.1

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 (284) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +127 -0
  3. data/ext/Rakefile +73 -0
  4. data/ext/binding/sleeping_kangaroo12.c +39 -0
  5. data/ext/config/xkcp.build +17 -0
  6. data/ext/xkcp/LICENSE +1 -0
  7. data/ext/xkcp/Makefile +15 -0
  8. data/ext/xkcp/Makefile.build +200 -0
  9. data/ext/xkcp/README.markdown +296 -0
  10. data/ext/xkcp/lib/HighLevel.build +143 -0
  11. data/ext/xkcp/lib/LowLevel.build +757 -0
  12. data/ext/xkcp/lib/common/align.h +33 -0
  13. data/ext/xkcp/lib/common/brg_endian.h +143 -0
  14. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +301 -0
  15. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.h +97 -0
  16. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +81 -0
  17. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +125 -0
  18. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +48 -0
  19. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +79 -0
  20. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +81 -0
  21. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +73 -0
  22. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +195 -0
  23. data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +111 -0
  24. data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +76 -0
  25. data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +314 -0
  26. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +61 -0
  27. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +67 -0
  28. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +128 -0
  29. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +93 -0
  30. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +599 -0
  31. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +573 -0
  32. data/ext/xkcp/lib/high/Ketje/Ketjev2.c +87 -0
  33. data/ext/xkcp/lib/high/Ketje/Ketjev2.h +88 -0
  34. data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +274 -0
  35. data/ext/xkcp/lib/high/Keyak/Keyakv2.c +132 -0
  36. data/ext/xkcp/lib/high/Keyak/Keyakv2.h +217 -0
  37. data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +81 -0
  38. data/ext/xkcp/lib/high/Keyak/Motorist.inc +953 -0
  39. data/ext/xkcp/lib/high/Kravatte/Kravatte.c +533 -0
  40. data/ext/xkcp/lib/high/Kravatte/Kravatte.h +115 -0
  41. data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +557 -0
  42. data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +247 -0
  43. data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +66 -0
  44. data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +336 -0
  45. data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +26 -0
  46. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +55 -0
  47. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +35 -0
  48. data/ext/xkcp/lib/high/Xoofff/Xoofff.c +634 -0
  49. data/ext/xkcp/lib/high/Xoofff/Xoofff.h +147 -0
  50. data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +483 -0
  51. data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +241 -0
  52. data/ext/xkcp/lib/high/common/Phases.h +25 -0
  53. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +41 -0
  54. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +1666 -0
  55. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +1655 -0
  56. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +1268 -0
  57. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +1264 -0
  58. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +1178 -0
  59. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +1175 -0
  60. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +1338 -0
  61. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +1336 -0
  62. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +1343 -0
  63. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +1339 -0
  64. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +42 -0
  65. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +823 -0
  66. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +831 -0
  67. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +31 -0
  68. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +540 -0
  69. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +42 -0
  70. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +733 -0
  71. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +1121 -0
  72. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-AVX2.s +1100 -0
  73. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +52 -0
  74. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +623 -0
  75. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +47 -0
  76. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +6 -0
  77. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +6 -0
  78. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +6 -0
  79. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +1031 -0
  80. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +53 -0
  81. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +44 -0
  82. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +476 -0
  83. data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +6 -0
  84. data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +6 -0
  85. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros +748 -0
  86. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +305 -0
  87. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-SnP.h +40 -0
  88. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +420 -0
  89. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +43 -0
  90. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-inplace32BI.c +1163 -0
  91. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-SnP.h +54 -0
  92. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +565 -0
  93. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +7 -0
  94. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +7 -0
  95. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +8 -0
  96. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +6 -0
  97. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +6 -0
  98. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +44 -0
  99. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +23 -0
  100. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +625 -0
  101. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +44 -0
  102. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +440 -0
  103. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h +23 -0
  104. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +42 -0
  105. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +1196 -0
  106. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +1124 -0
  107. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +1196 -0
  108. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +1392 -0
  109. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +1394 -0
  110. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +42 -0
  111. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +7 -0
  112. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +7 -0
  113. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +7 -0
  114. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +850 -0
  115. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +51 -0
  116. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +957 -0
  117. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +49 -0
  118. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +8 -0
  119. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +8 -0
  120. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +9 -0
  121. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +9 -0
  122. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +45 -0
  123. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +37 -0
  124. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +1321 -0
  125. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +55 -0
  126. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +7 -0
  127. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +7 -0
  128. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +7 -0
  129. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +7 -0
  130. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +7 -0
  131. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +7 -0
  132. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +881 -0
  133. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +51 -0
  134. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +45 -0
  135. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +37 -0
  136. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +45 -0
  137. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +38 -0
  138. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +1615 -0
  139. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +57 -0
  140. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +7 -0
  141. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +7 -0
  142. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +7 -0
  143. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +45 -0
  144. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +37 -0
  145. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +45 -0
  146. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +38 -0
  147. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +45 -0
  148. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +38 -0
  149. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +41 -0
  150. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +442 -0
  151. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +446 -0
  152. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +419 -0
  153. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +427 -0
  154. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +41 -0
  155. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +647 -0
  156. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +39 -0
  157. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +190 -0
  158. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +43 -0
  159. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +412 -0
  160. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +23 -0
  161. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +41 -0
  162. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +454 -0
  163. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +458 -0
  164. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +455 -0
  165. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +458 -0
  166. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +41 -0
  167. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +728 -0
  168. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +43 -0
  169. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +414 -0
  170. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +23 -0
  171. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +42 -0
  172. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +527 -0
  173. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +533 -0
  174. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +528 -0
  175. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +534 -0
  176. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +521 -0
  177. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +527 -0
  178. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +517 -0
  179. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +523 -0
  180. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +550 -0
  181. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +556 -0
  182. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +32 -0
  183. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +432 -0
  184. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +42 -0
  185. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +929 -0
  186. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +40 -0
  187. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +244 -0
  188. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +46 -0
  189. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +184 -0
  190. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +454 -0
  191. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +459 -0
  192. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +83 -0
  193. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +88 -0
  194. data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +7 -0
  195. data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +7 -0
  196. data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +7 -0
  197. data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +7 -0
  198. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +44 -0
  199. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +437 -0
  200. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +23 -0
  201. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +57 -0
  202. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +475 -0
  203. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +480 -0
  204. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +590 -0
  205. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +590 -0
  206. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +126 -0
  207. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +68 -0
  208. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +174 -0
  209. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +80 -0
  210. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +68 -0
  211. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +142 -0
  212. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +55 -0
  213. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +1086 -0
  214. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +1092 -0
  215. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +721 -0
  216. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +726 -0
  217. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +723 -0
  218. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +729 -0
  219. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +1164 -0
  220. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +1165 -0
  221. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +562 -0
  222. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +563 -0
  223. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +563 -0
  224. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +565 -0
  225. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +55 -0
  226. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +476 -0
  227. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +485 -0
  228. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +362 -0
  229. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +367 -0
  230. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +43 -0
  231. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +1341 -0
  232. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +581 -0
  233. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +58 -0
  234. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +332 -0
  235. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +329 -0
  236. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +53 -0
  237. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +355 -0
  238. data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +79 -0
  239. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +56 -0
  240. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +399 -0
  241. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +127 -0
  242. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +43 -0
  243. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +253 -0
  244. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +1044 -0
  245. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +49 -0
  246. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +45 -0
  247. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +37 -0
  248. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +1587 -0
  249. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +48 -0
  250. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +1202 -0
  251. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +48 -0
  252. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +484 -0
  253. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +44 -0
  254. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +45 -0
  255. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +37 -0
  256. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +939 -0
  257. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +49 -0
  258. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +1216 -0
  259. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +48 -0
  260. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +45 -0
  261. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +37 -0
  262. data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +290 -0
  263. data/ext/xkcp/lib/low/common/SnP-Relaned.h +141 -0
  264. data/ext/xkcp/support/Build/ExpandProducts.xsl +79 -0
  265. data/ext/xkcp/support/Build/ToGlobalMakefile.xsl +206 -0
  266. data/ext/xkcp/support/Build/ToOneTarget.xsl +89 -0
  267. data/ext/xkcp/support/Build/ToTargetConfigFile.xsl +37 -0
  268. data/ext/xkcp/support/Build/ToTargetMakefile.xsl +298 -0
  269. data/ext/xkcp/support/Build/ToVCXProj.xsl +198 -0
  270. data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +133 -0
  271. data/ext/xkcp/support/Kernel-PMU/Makefile +8 -0
  272. data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +129 -0
  273. data/ext/xkcp/support/Kernel-PMU/load-module +1 -0
  274. data/ext/xkcp/util/KeccakSum/KeccakSum.c +394 -0
  275. data/ext/xkcp/util/KeccakSum/base64.c +86 -0
  276. data/ext/xkcp/util/KeccakSum/base64.h +12 -0
  277. data/lib/sleeping_kangaroo12/binding.rb +15 -0
  278. data/lib/sleeping_kangaroo12/build/loader.rb +40 -0
  279. data/lib/sleeping_kangaroo12/build/platform.rb +37 -0
  280. data/lib/sleeping_kangaroo12/build.rb +4 -0
  281. data/lib/sleeping_kangaroo12/digest.rb +103 -0
  282. data/lib/sleeping_kangaroo12/version.rb +5 -0
  283. data/lib/sleeping_kangaroo12.rb +7 -0
  284. metadata +372 -0
@@ -0,0 +1,563 @@
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@ ARMv6 architecture (e.g.,@ ARM11).
18
+
19
+
20
+ .text
21
+
22
+
23
+ @ ----------------------------------------------------------------------------
24
+
25
+ .equ _r0 , 5
26
+ .equ _r1 , 14
27
+ .equ _t3 , 1
28
+
29
+ .equ _w1 , 11
30
+
31
+ .equ _e0 , 2
32
+ .equ _e1 , 8
33
+
34
+ .equ _rc12 , 0x00000058
35
+ .equ _rc11 , 0x00000038
36
+ .equ _rc10 , 0x000003C0
37
+ .equ _rc9 , 0x000000D0
38
+ .equ _rc8 , 0x00000120
39
+ .equ _rc7 , 0x00000014
40
+ .equ _rc6 , 0x00000060
41
+ .equ _rc5 , 0x0000002C
42
+ .equ _rc4 , 0x00000380
43
+ .equ _rc3 , 0x000000F0
44
+ .equ _rc2 , 0x000001A0
45
+ .equ _rc1 , 0x00000012
46
+
47
+ .equ _rc6x1 , 0x00000003
48
+ .equ _rc5x2 , 0x0b000000
49
+ .equ _rc4x3 , 0x07000000
50
+ .equ _rc3x4 , 0x000f0000
51
+ .equ _rc2x5 , 0x0000d000
52
+ .equ _rc1x6 , 0x00000048
53
+
54
+ .equ _rc12x1, 0xc0000002
55
+ .equ _rc11x2, 0x0e000000
56
+ .equ _rc10x3, 0x07800000
57
+ .equ _rc9x4 , 0x000d0000
58
+ .equ _rc8x5 , 0x00009000
59
+ .equ _rc7x6 , 0x00000050
60
+ .equ _rc6x7 , 0x0000000c
61
+ .equ _rc5x8 , 0x2c000000
62
+ .equ _rc4x9 , 0x1c000000
63
+ .equ _rc3x10, 0x003c0000
64
+ .equ _rc2x11, 0x00034000
65
+ .equ _rc1x12, 0x00000120
66
+
67
+ @ ----------------------------------------------------------------------------
68
+
69
+ .macro mXor3 ro, a0, a1, a2, rho_e1, rho_e2
70
+ .if ((\rho_e1)%32) == 0
71
+ eors \ro, \a0, \a1
72
+ .else
73
+ eor \ro, \a0, \a1, ROR #(32-(\rho_e1))%32
74
+ .endif
75
+ .if ((\rho_e2)%32) == 0
76
+ eors \ro, \ro, \a2
77
+ .else
78
+ eor \ro, \ro, \a2, ROR #(32-(\rho_e2))%32
79
+ .endif
80
+ .endm
81
+
82
+ .macro mRliXor ro, ri, rot
83
+ .if ((\rot)%32) == 0
84
+ eors \ro, \ro, \ri
85
+ .else
86
+ eor \ro, \ro, \ri, ROR #(32-(\rot))%32
87
+ .endif
88
+ .endm
89
+
90
+ .macro mRloXor ro, ri, rot
91
+ .if ((\rot)%32) == 0
92
+ eors \ro, \ro, \ri
93
+ .else
94
+ eor \ro, \ri, \ro, ROR #(32-(\rot))%32
95
+ .endif
96
+ .endm
97
+
98
+ .macro mChi3 a0,a1,a2,r0,r1
99
+ bic \r0, \a2, \a1, ROR #_w1
100
+ eors \a0, \a0, \r0, ROR #32-_w1
101
+ bic \r1, \a0, \a2, ROR #32-_w1
102
+ eors \a1, \a1, \r1
103
+ bic \r1, \a1, \a0
104
+ eors \a2, \a2, \r1, ROR #_w1
105
+ .endm
106
+
107
+ .macro mRound r6i, r7i, r8i, r9i, r6w, r7w, r8w, r9w, r10i, r11i, r12i, lri, rho_e1, rho_we2, rc
108
+
109
+ @ Theta: Column Parity Mixer (with late Rho-west, Rho-east bit rotations)
110
+ mXor3 r0, r5, \r9i, \lri, \rho_e1, \rho_we2
111
+ mXor3 r1, r2, \r6i, \r10i, \rho_e1, \rho_we2
112
+ mRliXor r0, r0, _r1-_r0
113
+ mRloXor r2, r0, 32-_r0
114
+ mRloXor \r6i, r0, \rho_e1-_r0
115
+ mRloXor \r10i, r0, \rho_we2-_r0
116
+
117
+ mXor3 r0, r3, \r7i, \r11i, \rho_e1, \rho_we2
118
+ mRliXor r1, r1, _r1-_r0
119
+ mRloXor r3, r1, 32-_r0
120
+ mRloXor \r7i, r1, \rho_e1-_r0
121
+ mRloXor \r11i, r1, \rho_we2-_r0
122
+
123
+ mXor3 r1, r4, \r8i, \r12i, \rho_e1, \rho_we2
124
+ mRliXor r0, r0, _r1-_r0
125
+ mRloXor r4, r0, 32-_r0
126
+ mRloXor \r8i, r0, \rho_e1-_r0
127
+ mRloXor \r12i, r0, \rho_we2-_r0
128
+
129
+ mRliXor r1, r1, _r1-_r0
130
+ mRloXor r5, r1, 32-_r0
131
+ mRloXor \r9i, r1, \rho_e1-_r0
132
+ mRloXor \lri, r1, \rho_we2-_r0
133
+ @ After Theta the whole state is rotated -r0
134
+ @ from here we must use a1.w instead of a1.i
135
+
136
+ @ Iota: round constant
137
+ .if \rc == 0xc0000002
138
+ eor r2, r2, #0x00000002
139
+ eor r2, r2, #0xc0000000
140
+ .else
141
+ eor r2, r2, #\rc
142
+ .endif
143
+
144
+ @ Chi: non linear step, on colums
145
+ mChi3 r2, \r6w, \r10i, r0, r1
146
+ mChi3 r3, \r7w, \r11i, r0, r1
147
+ mChi3 r4, \r8w, \r12i, r0, r1
148
+ mChi3 r5, \r9w, \lri, r0, r1
149
+ .endm
150
+
151
+ .equ offsetInstance , 0
152
+ .equ offsetInitialLen , 16
153
+ .equ offsetReturn , 20
154
+
155
+ @ ----------------------------------------------------------------------------
156
+ @
157
+ @ Xoodoo_Permute_12roundsAsm: only callable from asm
158
+ @
159
+ .align 4
160
+ .type Xoodoo_Permute_12roundsAsm, %function;
161
+ Xoodoo_Permute_12roundsAsm:
162
+ mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 32, 32, _rc12x1
163
+ mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc11x2
164
+ mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc10x3
165
+ mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc9x4
166
+ mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc8x5
167
+ mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc7x6
168
+ mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc6x7
169
+ mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc5x8
170
+ mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc4x9
171
+ mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc3x10
172
+ mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc2x11
173
+ mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc1x12
174
+ ror r2, r2, #32-(12*_r0)%32
175
+ ror r3, r3, #32-(12*_r0)%32
176
+ ror r4, r4, #32-(12*_r0)%32
177
+ ror r5, r5, #32-(12*_r0)%32
178
+ ror r6, r6, #32-(12*_r0+1)%32
179
+ ror r7, r7, #32-(12*_r0+1)%32
180
+ ror r8, r8, #32-(12*_r0+1)%32
181
+ ror r9, r9, #32-(12*_r0+1)%32
182
+ ror r10, r10, #32-(12*_r0+_e1+_w1)%32
183
+ ror r11, r11, #32-(12*_r0+_e1+_w1)%32
184
+ ror r12, r12, #32-(12*_r0+_e1+_w1)%32
185
+ ror lr, lr, #32-(12*_r0+_e1+_w1)%32
186
+ ldr pc, [sp, #offsetReturn]
187
+
188
+
189
+
190
+ @ ----------------------------------------------------------------------------
191
+ @
192
+ @ size_t Xoodyak_AbsorbKeyedFullBlocks(void *state, const uint8_t *X, size_t XLen)
193
+ @ {
194
+ @ size_t initialLength = XLen@
195
+ @
196
+ @ do {
197
+ @ SnP_Permute(state )@ /* Xoodyak_Up(instance, NULL, 0, 0)@ */
198
+ @ SnP_AddBytes(state, X, 0, Xoodyak_Rkin)@ /* Xoodyak_Down(instance, X, Xoodyak_Rkin, 0)@ */
199
+ @ SnP_AddByte(state, 0x01, Xoodyak_Rkin)@
200
+ @ X += Xoodyak_Rkin@
201
+ @ XLen -= Xoodyak_Rkin@
202
+ @ } while (XLen >= Xoodyak_Rkin)@
203
+ @
204
+ @ return initialLength - XLen@
205
+ @ }
206
+ @
207
+ .equ offsetAbsorbX , 4
208
+ .equ offsetAbsorbXLen , 8
209
+
210
+ .align 4
211
+ .global Xoodyak_AbsorbKeyedFullBlocks
212
+ .type Xoodyak_AbsorbKeyedFullBlocks, %function;
213
+ Xoodyak_AbsorbKeyedFullBlocks:
214
+ push {r4-r12,lr}
215
+ mov r4, r2 @ r4 initialLength
216
+ subs r2, r2, #44
217
+ ldr r5, =Xoodyak_AbsorbKeyedFullBlocks_Ret
218
+ push {r0-r5}
219
+ ldmia r0, {r2-r12,lr}
220
+ Xoodyak_AbsorbKeyedFullBlocks_Loop:
221
+ b Xoodoo_Permute_12roundsAsm
222
+ Xoodyak_AbsorbKeyedFullBlocks_Ret:
223
+ ldr r0, [sp, #offsetAbsorbX]
224
+ ldr r1, [r0], #4
225
+ eors r2, r2, r1
226
+ ldr r1, [r0], #4
227
+ eors r3, r3, r1
228
+ ldr r1, [r0], #4
229
+ eors r4, r4, r1
230
+ ldr r1, [r0], #4
231
+ eors r5, r5, r1
232
+ ldr r1, [r0], #4
233
+ eors r6, r6, r1
234
+ ldr r1, [r0], #4
235
+ eors r7, r7, r1
236
+ ldr r1, [r0], #4
237
+ eors r8, r8, r1
238
+ ldr r1, [r0], #4
239
+ eors r9, r9, r1
240
+ ldr r1, [r0], #4
241
+ eors r10, r10, r1
242
+ ldr r1, [r0], #4
243
+ eors r11, r11, r1
244
+ ldr r1, [r0], #4
245
+ eors lr, lr, #1
246
+ eors r12, r12, r1
247
+ ldr r1, [sp, #offsetAbsorbXLen]
248
+ str r0, [sp, #offsetAbsorbX]
249
+ subs r1, r1, #44
250
+ str r1, [sp, #offsetAbsorbXLen]
251
+ bcs Xoodyak_AbsorbKeyedFullBlocks_Loop
252
+ ldr r0, [sp, #offsetInstance]
253
+ stmia r0, {r2-r12,lr}
254
+ pop {r0-r5}
255
+ adds r2, r2, #44
256
+ sub r0, r4, r2
257
+ pop {r4-r12,pc}
258
+
259
+
260
+ @ ----------------------------------------------------------------------------
261
+ @
262
+ @ size_t Xoodyak_AbsorbHashFullBlocks(void *state, const uint8_t *X, size_t XLen)
263
+ @ {
264
+ @ size_t initialLength = XLen@
265
+ @
266
+ @ do {
267
+ @ SnP_Permute(state )@ /* Xoodyak_Up(instance, NULL, 0, 0)@ */
268
+ @ SnP_AddBytes(state, X, 0, Xoodyak_Rhash)@ /* Xoodyak_Down(instance, X, Xoodyak_Rhash, 0)@ */
269
+ @ SnP_AddByte(state, 0x01, Xoodyak_Rhash)@
270
+ @ X += Xoodyak_Rhash@
271
+ @ XLen -= Xoodyak_Rhash@
272
+ @ } while (XLen >= Xoodyak_Rhash)@
273
+ @
274
+ @ return initialLength - XLen@
275
+ @ }
276
+ @
277
+ .align 4
278
+ .global Xoodyak_AbsorbHashFullBlocks
279
+ .type Xoodyak_AbsorbHashFullBlocks, %function;
280
+ Xoodyak_AbsorbHashFullBlocks:
281
+ push {r4-r12,lr}
282
+ mov r4, r2 @ r4 initialLength
283
+ subs r2, r2, #16
284
+ ldr r5, =Xoodyak_AbsorbHashFullBlocks_Ret
285
+ push {r0-r5}
286
+ ldmia r0, {r2-r12,lr}
287
+ Xoodyak_AbsorbHashFullBlocks_Loop:
288
+ b Xoodoo_Permute_12roundsAsm
289
+ Xoodyak_AbsorbHashFullBlocks_Ret:
290
+ ldr r0, [sp, #offsetAbsorbX]
291
+ ldr r1, [r0], #4
292
+ eors r2, r2, r1
293
+ ldr r1, [r0], #4
294
+ eors r3, r3, r1
295
+ ldr r1, [r0], #4
296
+ eors r4, r4, r1
297
+ ldr r1, [r0], #4
298
+ eors r6, r6, #1
299
+ eors r5, r5, r1
300
+ ldr r1, [sp, #offsetAbsorbXLen]
301
+ str r0, [sp, #offsetAbsorbX]
302
+ subs r1, r1, #16
303
+ str r1, [sp, #offsetAbsorbXLen]
304
+ bcs Xoodyak_AbsorbHashFullBlocks_Loop
305
+ ldr r0, [sp, #offsetInstance]
306
+ stmia r0, {r2-r12,lr}
307
+ pop {r0-r5}
308
+ adds r2, r2, #16
309
+ sub r0, r4, r2
310
+ pop {r4-r12,pc}
311
+
312
+
313
+ @ ----------------------------------------------------------------------------
314
+ @
315
+ @ size_t Xoodyak_SqueezeKeyedFullBlocks(void *state, uint8_t *Y, size_t YLen)
316
+ @ {
317
+ @ size_t initialLength = YLen@
318
+ @
319
+ @ do {
320
+ @ SnP_AddByte(state, 0x01, 0)@ /* Xoodyak_Down(instance, NULL, 0, 0)@ */
321
+ @ SnP_Permute(state )@ /* Xoodyak_Up(instance, Y, Xoodyak_Rkout, 0)@ */
322
+ @ SnP_ExtractBytes(state, Y, 0, Xoodyak_Rkout)@
323
+ @ Y += Xoodyak_Rkout@
324
+ @ YLen -= Xoodyak_Rkout@
325
+ @ } while (YLen >= Xoodyak_Rkout)@
326
+ @
327
+ @ return initialLength - YLen@
328
+ @ }
329
+ @
330
+ .equ offsetSqueezeY , 4
331
+ .equ offsetSqueezeYLen , 8
332
+
333
+ .align 4
334
+ .global Xoodyak_SqueezeKeyedFullBlocks
335
+ .type Xoodyak_SqueezeKeyedFullBlocks, %function;
336
+ Xoodyak_SqueezeKeyedFullBlocks:
337
+ push {r4-r12,lr}
338
+ mov r4, r2 @ r4 initialLength
339
+ subs r2, r2, #24
340
+ ldr r5, =Xoodyak_SqueezeKeyedFullBlocks_Ret
341
+ push {r0-r5}
342
+ ldmia r0, {r2-r12,lr}
343
+ Xoodyak_SqueezeKeyedFullBlocks_Loop:
344
+ eors r2, r2, #1
345
+ b Xoodoo_Permute_12roundsAsm
346
+ Xoodyak_SqueezeKeyedFullBlocks_Ret:
347
+ ldr r0, [sp, #offsetSqueezeY]
348
+ str r2, [r0], #4
349
+ str r3, [r0], #4
350
+ str r4, [r0], #4
351
+ str r5, [r0], #4
352
+ str r6, [r0], #4
353
+ str r7, [r0], #4
354
+ ldr r1, [sp, #offsetSqueezeYLen]
355
+ str r0, [sp, #offsetSqueezeY]
356
+ subs r1, r1, #24
357
+ str r1, [sp, #offsetSqueezeYLen]
358
+ bcs Xoodyak_SqueezeKeyedFullBlocks_Loop
359
+ ldr r0, [sp, #offsetInstance]
360
+ stmia r0, {r2-r12,lr}
361
+ pop {r0-r5}
362
+ adds r2, r2, #24
363
+ sub r0, r4, r2
364
+ pop {r4-r12,pc}
365
+
366
+
367
+ @ ----------------------------------------------------------------------------
368
+ @
369
+ @ size_t Xoodyak_SqueezeHashFullBlocks(void *state, uint8_t *Y, size_t YLen)
370
+ @ {
371
+ @ size_t initialLength = YLen@
372
+ @
373
+ @ do {
374
+ @ SnP_AddByte(state, 0x01, 0)@ /* Xoodyak_Down(instance, NULL, 0, 0)@ */
375
+ @ SnP_Permute(state)@ /* Xoodyak_Up(instance, Y, Xoodyak_Rhash, 0)@ */
376
+ @ SnP_ExtractBytes(state, Y, 0, Xoodyak_Rhash)@
377
+ @ Y += Xoodyak_Rhash@
378
+ @ YLen -= Xoodyak_Rhash@
379
+ @ } while (YLen >= Xoodyak_Rhash)@
380
+ @
381
+ @ return initialLength - YLen@
382
+ @ }
383
+ @
384
+ .align 4
385
+ .global Xoodyak_SqueezeHashFullBlocks
386
+ .type Xoodyak_SqueezeHashFullBlocks, %function;
387
+ Xoodyak_SqueezeHashFullBlocks:
388
+ push {r4-r12,lr}
389
+ mov r4, r2 @ r4 initialLength
390
+ subs r2, r2, #16
391
+ ldr r5, =Xoodyak_SqueezeHashFullBlocks_Ret
392
+ push {r0-r5}
393
+ ldmia r0, {r2-r12,lr}
394
+ Xoodyak_SqueezeHashFullBlocks_Loop:
395
+ eors r2, r2, #1
396
+ b Xoodoo_Permute_12roundsAsm
397
+ Xoodyak_SqueezeHashFullBlocks_Ret:
398
+ ldr r0, [sp, #offsetSqueezeY]
399
+ str r2, [r0], #4
400
+ str r3, [r0], #4
401
+ str r4, [r0], #4
402
+ str r5, [r0], #4
403
+ ldr r1, [sp, #offsetSqueezeYLen]
404
+ str r0, [sp, #offsetSqueezeY]
405
+ subs r1, r1, #16
406
+ str r1, [sp, #offsetSqueezeYLen]
407
+ bcs Xoodyak_SqueezeHashFullBlocks_Loop
408
+ ldr r0, [sp, #offsetInstance]
409
+ stmia r0, {r2-r12,lr}
410
+ pop {r0-r5}
411
+ adds r2, r2, #16
412
+ sub r0, r4, r2
413
+ pop {r4-r12,pc}
414
+
415
+
416
+ @ ----------------------------------------------------------------------------
417
+ @
418
+ @ size_t Xoodyak_EncryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
419
+ @ {
420
+ @ size_t initialLength = IOLen@
421
+ @
422
+ @ do {
423
+ @ SnP_Permute(state)@
424
+ @ SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout)@
425
+ @ SnP_OverwriteBytes(state, O, 0, Xoodyak_Rkout)@
426
+ @ SnP_AddByte(state, 0x01, Xoodyak_Rkout)@
427
+ @ I += Xoodyak_Rkout@
428
+ @ O += Xoodyak_Rkout@
429
+ @ IOLen -= Xoodyak_Rkout@
430
+ @ } while (IOLen >= Xoodyak_Rkout)@
431
+ @
432
+ @ return initialLength - IOLen@
433
+ @ }
434
+ @
435
+ .equ offsetCryptI , 4+8
436
+ .equ offsetCryptO , 8+8
437
+ .equ offsetCryptIOLen , 12
438
+
439
+ .align 4
440
+ .global Xoodyak_EncryptFullBlocks
441
+ .type Xoodyak_EncryptFullBlocks, %function;
442
+ Xoodyak_EncryptFullBlocks:
443
+ push {r4-r12,lr}
444
+ mov r4, r3 @ r4 initialLength
445
+ subs r3, r3, #24
446
+ ldr r5, =Xoodyak_EncryptFullBlocks_Ret
447
+ push {r0-r5}
448
+ ldmia r0, {r2-r12,lr}
449
+ Xoodyak_EncryptFullBlocks_Loop:
450
+ b Xoodoo_Permute_12roundsAsm
451
+ Xoodyak_EncryptFullBlocks_Ret:
452
+ push {r10, r11}
453
+ ldr r11, [sp, #offsetCryptI]
454
+ ldr r10, [sp, #offsetCryptO]
455
+ ldr r0, [r11], #4
456
+ ldr r1, [r11], #4
457
+ eors r2, r2, r0
458
+ str r2, [r10], #4
459
+ eors r3, r3, r1
460
+ ldr r0, [r11], #4
461
+ str r3, [r10], #4
462
+ eors r4, r4, r0
463
+ ldr r1, [r11], #4
464
+ str r4, [r10], #4
465
+ eors r5, r5, r1
466
+ ldr r0, [r11], #4
467
+ str r5, [r10], #4
468
+ eors r6, r6, r0
469
+ ldr r1, [r11], #4
470
+ str r6, [r10], #4
471
+ eors r7, r7, r1
472
+ str r7, [r10], #4
473
+ str r10, [sp, #offsetCryptO]
474
+ str r11, [sp, #offsetCryptI]
475
+ pop {r10, r11}
476
+ ldr r0, [sp, #offsetCryptIOLen]
477
+ eors r8, r8, #1
478
+ subs r0, r0, #24
479
+ str r0, [sp, #offsetCryptIOLen]
480
+ bcs Xoodyak_EncryptFullBlocks_Loop
481
+ ldr r0, [sp, #offsetInstance]
482
+ stmia r0, {r2-r12,lr}
483
+ pop {r0-r5}
484
+ adds r3, r3, #24
485
+ sub r0, r4, r3
486
+ pop {r4-r12,pc}
487
+
488
+
489
+ @ ----------------------------------------------------------------------------
490
+ @
491
+ @ size_t Xoodyak_DecryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
492
+ @ {
493
+ @ size_t initialLength = IOLen@
494
+ @
495
+ @ do {
496
+ @ SnP_Permute(state)@
497
+ @ SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout)@
498
+ @ SnP_AddBytes(state, O, 0, Xoodyak_Rkout)@
499
+ @ SnP_AddByte(state, 0x01, Xoodyak_Rkout)@
500
+ @ I += Xoodyak_Rkout@
501
+ @ O += Xoodyak_Rkout@
502
+ @ IOLen -= Xoodyak_Rkout@
503
+ @ } while (IOLen >= Xoodyak_Rkout)@
504
+ @
505
+ @ return initialLength - IOLen@
506
+ @ }
507
+ @
508
+ .align 4
509
+ .global Xoodyak_DecryptFullBlocks
510
+ .type Xoodyak_DecryptFullBlocks, %function;
511
+ Xoodyak_DecryptFullBlocks:
512
+ push {r4-r12,lr}
513
+ mov r4, r3 @ r4 initialLength
514
+ subs r3, r3, #24
515
+ ldr r5, =Xoodyak_DecryptFullBlocks_Ret
516
+ push {r0-r5}
517
+ ldmia r0, {r2-r12,lr}
518
+ Xoodyak_DecryptFullBlocks_Loop:
519
+ b Xoodoo_Permute_12roundsAsm
520
+ Xoodyak_DecryptFullBlocks_Ret:
521
+ push {r10, r11}
522
+ ldr r11, [sp, #offsetCryptI]
523
+ ldr r10, [sp, #offsetCryptO]
524
+ ldr r0, [r11], #4
525
+ ldr r1, [r11], #4
526
+ eors r2, r2, r0
527
+ str r2, [r10], #4
528
+ mov r2, r0
529
+ eors r3, r3, r1
530
+ ldr r0, [r11], #4
531
+ str r3, [r10], #4
532
+ mov r3, r1
533
+ eors r4, r4, r0
534
+ ldr r1, [r11], #4
535
+ str r4, [r10], #4
536
+ mov r4, r0
537
+ eors r5, r5, r1
538
+ ldr r0, [r11], #4
539
+ str r5, [r10], #4
540
+ mov r5, r1
541
+ eors r6, r6, r0
542
+ ldr r1, [r11], #4
543
+ str r6, [r10], #4
544
+ mov r6, r0
545
+ eors r7, r7, r1
546
+ str r7, [r10], #4
547
+ mov r7, r1
548
+ str r10, [sp, #offsetCryptO]
549
+ str r11, [sp, #offsetCryptI]
550
+ pop {r10, r11}
551
+ ldr r0, [sp, #offsetCryptIOLen]
552
+ eors r8, r8, #1
553
+ subs r0, r0, #24
554
+ str r0, [sp, #offsetCryptIOLen]
555
+ bcs Xoodyak_DecryptFullBlocks_Loop
556
+ ldr r0, [sp, #offsetInstance]
557
+ stmia r0, {r2-r12,lr}
558
+ pop {r0-r5}
559
+ adds r3, r3, #24
560
+ sub r0, r4, r3
561
+ pop {r4-r12,pc}
562
+
563
+