sleeping_kangaroo12 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (291) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -67
  3. data/ext/Rakefile +12 -37
  4. data/ext/binding/sleeping_kangaroo12.c +1 -16
  5. data/ext/{xkcp → k12}/Makefile +0 -0
  6. data/ext/k12/Makefile.build +118 -0
  7. data/ext/k12/README.markdown +86 -0
  8. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-ARMv8Asha3.S +623 -0
  9. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-SnP.h +65 -0
  10. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-opt64.c +227 -0
  11. data/ext/{xkcp/lib/low/KeccakP-1600/compact → k12/lib/Inplace32BI}/KeccakP-1600-SnP.h +4 -9
  12. data/ext/{xkcp/lib/low/KeccakP-1600/plain-32bits-inplace → k12/lib/Inplace32BI}/KeccakP-1600-inplace32BI.c +65 -160
  13. data/ext/k12/lib/KangarooTwelve.c +332 -0
  14. data/ext/{xkcp/lib/high/KangarooTwelve → k12/lib}/KangarooTwelve.h +53 -16
  15. data/ext/{xkcp/lib/low/KeccakP-1600/AVX2 → k12/lib/Optimized64}/KeccakP-1600-AVX2.s +122 -558
  16. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512-plainC.c +241 -0
  17. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512.s +551 -0
  18. data/ext/k12/lib/Optimized64/KeccakP-1600-SnP.h +74 -0
  19. data/ext/{xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros → k12/lib/Optimized64/KeccakP-1600-opt64.c} +447 -169
  20. data/ext/k12/lib/Optimized64/KeccakP-1600-runtimeDispatch.c +406 -0
  21. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX2.c +419 -0
  22. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX512.c +458 -0
  23. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-SSSE3.c +438 -0
  24. data/ext/{xkcp/lib/low/KeccakP-1600/plain-64bits → k12/lib/Plain64}/KeccakP-1600-SnP.h +14 -20
  25. data/ext/{xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h → k12/lib/Plain64/KeccakP-1600-plain64.c} +9 -8
  26. data/ext/{xkcp/lib/common → k12/lib}/align.h +3 -2
  27. data/ext/{xkcp/lib/common → k12/lib}/brg_endian.h +0 -0
  28. data/ext/{xkcp → k12}/support/Build/ExpandProducts.xsl +0 -0
  29. data/ext/{xkcp → k12}/support/Build/ToGlobalMakefile.xsl +0 -0
  30. data/ext/{xkcp → k12}/support/Build/ToOneTarget.xsl +0 -0
  31. data/ext/{xkcp → k12}/support/Build/ToTargetConfigFile.xsl +0 -0
  32. data/ext/{xkcp → k12}/support/Build/ToTargetMakefile.xsl +10 -16
  33. data/ext/{xkcp → k12}/support/Build/ToVCXProj.xsl +0 -0
  34. data/lib/sleeping_kangaroo12/version.rb +1 -1
  35. metadata +33 -276
  36. data/ext/config/xkcp.build +0 -17
  37. data/ext/xkcp/LICENSE +0 -1
  38. data/ext/xkcp/Makefile.build +0 -200
  39. data/ext/xkcp/README.markdown +0 -296
  40. data/ext/xkcp/lib/HighLevel.build +0 -143
  41. data/ext/xkcp/lib/LowLevel.build +0 -757
  42. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +0 -301
  43. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +0 -81
  44. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +0 -125
  45. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +0 -48
  46. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +0 -79
  47. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +0 -81
  48. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +0 -73
  49. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +0 -195
  50. data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +0 -111
  51. data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +0 -76
  52. data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +0 -314
  53. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +0 -61
  54. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +0 -67
  55. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +0 -128
  56. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +0 -93
  57. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +0 -599
  58. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +0 -573
  59. data/ext/xkcp/lib/high/Ketje/Ketjev2.c +0 -87
  60. data/ext/xkcp/lib/high/Ketje/Ketjev2.h +0 -88
  61. data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +0 -274
  62. data/ext/xkcp/lib/high/Keyak/Keyakv2.c +0 -132
  63. data/ext/xkcp/lib/high/Keyak/Keyakv2.h +0 -217
  64. data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +0 -81
  65. data/ext/xkcp/lib/high/Keyak/Motorist.inc +0 -953
  66. data/ext/xkcp/lib/high/Kravatte/Kravatte.c +0 -533
  67. data/ext/xkcp/lib/high/Kravatte/Kravatte.h +0 -115
  68. data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +0 -557
  69. data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +0 -247
  70. data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +0 -66
  71. data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +0 -336
  72. data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +0 -26
  73. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +0 -55
  74. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +0 -35
  75. data/ext/xkcp/lib/high/Xoofff/Xoofff.c +0 -634
  76. data/ext/xkcp/lib/high/Xoofff/Xoofff.h +0 -147
  77. data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +0 -483
  78. data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +0 -241
  79. data/ext/xkcp/lib/high/common/Phases.h +0 -25
  80. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +0 -41
  81. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +0 -1666
  82. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +0 -1655
  83. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +0 -1268
  84. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +0 -1264
  85. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +0 -1178
  86. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +0 -1175
  87. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +0 -1338
  88. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +0 -1336
  89. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +0 -1343
  90. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +0 -1339
  91. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +0 -42
  92. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +0 -823
  93. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +0 -831
  94. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +0 -31
  95. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +0 -540
  96. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +0 -42
  97. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +0 -733
  98. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +0 -1121
  99. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +0 -52
  100. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +0 -623
  101. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +0 -47
  102. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +0 -6
  103. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +0 -6
  104. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +0 -6
  105. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +0 -1031
  106. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +0 -53
  107. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +0 -44
  108. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +0 -476
  109. data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +0 -6
  110. data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +0 -6
  111. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +0 -305
  112. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +0 -420
  113. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +0 -43
  114. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +0 -565
  115. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +0 -7
  116. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +0 -7
  117. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +0 -8
  118. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +0 -6
  119. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +0 -6
  120. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +0 -44
  121. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +0 -23
  122. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +0 -625
  123. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +0 -44
  124. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +0 -440
  125. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +0 -42
  126. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +0 -1196
  127. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +0 -1124
  128. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +0 -1196
  129. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +0 -1392
  130. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +0 -1394
  131. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +0 -42
  132. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +0 -7
  133. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +0 -7
  134. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +0 -7
  135. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +0 -850
  136. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +0 -51
  137. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +0 -957
  138. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +0 -49
  139. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +0 -8
  140. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +0 -8
  141. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +0 -9
  142. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +0 -9
  143. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +0 -45
  144. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +0 -37
  145. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +0 -1321
  146. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +0 -55
  147. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +0 -7
  148. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +0 -7
  149. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +0 -7
  150. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +0 -7
  151. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +0 -7
  152. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +0 -7
  153. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +0 -881
  154. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +0 -51
  155. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +0 -45
  156. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +0 -37
  157. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +0 -45
  158. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +0 -38
  159. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +0 -1615
  160. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +0 -57
  161. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +0 -7
  162. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +0 -7
  163. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +0 -7
  164. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +0 -45
  165. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +0 -37
  166. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +0 -45
  167. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +0 -38
  168. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +0 -45
  169. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +0 -38
  170. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +0 -41
  171. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +0 -442
  172. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +0 -446
  173. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +0 -419
  174. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +0 -427
  175. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +0 -41
  176. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +0 -647
  177. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +0 -39
  178. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +0 -190
  179. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +0 -43
  180. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +0 -412
  181. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +0 -23
  182. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +0 -41
  183. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +0 -454
  184. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +0 -458
  185. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +0 -455
  186. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +0 -458
  187. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +0 -41
  188. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +0 -728
  189. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +0 -43
  190. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +0 -414
  191. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +0 -23
  192. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +0 -42
  193. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +0 -527
  194. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +0 -533
  195. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +0 -528
  196. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +0 -534
  197. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +0 -521
  198. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +0 -527
  199. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +0 -517
  200. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +0 -523
  201. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +0 -550
  202. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +0 -556
  203. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +0 -32
  204. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +0 -432
  205. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +0 -42
  206. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +0 -929
  207. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +0 -40
  208. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +0 -244
  209. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +0 -46
  210. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +0 -184
  211. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +0 -454
  212. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +0 -459
  213. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +0 -83
  214. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +0 -88
  215. data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +0 -7
  216. data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +0 -7
  217. data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +0 -7
  218. data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +0 -7
  219. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +0 -44
  220. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +0 -437
  221. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +0 -23
  222. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +0 -57
  223. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +0 -475
  224. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +0 -480
  225. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +0 -590
  226. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +0 -590
  227. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +0 -126
  228. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +0 -68
  229. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +0 -174
  230. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +0 -80
  231. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +0 -68
  232. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +0 -142
  233. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +0 -55
  234. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +0 -1086
  235. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +0 -1092
  236. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +0 -721
  237. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +0 -726
  238. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +0 -723
  239. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +0 -729
  240. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +0 -1164
  241. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +0 -1165
  242. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +0 -562
  243. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +0 -563
  244. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +0 -563
  245. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +0 -565
  246. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +0 -55
  247. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +0 -476
  248. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +0 -485
  249. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +0 -362
  250. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +0 -367
  251. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +0 -43
  252. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +0 -1341
  253. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +0 -581
  254. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +0 -58
  255. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +0 -332
  256. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +0 -329
  257. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +0 -53
  258. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +0 -355
  259. data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +0 -79
  260. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +0 -56
  261. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +0 -399
  262. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +0 -127
  263. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +0 -43
  264. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +0 -253
  265. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +0 -1044
  266. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +0 -49
  267. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +0 -45
  268. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +0 -37
  269. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +0 -1587
  270. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +0 -48
  271. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +0 -1202
  272. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +0 -48
  273. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +0 -484
  274. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +0 -44
  275. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +0 -45
  276. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +0 -37
  277. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +0 -939
  278. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +0 -49
  279. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +0 -1216
  280. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +0 -48
  281. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +0 -45
  282. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +0 -37
  283. data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +0 -290
  284. data/ext/xkcp/lib/low/common/SnP-Relaned.h +0 -141
  285. data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +0 -133
  286. data/ext/xkcp/support/Kernel-PMU/Makefile +0 -8
  287. data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +0 -129
  288. data/ext/xkcp/support/Kernel-PMU/load-module +0 -1
  289. data/ext/xkcp/util/KeccakSum/KeccakSum.c +0 -394
  290. data/ext/xkcp/util/KeccakSum/base64.c +0 -86
  291. data/ext/xkcp/util/KeccakSum/base64.h +0 -12
@@ -1,247 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- Kravatte, designed by Guido Bertoni, Joan Daemen, Seth Hoffert, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
6
-
7
- Implementation by Ronny Van Keer, hereby denoted as "the implementer".
8
-
9
- For more information, feedback or questions, please refer to the Keccak Team website:
10
- https://keccak.team/
11
-
12
- To the extent possible under law, the implementer has waived all copyright
13
- and related or neighboring rights to the source code in this file.
14
- http://creativecommons.org/publicdomain/zero/1.0/
15
- */
16
-
17
- #ifndef _KravatteModes_h_
18
- #define _KravatteModes_h_
19
-
20
- #include "config.h"
21
- #ifdef XKCP_has_KeccakP1600
22
-
23
- #include <stddef.h>
24
- #include <stdint.h>
25
- #include "align.h"
26
- #include "Kravatte.h"
27
-
28
- /**
29
- * Kravatte-SANE Tag Length in bytes.
30
- */
31
- #define Kravatte_SANE_TagLength 16
32
-
33
- /**
34
- * Definition of the constant l.
35
- */
36
- #define Kravatte_SANE_l 8
37
-
38
- typedef struct {
39
- Kravatte_Instance kravatte;
40
- unsigned int e;
41
- } Kravatte_SANE_Instance;
42
-
43
-
44
- /**
45
- * Function to initialize a Kravatte SANE instance with given key and nonce.
46
- * @param kvInstance Pointer to the instance to be initialized.
47
- * @param Key Pointer to the key (K).
48
- * @param KeyBitLen The length of the key in bits.
49
- * @param Nonce Pointer to the nonce (N).
50
- * @param NonceBitLen The length of the nonce in bits.
51
- * @param tag The buffer where to store the tag.
52
- * This buffer must be minimum Kravatte_SANE_TagLength bytes long.
53
- * @return 0 if successful, 1 otherwise.
54
- */
55
- int Kravatte_SANE_Initialize(Kravatte_SANE_Instance *kvInstance, const BitSequence *Key, BitLength KeyBitLen,
56
- const BitSequence *Nonce, BitLength NonceBitLen, unsigned char *tag);
57
-
58
- /**
59
- * Function to wrap plaintext into ciphertext.
60
- * @param kvInstance Pointer to the instance initialized by Kravatte_SANE_Initialize().
61
- * @param plaintext Pointer to plaintext data to wrap.
62
- * @param ciphertext Pointer to buffer where the full wrapped data will be stored.
63
- * The ciphertext buffer must not overlap plaintext.
64
- * @param dataBitLen The size of the plaintext/ciphertext data.
65
- * @param AD Pointer to the Associated Data.
66
- * @param ADBitLen The number of bytes provided in the Associated Data.
67
- * @param tag The buffer where to store the tag.
68
- * This buffer must be minimum Kravatte_SANE_TagLength bytes long.
69
- * @return 0 if successful, 1 otherwise.
70
- */
71
- int Kravatte_SANE_Wrap(Kravatte_SANE_Instance *kvInstance, const BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
72
- const BitSequence *AD, BitLength ADBitLen, unsigned char *tag);
73
-
74
- /**
75
- * Function to unwrap ciphertext into plaintext.
76
- * @param kvInstance Pointer to the instance initialized by Kravatte_SANE_Initialize().
77
- * @param ciphertext Pointer to ciphertext data to unwrap.
78
- * @param plaintext Pointer to buffer where the full unwrapped data will be stored.
79
- * The plaintext buffer must not overlap ciphertext.
80
- * @param dataBitLen The size of the ciphertext/plaintext data.
81
- * @param AD Pointer to the Associated Data.
82
- * @param ADBitLen The number of bytes provided in the Associated Data.
83
- * @param tag The buffer where to read the tag to check (when lastFlag is set).
84
- * This buffer must be minimum Kravatte_SANE_TagLength bytes long.
85
- * @return 0 if successful, 1 otherwise.
86
- */
87
- int Kravatte_SANE_Unwrap(Kravatte_SANE_Instance *kvInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
88
- const BitSequence *AD, BitLength ADBitLen, const unsigned char *tag);
89
-
90
- /* ------------------------------------------------------------------------- */
91
-
92
- /**
93
- * Kravatte-SANSE Tag Length in bytes.
94
- */
95
- #define Kravatte_SANSE_TagLength 32
96
-
97
- typedef struct {
98
- Kravatte_Instance kravatte;
99
- unsigned int e;
100
- } Kravatte_SANSE_Instance;
101
-
102
-
103
- /**
104
- * Function to initialize a Kravatte SANSE instance with given key and nonce.
105
- * @param kvInstance Pointer to the instance to be initialized.
106
- * @param Key Pointer to the key (K).
107
- * @param KeyBitLen The length of the key in bits.
108
- * @return 0 if successful, 1 otherwise.
109
- */
110
- int Kravatte_SANSE_Initialize(Kravatte_SANSE_Instance *kvInstance, const BitSequence *Key, BitLength KeyBitLen);
111
-
112
- /**
113
- * Function to wrap plaintext into ciphertext.
114
- * @param kvInstance Pointer to the instance initialized by Kravatte_SANSE_Initialize().
115
- * @param plaintext Pointer to plaintext data to wrap.
116
- * @param ciphertext Pointer to buffer where the full wrapped data will be stored.
117
- * The ciphertext buffer must not overlap plaintext.
118
- * @param dataBitLen The size of the plaintext/ciphertext data.
119
- * @param AD Pointer to the Associated Data.
120
- * @param ADBitLen The number of bytes provided in the Associated Data.
121
- * @param tag The buffer where to store the tag.
122
- * This buffer must be minimum Kravatte_SANSE_TagLength bytes long.
123
- * @return 0 if successful, 1 otherwise.
124
- */
125
- int Kravatte_SANSE_Wrap(Kravatte_SANSE_Instance *kvInstance, const BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
126
- const BitSequence *AD, BitLength ADBitLen, unsigned char *tag);
127
-
128
- /**
129
- * Function to unwrap ciphertext into plaintext.
130
- * @param kvInstance Pointer to the instance initialized by Kravatte_SANSE_Initialize().
131
- * @param ciphertext Pointer to ciphertext data to unwrap.
132
- * @param plaintext Pointer to buffer where the full unwrapped data will be stored.
133
- * The plaintext buffer must not overlap ciphertext.
134
- * @param dataBitLen The size of the ciphertext/plaintext data.
135
- * @param AD Pointer to the Associated Data.
136
- * @param ADBitLen The number of bytes provided in the Associated Data.
137
- * @param tag The buffer where to read the tag to check (when lastFlag is set).
138
- * This buffer must be minimum Kravatte_SANSE_TagLength bytes long.
139
- * @return 0 if successful, 1 otherwise.
140
- */
141
- int Kravatte_SANSE_Unwrap(Kravatte_SANSE_Instance *kvInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
142
- const BitSequence *AD, BitLength ADBitLen, const unsigned char *tag);
143
-
144
- /* ------------------------------------------------------------------------- */
145
-
146
- /**
147
- * Definition of the constant l, used to split the input into two parts.
148
- * The left part of the input will be a multiple of l bits.
149
- */
150
- #define Kravatte_WBC_l 8
151
-
152
- /**
153
- * Definition of the constant b block length.
154
- */
155
- #define Kravatte_WBC_b (SnP_widthInBytes*8)
156
-
157
- /**
158
- * Macro to initialize a Kravatte_WBC instance with given key.
159
- * @param kvw Pointer to the instance to be initialized.
160
- * @param Key Pointer to the key (K).
161
- * @param KeyBitLen The length of the key in bits.
162
- * @return 0 if successful, 1 otherwise.
163
- */
164
- #define Kravatte_WBC_Initialize(kvw, Key, KeyBitLen) Kravatte_MaskDerivation(kvw, Key, KeyBitLen)
165
-
166
- /**
167
- * Function to encipher plaintext into ciphertext.
168
- * @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
169
- * @param plaintext Pointer to plaintext data to encipher.
170
- * @param ciphertext Pointer to buffer where the enciphered data will be stored.
171
- * The ciphertext buffer must not overlap plaintext.
172
- * @param dataBitLen The size in bits of the plaintext/ciphertext data.
173
- * @param W Pointer to the tweak W.
174
- * @param WBitLen The number of bits provided in the tweak.
175
- * @return 0 if successful, 1 otherwise.
176
- */
177
- int Kravatte_WBC_Encipher(Kravatte_Instance *kvwInstance, const BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
178
- const BitSequence *W, BitLength WBitLen);
179
-
180
- /**
181
- * Function to decipher ciphertext into plaintext.
182
- * @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
183
- * @param ciphertext Pointer to ciphertext data to decipher.
184
- * @param plaintext Pointer to buffer where the deciphered data will be stored.
185
- * The plaintext buffer must not overlap ciphertext.
186
- * @param dataBitLen The size in bits of the plaintext/ciphertext data.
187
- * @param W Pointer to the tweak W.
188
- * @param WBitLen The number of bits provided in the tweak.
189
- * @return 0 if successful, 1 otherwise.
190
- */
191
- int Kravatte_WBC_Decipher(Kravatte_Instance *kvwInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
192
- const BitSequence *W, BitLength WBitLen);
193
-
194
- /* ------------------------------------------------------------------------- */
195
-
196
- /**
197
- * Definition of the constant t, expansion length (in bits).
198
- */
199
- #define Kravatte_WBCAE_t 128
200
-
201
- /**
202
- * Macro to initialize a Kravatte_WBC instance with given key.
203
- * @param kvw Pointer to the instance to be initialized.
204
- * @param Key Pointer to the key (K).
205
- * @param KeyBitLen The length of the key in bits.
206
- * @return 0 if successful, 1 otherwise.
207
- */
208
- #define Kravatte_WBCAE_Initialize(kvw, Key, KeyBitLen) Kravatte_MaskDerivation(kvw, Key, KeyBitLen)
209
-
210
- /**
211
- * Function to encipher plaintext into ciphertext.
212
- * @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
213
- * @param plaintext Pointer to plaintext data to encipher.
214
- * The last ::Kravatte_WBCAE_t bits of the buffer will be overwritten with zeros.
215
- * @param ciphertext Pointer to buffer where the enciphered data will be stored.
216
- * The ciphertext buffer must not overlap plaintext.
217
- * Ciphertext will be ::Kravatte_WBCAE_t bits longer than plaintext.
218
- * @param dataBitLen The size in bits of the plaintext data.
219
- * Plaintext and ciphertext buffers must be ::Kravatte_WBCAE_t bits longer than dataBitLen.
220
- * @param AD Pointer to the metadata AD.
221
- * @param ADBitLen The number of bits provided in the metadata.
222
- * @return 0 if successful, 1 otherwise.
223
- */
224
- int Kravatte_WBCAE_Encipher(Kravatte_Instance *kvwInstance, BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
225
- const BitSequence *AD, BitLength ADBitLen);
226
-
227
- /**
228
- * Function to decipher ciphertext into plaintext.
229
- * @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
230
- * @param ciphertext Pointer to ciphertext data to decipher.
231
- * Ciphertext is ::Kravatte_WBCAE_t bits longer than plaintext.
232
- * @param plaintext Pointer to buffer where the deciphered data will be stored.
233
- * The plaintext buffer must not overlap ciphertext.
234
- * @param dataBitLen The size in bits of the plaintext data.
235
- * Ciphertext and plaintext buffers must be ::Kravatte_WBCAE_t bits longer than dataBitLen.
236
- * @param AD Pointer to the metadata AD.
237
- * @param ADBitLen The number of bits provided in the metadata.
238
- * @return 0 if successful, 1 otherwise.
239
- */
240
- int Kravatte_WBCAE_Decipher(Kravatte_Instance *kvwInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
241
- const BitSequence *AD, BitLength ADBitLen);
242
-
243
- #else
244
- #error This requires an implementation of Keccak-p[1600]
245
- #endif
246
-
247
- #endif
@@ -1,66 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- Xoodyak, designed by Joan Daemen, Seth Hoffert, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
6
-
7
- Implementation by Ronny Van Keer, hereby denoted as "the implementer".
8
-
9
- For more information, feedback or questions, please refer to the Keccak Team website:
10
- https://keccak.team/
11
-
12
- To the extent possible under law, the implementer has waived all copyright
13
- and related or neighboring rights to the source code in this file.
14
- http://creativecommons.org/publicdomain/zero/1.0/
15
- */
16
-
17
- #ifndef _Cyclist_h_
18
- #define _Cyclist_h_
19
-
20
- #include <stdint.h>
21
- #include "align.h"
22
-
23
- #define Cyclist_ModeHash 1
24
- #define Cyclist_ModeKeyed 2
25
-
26
- #define Cyclist_PhaseDown 1
27
- #define Cyclist_PhaseUp 2
28
-
29
- #ifdef OUTPUT
30
-
31
- #include <stdio.h>
32
-
33
- #define KCP_DeclareCyclistStructure(prefix, size, alignment) \
34
- ALIGN(alignment) typedef struct prefix##_CyclistInstanceStruct { \
35
- uint8_t state[size]; \
36
- uint8_t stateShadow[size]; \
37
- FILE *file; \
38
- unsigned int phase; \
39
- unsigned int mode; \
40
- unsigned int Rabsorb; \
41
- unsigned int Rsqueeze; \
42
- } prefix##_Instance;
43
-
44
- #else
45
-
46
- #define KCP_DeclareCyclistStructure(prefix, size, alignment) \
47
- ALIGN(alignment) typedef struct prefix##_CyclistInstanceStruct { \
48
- uint8_t state[size]; \
49
- unsigned int phase; \
50
- unsigned int mode; \
51
- unsigned int Rabsorb; \
52
- unsigned int Rsqueeze; \
53
- } prefix##_Instance;
54
-
55
- #endif
56
-
57
- #define KCP_DeclareCyclistFunctions(prefix) \
58
- void prefix##_Initialize(prefix##_Instance *instance, const uint8_t *K, size_t KLen, const uint8_t *ID, size_t IDLen, const uint8_t *counter, size_t counterLen); \
59
- void prefix##_Absorb(prefix##_Instance *instance, const uint8_t *X, size_t XLen); \
60
- void prefix##_Encrypt(prefix##_Instance *instance, const uint8_t *P, uint8_t *C, size_t PLen); \
61
- void prefix##_Decrypt(prefix##_Instance *instance, const uint8_t *C, uint8_t *P, size_t CLen); \
62
- void prefix##_Squeeze(prefix##_Instance *instance, uint8_t *Y, size_t YLen); \
63
- void prefix##_SqueezeKey(prefix##_Instance *instance, uint8_t *K, size_t KLen); \
64
- void prefix##_Ratchet(prefix##_Instance *instance);
65
-
66
- #endif
@@ -1,336 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- Xoodyak, designed by Joan Daemen, Seth Hoffert, Michaël Peeters, 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
- #define JOIN0(a, b) a ## b
18
- #define JOIN(a, b) JOIN0(a, b)
19
-
20
- #define SnP_StaticInitialize JOIN(SnP, _StaticInitialize)
21
- #define SnP_Initialize JOIN(SnP, _Initialize)
22
- #define SnP_AddBytes JOIN(SnP, _AddBytes)
23
- #define SnP_AddByte JOIN(SnP, _AddByte)
24
- #define SnP_OverwriteBytes JOIN(SnP, _OverwriteBytes)
25
- #define SnP_ExtractBytes JOIN(SnP, _ExtractBytes)
26
- #define SnP_ExtractAndAddBytes JOIN(SnP, _ExtractAndAddBytes)
27
-
28
- #define Cyclist_Instance JOIN(prefix, _Instance)
29
- #define Cyclist_Initialize JOIN(prefix, _Initialize)
30
- #define Cyclist_Absorb JOIN(prefix, _Absorb)
31
- #define Cyclist_Encrypt JOIN(prefix, _Encrypt)
32
- #define Cyclist_Decrypt JOIN(prefix, _Decrypt)
33
- #define Cyclist_Squeeze JOIN(prefix, _Squeeze)
34
- #define Cyclist_SqueezeKey JOIN(prefix, _SqueezeKey)
35
- #define Cyclist_Ratchet JOIN(prefix, _Ratchet)
36
-
37
- #define Cyclist_AbsorbAny JOIN(prefix, _AbsorbAny)
38
- #define Cyclist_AbsorbKey JOIN(prefix, _AbsorbKey)
39
- #define Cyclist_SqueezeAny JOIN(prefix, _SqueezeAny)
40
- #define Cyclist_Down JOIN(prefix, _Down)
41
- #define Cyclist_Up JOIN(prefix, _Up)
42
- #define Cyclist_Crypt JOIN(prefix, _Crypt)
43
-
44
- #define Cyclist_f_bPrime JOIN(prefix, _f_bPrime)
45
- #define Cyclist_Rhash JOIN(prefix, _Rhash)
46
- #define Cyclist_Rkin JOIN(prefix, _Rkin)
47
- #define Cyclist_Rkout JOIN(prefix, _Rkout)
48
- #define Cyclist_lRatchet JOIN(prefix, _lRatchet)
49
-
50
- #if defined(CyclistFullBlocks_supported)
51
- #define Cyclist_AbsorbKeyedFullBlocks JOIN(prefix, _AbsorbKeyedFullBlocks)
52
- #define Cyclist_AbsorbHashFullBlocks JOIN(prefix, _AbsorbHashFullBlocks)
53
- #define Cyclist_SqueezeKeyedFullBlocks JOIN(prefix, _SqueezeKeyedFullBlocks)
54
- #define Cyclist_SqueezeHashFullBlocks JOIN(prefix, _SqueezeHashFullBlocks)
55
- #define Cyclist_EncryptFullBlocks JOIN(prefix, _EncryptFullBlocks)
56
- #define Cyclist_DecryptFullBlocks JOIN(prefix, _DecryptFullBlocks)
57
- #endif
58
-
59
- /* ------- Cyclist internal interfaces ------- */
60
-
61
- static void Cyclist_Down(Cyclist_Instance *instance, const uint8_t *Xi, unsigned int XiLen, uint8_t Cd)
62
- {
63
- SnP_AddBytes(instance->state, Xi, 0, XiLen);
64
- SnP_AddByte(instance->state, 0x01, XiLen);
65
- SnP_AddByte(instance->state, (instance->mode == Cyclist_ModeHash) ? (Cd & 0x01) : Cd, Cyclist_f_bPrime - 1);
66
- instance->phase = Cyclist_PhaseDown;
67
-
68
- }
69
-
70
- static void Cyclist_Up(Cyclist_Instance *instance, uint8_t *Yi, unsigned int YiLen, uint8_t Cu)
71
- {
72
- #if defined(OUTPUT)
73
- uint8_t s[Cyclist_f_bPrime];
74
- #endif
75
-
76
- if (instance->mode != Cyclist_ModeHash) {
77
- SnP_AddByte(instance->state, Cu, Cyclist_f_bPrime - 1);
78
- }
79
- #if defined(OUTPUT)
80
- if (instance->file != NULL) {
81
- SnP_ExtractBytes( instance->stateShadow, s, 0, Cyclist_f_bPrime );
82
- SnP_ExtractAndAddBytes( instance->state, s, s, 0, Cyclist_f_bPrime );
83
- }
84
- #endif
85
- SnP_Permute( instance->state );
86
- #if defined(OUTPUT)
87
- if (instance->file != NULL) {
88
- memcpy( instance->stateShadow, instance->state, sizeof(instance->state) );
89
- fprintf( instance->file, "Data XORed" );
90
- displayByteString( instance->file, "", s, Cyclist_f_bPrime );
91
- SnP_ExtractBytes( instance->stateShadow, s, 0, Cyclist_f_bPrime );
92
- fprintf( instance->file, "After f() ");
93
- displayByteString( instance->file, "", s, Cyclist_f_bPrime );
94
- }
95
- #endif
96
- instance->phase = Cyclist_PhaseUp;
97
- SnP_ExtractBytes( instance->state, Yi, 0, YiLen );
98
- }
99
-
100
- static void Cyclist_AbsorbAny(Cyclist_Instance *instance, const uint8_t *X, size_t XLen, unsigned int r, uint8_t Cd)
101
- {
102
- unsigned int splitLen;
103
-
104
- do {
105
- if (instance->phase != Cyclist_PhaseUp) {
106
- Cyclist_Up(instance, NULL, 0, 0);
107
- }
108
- splitLen = (unsigned int)MyMin(XLen, r);
109
- Cyclist_Down(instance, X, splitLen, Cd);
110
- Cd = 0;
111
- X += splitLen;
112
- XLen -= splitLen;
113
- #if defined(CyclistFullBlocks_supported)
114
- if ((r == Cyclist_Rkin) && (XLen >= Cyclist_Rkin)) {
115
- size_t lenProcessed = Cyclist_AbsorbKeyedFullBlocks(instance->state, X, XLen);
116
- X += lenProcessed;
117
- XLen -= lenProcessed;
118
- }
119
- else if ((r == Cyclist_Rhash) && (XLen >= Cyclist_Rhash)) {
120
- size_t lenProcessed = Cyclist_AbsorbHashFullBlocks(instance->state, X, XLen);
121
- X += lenProcessed;
122
- XLen -= lenProcessed;
123
- }
124
- #endif
125
- } while ( XLen != 0 );
126
- }
127
-
128
- static void Cyclist_AbsorbKey(Cyclist_Instance *instance, const uint8_t *K, size_t KLen, const uint8_t *ID, size_t IDLen, const uint8_t *counter, size_t counterLen)
129
- {
130
- uint8_t KID[Cyclist_Rkin];
131
-
132
- #if DEBUG
133
- assert(instance->mode == Cyclist_ModeHash);
134
- assert((KLen + IDLen) <= (Cyclist_Rkin - 1));
135
- #endif
136
- instance->mode = Cyclist_ModeKeyed;
137
- instance->Rabsorb = Cyclist_Rkin;
138
- instance->Rsqueeze = Cyclist_Rkout;
139
- if (KLen != 0) {
140
- memcpy(KID, K, KLen);
141
- memcpy(KID + KLen, ID, IDLen);
142
- KID[KLen + IDLen] = (uint8_t)IDLen;
143
- Cyclist_AbsorbAny(instance, KID, KLen + IDLen + 1, instance->Rabsorb, 0x02);
144
- if (counterLen != 0) {
145
- Cyclist_AbsorbAny(instance, counter, counterLen, 1, 0x00);
146
- }
147
- }
148
- }
149
-
150
- static void Cyclist_SqueezeAny(Cyclist_Instance *instance, uint8_t *Y, size_t YLen, uint8_t Cu)
151
- {
152
- unsigned int len;
153
-
154
- len = (unsigned int)MyMin(YLen, instance->Rsqueeze );
155
- Cyclist_Up(instance, Y, len, Cu);
156
- Y += len;
157
- YLen -= len;
158
- while (YLen != 0) {
159
- #if defined(CyclistFullBlocks_supported)
160
- if ((instance->mode == Cyclist_ModeKeyed) && (YLen >= Cyclist_Rkin)) {
161
- size_t lenProcessed = Cyclist_SqueezeKeyedFullBlocks(instance->state, Y, YLen);
162
- Y += lenProcessed;
163
- YLen -= lenProcessed;
164
- }
165
- else if ((instance->mode == Cyclist_ModeHash) && (YLen >= Cyclist_Rhash)) {
166
- size_t lenProcessed = Cyclist_SqueezeHashFullBlocks(instance->state, Y, YLen);
167
- Y += lenProcessed;
168
- YLen -= lenProcessed;
169
- }
170
- else
171
- #endif
172
- {
173
- Cyclist_Down(instance, NULL, 0, 0);
174
- len = (unsigned int)MyMin(YLen, instance->Rsqueeze );
175
- Cyclist_Up(instance, Y, len, 0);
176
- Y += len;
177
- YLen -= len;
178
- }
179
- }
180
- }
181
-
182
- static void Cyclist_Crypt(Cyclist_Instance *instance, const uint8_t *I, uint8_t *O, size_t IOLen, int decrypt)
183
- {
184
- unsigned int splitLen;
185
- uint8_t P[Cyclist_Rkout];
186
- uint8_t Cu = 0x80;
187
-
188
- do {
189
- if (decrypt != 0) {
190
- #if defined(CyclistFullBlocks_supported)
191
- if ((Cu == 0) && (IOLen >= Cyclist_Rkout)) {
192
- size_t lenProcessed = Cyclist_DecryptFullBlocks(instance->state, I, O, IOLen);
193
- I += lenProcessed;
194
- O += lenProcessed;
195
- IOLen -= lenProcessed;
196
- }
197
- else
198
- #endif
199
- {
200
- splitLen = (unsigned int)MyMin(IOLen, Cyclist_Rkout); /* use Rkout instead of Rsqueeze, this function is only called in keyed mode */
201
- Cyclist_Up(instance, NULL, 0, Cu); /* Up without extract */
202
- SnP_ExtractAndAddBytes(instance->state, I, O, 0, splitLen); /* Extract from Up and Add */
203
- Cyclist_Down(instance, O, splitLen, 0x00);
204
- I += splitLen;
205
- O += splitLen;
206
- IOLen -= splitLen;
207
- }
208
- }
209
- else {
210
- #if defined(CyclistFullBlocks_supported)
211
- if ((Cu == 0) && (IOLen >= Cyclist_Rkout)) {
212
- size_t lenProcessed = Cyclist_EncryptFullBlocks(instance->state, I, O, IOLen);
213
- I += lenProcessed;
214
- O += lenProcessed;
215
- IOLen -= lenProcessed;
216
- }
217
- else
218
- #endif
219
- {
220
- splitLen = (unsigned int)MyMin(IOLen, Cyclist_Rkout); /* use Rkout instead of Rsqueeze, this function is only called in keyed mode */
221
- memcpy(P, I, splitLen);
222
- Cyclist_Up(instance, NULL, 0, Cu); /* Up without extract */
223
- SnP_ExtractAndAddBytes(instance->state, I, O, 0, splitLen); /* Extract from Up and Add */
224
- Cyclist_Down(instance, P, splitLen, 0x00);
225
- I += splitLen;
226
- O += splitLen;
227
- IOLen -= splitLen;
228
- }
229
- }
230
- Cu = 0x00;
231
- } while ( IOLen != 0 );
232
- }
233
-
234
- /* ------- Cyclist interfaces ------- */
235
-
236
- void Cyclist_Initialize(Cyclist_Instance *instance, const uint8_t *K, size_t KLen, const uint8_t *ID, size_t IDLen, const uint8_t *counter, size_t counterLen)
237
- {
238
- SnP_StaticInitialize();
239
- SnP_Initialize(instance->state);
240
- instance->phase = Cyclist_PhaseUp;
241
- instance->mode = Cyclist_ModeHash;
242
- instance->Rabsorb = Cyclist_Rhash;
243
- instance->Rsqueeze = Cyclist_Rhash;
244
- #ifdef OUTPUT
245
- instance->file = 0;
246
- SnP_Initialize( instance->stateShadow );
247
- #endif
248
- if (KLen != 0) {
249
- Cyclist_AbsorbKey(instance, K, KLen, ID, IDLen, counter, counterLen);
250
- }
251
- }
252
-
253
- void Cyclist_Absorb(Cyclist_Instance *instance, const uint8_t *X, size_t XLen)
254
- {
255
- Cyclist_AbsorbAny(instance, X, XLen, instance->Rabsorb, 0x03);
256
- }
257
-
258
- void Cyclist_Encrypt(Cyclist_Instance *instance, const uint8_t *P, uint8_t *C, size_t PLen)
259
- {
260
- #if DEBUG
261
- assert(instance->mode == Cyclist_ModeKeyed);
262
- #endif
263
- Cyclist_Crypt(instance, P, C, PLen, 0);
264
- }
265
-
266
- void Cyclist_Decrypt(Cyclist_Instance *instance, const uint8_t *C, uint8_t *P, size_t CLen)
267
- {
268
- #if DEBUG
269
- assert(instance->mode == Cyclist_ModeKeyed);
270
- #endif
271
- Cyclist_Crypt(instance, C, P, CLen, 1);
272
- }
273
-
274
- void Cyclist_Squeeze(Cyclist_Instance *instance, uint8_t *Y, size_t YLen)
275
- {
276
- Cyclist_SqueezeAny(instance, Y, YLen, 0x40);
277
- }
278
-
279
- void Cyclist_SqueezeKey(Cyclist_Instance *instance, uint8_t *K, size_t KLen)
280
- {
281
- #if DEBUG
282
- assert(instance->mode == Cyclist_ModeKeyed);
283
- #endif
284
- Cyclist_SqueezeAny(instance, K, KLen, 0x20);
285
- }
286
-
287
- void Cyclist_Ratchet(Cyclist_Instance *instance)
288
- {
289
- uint8_t buffer[Cyclist_lRatchet];
290
-
291
- #if DEBUG
292
- assert(instance->mode == Cyclist_ModeKeyed);
293
- #endif
294
- /* Squeeze then absorb is the same as overwriting with zeros */
295
- Cyclist_SqueezeAny(instance, buffer, sizeof(buffer), 0x10);
296
- Cyclist_AbsorbAny(instance, buffer, sizeof(buffer), instance->Rabsorb, 0x00);
297
- }
298
-
299
- #undef SnP_StaticInitialize
300
- #undef SnP_Initialize
301
- #undef SnP_AddBytes
302
- #undef SnP_AddByte
303
- #undef SnP_OverwriteBytes
304
- #undef SnP_ExtractBytes
305
- #undef SnP_ExtractAndAddBytes
306
-
307
- #undef Cyclist_Instance
308
- #undef Cyclist_Initialize
309
- #undef Cyclist_Absorb
310
- #undef Cyclist_Encrypt
311
- #undef Cyclist_Decrypt
312
- #undef Cyclist_Squeeze
313
- #undef Cyclist_SqueezeKey
314
- #undef Cyclist_Ratchet
315
-
316
- #undef Cyclist_AbsorbAny
317
- #undef Cyclist_AbsorbKey
318
- #undef Cyclist_SqueezeAny
319
- #undef Cyclist_Down
320
- #undef Cyclist_Up
321
- #undef Cyclist_Crypt
322
-
323
- #undef Cyclist_f_bPrime
324
- #undef Cyclist_Rhash
325
- #undef Cyclist_Rkin
326
- #undef Cyclist_Rkout
327
- #undef Cyclist_lRatchet
328
-
329
- #if defined(CyclistFullBlocks_supported)
330
- #undef Cyclist_AbsorbKeyedFullBlocks
331
- #undef Cyclist_AbsorbHashFullBlocks
332
- #undef Cyclist_SqueezeKeyedFullBlocks
333
- #undef Cyclist_SqueezeHashFullBlocks
334
- #undef Cyclist_EncryptFullBlocks
335
- #undef Cyclist_DecryptFullBlocks
336
- #endif
@@ -1,26 +0,0 @@
1
- /*
2
- The eXtended Keccak Code Package (XKCP)
3
- https://github.com/XKCP/XKCP
4
-
5
- Xoodyak, designed by Joan Daemen, Seth Hoffert, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
6
-
7
- Implementation by Ronny Van Keer, hereby denoted as "the implementer".
8
-
9
- For more information, feedback or questions, please refer to the Keccak Team website:
10
- https://keccak.team/
11
-
12
- To the extent possible under law, the implementer has waived all copyright
13
- and related or neighboring rights to the source code in this file.
14
- http://creativecommons.org/publicdomain/zero/1.0/
15
- */
16
-
17
- #ifndef _Xoodyak_parameters_h_
18
- #define _Xoodyak_parameters_h_
19
-
20
- #define Xoodyak_f_bPrime 48
21
- #define Xoodyak_Rhash 16
22
- #define Xoodyak_Rkin 44
23
- #define Xoodyak_Rkout 24
24
- #define Xoodyak_lRatchet 16
25
-
26
- #endif