sleeping_kangaroo12 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +127 -0
- data/ext/Rakefile +73 -0
- data/ext/binding/sleeping_kangaroo12.c +39 -0
- data/ext/config/xkcp.build +17 -0
- data/ext/xkcp/LICENSE +1 -0
- data/ext/xkcp/Makefile +15 -0
- data/ext/xkcp/Makefile.build +200 -0
- data/ext/xkcp/README.markdown +296 -0
- data/ext/xkcp/lib/HighLevel.build +143 -0
- data/ext/xkcp/lib/LowLevel.build +757 -0
- data/ext/xkcp/lib/common/align.h +33 -0
- data/ext/xkcp/lib/common/brg_endian.h +143 -0
- data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +301 -0
- data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.h +97 -0
- data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +81 -0
- data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +125 -0
- data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +48 -0
- data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +79 -0
- data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +81 -0
- data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +73 -0
- data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +195 -0
- data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +111 -0
- data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +76 -0
- data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +314 -0
- data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +61 -0
- data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +67 -0
- data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +128 -0
- data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +93 -0
- data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +599 -0
- data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +573 -0
- data/ext/xkcp/lib/high/Ketje/Ketjev2.c +87 -0
- data/ext/xkcp/lib/high/Ketje/Ketjev2.h +88 -0
- data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +274 -0
- data/ext/xkcp/lib/high/Keyak/Keyakv2.c +132 -0
- data/ext/xkcp/lib/high/Keyak/Keyakv2.h +217 -0
- data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +81 -0
- data/ext/xkcp/lib/high/Keyak/Motorist.inc +953 -0
- data/ext/xkcp/lib/high/Kravatte/Kravatte.c +533 -0
- data/ext/xkcp/lib/high/Kravatte/Kravatte.h +115 -0
- data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +557 -0
- data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +247 -0
- data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +66 -0
- data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +336 -0
- data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +26 -0
- data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +55 -0
- data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +35 -0
- data/ext/xkcp/lib/high/Xoofff/Xoofff.c +634 -0
- data/ext/xkcp/lib/high/Xoofff/Xoofff.h +147 -0
- data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +483 -0
- data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +241 -0
- data/ext/xkcp/lib/high/common/Phases.h +25 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +41 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +1666 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +1655 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +1268 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +1264 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +1178 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +1175 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +1338 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +1336 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +1343 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +1339 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +42 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +823 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +831 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +31 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +540 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +42 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +733 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +1121 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-AVX2.s +1100 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +52 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +623 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +47 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +6 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +6 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +6 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +1031 -0
- data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +53 -0
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +44 -0
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +476 -0
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +6 -0
- data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +6 -0
- data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros +748 -0
- data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +305 -0
- data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-SnP.h +40 -0
- data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +420 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +43 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-inplace32BI.c +1163 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-SnP.h +54 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +565 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +8 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +6 -0
- data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +6 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +44 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +23 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +625 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +44 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +440 -0
- data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h +23 -0
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +42 -0
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +1196 -0
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +1124 -0
- data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +1196 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +1392 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +1394 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +42 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +850 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +51 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +957 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +49 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +8 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +8 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +9 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +9 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +45 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +37 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +1321 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +55 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +881 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +51 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +45 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +37 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +45 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +38 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +1615 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +57 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +45 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +37 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +45 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +38 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +45 -0
- data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +38 -0
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +41 -0
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +442 -0
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +446 -0
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +419 -0
- data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +427 -0
- data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +41 -0
- data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +647 -0
- data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +39 -0
- data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +190 -0
- data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +43 -0
- data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +412 -0
- data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +23 -0
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +41 -0
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +454 -0
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +458 -0
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +455 -0
- data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +458 -0
- data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +41 -0
- data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +728 -0
- data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +43 -0
- data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +414 -0
- data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +23 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +42 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +527 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +533 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +528 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +534 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +521 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +527 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +517 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +523 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +550 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +556 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +32 -0
- data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +432 -0
- data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +42 -0
- data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +929 -0
- data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +40 -0
- data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +244 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +46 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +184 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +454 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +459 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +83 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +88 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +7 -0
- data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +44 -0
- data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +437 -0
- data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +23 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +57 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +475 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +480 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +590 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +590 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +126 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +68 -0
- data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +174 -0
- data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +80 -0
- data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +68 -0
- data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +142 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +55 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +1086 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +1092 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +721 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +726 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +723 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +729 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +1164 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +1165 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +562 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +563 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +563 -0
- data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +565 -0
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +55 -0
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +476 -0
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +485 -0
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +362 -0
- data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +367 -0
- data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +43 -0
- data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +1341 -0
- data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +581 -0
- data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +58 -0
- data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +332 -0
- data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +329 -0
- data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +53 -0
- data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +355 -0
- data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +79 -0
- data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +56 -0
- data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +399 -0
- data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +127 -0
- data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +43 -0
- data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +253 -0
- data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +1044 -0
- data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +49 -0
- data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +45 -0
- data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +37 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +1587 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +48 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +1202 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +48 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +484 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +44 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +45 -0
- data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +37 -0
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +939 -0
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +49 -0
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +1216 -0
- data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +48 -0
- data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +45 -0
- data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +37 -0
- data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +290 -0
- data/ext/xkcp/lib/low/common/SnP-Relaned.h +141 -0
- data/ext/xkcp/support/Build/ExpandProducts.xsl +79 -0
- data/ext/xkcp/support/Build/ToGlobalMakefile.xsl +206 -0
- data/ext/xkcp/support/Build/ToOneTarget.xsl +89 -0
- data/ext/xkcp/support/Build/ToTargetConfigFile.xsl +37 -0
- data/ext/xkcp/support/Build/ToTargetMakefile.xsl +298 -0
- data/ext/xkcp/support/Build/ToVCXProj.xsl +198 -0
- data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +133 -0
- data/ext/xkcp/support/Kernel-PMU/Makefile +8 -0
- data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +129 -0
- data/ext/xkcp/support/Kernel-PMU/load-module +1 -0
- data/ext/xkcp/util/KeccakSum/KeccakSum.c +394 -0
- data/ext/xkcp/util/KeccakSum/base64.c +86 -0
- data/ext/xkcp/util/KeccakSum/base64.h +12 -0
- data/lib/sleeping_kangaroo12/binding.rb +15 -0
- data/lib/sleeping_kangaroo12/build/loader.rb +40 -0
- data/lib/sleeping_kangaroo12/build/platform.rb +37 -0
- data/lib/sleeping_kangaroo12/build.rb +4 -0
- data/lib/sleeping_kangaroo12/digest.rb +103 -0
- data/lib/sleeping_kangaroo12/version.rb +5 -0
- data/lib/sleeping_kangaroo12.rb +7 -0
- metadata +372 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
;
|
|
2
|
+
; The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
; https://github.com/XKCP/XKCP
|
|
4
|
+
;
|
|
5
|
+
; The Keccak-p permutations, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche.
|
|
6
|
+
;
|
|
7
|
+
; Implementation by Ronny Van Keer, hereby denoted as "the implementer".
|
|
8
|
+
;
|
|
9
|
+
; For more information, feedback or questions, please refer to the Keccak Team website:
|
|
10
|
+
; https://keccak.team/
|
|
11
|
+
;
|
|
12
|
+
; To the extent possible under law, the implementer has waived all copyright
|
|
13
|
+
; and related or neighboring rights to the source code in this file.
|
|
14
|
+
; http://creativecommons.org/publicdomain/zero/1.0/
|
|
15
|
+
;
|
|
16
|
+
; ---
|
|
17
|
+
;
|
|
18
|
+
; This file implements Keccak-p[200] in a SnP-compatible way.
|
|
19
|
+
; Please refer to SnP-documentation.h for more details.
|
|
20
|
+
;
|
|
21
|
+
; This implementation comes with KeccakP-200-SnP.h in the same folder.
|
|
22
|
+
; Please refer to LowLevel.build for the exact list of other files it must be combined with.
|
|
23
|
+
;
|
|
24
|
+
|
|
25
|
+
; WARNING: This implementation assumes a little endian CPU with ARMv7M architecture (e.g., Cortex-M3) and the ARMCC compiler.
|
|
26
|
+
|
|
27
|
+
PRESERVE8
|
|
28
|
+
THUMB
|
|
29
|
+
AREA |.text|, CODE, READONLY
|
|
30
|
+
|
|
31
|
+
_ba equ 0
|
|
32
|
+
_be equ 1
|
|
33
|
+
_bi equ 2
|
|
34
|
+
_bo equ 3
|
|
35
|
+
_bu equ 4
|
|
36
|
+
_ga equ 5
|
|
37
|
+
_ge equ 6
|
|
38
|
+
_gi equ 7
|
|
39
|
+
_go equ 8
|
|
40
|
+
_gu equ 9
|
|
41
|
+
_ka equ 10
|
|
42
|
+
_ke equ 11
|
|
43
|
+
_ki equ 12
|
|
44
|
+
_ko equ 13
|
|
45
|
+
_ku equ 14
|
|
46
|
+
_ma equ 15
|
|
47
|
+
_me equ 16
|
|
48
|
+
_mi equ 17
|
|
49
|
+
_mo equ 18
|
|
50
|
+
_mu equ 19
|
|
51
|
+
_sa equ 20
|
|
52
|
+
_se equ 21
|
|
53
|
+
_si equ 22
|
|
54
|
+
_so equ 23
|
|
55
|
+
_su equ 24
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
_a equ 0
|
|
59
|
+
_e equ 8
|
|
60
|
+
_i equ 16
|
|
61
|
+
_o equ 24
|
|
62
|
+
|
|
63
|
+
_B equ 0
|
|
64
|
+
_G equ 8
|
|
65
|
+
_K equ 16
|
|
66
|
+
_M equ 24
|
|
67
|
+
|
|
68
|
+
MACRO
|
|
69
|
+
RhoPi $rot, $rOut, $oOut, $rIn, $oIn
|
|
70
|
+
if $rot != 0
|
|
71
|
+
if $oIn ==0
|
|
72
|
+
ubfx r2, $rIn, #8-$rot, #$rot
|
|
73
|
+
bfi r2, $rIn, #$rot, #8-$rot
|
|
74
|
+
bfi $rOut, r2, #$oOut, #8
|
|
75
|
+
else
|
|
76
|
+
uxtb r1, $rIn, ROR #$oIn
|
|
77
|
+
ubfx r2, r1, #8-$rot, #$rot
|
|
78
|
+
bfi r2, r1, #$rot, #8-$rot
|
|
79
|
+
bfi $rOut, r2, #$oOut, #8
|
|
80
|
+
endif
|
|
81
|
+
else
|
|
82
|
+
if $oIn !=0
|
|
83
|
+
lsr r1, $rIn, #$oIn
|
|
84
|
+
bfi $rOut, r1, #$oOut, #8
|
|
85
|
+
else
|
|
86
|
+
bfi $rOut, $rOut, #$oOut, #8
|
|
87
|
+
endif
|
|
88
|
+
endif
|
|
89
|
+
MEND
|
|
90
|
+
|
|
91
|
+
MACRO
|
|
92
|
+
Chi $rXaeio, $rXu, $offU
|
|
93
|
+
if $offU == 0
|
|
94
|
+
lsls r2, $rXu, #24
|
|
95
|
+
else
|
|
96
|
+
if $offU == 24
|
|
97
|
+
and r2, $rXu, #0xFF000000
|
|
98
|
+
else
|
|
99
|
+
ubfx r2, $rXu, #$offU, #8 ;r2 = Beiou
|
|
100
|
+
lsls r2, r2, #24
|
|
101
|
+
endif
|
|
102
|
+
endif
|
|
103
|
+
orr r2, r2, $rXaeio, LSR #8
|
|
104
|
+
lsl r1, $rXaeio, #24 ;r1 = Bioua
|
|
105
|
+
orr r1, r1, r2, LSR #8
|
|
106
|
+
bics r1, r1, r2 ;r1 = Bioua & ~ Beiou
|
|
107
|
+
bic r2, r2, $rXaeio ;r2 = Be & ~Ba
|
|
108
|
+
eor $rXaeio, $rXaeio, r1 ;Baeio ^= r1
|
|
109
|
+
if $offU !=0
|
|
110
|
+
eor r2, r2, $rXu, LSR #$offU ;r2 ^= Bu
|
|
111
|
+
else
|
|
112
|
+
eors r2, r2, $rXu ;r2 ^= Bu
|
|
113
|
+
endif
|
|
114
|
+
bfi $rXu, r2, #$offU, #8
|
|
115
|
+
MEND
|
|
116
|
+
|
|
117
|
+
;----------------------------------------------------------------------------
|
|
118
|
+
;
|
|
119
|
+
; void KeccakP200_StaticInitialize( void )
|
|
120
|
+
;
|
|
121
|
+
ALIGN
|
|
122
|
+
EXPORT KeccakP200_StaticInitialize
|
|
123
|
+
KeccakP200_StaticInitialize PROC
|
|
124
|
+
bx lr
|
|
125
|
+
ENDP
|
|
126
|
+
|
|
127
|
+
;----------------------------------------------------------------------------
|
|
128
|
+
;
|
|
129
|
+
; void KeccakP200_Initialize(void *state)
|
|
130
|
+
;
|
|
131
|
+
ALIGN
|
|
132
|
+
EXPORT KeccakP200_Initialize
|
|
133
|
+
KeccakP200_Initialize PROC
|
|
134
|
+
movs r1, #0
|
|
135
|
+
movs r2, #0
|
|
136
|
+
movs r3, #0
|
|
137
|
+
stmia r0!, { r1 - r3 }
|
|
138
|
+
stmia r0!, { r1 - r3 }
|
|
139
|
+
strb r1, [r0]
|
|
140
|
+
bx lr
|
|
141
|
+
ENDP
|
|
142
|
+
|
|
143
|
+
; ----------------------------------------------------------------------------
|
|
144
|
+
;
|
|
145
|
+
; void KeccakP200_AddByte(void *state, unsigned char byte, unsigned int offset)
|
|
146
|
+
;
|
|
147
|
+
ALIGN
|
|
148
|
+
EXPORT KeccakP200_AddByte
|
|
149
|
+
KeccakP200_AddByte PROC
|
|
150
|
+
ldrb r3, [r0, r2]
|
|
151
|
+
eors r3, r3, r1
|
|
152
|
+
strb r3, [r0, r2]
|
|
153
|
+
bx lr
|
|
154
|
+
ENDP
|
|
155
|
+
|
|
156
|
+
;----------------------------------------------------------------------------
|
|
157
|
+
;
|
|
158
|
+
; void KeccakP200_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
159
|
+
;
|
|
160
|
+
ALIGN
|
|
161
|
+
EXPORT KeccakP200_AddBytes
|
|
162
|
+
KeccakP200_AddBytes PROC
|
|
163
|
+
subs r3, r3, #1
|
|
164
|
+
bcc KeccakP200_AddBytes_Exit
|
|
165
|
+
adds r0, r0, r2
|
|
166
|
+
push {r4,lr}
|
|
167
|
+
KeccakP200_AddBytes_Loop
|
|
168
|
+
ldrb r2, [r1, r3]
|
|
169
|
+
ldrb r4, [r0, r3]
|
|
170
|
+
eors r2, r2, r4
|
|
171
|
+
strb r2, [r0, r3]
|
|
172
|
+
subs r3, r3, #1
|
|
173
|
+
bcs KeccakP200_AddBytes_Loop
|
|
174
|
+
pop {r4,pc}
|
|
175
|
+
KeccakP200_AddBytes_Exit
|
|
176
|
+
bx lr
|
|
177
|
+
ENDP
|
|
178
|
+
|
|
179
|
+
; ----------------------------------------------------------------------------
|
|
180
|
+
;
|
|
181
|
+
; void KeccakP200_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
182
|
+
;
|
|
183
|
+
ALIGN
|
|
184
|
+
EXPORT KeccakP200_OverwriteBytes
|
|
185
|
+
KeccakP200_OverwriteBytes PROC
|
|
186
|
+
subs r3, r3, #1
|
|
187
|
+
bcc KeccakP200_OverwriteBytes_Exit
|
|
188
|
+
adds r0, r0, r2
|
|
189
|
+
KeccakP200_OverwriteBytes_Loop
|
|
190
|
+
ldrb r2, [r1, r3]
|
|
191
|
+
strb r2, [r0, r3]
|
|
192
|
+
subs r3, r3, #1
|
|
193
|
+
bcs KeccakP200_OverwriteBytes_Loop
|
|
194
|
+
KeccakP200_OverwriteBytes_Exit
|
|
195
|
+
bx lr
|
|
196
|
+
ENDP
|
|
197
|
+
|
|
198
|
+
;----------------------------------------------------------------------------
|
|
199
|
+
;
|
|
200
|
+
; void KeccakP200_OverwriteWithZeroes(void *state, unsigned int byteCount)
|
|
201
|
+
;
|
|
202
|
+
ALIGN
|
|
203
|
+
EXPORT KeccakP200_OverwriteWithZeroes
|
|
204
|
+
KeccakP200_OverwriteWithZeroes PROC
|
|
205
|
+
movs r3, #0
|
|
206
|
+
lsrs r2, r1, #2
|
|
207
|
+
beq KeccakP200_OverwriteWithZeroes_Bytes
|
|
208
|
+
KeccakP200_OverwriteWithZeroes_Loop4Lanes
|
|
209
|
+
str r3, [r0], #4
|
|
210
|
+
subs r2, r2, #1
|
|
211
|
+
bne KeccakP200_OverwriteWithZeroes_Loop4Lanes
|
|
212
|
+
KeccakP200_OverwriteWithZeroes_Bytes
|
|
213
|
+
ands r1, #3
|
|
214
|
+
beq KeccakP200_OverwriteWithZeroes_Exit
|
|
215
|
+
KeccakP200_OverwriteWithZeroes_LoopBytes
|
|
216
|
+
strb r3, [r0], #1
|
|
217
|
+
subs r1, r1, #1
|
|
218
|
+
bne KeccakP200_OverwriteWithZeroes_LoopBytes
|
|
219
|
+
KeccakP200_OverwriteWithZeroes_Exit
|
|
220
|
+
bx lr
|
|
221
|
+
ENDP
|
|
222
|
+
|
|
223
|
+
; ----------------------------------------------------------------------------
|
|
224
|
+
;
|
|
225
|
+
; void KeccakP200_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
226
|
+
;
|
|
227
|
+
ALIGN
|
|
228
|
+
EXPORT KeccakP200_ExtractBytes
|
|
229
|
+
KeccakP200_ExtractBytes PROC
|
|
230
|
+
subs r3, r3, #1
|
|
231
|
+
bcc KeccakP200_ExtractBytes_Exit
|
|
232
|
+
adds r0, r0, r2
|
|
233
|
+
KeccakP200_ExtractBytes_Loop
|
|
234
|
+
ldrb r2, [r0, r3]
|
|
235
|
+
strb r2, [r1, r3]
|
|
236
|
+
subs r3, r3, #1
|
|
237
|
+
bcs KeccakP200_ExtractBytes_Loop
|
|
238
|
+
KeccakP200_ExtractBytes_Exit
|
|
239
|
+
bx lr
|
|
240
|
+
ENDP
|
|
241
|
+
|
|
242
|
+
; ----------------------------------------------------------------------------
|
|
243
|
+
;
|
|
244
|
+
; void KeccakP200_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
|
|
245
|
+
;
|
|
246
|
+
ALIGN
|
|
247
|
+
EXPORT KeccakP200_ExtractAndAddBytes
|
|
248
|
+
KeccakP200_ExtractAndAddBytes PROC
|
|
249
|
+
push {r4,r5}
|
|
250
|
+
adds r0, r0, r3 ; state += offset (offset register no longer needed, reuse for length)
|
|
251
|
+
ldr r3, [sp, #8] ; get length argument from stack
|
|
252
|
+
subs r3, r3, #1 ; if length != 0
|
|
253
|
+
bcc KeccakP200_ExtractAndAddBytes_Exit
|
|
254
|
+
KeccakP200_ExtractAndAddBytes_Loop
|
|
255
|
+
ldrb r5, [r0, r3]
|
|
256
|
+
ldrb r4, [r1, r3]
|
|
257
|
+
eors r5, r5, r4
|
|
258
|
+
strb r5, [r2, r3]
|
|
259
|
+
subs r3, r3, #1
|
|
260
|
+
bcs KeccakP200_ExtractAndAddBytes_Loop
|
|
261
|
+
KeccakP200_ExtractAndAddBytes_Exit
|
|
262
|
+
pop {r4,r5}
|
|
263
|
+
bx lr
|
|
264
|
+
ENDP
|
|
265
|
+
|
|
266
|
+
;----------------------------------------------------------------------------
|
|
267
|
+
;
|
|
268
|
+
; void KeccakP200_Permute_Nrounds( void *state, unsigned int nr )
|
|
269
|
+
;
|
|
270
|
+
ALIGN
|
|
271
|
+
EXPORT KeccakP200_Permute_Nrounds
|
|
272
|
+
KeccakP200_Permute_Nrounds PROC
|
|
273
|
+
push {r4-r12,lr}
|
|
274
|
+
adr lr, KeccakP200_Permute_RoundConstants18+18
|
|
275
|
+
sub lr, lr, r1
|
|
276
|
+
b KeccakP200_Permute
|
|
277
|
+
ENDP
|
|
278
|
+
|
|
279
|
+
;----------------------------------------------------------------------------
|
|
280
|
+
;
|
|
281
|
+
; void KeccakP200_Permute_18rounds( void *state )
|
|
282
|
+
;
|
|
283
|
+
ALIGN
|
|
284
|
+
EXPORT KeccakP200_Permute_18rounds
|
|
285
|
+
KeccakP200_Permute_18rounds PROC
|
|
286
|
+
push {r4-r12,lr}
|
|
287
|
+
adr lr, KeccakP200_Permute_RoundConstants18
|
|
288
|
+
KeccakP200_Permute
|
|
289
|
+
; Load state into registers
|
|
290
|
+
ldr r8, [r0, #_ba] ; B-aeio
|
|
291
|
+
ldr r9, [r0, #_ga] ; G-aeio
|
|
292
|
+
ldr r10, [r0, #_ka] ; K-aeio
|
|
293
|
+
ldr r11, [r0, #_ma] ; M-aeio
|
|
294
|
+
ldr r12, [r0, #_sa] ; S-aeio
|
|
295
|
+
ldrb r6, [r0, #_bu] ; BGKM-u
|
|
296
|
+
ldrb r1, [r0, #_gu]
|
|
297
|
+
orr r6, r6, r1, LSL #8
|
|
298
|
+
ldrb r1, [r0, #_ku]
|
|
299
|
+
orr r6, r6, r1, LSL #16
|
|
300
|
+
ldrb r1, [r0, #_mu]
|
|
301
|
+
orr r6, r6, r1, LSL #24
|
|
302
|
+
ldrb r7, [r0, #_su] ; S-u
|
|
303
|
+
KeccakP200_Permute_RoundLoop
|
|
304
|
+
; Prepare Theta
|
|
305
|
+
eors r4, r8, r9
|
|
306
|
+
eors r4, r4, r10
|
|
307
|
+
eors r4, r4, r11
|
|
308
|
+
eors r4, r4, r12
|
|
309
|
+
|
|
310
|
+
eor r1, r6, r6, LSL #16
|
|
311
|
+
eor r1, r1, r1, LSL #8
|
|
312
|
+
eor r5, r7, r1, LSR #24
|
|
313
|
+
|
|
314
|
+
bic r1, r4, #0x80808080 ; r1 = rol(Caeio)
|
|
315
|
+
lsl r1, r1, #1
|
|
316
|
+
and r2, r4, #0x80808080
|
|
317
|
+
orr r1, r1, r2, LSR #7
|
|
318
|
+
|
|
319
|
+
; Apply Theta u
|
|
320
|
+
eors r2, r1, r4, LSR #24 ; rt2(=Du) = Co ^ rol(Ca)
|
|
321
|
+
uxtb r2, r2
|
|
322
|
+
eor r7, r7, r2
|
|
323
|
+
orr r2, r2, r2, LSL #8
|
|
324
|
+
orr r2, r2, r2, LSL #16
|
|
325
|
+
eor r6, r6, r2
|
|
326
|
+
|
|
327
|
+
lsl r2, r5, #1 ; r2 = rol(Cu)
|
|
328
|
+
orrs r2, r2, r5, LSR #7
|
|
329
|
+
|
|
330
|
+
lsr r1, r1, #8
|
|
331
|
+
orr r1, r1, r2, LSL #24 ; r1 = rol(Ceiou)
|
|
332
|
+
orr r2, r5, r4, LSL #8 ; r2 = Cuaei
|
|
333
|
+
eors r2, r2, r1 ; r2 ^= r1
|
|
334
|
+
|
|
335
|
+
; Apply Theta aeio
|
|
336
|
+
eor r8, r8, r2
|
|
337
|
+
eor r9, r9, r2
|
|
338
|
+
eor r10, r10, r2
|
|
339
|
+
eor r11, r11, r2
|
|
340
|
+
eor r12, r12, r2
|
|
341
|
+
|
|
342
|
+
; Rho Pi
|
|
343
|
+
lsr r3, r8, #_e ; save _be
|
|
344
|
+
RhoPi 4, r8, _e, r9, _e ; _be, _ge 1 < 6
|
|
345
|
+
RhoPi 4, r9, _e, r6, _G ; _ge, _gu 6 < 9
|
|
346
|
+
RhoPi 5, r6, _G, r12, _i ; _gu, _si 9 < 22
|
|
347
|
+
RhoPi 7, r12, _i, r6, _K ; _si, _ku 22 < 14
|
|
348
|
+
RhoPi 2, r6, _K, r12, _a ; _ku, _sa 14 < 20
|
|
349
|
+
RhoPi 6, r12, _a, r8, _i ; _sa, _bi 20 < 2
|
|
350
|
+
RhoPi 3, r8, _i, r10, _i ; _bi, _ki 2 < 12
|
|
351
|
+
RhoPi 1, r10, _i, r10, _o ; _ki, _ko 12 < 13
|
|
352
|
+
RhoPi 0, r10, _o, r6, _M ; _ko, _mu 13 < 19
|
|
353
|
+
RhoPi 0, r6, _M, r12, _o ; _mu, _so 19 < 23
|
|
354
|
+
RhoPi 1, r12, _o, r11, _a ; _so, _ma 23 < 15
|
|
355
|
+
RhoPi 3, r11, _a, r6, _B ; _ma, _bu 15 < 4
|
|
356
|
+
RhoPi 6, r6, _B, r7, 0 ; _bu, _su 4 < 24
|
|
357
|
+
RhoPi 2, r7, 0, r12, _e ; _su, _se 24 < 21
|
|
358
|
+
RhoPi 7, r12, _e, r9, _o ; _se, _go 21 < 8
|
|
359
|
+
RhoPi 5, r9, _o, r11, _e ; _go, _me 8 < 16
|
|
360
|
+
RhoPi 4, r11, _e, r9, _a ; _me, _ga 16 < 5
|
|
361
|
+
RhoPi 4, r9, _a, r8, _o ; _ga, _bo 5 < 3
|
|
362
|
+
RhoPi 5, r8, _o, r11, _o ; _bo, _mo 3 < 18
|
|
363
|
+
RhoPi 7, r11, _o, r11, _i ; _mo, _mi 18 < 17
|
|
364
|
+
RhoPi 2, r11, _i, r10, _e ; _mi, _ke 17 < 11
|
|
365
|
+
RhoPi 6, r10, _e, r9, _i ; _ke, _gi 11 < 7
|
|
366
|
+
RhoPi 3, r9, _i, r10, _a ; _gi, _ka 7 < 10
|
|
367
|
+
RhoPi 1, r10, _a, r3, 0 ; _ka, _be 10 < 1
|
|
368
|
+
|
|
369
|
+
; Chi
|
|
370
|
+
Chi r8, r6, _B
|
|
371
|
+
Chi r9, r6, _G
|
|
372
|
+
Chi r10, r6, _K
|
|
373
|
+
Chi r11, r6, _M
|
|
374
|
+
Chi r12, r7, 0
|
|
375
|
+
|
|
376
|
+
; Iota
|
|
377
|
+
ldrb r1, [lr], #1
|
|
378
|
+
eor r8, r8, r1
|
|
379
|
+
cmp r1, #0x80
|
|
380
|
+
bne KeccakP200_Permute_RoundLoop
|
|
381
|
+
|
|
382
|
+
; Save registers into RAM state
|
|
383
|
+
str r8, [r0, #_ba] ; B-aeio
|
|
384
|
+
str r9, [r0, #_ga] ; G-aeio
|
|
385
|
+
str r10, [r0, #_ka] ; K-aeio
|
|
386
|
+
str r11, [r0, #_ma] ; M-aeio
|
|
387
|
+
str r12, [r0, #_sa] ; S-aeio
|
|
388
|
+
strb r6, [r0, #_bu] ; BGKM-u
|
|
389
|
+
lsrs r6, #8
|
|
390
|
+
strb r6, [r0, #_gu]
|
|
391
|
+
lsrs r6, #8
|
|
392
|
+
strb r6, [r0, #_ku]
|
|
393
|
+
lsrs r6, #8
|
|
394
|
+
strb r6, [r0, #_mu]
|
|
395
|
+
strb r7, [r0, #_su] ; S-u
|
|
396
|
+
pop {r4-r12,pc}
|
|
397
|
+
|
|
398
|
+
KeccakP200_Permute_RoundConstants18
|
|
399
|
+
dcb 0x01
|
|
400
|
+
dcb 0x82
|
|
401
|
+
dcb 0x8a
|
|
402
|
+
dcb 0x00
|
|
403
|
+
dcb 0x8b
|
|
404
|
+
dcb 0x01
|
|
405
|
+
dcb 0x81
|
|
406
|
+
dcb 0x09
|
|
407
|
+
dcb 0x8a
|
|
408
|
+
dcb 0x88
|
|
409
|
+
dcb 0x09
|
|
410
|
+
dcb 0x0a
|
|
411
|
+
dcb 0x8b
|
|
412
|
+
dcb 0x8b
|
|
413
|
+
dcb 0x89
|
|
414
|
+
dcb 0x03
|
|
415
|
+
dcb 0x02
|
|
416
|
+
dcb 0x80
|
|
417
|
+
ENDP
|
|
418
|
+
|
|
419
|
+
END
|