sleeping_kangaroo12 0.0.1 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE.md +27 -0
- data/README.md +48 -53
- data/ext/Rakefile +12 -37
- data/ext/binding/sleeping_kangaroo12.c +1 -16
- data/ext/{xkcp → k12}/Makefile +0 -0
- data/ext/k12/Makefile.build +118 -0
- data/ext/k12/README.markdown +86 -0
- data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-ARMv8Asha3.S +623 -0
- data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-SnP.h +65 -0
- data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-opt64.c +227 -0
- data/ext/{xkcp/lib/low/KeccakP-1600/compact → k12/lib/Inplace32BI}/KeccakP-1600-SnP.h +4 -9
- data/ext/{xkcp/lib/low/KeccakP-1600/plain-32bits-inplace → k12/lib/Inplace32BI}/KeccakP-1600-inplace32BI.c +65 -160
- data/ext/k12/lib/KangarooTwelve.c +332 -0
- data/ext/{xkcp/lib/high/KangarooTwelve → k12/lib}/KangarooTwelve.h +53 -16
- data/ext/{xkcp/lib/low/KeccakP-1600/AVX2 → k12/lib/Optimized64}/KeccakP-1600-AVX2.s +122 -558
- data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512-plainC.c +241 -0
- data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512.s +551 -0
- data/ext/k12/lib/Optimized64/KeccakP-1600-SnP.h +74 -0
- data/ext/{xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros → k12/lib/Optimized64/KeccakP-1600-opt64.c} +447 -169
- data/ext/k12/lib/Optimized64/KeccakP-1600-runtimeDispatch.c +406 -0
- data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX2.c +419 -0
- data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX512.c +458 -0
- data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-SSSE3.c +438 -0
- data/ext/{xkcp/lib/low/KeccakP-1600/plain-64bits → k12/lib/Plain64}/KeccakP-1600-SnP.h +14 -20
- data/ext/{xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h → k12/lib/Plain64/KeccakP-1600-plain64.c} +9 -8
- data/ext/{xkcp/lib/common → k12/lib}/align.h +3 -2
- data/ext/{xkcp/lib/common → k12/lib}/brg_endian.h +0 -0
- data/ext/{xkcp → k12}/support/Build/ExpandProducts.xsl +0 -0
- data/ext/{xkcp → k12}/support/Build/ToGlobalMakefile.xsl +0 -0
- data/ext/{xkcp → k12}/support/Build/ToOneTarget.xsl +0 -0
- data/ext/{xkcp → k12}/support/Build/ToTargetConfigFile.xsl +0 -0
- data/ext/{xkcp → k12}/support/Build/ToTargetMakefile.xsl +10 -16
- data/ext/{xkcp → k12}/support/Build/ToVCXProj.xsl +0 -0
- data/lib/sleeping_kangaroo12/binding.rb +2 -1
- data/lib/sleeping_kangaroo12/build/loader.rb +1 -0
- data/lib/sleeping_kangaroo12/build/platform.rb +1 -0
- data/lib/sleeping_kangaroo12/digest.rb +38 -4
- data/lib/sleeping_kangaroo12/version.rb +1 -1
- metadata +48 -288
- data/ext/config/xkcp.build +0 -17
- data/ext/xkcp/LICENSE +0 -1
- data/ext/xkcp/Makefile.build +0 -200
- data/ext/xkcp/README.markdown +0 -296
- data/ext/xkcp/lib/HighLevel.build +0 -143
- data/ext/xkcp/lib/LowLevel.build +0 -757
- data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +0 -301
- data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +0 -81
- data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +0 -125
- data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +0 -48
- data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +0 -79
- data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +0 -81
- data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +0 -73
- data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +0 -195
- data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +0 -111
- data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +0 -76
- data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +0 -314
- data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +0 -61
- data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +0 -67
- data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +0 -128
- data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +0 -93
- data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +0 -599
- data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +0 -573
- data/ext/xkcp/lib/high/Ketje/Ketjev2.c +0 -87
- data/ext/xkcp/lib/high/Ketje/Ketjev2.h +0 -88
- data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +0 -274
- data/ext/xkcp/lib/high/Keyak/Keyakv2.c +0 -132
- data/ext/xkcp/lib/high/Keyak/Keyakv2.h +0 -217
- data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +0 -81
- data/ext/xkcp/lib/high/Keyak/Motorist.inc +0 -953
- data/ext/xkcp/lib/high/Kravatte/Kravatte.c +0 -533
- data/ext/xkcp/lib/high/Kravatte/Kravatte.h +0 -115
- data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +0 -557
- data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +0 -247
- data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +0 -66
- data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +0 -336
- data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +0 -26
- data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +0 -55
- data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +0 -35
- data/ext/xkcp/lib/high/Xoofff/Xoofff.c +0 -634
- data/ext/xkcp/lib/high/Xoofff/Xoofff.h +0 -147
- data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +0 -483
- data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +0 -241
- data/ext/xkcp/lib/high/common/Phases.h +0 -25
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +0 -41
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +0 -1666
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +0 -1655
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +0 -1268
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +0 -1264
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +0 -1178
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +0 -1175
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +0 -1338
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +0 -1336
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +0 -1343
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +0 -1339
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +0 -42
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +0 -823
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +0 -831
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +0 -31
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +0 -540
- data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +0 -42
- data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +0 -733
- data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +0 -1121
- data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +0 -52
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +0 -623
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +0 -47
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +0 -6
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +0 -6
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +0 -6
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +0 -1031
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +0 -53
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +0 -44
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +0 -476
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +0 -6
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +0 -6
- data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +0 -305
- data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +0 -420
- data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +0 -43
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +0 -565
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +0 -8
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +0 -6
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +0 -6
- data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +0 -44
- data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +0 -23
- data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +0 -625
- data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +0 -44
- data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +0 -440
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +0 -42
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +0 -1196
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +0 -1124
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +0 -1196
- data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +0 -1392
- data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +0 -1394
- data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +0 -42
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +0 -850
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +0 -51
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +0 -957
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +0 -49
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +0 -8
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +0 -8
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +0 -9
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +0 -9
- data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +0 -45
- data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +0 -37
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +0 -1321
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +0 -55
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +0 -881
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +0 -51
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +0 -45
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +0 -37
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +0 -45
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +0 -38
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +0 -1615
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +0 -57
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +0 -45
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +0 -37
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +0 -45
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +0 -38
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +0 -45
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +0 -38
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +0 -41
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +0 -442
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +0 -446
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +0 -419
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +0 -427
- data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +0 -41
- data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +0 -647
- data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +0 -39
- data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +0 -190
- data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +0 -43
- data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +0 -412
- data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +0 -23
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +0 -41
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +0 -454
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +0 -458
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +0 -455
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +0 -458
- data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +0 -41
- data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +0 -728
- data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +0 -43
- data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +0 -414
- data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +0 -23
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +0 -42
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +0 -527
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +0 -533
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +0 -528
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +0 -534
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +0 -521
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +0 -527
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +0 -517
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +0 -523
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +0 -550
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +0 -556
- data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +0 -32
- data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +0 -432
- data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +0 -42
- data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +0 -929
- data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +0 -40
- data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +0 -244
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +0 -46
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +0 -184
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +0 -454
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +0 -459
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +0 -83
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +0 -88
- data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +0 -7
- data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +0 -44
- data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +0 -437
- data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +0 -23
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +0 -57
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +0 -475
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +0 -480
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +0 -590
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +0 -590
- data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +0 -126
- data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +0 -68
- data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +0 -174
- data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +0 -80
- data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +0 -68
- data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +0 -142
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +0 -55
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +0 -1086
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +0 -1092
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +0 -721
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +0 -726
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +0 -723
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +0 -729
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +0 -1164
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +0 -1165
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +0 -562
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +0 -563
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +0 -563
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +0 -565
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +0 -55
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +0 -476
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +0 -485
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +0 -362
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +0 -367
- data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +0 -43
- data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +0 -1341
- data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +0 -581
- data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +0 -58
- data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +0 -332
- data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +0 -329
- data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +0 -53
- data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +0 -355
- data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +0 -79
- data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +0 -56
- data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +0 -399
- data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +0 -127
- data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +0 -43
- data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +0 -253
- data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +0 -1044
- data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +0 -49
- data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +0 -45
- data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +0 -37
- data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +0 -1587
- data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +0 -48
- data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +0 -1202
- data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +0 -48
- data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +0 -484
- data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +0 -44
- data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +0 -45
- data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +0 -37
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +0 -939
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +0 -49
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +0 -1216
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +0 -48
- data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +0 -45
- data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +0 -37
- data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +0 -290
- data/ext/xkcp/lib/low/common/SnP-Relaned.h +0 -141
- data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +0 -133
- data/ext/xkcp/support/Kernel-PMU/Makefile +0 -8
- data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +0 -129
- data/ext/xkcp/support/Kernel-PMU/load-module +0 -1
- data/ext/xkcp/util/KeccakSum/KeccakSum.c +0 -394
- data/ext/xkcp/util/KeccakSum/base64.c +0 -86
- data/ext/xkcp/util/KeccakSum/base64.h +0 -12
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
# K12 based on the eXtended Keccak Code Package (XKCP)
|
|
2
|
+
# https://github.com/XKCP/XKCP
|
|
3
|
+
#
|
|
4
|
+
# The Keccak-p permutations, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche.
|
|
5
|
+
#
|
|
6
|
+
# Implementation by Gilles Van Assche, hereby denoted as "the implementer".
|
|
7
|
+
# Core subroutine is based on one by Andy Polyakov, available
|
|
8
|
+
# at https://github.com/dot-asm/cryptogams. Used with permission.
|
|
9
|
+
#
|
|
10
|
+
# For more information, feedback or questions, please refer to the Keccak Team website:
|
|
11
|
+
# https://keccak.team/
|
|
12
|
+
#
|
|
13
|
+
# To the extent possible under law, the implementer has waived all copyright
|
|
14
|
+
# and related or neighboring rights to the source code in this file.
|
|
15
|
+
# http://creativecommons.org/publicdomain/zero/1.0/
|
|
16
|
+
|
|
17
|
+
.text
|
|
18
|
+
|
|
19
|
+
.balign 64 // strategic alignment and padding that allows to use
|
|
20
|
+
// address value as loop termination condition...
|
|
21
|
+
.quad 0,0,0,0,0,0,0,0
|
|
22
|
+
.ifdef macOS
|
|
23
|
+
.else
|
|
24
|
+
.type iotas,%object
|
|
25
|
+
.endif
|
|
26
|
+
iotas:
|
|
27
|
+
.quad 0x0000000000000001
|
|
28
|
+
.quad 0x0000000000008082
|
|
29
|
+
.quad 0x800000000000808a
|
|
30
|
+
.quad 0x8000000080008000
|
|
31
|
+
.quad 0x000000000000808b
|
|
32
|
+
.quad 0x0000000080000001
|
|
33
|
+
.quad 0x8000000080008081
|
|
34
|
+
.quad 0x8000000000008009
|
|
35
|
+
.quad 0x000000000000008a
|
|
36
|
+
.quad 0x0000000000000088
|
|
37
|
+
.quad 0x0000000080008009
|
|
38
|
+
.quad 0x000000008000000a
|
|
39
|
+
iotas12:
|
|
40
|
+
.quad 0x000000008000808b
|
|
41
|
+
.quad 0x800000000000008b
|
|
42
|
+
.quad 0x8000000000008089
|
|
43
|
+
.quad 0x8000000000008003
|
|
44
|
+
.quad 0x8000000000008002
|
|
45
|
+
.quad 0x8000000000000080
|
|
46
|
+
.quad 0x000000000000800a
|
|
47
|
+
.quad 0x800000008000000a
|
|
48
|
+
.quad 0x8000000080008081
|
|
49
|
+
.quad 0x8000000000008080
|
|
50
|
+
.quad 0x0000000080000001
|
|
51
|
+
.quad 0x8000000080008008
|
|
52
|
+
.ifdef macOS
|
|
53
|
+
.else
|
|
54
|
+
.size iotas,.-iotas
|
|
55
|
+
.endif
|
|
56
|
+
|
|
57
|
+
.ifdef macOS
|
|
58
|
+
.else
|
|
59
|
+
.type KeccakP1600_ARMv8Asha3_Permute_12rounds_internal,%function
|
|
60
|
+
.endif
|
|
61
|
+
KeccakP1600_ARMv8Asha3_Permute_12rounds_internal:
|
|
62
|
+
.balign 32
|
|
63
|
+
mov x9,#12
|
|
64
|
+
adr x10,iotas12
|
|
65
|
+
b .Loop_ce
|
|
66
|
+
.balign 16
|
|
67
|
+
.Loop_ce:
|
|
68
|
+
////////////////////////////////////////////////// Theta
|
|
69
|
+
eor3 v25.16b,v20.16b,v15.16b,v10.16b
|
|
70
|
+
eor3 v26.16b,v21.16b,v16.16b,v11.16b
|
|
71
|
+
eor3 v27.16b,v22.16b,v17.16b,v12.16b
|
|
72
|
+
eor3 v28.16b,v23.16b,v18.16b,v13.16b
|
|
73
|
+
eor3 v29.16b,v24.16b,v19.16b,v14.16b
|
|
74
|
+
eor3 v25.16b,v25.16b, v5.16b,v0.16b
|
|
75
|
+
eor3 v26.16b,v26.16b, v6.16b,v1.16b
|
|
76
|
+
eor3 v27.16b,v27.16b, v7.16b,v2.16b
|
|
77
|
+
eor3 v28.16b,v28.16b, v8.16b,v3.16b
|
|
78
|
+
eor3 v29.16b,v29.16b, v9.16b,v4.16b
|
|
79
|
+
|
|
80
|
+
rax1 v30.2d,v25.2d,v27.2d // D[1]
|
|
81
|
+
rax1 v31.2d,v26.2d,v28.2d // D[2]
|
|
82
|
+
rax1 v27.2d,v27.2d,v29.2d // D[3]
|
|
83
|
+
rax1 v28.2d,v28.2d,v25.2d // D[4]
|
|
84
|
+
rax1 v29.2d,v29.2d,v26.2d // D[0]
|
|
85
|
+
|
|
86
|
+
////////////////////////////////////////////////// Theta+Rho+Pi
|
|
87
|
+
xar v25.2d, v1.2d,v30.2d,#64-1 // C[0]=A[2][0]
|
|
88
|
+
|
|
89
|
+
xar v1.2d,v6.2d,v30.2d,#64-44
|
|
90
|
+
xar v6.2d,v9.2d,v28.2d,#64-20
|
|
91
|
+
xar v9.2d,v22.2d,v31.2d,#64-61
|
|
92
|
+
xar v22.2d,v14.2d,v28.2d,#64-39
|
|
93
|
+
xar v14.2d,v20.2d,v29.2d,#64-18
|
|
94
|
+
|
|
95
|
+
xar v26.2d, v2.2d,v31.2d,#64-62 // C[1]=A[4][0]
|
|
96
|
+
|
|
97
|
+
xar v2.2d,v12.2d,v31.2d,#64-43
|
|
98
|
+
xar v12.2d,v13.2d,v27.2d,#64-25
|
|
99
|
+
xar v13.2d,v19.2d,v28.2d,#64-8
|
|
100
|
+
xar v19.2d,v23.2d,v27.2d,#64-56
|
|
101
|
+
xar v23.2d,v15.2d,v29.2d,#64-41
|
|
102
|
+
|
|
103
|
+
xar v15.2d,v4.2d,v28.2d,#64-27
|
|
104
|
+
|
|
105
|
+
xar v28.2d, v24.2d,v28.2d,#64-14 // D[4]=A[0][4]
|
|
106
|
+
xar v24.2d,v21.2d,v30.2d,#64-2
|
|
107
|
+
xar v8.2d,v8.2d,v27.2d,#64-55 // A[1][3]=A[4][1]
|
|
108
|
+
xar v4.2d,v16.2d,v30.2d,#64-45 // A[0][4]=A[1][3]
|
|
109
|
+
xar v16.2d,v5.2d,v29.2d,#64-36
|
|
110
|
+
|
|
111
|
+
xar v5.2d,v3.2d,v27.2d,#64-28
|
|
112
|
+
|
|
113
|
+
eor v0.16b,v0.16b,v29.16b
|
|
114
|
+
|
|
115
|
+
xar v27.2d, v18.2d,v27.2d,#64-21 // D[3]=A[0][3]
|
|
116
|
+
xar v3.2d,v17.2d,v31.2d,#64-15 // A[0][3]=A[3][3]
|
|
117
|
+
xar v30.2d, v11.2d,v30.2d,#64-10 // D[1]=A[3][2]
|
|
118
|
+
xar v31.2d, v7.2d,v31.2d,#64-6 // D[2]=A[2][1]
|
|
119
|
+
xar v29.2d, v10.2d,v29.2d,#64-3 // D[0]=A[1][2]
|
|
120
|
+
|
|
121
|
+
////////////////////////////////////////////////// Chi+Iota
|
|
122
|
+
bcax v20.16b,v26.16b, v22.16b,v8.16b // A[1][3]=A[4][1]
|
|
123
|
+
bcax v21.16b,v8.16b,v23.16b,v22.16b // A[1][3]=A[4][1]
|
|
124
|
+
bcax v22.16b,v22.16b,v24.16b,v23.16b
|
|
125
|
+
bcax v23.16b,v23.16b,v26.16b, v24.16b
|
|
126
|
+
bcax v24.16b,v24.16b,v8.16b,v26.16b // A[1][3]=A[4][1]
|
|
127
|
+
|
|
128
|
+
ld1r {v26.2d},[x10],#8
|
|
129
|
+
|
|
130
|
+
bcax v17.16b,v30.16b, v19.16b,v3.16b // A[0][3]=A[3][3]
|
|
131
|
+
bcax v18.16b,v3.16b,v15.16b,v19.16b // A[0][3]=A[3][3]
|
|
132
|
+
bcax v19.16b,v19.16b,v16.16b,v15.16b
|
|
133
|
+
bcax v15.16b,v15.16b,v30.16b, v16.16b
|
|
134
|
+
bcax v16.16b,v16.16b,v3.16b,v30.16b // A[0][3]=A[3][3]
|
|
135
|
+
|
|
136
|
+
bcax v10.16b,v25.16b, v12.16b,v31.16b
|
|
137
|
+
bcax v11.16b,v31.16b, v13.16b,v12.16b
|
|
138
|
+
bcax v12.16b,v12.16b,v14.16b,v13.16b
|
|
139
|
+
bcax v13.16b,v13.16b,v25.16b, v14.16b
|
|
140
|
+
bcax v14.16b,v14.16b,v31.16b, v25.16b
|
|
141
|
+
|
|
142
|
+
bcax v7.16b,v29.16b, v9.16b,v4.16b // A[0][4]=A[1][3]
|
|
143
|
+
bcax v8.16b,v4.16b,v5.16b,v9.16b // A[0][4]=A[1][3]
|
|
144
|
+
bcax v9.16b,v9.16b,v6.16b,v5.16b
|
|
145
|
+
bcax v5.16b,v5.16b,v29.16b, v6.16b
|
|
146
|
+
bcax v6.16b,v6.16b,v4.16b,v29.16b // A[0][4]=A[1][3]
|
|
147
|
+
|
|
148
|
+
bcax v3.16b,v27.16b, v0.16b,v28.16b
|
|
149
|
+
bcax v4.16b,v28.16b, v1.16b,v0.16b
|
|
150
|
+
bcax v0.16b,v0.16b,v2.16b,v1.16b
|
|
151
|
+
bcax v1.16b,v1.16b,v27.16b, v2.16b
|
|
152
|
+
bcax v2.16b,v2.16b,v28.16b, v27.16b
|
|
153
|
+
|
|
154
|
+
eor v0.16b,v0.16b,v26.16b
|
|
155
|
+
|
|
156
|
+
subs x9,x9,#1
|
|
157
|
+
bne .Loop_ce
|
|
158
|
+
|
|
159
|
+
ret
|
|
160
|
+
.ifdef macOS
|
|
161
|
+
.else
|
|
162
|
+
.size KeccakP1600_ARMv8Asha3_Permute_12rounds_internal,.-KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
|
|
163
|
+
.endif
|
|
164
|
+
|
|
165
|
+
.ifdef macOS
|
|
166
|
+
.globl _KeccakP1600_ARMv8Asha3_Permute_12rounds
|
|
167
|
+
_KeccakP1600_ARMv8Asha3_Permute_12rounds:
|
|
168
|
+
.else
|
|
169
|
+
.globl KeccakP1600_ARMv8Asha3_Permute_12rounds
|
|
170
|
+
.type KeccakP1600_ARMv8Asha3_Permute_12rounds,%function
|
|
171
|
+
KeccakP1600_ARMv8Asha3_Permute_12rounds:
|
|
172
|
+
.endif
|
|
173
|
+
.balign 32
|
|
174
|
+
stp x29,x30,[sp,#-80]!
|
|
175
|
+
add x29,sp,#0
|
|
176
|
+
stp d8,d9,[sp,#16] // per ABI requirement
|
|
177
|
+
stp d10,d11,[sp,#32]
|
|
178
|
+
stp d12,d13,[sp,#48]
|
|
179
|
+
stp d14,d15,[sp,#64]
|
|
180
|
+
ldp d0,d1,[x0,#8*0]
|
|
181
|
+
ldp d2,d3,[x0,#8*2]
|
|
182
|
+
ldp d4,d5,[x0,#8*4]
|
|
183
|
+
ldp d6,d7,[x0,#8*6]
|
|
184
|
+
ldp d8,d9,[x0,#8*8]
|
|
185
|
+
ldp d10,d11,[x0,#8*10]
|
|
186
|
+
ldp d12,d13,[x0,#8*12]
|
|
187
|
+
ldp d14,d15,[x0,#8*14]
|
|
188
|
+
ldp d16,d17,[x0,#8*16]
|
|
189
|
+
ldp d18,d19,[x0,#8*18]
|
|
190
|
+
ldp d20,d21,[x0,#8*20]
|
|
191
|
+
ldp d22,d23,[x0,#8*22]
|
|
192
|
+
ldr d24,[x0,#8*24]
|
|
193
|
+
bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
|
|
194
|
+
ldr x30,[sp,#8]
|
|
195
|
+
stp d0,d1,[x0,#8*0]
|
|
196
|
+
stp d2,d3,[x0,#8*2]
|
|
197
|
+
stp d4,d5,[x0,#8*4]
|
|
198
|
+
stp d6,d7,[x0,#8*6]
|
|
199
|
+
stp d8,d9,[x0,#8*8]
|
|
200
|
+
stp d10,d11,[x0,#8*10]
|
|
201
|
+
stp d12,d13,[x0,#8*12]
|
|
202
|
+
stp d14,d15,[x0,#8*14]
|
|
203
|
+
stp d16,d17,[x0,#8*16]
|
|
204
|
+
stp d18,d19,[x0,#8*18]
|
|
205
|
+
stp d20,d21,[x0,#8*20]
|
|
206
|
+
stp d22,d23,[x0,#8*22]
|
|
207
|
+
str d24,[x0,#8*24]
|
|
208
|
+
|
|
209
|
+
ldp d8,d9,[sp,#16]
|
|
210
|
+
ldp d10,d11,[sp,#32]
|
|
211
|
+
ldp d12,d13,[sp,#48]
|
|
212
|
+
ldp d14,d15,[sp,#64]
|
|
213
|
+
ldr x29,[sp],#80
|
|
214
|
+
ret
|
|
215
|
+
.ifdef macOS
|
|
216
|
+
.else
|
|
217
|
+
.size KeccakP1600_ARMv8Asha3_Permute_12rounds,.-KeccakP1600_ARMv8Asha3_Permute_12rounds
|
|
218
|
+
.endif
|
|
219
|
+
|
|
220
|
+
// size_t KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb(
|
|
221
|
+
// void *state(x0),
|
|
222
|
+
// unsigned int laneCount(x1) = 21,
|
|
223
|
+
// const unsigned char *data(x2),
|
|
224
|
+
// size_t dataByteLen(x3))
|
|
225
|
+
.ifdef macOS
|
|
226
|
+
.globl _KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
|
|
227
|
+
_KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb:
|
|
228
|
+
.else
|
|
229
|
+
.globl KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
|
|
230
|
+
.type KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb,%function
|
|
231
|
+
KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb:
|
|
232
|
+
.endif
|
|
233
|
+
.balign 32
|
|
234
|
+
stp x29,x30,[sp,#-80]!
|
|
235
|
+
add x29,sp,#0
|
|
236
|
+
stp d8,d9,[sp,#16] // per ABI requirement
|
|
237
|
+
stp d10,d11,[sp,#32]
|
|
238
|
+
stp d12,d13,[sp,#48]
|
|
239
|
+
stp d14,d15,[sp,#64]
|
|
240
|
+
|
|
241
|
+
ldp d0,d1,[x0,#8*0]
|
|
242
|
+
ldp d2,d3,[x0,#8*2]
|
|
243
|
+
ldp d4,d5,[x0,#8*4]
|
|
244
|
+
ldp d6,d7,[x0,#8*6]
|
|
245
|
+
ldp d8,d9,[x0,#8*8]
|
|
246
|
+
ldp d10,d11,[x0,#8*10]
|
|
247
|
+
ldp d12,d13,[x0,#8*12]
|
|
248
|
+
ldp d14,d15,[x0,#8*14]
|
|
249
|
+
ldp d16,d17,[x0,#8*16]
|
|
250
|
+
ldp d18,d19,[x0,#8*18]
|
|
251
|
+
ldp d20,d21,[x0,#8*20]
|
|
252
|
+
ldp d22,d23,[x0,#8*22]
|
|
253
|
+
ldr d24,[x0,#8*24]
|
|
254
|
+
|
|
255
|
+
// Prepare the return value
|
|
256
|
+
mov x11, #0
|
|
257
|
+
b .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_loop
|
|
258
|
+
|
|
259
|
+
.balign 16
|
|
260
|
+
.KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_loop:
|
|
261
|
+
subs x3, x3, #8*21
|
|
262
|
+
b.cc .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_end
|
|
263
|
+
|
|
264
|
+
// Lanes 0-3
|
|
265
|
+
ld1 {v27.8b-v30.8b}, [x2], #32
|
|
266
|
+
eor v0.16b, v0.16b, v27.16b
|
|
267
|
+
eor v1.16b, v1.16b, v28.16b
|
|
268
|
+
eor v2.16b, v2.16b, v29.16b
|
|
269
|
+
eor v3.16b, v3.16b, v30.16b
|
|
270
|
+
|
|
271
|
+
// Lanes 4-7
|
|
272
|
+
ld1 {v27.8b-v30.8b}, [x2], #32
|
|
273
|
+
eor v4.16b, v4.16b, v27.16b
|
|
274
|
+
eor v5.16b, v5.16b, v28.16b
|
|
275
|
+
eor v6.16b, v6.16b, v29.16b
|
|
276
|
+
eor v7.16b, v7.16b, v30.16b
|
|
277
|
+
|
|
278
|
+
// Lanes 8-11
|
|
279
|
+
ld1 {v27.8b-v30.8b}, [x2], #32
|
|
280
|
+
eor v8.16b, v8.16b, v27.16b
|
|
281
|
+
eor v9.16b, v9.16b, v28.16b
|
|
282
|
+
eor v10.16b, v10.16b, v29.16b
|
|
283
|
+
eor v11.16b, v11.16b, v30.16b
|
|
284
|
+
|
|
285
|
+
// Lanes 12-15
|
|
286
|
+
ld1 {v27.8b-v30.8b}, [x2], #32
|
|
287
|
+
eor v12.16b, v12.16b, v27.16b
|
|
288
|
+
eor v13.16b, v13.16b, v28.16b
|
|
289
|
+
eor v14.16b, v14.16b, v29.16b
|
|
290
|
+
eor v15.16b, v15.16b, v30.16b
|
|
291
|
+
|
|
292
|
+
// Lanes 16-20
|
|
293
|
+
ld1 {v27.8b-v30.8b}, [x2], #32
|
|
294
|
+
eor v16.16b, v16.16b, v27.16b
|
|
295
|
+
eor v17.16b, v17.16b, v28.16b
|
|
296
|
+
eor v18.16b, v18.16b, v29.16b
|
|
297
|
+
eor v19.16b, v19.16b, v30.16b
|
|
298
|
+
ld1 {v27.8b}, [x2], #8
|
|
299
|
+
eor v20.16b, v20.16b, v27.16b
|
|
300
|
+
|
|
301
|
+
bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
|
|
302
|
+
|
|
303
|
+
add x11, x11, #8*21
|
|
304
|
+
|
|
305
|
+
b .KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_loop
|
|
306
|
+
.KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb_end:
|
|
307
|
+
|
|
308
|
+
stp d0,d1,[x0,#8*0]
|
|
309
|
+
stp d2,d3,[x0,#8*2]
|
|
310
|
+
stp d4,d5,[x0,#8*4]
|
|
311
|
+
stp d6,d7,[x0,#8*6]
|
|
312
|
+
stp d8,d9,[x0,#8*8]
|
|
313
|
+
stp d10,d11,[x0,#8*10]
|
|
314
|
+
stp d12,d13,[x0,#8*12]
|
|
315
|
+
stp d14,d15,[x0,#8*14]
|
|
316
|
+
stp d16,d17,[x0,#8*16]
|
|
317
|
+
stp d18,d19,[x0,#8*18]
|
|
318
|
+
stp d20,d21,[x0,#8*20]
|
|
319
|
+
stp d22,d23,[x0,#8*22]
|
|
320
|
+
str d24,[x0,#8*24]
|
|
321
|
+
|
|
322
|
+
mov x0, x11
|
|
323
|
+
|
|
324
|
+
ldr x30,[sp,#8]
|
|
325
|
+
ldp d8,d9,[sp,#16]
|
|
326
|
+
ldp d10,d11,[sp,#32]
|
|
327
|
+
ldp d12,d13,[sp,#48]
|
|
328
|
+
ldp d14,d15,[sp,#64]
|
|
329
|
+
ldr x29,[sp],#80
|
|
330
|
+
|
|
331
|
+
ret
|
|
332
|
+
.ifdef macOS
|
|
333
|
+
.else
|
|
334
|
+
.size KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb,.-KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
|
|
335
|
+
.endif
|
|
336
|
+
|
|
337
|
+
.ifdef macOS
|
|
338
|
+
.globl _KeccakP1600times2_ARMv8Asha3_Permute_12rounds
|
|
339
|
+
_KeccakP1600times2_ARMv8Asha3_Permute_12rounds:
|
|
340
|
+
.else
|
|
341
|
+
.globl KeccakP1600times2_ARMv8Asha3_Permute_12rounds
|
|
342
|
+
.type KeccakP1600times2_ARMv8Asha3_Permute_12rounds,%function
|
|
343
|
+
KeccakP1600times2_ARMv8Asha3_Permute_12rounds:
|
|
344
|
+
.endif
|
|
345
|
+
.balign 32
|
|
346
|
+
stp x29,x30,[sp,#-80]!
|
|
347
|
+
add x29,sp,#0
|
|
348
|
+
stp d8,d9,[sp,#16] // per ABI requirement
|
|
349
|
+
stp d10,d11,[sp,#32]
|
|
350
|
+
stp d12,d13,[sp,#48]
|
|
351
|
+
stp d14,d15,[sp,#64]
|
|
352
|
+
|
|
353
|
+
ld1 { v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #64
|
|
354
|
+
ld1 { v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #64
|
|
355
|
+
ld1 { v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #64
|
|
356
|
+
ld1 {v12.2d, v13.2d, v14.2d, v15.2d}, [x0], #64
|
|
357
|
+
ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x0], #64
|
|
358
|
+
ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x0], #64
|
|
359
|
+
ld1 {v24.2d}, [x0]
|
|
360
|
+
sub x0, x0, #64*6
|
|
361
|
+
|
|
362
|
+
bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
|
|
363
|
+
|
|
364
|
+
ldr x30,[sp,#8]
|
|
365
|
+
st1 { v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #64
|
|
366
|
+
st1 { v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #64
|
|
367
|
+
st1 { v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #64
|
|
368
|
+
st1 {v12.2d, v13.2d, v14.2d, v15.2d}, [x0], #64
|
|
369
|
+
st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x0], #64
|
|
370
|
+
st1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x0], #64
|
|
371
|
+
st1 {v24.2d}, [x0]
|
|
372
|
+
|
|
373
|
+
ldp d8,d9,[sp,#16]
|
|
374
|
+
ldp d10,d11,[sp,#32]
|
|
375
|
+
ldp d12,d13,[sp,#48]
|
|
376
|
+
ldp d14,d15,[sp,#64]
|
|
377
|
+
ldr x29,[sp],#80
|
|
378
|
+
|
|
379
|
+
ret
|
|
380
|
+
.ifdef macOS
|
|
381
|
+
.else
|
|
382
|
+
.size KeccakP1600times2_ARMv8Asha3_Permute_12rounds,.-KeccakP1600times2_ARMv8Asha3_Permute_12rounds
|
|
383
|
+
.endif
|
|
384
|
+
|
|
385
|
+
.ifdef macOS
|
|
386
|
+
.globl _KangarooTwelve_ARMv8Asha3_Process2Leaves
|
|
387
|
+
_KangarooTwelve_ARMv8Asha3_Process2Leaves:
|
|
388
|
+
.else
|
|
389
|
+
.globl KangarooTwelve_ARMv8Asha3_Process2Leaves
|
|
390
|
+
.type KangarooTwelve_ARMv8Asha3_Process2Leaves,%function
|
|
391
|
+
KangarooTwelve_ARMv8Asha3_Process2Leaves:
|
|
392
|
+
.endif
|
|
393
|
+
.balign 32
|
|
394
|
+
stp x29,x30,[sp,#-80]!
|
|
395
|
+
add x29,sp,#0
|
|
396
|
+
stp d8,d9,[sp,#16] // per ABI requirement
|
|
397
|
+
stp d10,d11,[sp,#32]
|
|
398
|
+
stp d12,d13,[sp,#48]
|
|
399
|
+
stp d14,d15,[sp,#64]
|
|
400
|
+
|
|
401
|
+
movi v0.2d, #0
|
|
402
|
+
movi v1.2d, #0
|
|
403
|
+
movi v2.2d, #0
|
|
404
|
+
movi v3.2d, #0
|
|
405
|
+
movi v4.2d, #0
|
|
406
|
+
movi v5.2d, #0
|
|
407
|
+
movi v6.2d, #0
|
|
408
|
+
movi v7.2d, #0
|
|
409
|
+
movi v8.2d, #0
|
|
410
|
+
movi v9.2d, #0
|
|
411
|
+
movi v10.2d, #0
|
|
412
|
+
movi v11.2d, #0
|
|
413
|
+
movi v12.2d, #0
|
|
414
|
+
movi v13.2d, #0
|
|
415
|
+
movi v14.2d, #0
|
|
416
|
+
movi v15.2d, #0
|
|
417
|
+
movi v16.2d, #0
|
|
418
|
+
movi v17.2d, #0
|
|
419
|
+
movi v18.2d, #0
|
|
420
|
+
movi v19.2d, #0
|
|
421
|
+
movi v20.2d, #0
|
|
422
|
+
movi v21.2d, #0
|
|
423
|
+
movi v22.2d, #0
|
|
424
|
+
movi v23.2d, #0
|
|
425
|
+
movi v24.2d, #0
|
|
426
|
+
|
|
427
|
+
// x12 is input + chunkSize
|
|
428
|
+
add x12, x0, #8192
|
|
429
|
+
|
|
430
|
+
// Loop over the first 48 blocks
|
|
431
|
+
mov x11, 48
|
|
432
|
+
b .KangarooTwelve_ARMv8Asha3_Process2Leaves_blocks
|
|
433
|
+
.KangarooTwelve_ARMv8Asha3_Process2Leaves_blocks:
|
|
434
|
+
|
|
435
|
+
// Lanes 0-3
|
|
436
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
437
|
+
ld1 {v25.d}[1], [x12], #8
|
|
438
|
+
ld1 {v26.d}[1], [x12], #8
|
|
439
|
+
ld1 {v27.d}[1], [x12], #8
|
|
440
|
+
ld1 {v28.d}[1], [x12], #8
|
|
441
|
+
#ifdef __AARCH64EB__
|
|
442
|
+
rev64 v25.16b, v25.16b
|
|
443
|
+
rev64 v26.16b, v26.16b
|
|
444
|
+
rev64 v27.16b, v27.16b
|
|
445
|
+
rev64 v28.16b, v28.16b
|
|
446
|
+
#endif
|
|
447
|
+
eor v0.16b, v0.16b, v25.16b
|
|
448
|
+
eor v1.16b, v1.16b, v26.16b
|
|
449
|
+
eor v2.16b, v2.16b, v27.16b
|
|
450
|
+
eor v3.16b, v3.16b, v28.16b
|
|
451
|
+
|
|
452
|
+
// Lanes 4-7
|
|
453
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
454
|
+
ld1 {v25.d}[1], [x12], #8
|
|
455
|
+
ld1 {v26.d}[1], [x12], #8
|
|
456
|
+
ld1 {v27.d}[1], [x12], #8
|
|
457
|
+
ld1 {v28.d}[1], [x12], #8
|
|
458
|
+
#ifdef __AARCH64EB__
|
|
459
|
+
rev64 v25.16b, v25.16b
|
|
460
|
+
rev64 v26.16b, v26.16b
|
|
461
|
+
rev64 v27.16b, v27.16b
|
|
462
|
+
rev64 v28.16b, v28.16b
|
|
463
|
+
#endif
|
|
464
|
+
eor v4.16b, v4.16b, v25.16b
|
|
465
|
+
eor v5.16b, v5.16b, v26.16b
|
|
466
|
+
eor v6.16b, v6.16b, v27.16b
|
|
467
|
+
eor v7.16b, v7.16b, v28.16b
|
|
468
|
+
|
|
469
|
+
// Lanes 8-11
|
|
470
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
471
|
+
ld1 {v25.d}[1], [x12], #8
|
|
472
|
+
ld1 {v26.d}[1], [x12], #8
|
|
473
|
+
ld1 {v27.d}[1], [x12], #8
|
|
474
|
+
ld1 {v28.d}[1], [x12], #8
|
|
475
|
+
#ifdef __AARCH64EB__
|
|
476
|
+
rev64 v25.16b, v25.16b
|
|
477
|
+
rev64 v26.16b, v26.16b
|
|
478
|
+
rev64 v27.16b, v27.16b
|
|
479
|
+
rev64 v28.16b, v28.16b
|
|
480
|
+
#endif
|
|
481
|
+
eor v8.16b, v8.16b, v25.16b
|
|
482
|
+
eor v9.16b, v9.16b, v26.16b
|
|
483
|
+
eor v10.16b, v10.16b, v27.16b
|
|
484
|
+
eor v11.16b, v11.16b, v28.16b
|
|
485
|
+
|
|
486
|
+
// Lanes 12-15
|
|
487
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
488
|
+
ld1 {v25.d}[1], [x12], #8
|
|
489
|
+
ld1 {v26.d}[1], [x12], #8
|
|
490
|
+
ld1 {v27.d}[1], [x12], #8
|
|
491
|
+
ld1 {v28.d}[1], [x12], #8
|
|
492
|
+
#ifdef __AARCH64EB__
|
|
493
|
+
rev64 v25.16b, v25.16b
|
|
494
|
+
rev64 v26.16b, v26.16b
|
|
495
|
+
rev64 v27.16b, v27.16b
|
|
496
|
+
rev64 v28.16b, v28.16b
|
|
497
|
+
#endif
|
|
498
|
+
eor v12.16b, v12.16b, v25.16b
|
|
499
|
+
eor v13.16b, v13.16b, v26.16b
|
|
500
|
+
eor v14.16b, v14.16b, v27.16b
|
|
501
|
+
eor v15.16b, v15.16b, v28.16b
|
|
502
|
+
|
|
503
|
+
// Lanes 16-20
|
|
504
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
505
|
+
ld1 {v25.d}[1], [x12], #8
|
|
506
|
+
ld1 {v26.d}[1], [x12], #8
|
|
507
|
+
ld1 {v27.d}[1], [x12], #8
|
|
508
|
+
ld1 {v28.d}[1], [x12], #8
|
|
509
|
+
ld1 {v29.d}[0], [x0], #8
|
|
510
|
+
ld1 {v29.d}[1], [x12], #8
|
|
511
|
+
#ifdef __AARCH64EB__
|
|
512
|
+
rev64 v25.16b, v25.16b
|
|
513
|
+
rev64 v26.16b, v26.16b
|
|
514
|
+
rev64 v27.16b, v27.16b
|
|
515
|
+
rev64 v28.16b, v28.16b
|
|
516
|
+
rev64 v29.16b, v29.16b
|
|
517
|
+
#endif
|
|
518
|
+
eor v16.16b, v16.16b, v25.16b
|
|
519
|
+
eor v17.16b, v17.16b, v26.16b
|
|
520
|
+
eor v18.16b, v18.16b, v27.16b
|
|
521
|
+
eor v19.16b, v19.16b, v28.16b
|
|
522
|
+
eor v20.16b, v20.16b, v29.16b
|
|
523
|
+
|
|
524
|
+
bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
|
|
525
|
+
|
|
526
|
+
subs x11, x11, #1
|
|
527
|
+
bne .KangarooTwelve_ARMv8Asha3_Process2Leaves_blocks
|
|
528
|
+
|
|
529
|
+
// Lanes 0-3
|
|
530
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
531
|
+
ld1 {v25.d}[1], [x12], #8
|
|
532
|
+
ld1 {v26.d}[1], [x12], #8
|
|
533
|
+
ld1 {v27.d}[1], [x12], #8
|
|
534
|
+
ld1 {v28.d}[1], [x12], #8
|
|
535
|
+
#ifdef __AARCH64EB__
|
|
536
|
+
rev64 v25.16b, v25.16b
|
|
537
|
+
rev64 v26.16b, v26.16b
|
|
538
|
+
rev64 v27.16b, v27.16b
|
|
539
|
+
rev64 v28.16b, v28.16b
|
|
540
|
+
#endif
|
|
541
|
+
eor v0.16b, v0.16b, v25.16b
|
|
542
|
+
eor v1.16b, v1.16b, v26.16b
|
|
543
|
+
eor v2.16b, v2.16b, v27.16b
|
|
544
|
+
eor v3.16b, v3.16b, v28.16b
|
|
545
|
+
|
|
546
|
+
// Lanes 4-7
|
|
547
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
548
|
+
ld1 {v25.d}[1], [x12], #8
|
|
549
|
+
ld1 {v26.d}[1], [x12], #8
|
|
550
|
+
ld1 {v27.d}[1], [x12], #8
|
|
551
|
+
ld1 {v28.d}[1], [x12], #8
|
|
552
|
+
#ifdef __AARCH64EB__
|
|
553
|
+
rev64 v25.16b, v25.16b
|
|
554
|
+
rev64 v26.16b, v26.16b
|
|
555
|
+
rev64 v27.16b, v27.16b
|
|
556
|
+
rev64 v28.16b, v28.16b
|
|
557
|
+
#endif
|
|
558
|
+
eor v4.16b, v4.16b, v25.16b
|
|
559
|
+
eor v5.16b, v5.16b, v26.16b
|
|
560
|
+
eor v6.16b, v6.16b, v27.16b
|
|
561
|
+
eor v7.16b, v7.16b, v28.16b
|
|
562
|
+
|
|
563
|
+
// Lanes 8-11
|
|
564
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
565
|
+
ld1 {v25.d}[1], [x12], #8
|
|
566
|
+
ld1 {v26.d}[1], [x12], #8
|
|
567
|
+
ld1 {v27.d}[1], [x12], #8
|
|
568
|
+
ld1 {v28.d}[1], [x12], #8
|
|
569
|
+
#ifdef __AARCH64EB__
|
|
570
|
+
rev64 v25.16b, v25.16b
|
|
571
|
+
rev64 v26.16b, v26.16b
|
|
572
|
+
rev64 v27.16b, v27.16b
|
|
573
|
+
rev64 v28.16b, v28.16b
|
|
574
|
+
#endif
|
|
575
|
+
eor v8.16b, v8.16b, v25.16b
|
|
576
|
+
eor v9.16b, v9.16b, v26.16b
|
|
577
|
+
eor v10.16b, v10.16b, v27.16b
|
|
578
|
+
eor v11.16b, v11.16b, v28.16b
|
|
579
|
+
|
|
580
|
+
// Lanes 12-15
|
|
581
|
+
ld1 {v25.1d-v28.1d}, [x0], #32
|
|
582
|
+
ld1 {v25.d}[1], [x12], #8
|
|
583
|
+
ld1 {v26.d}[1], [x12], #8
|
|
584
|
+
ld1 {v27.d}[1], [x12], #8
|
|
585
|
+
ld1 {v28.d}[1], [x12], #8
|
|
586
|
+
#ifdef __AARCH64EB__
|
|
587
|
+
rev64 v25.16b, v25.16b
|
|
588
|
+
rev64 v26.16b, v26.16b
|
|
589
|
+
rev64 v27.16b, v27.16b
|
|
590
|
+
rev64 v28.16b, v28.16b
|
|
591
|
+
#endif
|
|
592
|
+
eor v12.16b, v12.16b, v25.16b
|
|
593
|
+
eor v13.16b, v13.16b, v26.16b
|
|
594
|
+
eor v14.16b, v14.16b, v27.16b
|
|
595
|
+
eor v15.16b, v15.16b, v28.16b
|
|
596
|
+
|
|
597
|
+
mov x13, #0x0B
|
|
598
|
+
dup v25.2d, x13
|
|
599
|
+
mov x13, #0x8000000000000000
|
|
600
|
+
dup v26.2d, x13
|
|
601
|
+
eor v16.16b, v16.16b, v25.16b
|
|
602
|
+
eor v20.16b, v20.16b, v26.16b
|
|
603
|
+
|
|
604
|
+
bl KeccakP1600_ARMv8Asha3_Permute_12rounds_internal
|
|
605
|
+
|
|
606
|
+
st1 {v0.1d-v3.1d}, [x1], #32
|
|
607
|
+
st1 {v0.d}[1], [x1], #8
|
|
608
|
+
st1 {v1.d}[1], [x1], #8
|
|
609
|
+
st1 {v2.d}[1], [x1], #8
|
|
610
|
+
st1 {v3.d}[1], [x1], #8
|
|
611
|
+
|
|
612
|
+
ldr x30,[sp,#8]
|
|
613
|
+
ldp d8,d9,[sp,#16]
|
|
614
|
+
ldp d10,d11,[sp,#32]
|
|
615
|
+
ldp d12,d13,[sp,#48]
|
|
616
|
+
ldp d14,d15,[sp,#64]
|
|
617
|
+
ldr x29,[sp],#80
|
|
618
|
+
|
|
619
|
+
ret
|
|
620
|
+
.ifdef macOS
|
|
621
|
+
.else
|
|
622
|
+
.size KangarooTwelve_ARMv8Asha3_Process2Leaves,.-KangarooTwelve_ARMv8Asha3_Process2Leaves
|
|
623
|
+
.endif
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
K12 based on the eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
The Keccak-p permutations, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche.
|
|
6
|
+
|
|
7
|
+
Implementation by Gilles Van Assche and Ronny Van Keer, hereby denoted as "the implementer".
|
|
8
|
+
|
|
9
|
+
For more information, feedback or questions, please refer to the Keccak Team website:
|
|
10
|
+
https://keccak.team/
|
|
11
|
+
|
|
12
|
+
To the extent possible under law, the implementer has waived all copyright
|
|
13
|
+
and related or neighboring rights to the source code in this file.
|
|
14
|
+
http://creativecommons.org/publicdomain/zero/1.0/
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
Please refer to the XKCP for more details.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#ifndef _KeccakP_1600_SnP_h_
|
|
22
|
+
#define _KeccakP_1600_SnP_h_
|
|
23
|
+
|
|
24
|
+
/* Keccak-p[1600] */
|
|
25
|
+
|
|
26
|
+
#define KeccakP1600_stateSizeInBytes 200
|
|
27
|
+
#define KeccakP1600_stateAlignment 8
|
|
28
|
+
#define KeccakP1600_12rounds_FastLoop_supported
|
|
29
|
+
|
|
30
|
+
const char * KeccakP1600_GetImplementation();
|
|
31
|
+
void KeccakP1600_opt64_Initialize(void *state);
|
|
32
|
+
void KeccakP1600_opt64_AddByte(void *state, unsigned char data, unsigned int offset);
|
|
33
|
+
void KeccakP1600_opt64_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length);
|
|
34
|
+
void KeccakP1600_ARMv8Asha3_Permute_12rounds(void *state);
|
|
35
|
+
void KeccakP1600_opt64_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length);
|
|
36
|
+
size_t KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen);
|
|
37
|
+
|
|
38
|
+
#define KeccakP1600_Initialize KeccakP1600_opt64_Initialize
|
|
39
|
+
#define KeccakP1600_AddByte KeccakP1600_opt64_AddByte
|
|
40
|
+
#define KeccakP1600_AddBytes KeccakP1600_opt64_AddBytes
|
|
41
|
+
#define KeccakP1600_Permute_12rounds KeccakP1600_ARMv8Asha3_Permute_12rounds
|
|
42
|
+
#define KeccakP1600_ExtractBytes KeccakP1600_opt64_ExtractBytes
|
|
43
|
+
#define KeccakP1600_12rounds_FastLoop_Absorb KeccakP1600_ARMv8Asha3_12rounds_FastLoop_Absorb
|
|
44
|
+
|
|
45
|
+
/* Keccak-p[1600]×2 */
|
|
46
|
+
|
|
47
|
+
int KeccakP1600times2_IsAvailable();
|
|
48
|
+
const char * KeccakP1600times2_GetImplementation();
|
|
49
|
+
void KeccakP1600times2_ARMv8Asha3_Permute_12rounds(void *state);
|
|
50
|
+
void KangarooTwelve_ARMv8Asha3_Process2Leaves(const unsigned char *input, unsigned char *output);
|
|
51
|
+
|
|
52
|
+
#define KeccakP1600times2_Permute_12rounds KeccakP1600times2_ARMv8Asha3_Permute_12rounds
|
|
53
|
+
#define KangarooTwelve_Process2Leaves KangarooTwelve_ARMv8Asha3_Process2Leaves
|
|
54
|
+
|
|
55
|
+
/* Keccak-p[1600]×4 */
|
|
56
|
+
|
|
57
|
+
int KeccakP1600times4_IsAvailable();
|
|
58
|
+
const char * KeccakP1600times4_GetImplementation();
|
|
59
|
+
|
|
60
|
+
/* Keccak-p[1600]×8 */
|
|
61
|
+
|
|
62
|
+
int KeccakP1600times8_IsAvailable();
|
|
63
|
+
const char * KeccakP1600times8_GetImplementation();
|
|
64
|
+
|
|
65
|
+
#endif
|