sleeping_kangaroo12 0.0.1 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (296) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +27 -0
  3. data/README.md +48 -53
  4. data/ext/Rakefile +12 -37
  5. data/ext/binding/sleeping_kangaroo12.c +1 -16
  6. data/ext/{xkcp → k12}/Makefile +0 -0
  7. data/ext/k12/Makefile.build +118 -0
  8. data/ext/k12/README.markdown +86 -0
  9. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-ARMv8Asha3.S +623 -0
  10. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-SnP.h +65 -0
  11. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-opt64.c +227 -0
  12. data/ext/{xkcp/lib/low/KeccakP-1600/compact → k12/lib/Inplace32BI}/KeccakP-1600-SnP.h +4 -9
  13. data/ext/{xkcp/lib/low/KeccakP-1600/plain-32bits-inplace → k12/lib/Inplace32BI}/KeccakP-1600-inplace32BI.c +65 -160
  14. data/ext/k12/lib/KangarooTwelve.c +332 -0
  15. data/ext/{xkcp/lib/high/KangarooTwelve → k12/lib}/KangarooTwelve.h +53 -16
  16. data/ext/{xkcp/lib/low/KeccakP-1600/AVX2 → k12/lib/Optimized64}/KeccakP-1600-AVX2.s +122 -558
  17. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512-plainC.c +241 -0
  18. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512.s +551 -0
  19. data/ext/k12/lib/Optimized64/KeccakP-1600-SnP.h +74 -0
  20. data/ext/{xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros → k12/lib/Optimized64/KeccakP-1600-opt64.c} +447 -169
  21. data/ext/k12/lib/Optimized64/KeccakP-1600-runtimeDispatch.c +406 -0
  22. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX2.c +419 -0
  23. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX512.c +458 -0
  24. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-SSSE3.c +438 -0
  25. data/ext/{xkcp/lib/low/KeccakP-1600/plain-64bits → k12/lib/Plain64}/KeccakP-1600-SnP.h +14 -20
  26. data/ext/{xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h → k12/lib/Plain64/KeccakP-1600-plain64.c} +9 -8
  27. data/ext/{xkcp/lib/common → k12/lib}/align.h +3 -2
  28. data/ext/{xkcp/lib/common → k12/lib}/brg_endian.h +0 -0
  29. data/ext/{xkcp → k12}/support/Build/ExpandProducts.xsl +0 -0
  30. data/ext/{xkcp → k12}/support/Build/ToGlobalMakefile.xsl +0 -0
  31. data/ext/{xkcp → k12}/support/Build/ToOneTarget.xsl +0 -0
  32. data/ext/{xkcp → k12}/support/Build/ToTargetConfigFile.xsl +0 -0
  33. data/ext/{xkcp → k12}/support/Build/ToTargetMakefile.xsl +10 -16
  34. data/ext/{xkcp → k12}/support/Build/ToVCXProj.xsl +0 -0
  35. data/lib/sleeping_kangaroo12/binding.rb +2 -1
  36. data/lib/sleeping_kangaroo12/build/loader.rb +1 -0
  37. data/lib/sleeping_kangaroo12/build/platform.rb +1 -0
  38. data/lib/sleeping_kangaroo12/digest.rb +38 -4
  39. data/lib/sleeping_kangaroo12/version.rb +1 -1
  40. metadata +48 -288
  41. data/ext/config/xkcp.build +0 -17
  42. data/ext/xkcp/LICENSE +0 -1
  43. data/ext/xkcp/Makefile.build +0 -200
  44. data/ext/xkcp/README.markdown +0 -296
  45. data/ext/xkcp/lib/HighLevel.build +0 -143
  46. data/ext/xkcp/lib/LowLevel.build +0 -757
  47. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +0 -301
  48. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +0 -81
  49. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +0 -125
  50. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +0 -48
  51. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +0 -79
  52. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +0 -81
  53. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +0 -73
  54. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +0 -195
  55. data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +0 -111
  56. data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +0 -76
  57. data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +0 -314
  58. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +0 -61
  59. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +0 -67
  60. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +0 -128
  61. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +0 -93
  62. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +0 -599
  63. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +0 -573
  64. data/ext/xkcp/lib/high/Ketje/Ketjev2.c +0 -87
  65. data/ext/xkcp/lib/high/Ketje/Ketjev2.h +0 -88
  66. data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +0 -274
  67. data/ext/xkcp/lib/high/Keyak/Keyakv2.c +0 -132
  68. data/ext/xkcp/lib/high/Keyak/Keyakv2.h +0 -217
  69. data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +0 -81
  70. data/ext/xkcp/lib/high/Keyak/Motorist.inc +0 -953
  71. data/ext/xkcp/lib/high/Kravatte/Kravatte.c +0 -533
  72. data/ext/xkcp/lib/high/Kravatte/Kravatte.h +0 -115
  73. data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +0 -557
  74. data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +0 -247
  75. data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +0 -66
  76. data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +0 -336
  77. data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +0 -26
  78. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +0 -55
  79. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +0 -35
  80. data/ext/xkcp/lib/high/Xoofff/Xoofff.c +0 -634
  81. data/ext/xkcp/lib/high/Xoofff/Xoofff.h +0 -147
  82. data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +0 -483
  83. data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +0 -241
  84. data/ext/xkcp/lib/high/common/Phases.h +0 -25
  85. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +0 -41
  86. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +0 -1666
  87. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +0 -1655
  88. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +0 -1268
  89. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +0 -1264
  90. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +0 -1178
  91. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +0 -1175
  92. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +0 -1338
  93. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +0 -1336
  94. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +0 -1343
  95. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +0 -1339
  96. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +0 -42
  97. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +0 -823
  98. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +0 -831
  99. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +0 -31
  100. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +0 -540
  101. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +0 -42
  102. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +0 -733
  103. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +0 -1121
  104. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +0 -52
  105. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +0 -623
  106. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +0 -47
  107. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +0 -6
  108. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +0 -6
  109. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +0 -6
  110. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +0 -1031
  111. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +0 -53
  112. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +0 -44
  113. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +0 -476
  114. data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +0 -6
  115. data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +0 -6
  116. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +0 -305
  117. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +0 -420
  118. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +0 -43
  119. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +0 -565
  120. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +0 -7
  121. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +0 -7
  122. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +0 -8
  123. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +0 -6
  124. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +0 -6
  125. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +0 -44
  126. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +0 -23
  127. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +0 -625
  128. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +0 -44
  129. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +0 -440
  130. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +0 -42
  131. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +0 -1196
  132. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +0 -1124
  133. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +0 -1196
  134. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +0 -1392
  135. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +0 -1394
  136. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +0 -42
  137. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +0 -7
  138. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +0 -7
  139. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +0 -7
  140. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +0 -850
  141. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +0 -51
  142. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +0 -957
  143. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +0 -49
  144. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +0 -8
  145. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +0 -8
  146. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +0 -9
  147. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +0 -9
  148. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +0 -45
  149. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +0 -37
  150. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +0 -1321
  151. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +0 -55
  152. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +0 -7
  153. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +0 -7
  154. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +0 -7
  155. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +0 -7
  156. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +0 -7
  157. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +0 -7
  158. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +0 -881
  159. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +0 -51
  160. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +0 -45
  161. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +0 -37
  162. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +0 -45
  163. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +0 -38
  164. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +0 -1615
  165. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +0 -57
  166. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +0 -7
  167. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +0 -7
  168. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +0 -7
  169. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +0 -45
  170. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +0 -37
  171. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +0 -45
  172. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +0 -38
  173. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +0 -45
  174. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +0 -38
  175. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +0 -41
  176. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +0 -442
  177. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +0 -446
  178. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +0 -419
  179. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +0 -427
  180. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +0 -41
  181. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +0 -647
  182. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +0 -39
  183. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +0 -190
  184. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +0 -43
  185. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +0 -412
  186. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +0 -23
  187. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +0 -41
  188. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +0 -454
  189. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +0 -458
  190. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +0 -455
  191. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +0 -458
  192. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +0 -41
  193. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +0 -728
  194. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +0 -43
  195. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +0 -414
  196. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +0 -23
  197. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +0 -42
  198. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +0 -527
  199. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +0 -533
  200. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +0 -528
  201. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +0 -534
  202. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +0 -521
  203. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +0 -527
  204. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +0 -517
  205. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +0 -523
  206. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +0 -550
  207. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +0 -556
  208. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +0 -32
  209. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +0 -432
  210. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +0 -42
  211. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +0 -929
  212. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +0 -40
  213. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +0 -244
  214. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +0 -46
  215. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +0 -184
  216. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +0 -454
  217. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +0 -459
  218. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +0 -83
  219. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +0 -88
  220. data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +0 -7
  221. data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +0 -7
  222. data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +0 -7
  223. data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +0 -7
  224. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +0 -44
  225. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +0 -437
  226. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +0 -23
  227. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +0 -57
  228. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +0 -475
  229. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +0 -480
  230. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +0 -590
  231. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +0 -590
  232. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +0 -126
  233. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +0 -68
  234. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +0 -174
  235. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +0 -80
  236. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +0 -68
  237. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +0 -142
  238. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +0 -55
  239. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +0 -1086
  240. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +0 -1092
  241. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +0 -721
  242. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +0 -726
  243. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +0 -723
  244. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +0 -729
  245. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +0 -1164
  246. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +0 -1165
  247. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +0 -562
  248. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +0 -563
  249. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +0 -563
  250. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +0 -565
  251. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +0 -55
  252. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +0 -476
  253. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +0 -485
  254. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +0 -362
  255. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +0 -367
  256. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +0 -43
  257. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +0 -1341
  258. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +0 -581
  259. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +0 -58
  260. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +0 -332
  261. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +0 -329
  262. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +0 -53
  263. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +0 -355
  264. data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +0 -79
  265. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +0 -56
  266. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +0 -399
  267. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +0 -127
  268. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +0 -43
  269. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +0 -253
  270. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +0 -1044
  271. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +0 -49
  272. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +0 -45
  273. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +0 -37
  274. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +0 -1587
  275. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +0 -48
  276. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +0 -1202
  277. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +0 -48
  278. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +0 -484
  279. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +0 -44
  280. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +0 -45
  281. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +0 -37
  282. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +0 -939
  283. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +0 -49
  284. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +0 -1216
  285. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +0 -48
  286. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +0 -45
  287. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +0 -37
  288. data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +0 -290
  289. data/ext/xkcp/lib/low/common/SnP-Relaned.h +0 -141
  290. data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +0 -133
  291. data/ext/xkcp/support/Kernel-PMU/Makefile +0 -8
  292. data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +0 -129
  293. data/ext/xkcp/support/Kernel-PMU/load-module +0 -1
  294. data/ext/xkcp/util/KeccakSum/KeccakSum.c +0 -394
  295. data/ext/xkcp/util/KeccakSum/base64.c +0 -86
  296. data/ext/xkcp/util/KeccakSum/base64.h +0 -12
@@ -1,446 +0,0 @@
1
- @
2
- @ 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 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
- @ This file implements Keccak-p[200] in a SnP-compatible way.
19
- @ Please refer to SnP-documentation.h for more details.
20
- @
21
- @ This implementation comes with KeccakP-200-SnP.h in the same folder.
22
- @ Please refer to LowLevel.build for the exact list of other files it must be combined with.
23
- @
24
-
25
- @ WARNING: This implementation assumes a little endian CPU with@ ARMv6M architecture (e.g., Cortex-M0).
26
-
27
-
28
- .thumb
29
- .syntax unified
30
- .text
31
-
32
- .equ _ba, 0
33
- .equ _be, 1
34
- .equ _bi, 2
35
- .equ _bo, 3
36
- .equ _bu, 4
37
- .equ _ga, 5
38
- .equ _ge, 6
39
- .equ _gi, 7
40
- .equ _go, 8
41
- .equ _gu, 9
42
- .equ _ka, 10
43
- .equ _ke, 11
44
- .equ _ki, 12
45
- .equ _ko, 13
46
- .equ _ku, 14
47
- .equ _ma, 15
48
- .equ _me, 16
49
- .equ _mi, 17
50
- .equ _mo, 18
51
- .equ _mu, 19
52
- .equ _sa, 20
53
- .equ _se, 21
54
- .equ _si, 22
55
- .equ _so, 23
56
- .equ _su, 24
57
-
58
- .macro xor5 result,ptr,b,g,k,m,s
59
- ldrb \result, [\ptr, #\b]
60
- ldrb r7, [\ptr, #\g]
61
- eors \result, \result, r7
62
- ldrb r7, [\ptr, #\k]
63
- eors \result, \result, r7
64
- ldrb r7, [\ptr, #\m]
65
- eors \result, \result, r7
66
- ldrb r7, [\ptr, #\s]
67
- eors \result, \result, r7
68
- .endm
69
-
70
- .macro xorrol b, yy, rr
71
- mov r7, \yy
72
- eors \b, \b, r7
73
- .if \rr != 0
74
- lsls r7, \b, #\rr
75
- lsrs \b, \b, #8-\rr
76
- orrs \b, \b, r7
77
- uxtb \b, \b
78
- .endif
79
- .endm
80
-
81
- .macro rolxor d, a, b, rot
82
- sxtb r7, \b
83
- rors r7, r7, \rot
84
- eors r7, r7, \a
85
- uxtb r7, r7
86
- mov \d, r7
87
- .endm
88
-
89
- .macro xandnot resptr, resofs, aa, bb, cc, temp
90
- mov \temp, \cc
91
- bics \temp, \temp, \bb
92
- eors \temp, \temp, \aa
93
- strb \temp, [\resptr, #\resofs]
94
- .endm
95
-
96
- .macro xandnotRC resptr, resofs, aa, bb, cc, rco
97
- bics \cc, \cc, \bb
98
- eors \cc, \cc, \aa
99
- mov r7, r8
100
- ldrb \bb, [r7, #\rco]
101
- eors \cc, \cc, \bb
102
- strb \cc, [\resptr, #\resofs]
103
- .endm
104
-
105
- .macro KeccakRound sOut, sIn, rco
106
- @prepTheta
107
- push { \sOut }
108
- movs \sOut, #31
109
- xor5 r1, \sIn, _ba, _ga, _ka, _ma, _sa
110
- xor5 r2, \sIn, _be, _ge, _ke, _me, _se
111
- xor5 r3, \sIn, _bi, _gi, _ki, _mi, _si
112
- xor5 r4, \sIn, _bo, _go, _ko, _mo, _so
113
- xor5 r5, \sIn, _bu, _gu, _ku, _mu, _su
114
- rolxor r9, r5, r2, \sOut
115
- rolxor r10, r1, r3, \sOut
116
- rolxor r11, r2, r4, \sOut
117
- rolxor r12, r3, r5, \sOut
118
- rolxor lr, r4, r1, \sOut
119
- pop { \sOut }
120
- @thetaRhoPiChiIota
121
- ldrb r1, [\sIn, #_bo]
122
- ldrb r2, [\sIn, #_gu]
123
- ldrb r3, [\sIn, #_ka]
124
- ldrb r4, [\sIn, #_me]
125
- ldrb r5, [\sIn, #_si]
126
- xorrol r1, r12, 4
127
- xorrol r2, lr, 4
128
- xorrol r3, r9, 3
129
- xorrol r4, r10, 5
130
- xorrol r5, r11, 5
131
- xandnot \sOut, _ga, r1, r2, r3, r7
132
- xandnot \sOut, _ge, r2, r3, r4, r7
133
- xandnot \sOut, _gi, r3, r4, r5, r7
134
- xandnot \sOut, _go, r4, r5, r1, r7
135
- xandnot \sOut, _gu, r5, r1, r2, r7
136
- ldrb r1, [\sIn, #_be]
137
- ldrb r2, [\sIn, #_gi]
138
- ldrb r3, [\sIn, #_ko]
139
- ldrb r4, [\sIn, #_mu]
140
- ldrb r5, [\sIn, #_sa]
141
- xorrol r1, r10, 1
142
- xorrol r2, r11, 6
143
- xorrol r3, r12, 1
144
- xorrol r4, lr, 0
145
- xorrol r5, r9, 2
146
- xandnot \sOut, _ka, r1, r2, r3, r7
147
- xandnot \sOut, _ke, r2, r3, r4, r7
148
- xandnot \sOut, _ki, r3, r4, r5, r7
149
- xandnot \sOut, _ko, r4, r5, r1, r7
150
- xandnot \sOut, _ku, r5, r1, r2, r7
151
- ldrb r1, [\sIn, #_bu]
152
- ldrb r2, [\sIn, #_ga]
153
- ldrb r3, [\sIn, #_ke]
154
- ldrb r4, [\sIn, #_mi]
155
- ldrb r5, [\sIn, #_so]
156
- xorrol r1, lr, 3
157
- xorrol r2, r9, 4
158
- xorrol r3, r10, 2
159
- xorrol r4, r11, 7
160
- xorrol r5, r12, 0
161
- xandnot \sOut, _ma, r1, r2, r3, r7
162
- xandnot \sOut, _me, r2, r3, r4, r7
163
- xandnot \sOut, _mi, r3, r4, r5, r7
164
- xandnot \sOut, _mo, r4, r5, r1, r7
165
- xandnot \sOut, _mu, r5, r1, r2, r7
166
- ldrb r1, [\sIn, #_bi]
167
- ldrb r2, [\sIn, #_go]
168
- ldrb r3, [\sIn, #_ku]
169
- ldrb r4, [\sIn, #_ma]
170
- ldrb r5, [\sIn, #_se]
171
- xorrol r1, r11, 6
172
- xorrol r2, r12, 7
173
- xorrol r3, lr, 7
174
- xorrol r4, r9, 1
175
- xorrol r5, r10, 2
176
- xandnot \sOut, _sa, r1, r2, r3, r7
177
- xandnot \sOut, _se, r2, r3, r4, r7
178
- xandnot \sOut, _si, r3, r4, r5, r7
179
- xandnot \sOut, _so, r4, r5, r1, r7
180
- xandnot \sOut, _su, r5, r1, r2, r7
181
- ldrb r1, [\sIn, #_ba]
182
- ldrb r2, [\sIn, #_ge]
183
- ldrb r3, [\sIn, #_ki]
184
- ldrb r4, [\sIn, #_mo]
185
- ldrb r5, [\sIn, #_su]
186
- xorrol r1, r9, 0
187
- xorrol r2, r10, 4
188
- xorrol r3, r11, 3
189
- xorrol r4, r12, 5
190
- xorrol r5, lr, 6
191
- xandnot \sOut, _be, r2, r3, r4, r7
192
- xandnot \sOut, _bi, r3, r4, r5, r7
193
- xandnot \sOut, _bo, r4, r5, r1, r7
194
- xandnot \sOut, _bu, r5, r1, r2, r7
195
- xandnotRC \sOut, _ba, r1, r2, r3, \rco
196
- .endm
197
-
198
- @----------------------------------------------------------------------------
199
- @
200
- @ void KeccakP200_StaticInitialize( void )
201
- @
202
- .align 4
203
- .global KeccakP200_StaticInitialize
204
- .type KeccakP200_StaticInitialize, %function;
205
- KeccakP200_StaticInitialize:
206
- bx lr
207
-
208
-
209
- @----------------------------------------------------------------------------
210
- @
211
- @ void KeccakP200_Initialize(void *state)
212
- @
213
- .align 4
214
- .global KeccakP200_Initialize
215
- .type KeccakP200_Initialize, %function;
216
- KeccakP200_Initialize:
217
- movs r1, #0
218
- movs r2, #0
219
- movs r3, #0
220
- stmia r0!, { r1 - r3 }
221
- stmia r0!, { r1 - r3 }
222
- strb r1, [r0]
223
- bx lr
224
-
225
-
226
- @ ----------------------------------------------------------------------------
227
- @
228
- @ void KeccakP200_AddByte(void *state, unsigned char byte, unsigned int offset)
229
- @
230
- .align 4
231
- .global KeccakP200_AddByte
232
- .type KeccakP200_AddByte, %function;
233
- KeccakP200_AddByte:
234
- ldrb r3, [r0, r2]
235
- eors r3, r3, r1
236
- strb r3, [r0, r2]
237
- bx lr
238
-
239
-
240
- @----------------------------------------------------------------------------
241
- @
242
- @ void KeccakP200_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
243
- @
244
- .align 4
245
- .global KeccakP200_AddBytes
246
- .type KeccakP200_AddBytes, %function;
247
- KeccakP200_AddBytes:
248
- subs r3, r3, #1
249
- bcc KeccakP200_AddBytes_Exit
250
- adds r0, r0, r2
251
- push {r4,lr}
252
- KeccakP200_AddBytes_Loop:
253
- ldrb r2, [r1, r3]
254
- ldrb r4, [r0, r3]
255
- eors r2, r2, r4
256
- strb r2, [r0, r3]
257
- subs r3, r3, #1
258
- bcs KeccakP200_AddBytes_Loop
259
- pop {r4,pc}
260
- KeccakP200_AddBytes_Exit:
261
- bx lr
262
-
263
-
264
- @ ----------------------------------------------------------------------------
265
- @
266
- @ void KeccakP200_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
267
- @
268
- .align 4
269
- .global KeccakP200_OverwriteBytes
270
- .type KeccakP200_OverwriteBytes, %function;
271
- KeccakP200_OverwriteBytes:
272
- subs r3, r3, #1
273
- bcc KeccakP200_OverwriteBytes_Exit
274
- adds r0, r0, r2
275
- KeccakP200_OverwriteBytes_Loop:
276
- ldrb r2, [r1, r3]
277
- strb r2, [r0, r3]
278
- subs r3, r3, #1
279
- bcs KeccakP200_OverwriteBytes_Loop
280
- KeccakP200_OverwriteBytes_Exit:
281
- bx lr
282
-
283
-
284
- @----------------------------------------------------------------------------
285
- @
286
- @ void KeccakP200_OverwriteWithZeroes(void *state, unsigned int byteCount)
287
- @
288
- .align 4
289
- .global KeccakP200_OverwriteWithZeroes
290
- .type KeccakP200_OverwriteWithZeroes, %function;
291
- KeccakP200_OverwriteWithZeroes:
292
- movs r3, #0
293
- cmp r1, #0
294
- beq KeccakP200_OverwriteWithZeroes_Exit
295
- KeccakP200_OverwriteWithZeroes_LoopBytes:
296
- subs r1, r1, #1
297
- strb r3, [r0, r1]
298
- bne KeccakP200_OverwriteWithZeroes_LoopBytes
299
- KeccakP200_OverwriteWithZeroes_Exit:
300
- bx lr
301
-
302
-
303
- @ ----------------------------------------------------------------------------
304
- @
305
- @ void KeccakP200_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
306
- @
307
- .align 4
308
- .global KeccakP200_ExtractBytes
309
- .type KeccakP200_ExtractBytes, %function;
310
- KeccakP200_ExtractBytes:
311
- subs r3, r3, #1
312
- bcc KeccakP200_ExtractBytes_Exit
313
- adds r0, r0, r2
314
- KeccakP200_ExtractBytes_Loop:
315
- ldrb r2, [r0, r3]
316
- strb r2, [r1, r3]
317
- subs r3, r3, #1
318
- bcs KeccakP200_ExtractBytes_Loop
319
- KeccakP200_ExtractBytes_Exit:
320
- bx lr
321
-
322
-
323
- @ ----------------------------------------------------------------------------
324
- @
325
- @ void KeccakP200_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
326
- @
327
- .align 4
328
- .global KeccakP200_ExtractAndAddBytes
329
- .type KeccakP200_ExtractAndAddBytes, %function;
330
- KeccakP200_ExtractAndAddBytes:
331
- push {r4,r5}
332
- adds r0, r0, r3 @ state += offset (offset register no longer needed, reuse for length)
333
- ldr r3, [sp, #8] @ get length argument from stack
334
- subs r3, r3, #1 @ .if length != 0
335
- bcc KeccakP200_ExtractAndAddBytes_Exit
336
- KeccakP200_ExtractAndAddBytes_Loop:
337
- ldrb r5, [r0, r3]
338
- ldrb r4, [r1, r3]
339
- eors r5, r5, r4
340
- strb r5, [r2, r3]
341
- subs r3, r3, #1
342
- bcs KeccakP200_ExtractAndAddBytes_Loop
343
- KeccakP200_ExtractAndAddBytes_Exit:
344
- pop {r4,r5}
345
- bx lr
346
-
347
-
348
- @----------------------------------------------------------------------------
349
- @
350
- @ void KeccakP200_Permute_Nrounds( void *state, unsigned int nr )
351
- @
352
- .align 4
353
- .global KeccakP200_Permute_Nrounds
354
- .type KeccakP200_Permute_Nrounds, %function;
355
- KeccakP200_Permute_Nrounds:
356
- push { r4 - r6, lr }
357
- mov r2, r8
358
- mov r3, r9
359
- mov r4, r10
360
- mov r5, r11
361
- mov r6, r12
362
- push { r2 - r7 }
363
- sub sp, sp, #25+7
364
- mov r6, sp
365
- adr r7, KeccakP200_Permute_RoundConstants18
366
- adds r7, r7, #18
367
- subs r7, r7, r1
368
- lsls r1, r1, #31
369
- beq KeccakP200_Permute_Nrounds_GoRoundLoop
370
- ldm r0!, { r1, r2, r3, r4, r5 } @ odd number of rounds: copy state to stack
371
- subs r0, r0, #20
372
- stm r6!, { r1, r2, r3, r4, r5 }
373
- subs r6, r6, #20
374
- ldr r1, [r0, #_sa]
375
- str r1, [r6, #_sa]
376
- ldrb r1, [r0, #_su]
377
- strb r1, [r6, #_su]
378
- subs r7, r7, #1
379
- mov r8, r7
380
- b KeccakP200_Permute_RoundOdd
381
- KeccakP200_Permute_Nrounds_GoRoundLoop:
382
- b KeccakP200_Permute_RoundLoop
383
-
384
-
385
- @----------------------------------------------------------------------------
386
- @
387
- @ void KeccakP200_Permute_18rounds( void *state )
388
- @
389
- .align 4
390
- .global KeccakP200_Permute_18rounds
391
- .type KeccakP200_Permute_18rounds, %function;
392
- KeccakP200_Permute_18rounds:
393
- push { r4 - r6, lr }
394
- mov r2, r8
395
- mov r3, r9
396
- mov r4, r10
397
- mov r5, r11
398
- mov r6, r12
399
- push { r2 - r7 }
400
- sub sp, sp, #25+7
401
- mov r6, sp
402
- adr r7, KeccakP200_Permute_RoundConstants18
403
- b KeccakP200_Permute_RoundLoop
404
- nop
405
-
406
- KeccakP200_Permute_RoundConstants18:
407
- .byte 0x01
408
- .byte 0x82
409
- .byte 0x8a
410
- .byte 0x00
411
- .byte 0x8b
412
- .byte 0x01
413
- .byte 0x81
414
- .byte 0x09
415
- .byte 0x8a
416
- .byte 0x88
417
- .byte 0x09
418
- .byte 0x0a
419
- .byte 0x8b
420
- .byte 0x8b
421
- .byte 0x89
422
- .byte 0x03
423
- .byte 0x02
424
- .byte 0x80
425
-
426
- .align 4
427
- KeccakP200_Permute_RoundLoop:
428
- mov r8, r7
429
- KeccakRound r6, r0, 0
430
- KeccakP200_Permute_RoundOdd:
431
- KeccakRound r0, r6, 1
432
- adds r7, r7, #2
433
- cmp r2, #0x80
434
- beq KeccakP200_Permute_Done
435
- b KeccakP200_Permute_RoundLoop
436
- KeccakP200_Permute_Done:
437
- add sp,sp,#25+7
438
- pop { r1 - r5, r7 }
439
- mov r8, r1
440
- mov r9, r2
441
- mov r10, r3
442
- mov r11, r4
443
- mov r12, r5
444
- pop { r4 - r6, pc }
445
-
446
-