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,723 +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
- PRESERVE8
20
- THUMB
21
- AREA |.text|, CODE, READONLY
22
-
23
- ; ----------------------------------------------------------------------------
24
- ;
25
- ; void Xoodoo_Initialize(void *state)
26
- ;
27
- align 4
28
- EXPORT Xoodoo_Initialize
29
- Xoodoo_Initialize PROC
30
- movs r1, #0
31
- movs r2, #0
32
- movs r3, #0
33
- movs r12, #0
34
- stmia r0!, { r1 - r3, r12 }
35
- stmia r0!, { r1 - r3, r12 }
36
- stmia r0!, { r1 - r3, r12 }
37
- bx lr
38
- align 4
39
- ENDP
40
-
41
- ; ----------------------------------------------------------------------------
42
- ;
43
- ; void Xoodoo_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
44
- ;
45
- EXPORT Xoodoo_AddBytes
46
- Xoodoo_AddBytes PROC
47
- push {r4,lr}
48
- adds r0, r0, r2 ; state += offset
49
- subs r3, r3, #4 ; if length >= 4
50
- bcc Xoodoo_AddBytes_Bytes
51
- Xoodoo_AddBytes_LanesLoop ; then, perform on lanes
52
- ldr r2, [r0]
53
- ldr r4, [r1], #4
54
- eors r2, r2, r4
55
- str r2, [r0], #4
56
- subs r3, r3, #4
57
- bcs Xoodoo_AddBytes_LanesLoop
58
- Xoodoo_AddBytes_Bytes
59
- adds r3, r3, #3
60
- bcc Xoodoo_AddBytes_Exit
61
- Xoodoo_AddBytes_BytesLoop
62
- ldrb r2, [r0]
63
- ldrb r4, [r1], #1
64
- eors r2, r2, r4
65
- strb r2, [r0], #1
66
- subs r3, r3, #1
67
- bcs Xoodoo_AddBytes_BytesLoop
68
- Xoodoo_AddBytes_Exit
69
- pop {r4,pc}
70
- align 4
71
- ENDP
72
-
73
- ; ----------------------------------------------------------------------------
74
- ;
75
- ; void Xoodoo_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
76
- ;
77
- EXPORT Xoodoo_OverwriteBytes
78
- Xoodoo_OverwriteBytes PROC
79
- adds r0, r0, r2 ; state += offset
80
- subs r3, r3, #4 ; if length >= 4
81
- bcc Xoodoo_OverwriteBytes_Bytes
82
- Xoodoo_OverwriteBytes_LanesLoop ; then, perform on words
83
- ldr r2, [r1], #4
84
- str r2, [r0], #4
85
- subs r3, r3, #4
86
- bcs Xoodoo_OverwriteBytes_LanesLoop
87
- Xoodoo_OverwriteBytes_Bytes
88
- adds r3, r3, #3
89
- bcc Xoodoo_OverwriteBytes_Exit
90
- Xoodoo_OverwriteBytes_BytesLoop
91
- ldrb r2, [r1], #1
92
- strb r2, [r0], #1
93
- subs r3, r3, #1
94
- bcs Xoodoo_OverwriteBytes_BytesLoop
95
- Xoodoo_OverwriteBytes_Exit
96
- bx lr
97
- align 4
98
- ENDP
99
-
100
- ; ----------------------------------------------------------------------------
101
- ;
102
- ; void Xoodoo_OverwriteWithZeroes(void *state, unsigned int byteCount)
103
- ;
104
- EXPORT Xoodoo_OverwriteWithZeroes
105
- Xoodoo_OverwriteWithZeroes PROC
106
- movs r3, #0
107
- lsrs r2, r1, #2
108
- beq Xoodoo_OverwriteWithZeroes_Bytes
109
- Xoodoo_OverwriteWithZeroes_LoopLanes
110
- str r3, [r0], #4
111
- subs r2, r2, #1
112
- bne Xoodoo_OverwriteWithZeroes_LoopLanes
113
- Xoodoo_OverwriteWithZeroes_Bytes
114
- ands r1, #3
115
- beq Xoodoo_OverwriteWithZeroes_Exit
116
- Xoodoo_OverwriteWithZeroes_LoopBytes
117
- strb r3, [r0], #1
118
- subs r1, r1, #1
119
- bne Xoodoo_OverwriteWithZeroes_LoopBytes
120
- Xoodoo_OverwriteWithZeroes_Exit
121
- bx lr
122
- align 4
123
- ENDP
124
-
125
- ; ----------------------------------------------------------------------------
126
- ;
127
- ; void Xoodoo_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
128
- ;
129
- EXPORT Xoodoo_ExtractBytes
130
- Xoodoo_ExtractBytes PROC
131
- adds r0, r0, r2 ; state += offset
132
- subs r3, r3, #4 ; if length >= 4
133
- bcc Xoodoo_ExtractBytes_Bytes
134
- Xoodoo_ExtractBytes_LanesLoop ; then, handle words
135
- ldr r2, [r0], #4
136
- str r2, [r1], #4
137
- subs r3, r3, #4
138
- bcs Xoodoo_ExtractBytes_LanesLoop
139
- Xoodoo_ExtractBytes_Bytes
140
- adds r3, r3, #3
141
- bcc Xoodoo_ExtractBytes_Exit
142
- Xoodoo_ExtractBytes_BytesLoop
143
- ldrb r2, [r0], #1
144
- strb r2, [r1], #1
145
- subs r3, r3, #1
146
- bcs Xoodoo_ExtractBytes_BytesLoop
147
- Xoodoo_ExtractBytes_Exit
148
- bx lr
149
- align 4
150
- ENDP
151
-
152
- ; ----------------------------------------------------------------------------
153
- ;
154
- ; void Xoodoo_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
155
- ;
156
- EXPORT Xoodoo_ExtractAndAddBytes
157
- Xoodoo_ExtractAndAddBytes PROC
158
- push {r4,r5}
159
- adds r0, r0, r3 ; state += offset (offset register no longer needed, reuse for length)
160
- ldr r3, [sp, #8] ; get length argument from stack
161
- subs r3, r3, #4 ; if length >= 4
162
- bcc Xoodoo_ExtractAndAddBytes_Bytes
163
- Xoodoo_ExtractAndAddBytes_LanesLoop ; then, handle words
164
- ldr r5, [r0], #4
165
- ldr r4, [r1], #4
166
- eors r5, r5, r4
167
- str r5, [r2], #4
168
- subs r3, r3, #4
169
- bcs Xoodoo_ExtractAndAddBytes_LanesLoop
170
- Xoodoo_ExtractAndAddBytes_Bytes
171
- adds r3, r3, #3
172
- bcc Xoodoo_ExtractAndAddBytes_Exit
173
- Xoodoo_ExtractAndAddBytes_BytesLoop
174
- ldrb r5, [r0], #1
175
- ldrb r4, [r1], #1
176
- eors r5, r5, r4
177
- strb r5, [r2], #1
178
- subs r3, r3, #1
179
- bcs Xoodoo_ExtractAndAddBytes_BytesLoop
180
- Xoodoo_ExtractAndAddBytes_Exit
181
- pop {r4,r5}
182
- bx lr
183
- align 4
184
- ENDP
185
-
186
- ; ----------------------------------------------------------------------------
187
-
188
- _r0 equ 5
189
- _r1 equ 14
190
- _t3 equ 1
191
-
192
- _w1 equ 11
193
-
194
- _e0 equ 2
195
- _e1 equ 8
196
-
197
- _rc12 equ 0x00000058
198
- _rc11 equ 0x00000038
199
- _rc10 equ 0x000003C0
200
- _rc9 equ 0x000000D0
201
- _rc8 equ 0x00000120
202
- _rc7 equ 0x00000014
203
- _rc6 equ 0x00000060
204
- _rc5 equ 0x0000002C
205
- _rc4 equ 0x00000380
206
- _rc3 equ 0x000000F0
207
- _rc2 equ 0x000001A0
208
- _rc1 equ 0x00000012
209
-
210
- _rc6x1 equ 0x00000003
211
- _rc5x2 equ 0x0b000000
212
- _rc4x3 equ 0x07000000
213
- _rc3x4 equ 0x000f0000
214
- _rc2x5 equ 0x0000d000
215
- _rc1x6 equ 0x00000048
216
-
217
- _rc12x1 equ 0xc0000002
218
- _rc11x2 equ 0x0e000000
219
- _rc10x3 equ 0x07800000
220
- _rc9x4 equ 0x000d0000
221
- _rc8x5 equ 0x00009000
222
- _rc7x6 equ 0x00000050
223
- _rc6x7 equ 0x0000000c
224
- _rc5x8 equ 0x2c000000
225
- _rc4x9 equ 0x1c000000
226
- _rc3x10 equ 0x003c0000
227
- _rc2x11 equ 0x00034000
228
- _rc1x12 equ 0x00000120
229
-
230
- ; ----------------------------------------------------------------------------
231
-
232
- MACRO
233
- mXor3 $ro, $a0, $a1, $a2, $rho_e1, $rho_e2
234
- if (($rho_e1)%32) == 0
235
- eors $ro, $a0, $a1
236
- else
237
- eor $ro, $a0, $a1, ROR #(32-($rho_e1))%32
238
- endif
239
- if (($rho_e2)%32) == 0
240
- eors $ro, $ro, $a2
241
- else
242
- eor $ro, $ro, $a2, ROR #(32-($rho_e2))%32
243
- endif
244
- MEND
245
-
246
- MACRO
247
- mRliXor $ro, $ri, $rot
248
- if (($rot)%32) == 0
249
- eors $ro, $ro, $ri
250
- else
251
- eor $ro, $ro, $ri, ROR #(32-($rot))%32
252
- endif
253
- MEND
254
-
255
- MACRO
256
- mRloXor $ro, $ri, $rot
257
- if (($rot)%32) == 0
258
- eors $ro, $ro, $ri
259
- else
260
- eor $ro, $ri, $ro, ROR #(32-($rot))%32
261
- endif
262
- MEND
263
-
264
- MACRO
265
- mChi3 $a0,$a1,$a2,$r0,$r1
266
- bic $r0, $a2, $a1, ROR #_w1
267
- eors $a0, $a0, $r0, ROR #32-_w1
268
- bic $r1, $a0, $a2, ROR #32-_w1
269
- eors $a1, $a1, $r1
270
- bic $r1, $a1, $a0
271
- eors $a2, $a2, $r1, ROR #_w1
272
- MEND
273
-
274
- MACRO
275
- mRound $r6i, $r7i, $r8i, $r9i, $r6w, $r7w, $r8w, $r9w, $r10i, $r11i, $r12i, $lri, $rho_e1, $rho_we2, $rc
276
-
277
- ; Theta: Column Parity Mixer (with late Rho-west, Rho-east bit rotations)
278
- mXor3 r0, r5, $r9i, $lri, $rho_e1, $rho_we2
279
- mXor3 r1, r2, $r6i, $r10i, $rho_e1, $rho_we2
280
- mRliXor r0, r0, _r1-_r0
281
- mRloXor r2, r0, 32-_r0
282
- mRloXor $r6i, r0, $rho_e1-_r0
283
- mRloXor $r10i, r0, $rho_we2-_r0
284
-
285
- mXor3 r0, r3, $r7i, $r11i, $rho_e1, $rho_we2
286
- mRliXor r1, r1, _r1-_r0
287
- mRloXor r3, r1, 32-_r0
288
- mRloXor $r7i, r1, $rho_e1-_r0
289
- mRloXor $r11i, r1, $rho_we2-_r0
290
-
291
- mXor3 r1, r4, $r8i, $r12i, $rho_e1, $rho_we2
292
- mRliXor r0, r0, _r1-_r0
293
- mRloXor r4, r0, 32-_r0
294
- mRloXor $r8i, r0, $rho_e1-_r0
295
- mRloXor $r12i, r0, $rho_we2-_r0
296
-
297
- mRliXor r1, r1, _r1-_r0
298
- mRloXor r5, r1, 32-_r0
299
- mRloXor $r9i, r1, $rho_e1-_r0
300
- mRloXor $lri, r1, $rho_we2-_r0
301
- ; After Theta the whole state is rotated -r0
302
- ; from here we must use a1.w instead of a1.i
303
-
304
- ; Iota: round constant
305
- if $rc == 0xc0000002
306
- eor r2, r2, #0x00000002
307
- eor r2, r2, #0xc0000000
308
- else
309
- eor r2, r2, #$rc
310
- endif
311
-
312
- ; Chi: non linear step, on colums
313
- mChi3 r2, $r6w, $r10i, r0, r1
314
- mChi3 r3, $r7w, $r11i, r0, r1
315
- mChi3 r4, $r8w, $r12i, r0, r1
316
- mChi3 r5, $r9w, $lri, r0, r1
317
- MEND
318
-
319
- ; ----------------------------------------------------------------------------
320
- ;
321
- ; void Xoodoo_Permute_6rounds( void *state )
322
- ;
323
- EXPORT Xoodoo_Permute_6rounds
324
- Xoodoo_Permute_6rounds PROC
325
- push {r0,r4-r11,lr}
326
- ldmia r0!, {r2-r5}
327
- ldmia r0!, {r8-r9}
328
- ldmia r0!, {r6-r7}
329
- ldmia r0, {r10-r12,lr}
330
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 32, 32, _rc6x1
331
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc5x2
332
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc4x3
333
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc3x4
334
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc2x5
335
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc1x6
336
- pop {r0,r1}
337
- ror r2, r2, #32-(6*_r0)%32
338
- ror r3, r3, #32-(6*_r0)%32
339
- ror r4, r4, #32-(6*_r0)%32
340
- ror r5, r5, #32-(6*_r0)%32
341
- ror r6, r6, #32-(6*_r0+1)%32
342
- ror r7, r7, #32-(6*_r0+1)%32
343
- ror r8, r8, #32-(6*_r0+1)%32
344
- ror r9, r9, #32-(6*_r0+1)%32
345
- ror r10, r10, #32-(6*_r0+_e1+_w1)%32
346
- ror r11, r11, #32-(6*_r0+_e1+_w1)%32
347
- ror r12, r12, #32-(6*_r0+_e1+_w1)%32
348
- ror lr, lr, #32-(6*_r0+_e1+_w1)%32
349
- stmia r0, {r2-r12,lr}
350
- mov r4, r1
351
- pop {r5-r11,pc}
352
- align 4
353
- ENDP
354
-
355
- ; ----------------------------------------------------------------------------
356
- ;
357
- ; void Xoodoo_Permute_12rounds( void *state )
358
- ;
359
- EXPORT Xoodoo_Permute_12rounds
360
- Xoodoo_Permute_12rounds PROC
361
- push {r0,r4-r11,lr}
362
- ldmia r0, {r2-r12,lr}
363
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 32, 32, _rc12x1
364
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc11x2
365
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc10x3
366
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc9x4
367
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc8x5
368
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc7x6
369
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc6x7
370
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc5x8
371
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc4x9
372
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc3x10
373
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc2x11
374
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc1x12
375
- ror r2, r2, #32-(12*_r0)%32
376
- ror r3, r3, #32-(12*_r0)%32
377
- ror r4, r4, #32-(12*_r0)%32
378
- ror r5, r5, #32-(12*_r0)%32
379
- ror r6, r6, #32-(12*_r0+1)%32
380
- ror r7, r7, #32-(12*_r0+1)%32
381
- ror r8, r8, #32-(12*_r0+1)%32
382
- ror r9, r9, #32-(12*_r0+1)%32
383
- ror r10, r10, #32-(12*_r0+_e1+_w1)%32
384
- ror r11, r11, #32-(12*_r0+_e1+_w1)%32
385
- ror r12, r12, #32-(12*_r0+_e1+_w1)%32
386
- ror lr, lr, #32-(12*_r0+_e1+_w1)%32
387
- pop {r0,r1}
388
- stmia r0, {r2-r12,lr}
389
- mov r4, r1
390
- pop {r5-r11,pc}
391
- align 4
392
- ENDP
393
-
394
- Xoofff_BlockSize equ 3*4*4
395
-
396
- ; ----------------------------------------------------------------------------
397
- ;
398
- ; void Xoofff_AddIs(BitSequence *output, const BitSequence *input, BitLength bitLen)
399
- EXPORT Xoofff_AddIs
400
- Xoofff_AddIs PROC
401
- push {r4-r10,lr}
402
-
403
- subs r2, r2, #Xoofff_BlockSize*8
404
- bcc Xoofff_AddIs_LessThanBlock
405
- Xoofff_AddIs_BlockLoop
406
- ldr r3, [r0, #0]
407
- ldr r4, [r0, #4]
408
- ldr r5, [r0, #8]
409
- ldr r6, [r0, #12]
410
- ldr r7, [r1], #4
411
- ldr r8, [r1], #4
412
- ldr r9, [r1], #4
413
- ldr r10, [r1], #4
414
- eor r3, r3, r7
415
- eor r4, r4, r8
416
- eor r5, r5, r9
417
- eor r6, r6, r10
418
- str r3, [r0], #4
419
- str r4, [r0], #4
420
- str r5, [r0], #4
421
- str r6, [r0], #4
422
-
423
- ldr r3, [r0, #0]
424
- ldr r4, [r0, #4]
425
- ldr r5, [r0, #8]
426
- ldr r6, [r0, #12]
427
- ldr r7, [r1], #4
428
- ldr r8, [r1], #4
429
- ldr r9, [r1], #4
430
- ldr r10, [r1], #4
431
- eor r3, r3, r7
432
- eor r4, r4, r8
433
- eor r5, r5, r9
434
- eor r6, r6, r10
435
- str r3, [r0], #4
436
- str r4, [r0], #4
437
- str r5, [r0], #4
438
- str r6, [r0], #4
439
-
440
- ldr r3, [r0, #0]
441
- ldr r4, [r0, #4]
442
- ldr r5, [r0, #8]
443
- ldr r6, [r0, #12]
444
- ldr r7, [r1], #4
445
- ldr r8, [r1], #4
446
- ldr r9, [r1], #4
447
- ldr r10, [r1], #4
448
- eor r3, r3, r7
449
- eor r4, r4, r8
450
- eor r5, r5, r9
451
- eor r6, r6, r10
452
- str r3, [r0], #4
453
- str r4, [r0], #4
454
- str r5, [r0], #4
455
- str r6, [r0], #4
456
-
457
- subs r2, r2, #Xoofff_BlockSize*8
458
- bcs Xoofff_AddIs_BlockLoop
459
- Xoofff_AddIs_LessThanBlock
460
- adds r2, r2, #Xoofff_BlockSize*8
461
- beq Xoofff_AddIs_Return
462
- subs r2, r2, #16*8
463
- bcc Xoofff_AddIs_LessThan16
464
- Xoofff_AddIs_16Loop
465
- ldr r3, [r0, #0]
466
- ldr r4, [r0, #4]
467
- ldr r5, [r0, #8]
468
- ldr r6, [r0, #12]
469
- ldr r7, [r1], #4
470
- ldr r8, [r1], #4
471
- ldr r9, [r1], #4
472
- ldr r10, [r1], #4
473
- eor r3, r3, r7
474
- eor r4, r4, r8
475
- eor r5, r5, r9
476
- eor r6, r6, r10
477
- str r3, [r0], #4
478
- str r4, [r0], #4
479
- str r5, [r0], #4
480
- str r6, [r0], #4
481
- subs r2, r2, #16*8
482
- bcs Xoofff_AddIs_16Loop
483
- Xoofff_AddIs_LessThan16
484
- adds r2, r2, #16*8
485
- beq Xoofff_AddIs_Return
486
- subs r2, r2, #4*8
487
- bcc Xoofff_AddIs_LessThan4
488
- Xoofff_AddIs_4Loop
489
- ldr r3, [r0]
490
- ldr r7, [r1], #4
491
- eors r3, r3, r7
492
- str r3, [r0], #4
493
- subs r2, r2, #4*8
494
- bcs Xoofff_AddIs_4Loop
495
- Xoofff_AddIs_LessThan4
496
- adds r2, r2, #4*8
497
- beq Xoofff_AddIs_Return
498
- subs r2, r2, #8
499
- bcc Xoofff_AddIs_LessThan1
500
- Xoofff_AddIs_1Loop
501
- ldrb r3, [r0]
502
- ldrb r7, [r1], #1
503
- eors r3, r3, r7
504
- strb r3, [r0], #1
505
- subs r2, r2, #8
506
- bcs Xoofff_AddIs_1Loop
507
- Xoofff_AddIs_LessThan1
508
- adds r2, r2, #8
509
- beq Xoofff_AddIs_Return
510
- ldrb r3, [r0]
511
- ldrb r7, [r1]
512
- movs r1, #1
513
- eors r3, r3, r7
514
- lsls r1, r1, r2
515
- subs r1, r1, #1
516
- ands r3, r3, r1
517
- strb r3, [r0]
518
- Xoofff_AddIs_Return
519
- pop {r4-r10,pc}
520
- align 4
521
- ENDP
522
-
523
- ; ----------------------------------------------------------------------------
524
- ;
525
- ; size_t Xoofff_CompressFastLoop(unsigned char *kRoll, unsigned char *xAccu, const unsigned char *input, size_t length)
526
- ;
527
- Xoofff_Compress_kRoll equ 0
528
- Xoofff_Compress_input equ 4
529
- Xoofff_Compress_xAccu equ 8
530
- Xoofff_Compress_iInput equ 12
531
- Xoofff_Compress_length equ 16
532
-
533
- EXPORT Xoofff_CompressFastLoop
534
- Xoofff_CompressFastLoop PROC
535
- subs r3, #Xoofff_BlockSize ; length must be greater than block size
536
- push {r1-r12,lr}
537
- push {r0,r2}
538
- ldmia r0, {r2-r12,lr} ; get initial kRoll
539
- Xoofff_CompressFastLoop_Loop
540
- ldr r0, [sp, #Xoofff_Compress_input] ; add input
541
- ldr r1, [r0], #4
542
- eors r2, r2, r1
543
- ldr r1, [r0], #4
544
- eors r3, r3, r1
545
- ldr r1, [r0], #4
546
- eors r4, r4, r1
547
- ldr r1, [r0], #4
548
- eors r5, r5, r1
549
-
550
- ldr r1, [r0], #4
551
- eors r6, r6, r1
552
- ldr r1, [r0], #4
553
- eors r7, r7, r1
554
- ldr r1, [r0], #4
555
- eors r8, r8, r1
556
- ldr r1, [r0], #4
557
- eors r9, r9, r1
558
-
559
- ldr r1, [r0], #4
560
- eors r10, r10, r1
561
- ldr r1, [r0], #4
562
- eors r11, r11, r1
563
- ldr r1, [r0], #4
564
- eors r12, r12, r1
565
- ldr r1, [r0], #4
566
- eors lr, lr, r1
567
- str r0, [sp, #Xoofff_Compress_input]
568
-
569
- ; permutation
570
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 32, 32, _rc6x1
571
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc5x2
572
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc4x3
573
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc3x4
574
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc2x5
575
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc1x6
576
-
577
- ; Extract and add into xAccu
578
- ldr r0, [sp, #Xoofff_Compress_xAccu]
579
- ldr r1, [r0]
580
- mRloXor r2, r1, (6*_r0)%32
581
- ldr r1, [r0, #4]
582
-
583
- str r2, [r0], #4
584
- mRloXor r3, r1, (6*_r0)%32
585
- ldr r1, [r0, #4]
586
-
587
- str r3, [r0], #4
588
- mRloXor r4, r1, (6*_r0)%32
589
- ldr r1, [r0, #4]
590
-
591
- str r4, [r0], #4
592
- mRloXor r5, r1, (6*_r0)%32
593
- str r5, [r0], #4
594
-
595
- ldm r0, {r2-r5} ; note that r6-r8 and r7-r9 are swapped
596
- mRliXor r2, r8, (6*_r0+1)%32
597
- mRliXor r3, r9, (6*_r0+1)%32
598
- mRliXor r4, r6, (6*_r0+1)%32
599
- mRliXor r5, r7, (6*_r0+1)%32
600
- stm r0!, {r2-r5}
601
-
602
- ldm r0, {r2-r5}
603
- mRliXor r2, r10, (6*_r0+_e1+_w1)%32
604
- mRliXor r3, r11, (6*_r0+_e1+_w1)%32
605
- mRliXor r4, r12, (6*_r0+_e1+_w1)%32
606
- mRliXor r5, lr, (6*_r0+_e1+_w1)%32
607
- stm r0!, {r2-r5}
608
-
609
- ;roll kRoll
610
- ldr r0, [sp, #Xoofff_Compress_kRoll]
611
- ldr lr, [r0], #4
612
- ldmia r0!, {r10-r12}
613
- ldmia r0!, {r2-r9}
614
- eors lr, lr, lr, LSL #13
615
- eors lr, lr, r2, ROR #32-3
616
- sub r0, #Xoofff_BlockSize
617
- stmia r0, {r2-r12,lr}
618
- ; loop management
619
- ldr r0, [sp, #Xoofff_Compress_length]
620
- subs r0, #Xoofff_BlockSize
621
- str r0, [sp, #Xoofff_Compress_length]
622
- bcs Xoofff_CompressFastLoop_Loop
623
- ; return number of bytes processed
624
- ldr r0, [sp, #Xoofff_Compress_input]
625
- ldr r1, [sp, #Xoofff_Compress_iInput]
626
- sub r0, r0, r1
627
- pop {r1,r2}
628
- pop {r1-r12,pc}
629
- align 4
630
- ENDP
631
-
632
- ; ----------------------------------------------------------------------------
633
- ;
634
- ; size_t Xoofff_ExpandFastLoop(unsigned char *yAccu, const unsigned char *kRoll, unsigned char *output, size_t length)
635
- ;
636
- Xoofff_Expand_yAccu equ 0
637
- Xoofff_Expand_output equ 4
638
- Xoofff_Expand_kRoll equ 8
639
- Xoofff_Expand_iOutput equ 12
640
- Xoofff_Expand_length equ 16
641
-
642
- EXPORT Xoofff_ExpandFastLoop
643
- Xoofff_ExpandFastLoop PROC
644
- subs r3, #Xoofff_BlockSize ; length must be greater than block size
645
- push {r1-r12,lr}
646
- push {r0,r2}
647
- ldmia r0, {r2-r12,lr} ; get initial yAccu
648
- Xoofff_ExpandFastLoop_Loop
649
- ; permutation
650
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 32, 32, _rc6x1
651
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc5x2
652
- mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc4x3
653
- mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc3x4
654
- mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc2x5
655
- mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc1x6
656
-
657
- ; Add k and extract
658
- ldr r0, [sp, #Xoofff_Expand_kRoll]
659
- ldr r1, [r0], #4
660
- mRloXor r2, r1, (6*_r0)%32
661
-
662
- ldr r1, [sp, #Xoofff_Expand_output]
663
- str r2, [r1], #4
664
-
665
- ldr r2, [r0], #4
666
- mRloXor r3, r2, (6*_r0)%32
667
- ldr r2, [r0], #4
668
-
669
- str r3, [r1], #4
670
- mRloXor r4, r2, (6*_r0)%32
671
- ldr r2, [r0], #4
672
-
673
- str r4, [r1], #4
674
- mRloXor r5, r2, (6*_r0)%32
675
- str r5, [r1], #4
676
-
677
- ldm r0!, {r2-r5} ; Note that r6-r8 and r7-r9 are swapped
678
- mRliXor r2, r8, (6*_r0+1)%32
679
- str r2, [r1], #4
680
- mRliXor r3, r9, (6*_r0+1)%32
681
- str r3, [r1], #4
682
- mRliXor r4, r6, (6*_r0+1)%32
683
- str r4, [r1], #4
684
- mRliXor r5, r7, (6*_r0+1)%32
685
- str r5, [r1], #4
686
-
687
- ldm r0!, {r2-r5}
688
- mRliXor r2, r10, (6*_r0+_e1+_w1)%32
689
- str r2, [r1], #4
690
- mRliXor r3, r11, (6*_r0+_e1+_w1)%32
691
- str r3, [r1], #4
692
- mRliXor r4, r12, (6*_r0+_e1+_w1)%32
693
- str r4, [r1], #4
694
- mRliXor r5, lr, (6*_r0+_e1+_w1)%32
695
- str r5, [r1], #4
696
-
697
- ; roll-e yAccu
698
- ldr r0, [sp, #Xoofff_Expand_yAccu]
699
- str r1, [sp, #Xoofff_Expand_output]
700
- ldr lr, [r0], #4
701
- ldmia r0!, {r10-r12}
702
- ldmia r0!, {r2-r9}
703
- and r1, r6, r2
704
- eor lr, r1, lr, ROR #32-5
705
- eor lr, lr, r2, ROR #32-13
706
- eor lr, lr, #7
707
- sub r0, #Xoofff_BlockSize
708
- stmia r0, {r2-r12,lr}
709
- ; loop management
710
- ldr r0, [sp, #Xoofff_Expand_length]
711
- subs r0, #Xoofff_BlockSize
712
- str r0, [sp, #Xoofff_Expand_length]
713
- bcs Xoofff_ExpandFastLoop_Loop
714
- ; return number of bytes processed
715
- ldr r0, [sp, #Xoofff_Expand_output]
716
- ldr r1, [sp, #Xoofff_Expand_iOutput]
717
- sub r0, r0, r1
718
- pop {r1,r2}
719
- pop {r1-r12,pc}
720
- align 4
721
- ENDP
722
-
723
- END