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,446 @@
|
|
|
1
|
+
@
|
|
2
|
+
@ The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
@ https://github.com/XKCP/XKCP
|
|
4
|
+
@
|
|
5
|
+
@ The Keccak-p permutations, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche.
|
|
6
|
+
@
|
|
7
|
+
@ Implementation by Ronny Van Keer, hereby denoted as "the implementer".
|
|
8
|
+
@
|
|
9
|
+
@ For more information, feedback or questions, please refer to the Keccak Team website:
|
|
10
|
+
@ https://keccak.team/
|
|
11
|
+
@
|
|
12
|
+
@ To the extent possible under law, the implementer has waived all copyright
|
|
13
|
+
@ and related or neighboring rights to the source code in this file.
|
|
14
|
+
@ http://creativecommons.org/publicdomain/zero/1.0/
|
|
15
|
+
@
|
|
16
|
+
@ ---
|
|
17
|
+
@
|
|
18
|
+
@ This file implements Keccak-p[200] in a SnP-compatible way.
|
|
19
|
+
@ Please refer to SnP-documentation.h for more details.
|
|
20
|
+
@
|
|
21
|
+
@ This implementation comes with KeccakP-200-SnP.h in the same folder.
|
|
22
|
+
@ Please refer to LowLevel.build for the exact list of other files it must be combined with.
|
|
23
|
+
@
|
|
24
|
+
|
|
25
|
+
@ WARNING: This implementation assumes a little endian CPU with@ ARMv6M architecture (e.g., Cortex-M0).
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
.thumb
|
|
29
|
+
.syntax unified
|
|
30
|
+
.text
|
|
31
|
+
|
|
32
|
+
.equ _ba, 0
|
|
33
|
+
.equ _be, 1
|
|
34
|
+
.equ _bi, 2
|
|
35
|
+
.equ _bo, 3
|
|
36
|
+
.equ _bu, 4
|
|
37
|
+
.equ _ga, 5
|
|
38
|
+
.equ _ge, 6
|
|
39
|
+
.equ _gi, 7
|
|
40
|
+
.equ _go, 8
|
|
41
|
+
.equ _gu, 9
|
|
42
|
+
.equ _ka, 10
|
|
43
|
+
.equ _ke, 11
|
|
44
|
+
.equ _ki, 12
|
|
45
|
+
.equ _ko, 13
|
|
46
|
+
.equ _ku, 14
|
|
47
|
+
.equ _ma, 15
|
|
48
|
+
.equ _me, 16
|
|
49
|
+
.equ _mi, 17
|
|
50
|
+
.equ _mo, 18
|
|
51
|
+
.equ _mu, 19
|
|
52
|
+
.equ _sa, 20
|
|
53
|
+
.equ _se, 21
|
|
54
|
+
.equ _si, 22
|
|
55
|
+
.equ _so, 23
|
|
56
|
+
.equ _su, 24
|
|
57
|
+
|
|
58
|
+
.macro xor5 result,ptr,b,g,k,m,s
|
|
59
|
+
ldrb \result, [\ptr, #\b]
|
|
60
|
+
ldrb r7, [\ptr, #\g]
|
|
61
|
+
eors \result, \result, r7
|
|
62
|
+
ldrb r7, [\ptr, #\k]
|
|
63
|
+
eors \result, \result, r7
|
|
64
|
+
ldrb r7, [\ptr, #\m]
|
|
65
|
+
eors \result, \result, r7
|
|
66
|
+
ldrb r7, [\ptr, #\s]
|
|
67
|
+
eors \result, \result, r7
|
|
68
|
+
.endm
|
|
69
|
+
|
|
70
|
+
.macro xorrol b, yy, rr
|
|
71
|
+
mov r7, \yy
|
|
72
|
+
eors \b, \b, r7
|
|
73
|
+
.if \rr != 0
|
|
74
|
+
lsls r7, \b, #\rr
|
|
75
|
+
lsrs \b, \b, #8-\rr
|
|
76
|
+
orrs \b, \b, r7
|
|
77
|
+
uxtb \b, \b
|
|
78
|
+
.endif
|
|
79
|
+
.endm
|
|
80
|
+
|
|
81
|
+
.macro rolxor d, a, b, rot
|
|
82
|
+
sxtb r7, \b
|
|
83
|
+
rors r7, r7, \rot
|
|
84
|
+
eors r7, r7, \a
|
|
85
|
+
uxtb r7, r7
|
|
86
|
+
mov \d, r7
|
|
87
|
+
.endm
|
|
88
|
+
|
|
89
|
+
.macro xandnot resptr, resofs, aa, bb, cc, temp
|
|
90
|
+
mov \temp, \cc
|
|
91
|
+
bics \temp, \temp, \bb
|
|
92
|
+
eors \temp, \temp, \aa
|
|
93
|
+
strb \temp, [\resptr, #\resofs]
|
|
94
|
+
.endm
|
|
95
|
+
|
|
96
|
+
.macro xandnotRC resptr, resofs, aa, bb, cc, rco
|
|
97
|
+
bics \cc, \cc, \bb
|
|
98
|
+
eors \cc, \cc, \aa
|
|
99
|
+
mov r7, r8
|
|
100
|
+
ldrb \bb, [r7, #\rco]
|
|
101
|
+
eors \cc, \cc, \bb
|
|
102
|
+
strb \cc, [\resptr, #\resofs]
|
|
103
|
+
.endm
|
|
104
|
+
|
|
105
|
+
.macro KeccakRound sOut, sIn, rco
|
|
106
|
+
@prepTheta
|
|
107
|
+
push { \sOut }
|
|
108
|
+
movs \sOut, #31
|
|
109
|
+
xor5 r1, \sIn, _ba, _ga, _ka, _ma, _sa
|
|
110
|
+
xor5 r2, \sIn, _be, _ge, _ke, _me, _se
|
|
111
|
+
xor5 r3, \sIn, _bi, _gi, _ki, _mi, _si
|
|
112
|
+
xor5 r4, \sIn, _bo, _go, _ko, _mo, _so
|
|
113
|
+
xor5 r5, \sIn, _bu, _gu, _ku, _mu, _su
|
|
114
|
+
rolxor r9, r5, r2, \sOut
|
|
115
|
+
rolxor r10, r1, r3, \sOut
|
|
116
|
+
rolxor r11, r2, r4, \sOut
|
|
117
|
+
rolxor r12, r3, r5, \sOut
|
|
118
|
+
rolxor lr, r4, r1, \sOut
|
|
119
|
+
pop { \sOut }
|
|
120
|
+
@thetaRhoPiChiIota
|
|
121
|
+
ldrb r1, [\sIn, #_bo]
|
|
122
|
+
ldrb r2, [\sIn, #_gu]
|
|
123
|
+
ldrb r3, [\sIn, #_ka]
|
|
124
|
+
ldrb r4, [\sIn, #_me]
|
|
125
|
+
ldrb r5, [\sIn, #_si]
|
|
126
|
+
xorrol r1, r12, 4
|
|
127
|
+
xorrol r2, lr, 4
|
|
128
|
+
xorrol r3, r9, 3
|
|
129
|
+
xorrol r4, r10, 5
|
|
130
|
+
xorrol r5, r11, 5
|
|
131
|
+
xandnot \sOut, _ga, r1, r2, r3, r7
|
|
132
|
+
xandnot \sOut, _ge, r2, r3, r4, r7
|
|
133
|
+
xandnot \sOut, _gi, r3, r4, r5, r7
|
|
134
|
+
xandnot \sOut, _go, r4, r5, r1, r7
|
|
135
|
+
xandnot \sOut, _gu, r5, r1, r2, r7
|
|
136
|
+
ldrb r1, [\sIn, #_be]
|
|
137
|
+
ldrb r2, [\sIn, #_gi]
|
|
138
|
+
ldrb r3, [\sIn, #_ko]
|
|
139
|
+
ldrb r4, [\sIn, #_mu]
|
|
140
|
+
ldrb r5, [\sIn, #_sa]
|
|
141
|
+
xorrol r1, r10, 1
|
|
142
|
+
xorrol r2, r11, 6
|
|
143
|
+
xorrol r3, r12, 1
|
|
144
|
+
xorrol r4, lr, 0
|
|
145
|
+
xorrol r5, r9, 2
|
|
146
|
+
xandnot \sOut, _ka, r1, r2, r3, r7
|
|
147
|
+
xandnot \sOut, _ke, r2, r3, r4, r7
|
|
148
|
+
xandnot \sOut, _ki, r3, r4, r5, r7
|
|
149
|
+
xandnot \sOut, _ko, r4, r5, r1, r7
|
|
150
|
+
xandnot \sOut, _ku, r5, r1, r2, r7
|
|
151
|
+
ldrb r1, [\sIn, #_bu]
|
|
152
|
+
ldrb r2, [\sIn, #_ga]
|
|
153
|
+
ldrb r3, [\sIn, #_ke]
|
|
154
|
+
ldrb r4, [\sIn, #_mi]
|
|
155
|
+
ldrb r5, [\sIn, #_so]
|
|
156
|
+
xorrol r1, lr, 3
|
|
157
|
+
xorrol r2, r9, 4
|
|
158
|
+
xorrol r3, r10, 2
|
|
159
|
+
xorrol r4, r11, 7
|
|
160
|
+
xorrol r5, r12, 0
|
|
161
|
+
xandnot \sOut, _ma, r1, r2, r3, r7
|
|
162
|
+
xandnot \sOut, _me, r2, r3, r4, r7
|
|
163
|
+
xandnot \sOut, _mi, r3, r4, r5, r7
|
|
164
|
+
xandnot \sOut, _mo, r4, r5, r1, r7
|
|
165
|
+
xandnot \sOut, _mu, r5, r1, r2, r7
|
|
166
|
+
ldrb r1, [\sIn, #_bi]
|
|
167
|
+
ldrb r2, [\sIn, #_go]
|
|
168
|
+
ldrb r3, [\sIn, #_ku]
|
|
169
|
+
ldrb r4, [\sIn, #_ma]
|
|
170
|
+
ldrb r5, [\sIn, #_se]
|
|
171
|
+
xorrol r1, r11, 6
|
|
172
|
+
xorrol r2, r12, 7
|
|
173
|
+
xorrol r3, lr, 7
|
|
174
|
+
xorrol r4, r9, 1
|
|
175
|
+
xorrol r5, r10, 2
|
|
176
|
+
xandnot \sOut, _sa, r1, r2, r3, r7
|
|
177
|
+
xandnot \sOut, _se, r2, r3, r4, r7
|
|
178
|
+
xandnot \sOut, _si, r3, r4, r5, r7
|
|
179
|
+
xandnot \sOut, _so, r4, r5, r1, r7
|
|
180
|
+
xandnot \sOut, _su, r5, r1, r2, r7
|
|
181
|
+
ldrb r1, [\sIn, #_ba]
|
|
182
|
+
ldrb r2, [\sIn, #_ge]
|
|
183
|
+
ldrb r3, [\sIn, #_ki]
|
|
184
|
+
ldrb r4, [\sIn, #_mo]
|
|
185
|
+
ldrb r5, [\sIn, #_su]
|
|
186
|
+
xorrol r1, r9, 0
|
|
187
|
+
xorrol r2, r10, 4
|
|
188
|
+
xorrol r3, r11, 3
|
|
189
|
+
xorrol r4, r12, 5
|
|
190
|
+
xorrol r5, lr, 6
|
|
191
|
+
xandnot \sOut, _be, r2, r3, r4, r7
|
|
192
|
+
xandnot \sOut, _bi, r3, r4, r5, r7
|
|
193
|
+
xandnot \sOut, _bo, r4, r5, r1, r7
|
|
194
|
+
xandnot \sOut, _bu, r5, r1, r2, r7
|
|
195
|
+
xandnotRC \sOut, _ba, r1, r2, r3, \rco
|
|
196
|
+
.endm
|
|
197
|
+
|
|
198
|
+
@----------------------------------------------------------------------------
|
|
199
|
+
@
|
|
200
|
+
@ void KeccakP200_StaticInitialize( void )
|
|
201
|
+
@
|
|
202
|
+
.align 4
|
|
203
|
+
.global KeccakP200_StaticInitialize
|
|
204
|
+
.type KeccakP200_StaticInitialize, %function;
|
|
205
|
+
KeccakP200_StaticInitialize:
|
|
206
|
+
bx lr
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
@----------------------------------------------------------------------------
|
|
210
|
+
@
|
|
211
|
+
@ void KeccakP200_Initialize(void *state)
|
|
212
|
+
@
|
|
213
|
+
.align 4
|
|
214
|
+
.global KeccakP200_Initialize
|
|
215
|
+
.type KeccakP200_Initialize, %function;
|
|
216
|
+
KeccakP200_Initialize:
|
|
217
|
+
movs r1, #0
|
|
218
|
+
movs r2, #0
|
|
219
|
+
movs r3, #0
|
|
220
|
+
stmia r0!, { r1 - r3 }
|
|
221
|
+
stmia r0!, { r1 - r3 }
|
|
222
|
+
strb r1, [r0]
|
|
223
|
+
bx lr
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
@ ----------------------------------------------------------------------------
|
|
227
|
+
@
|
|
228
|
+
@ void KeccakP200_AddByte(void *state, unsigned char byte, unsigned int offset)
|
|
229
|
+
@
|
|
230
|
+
.align 4
|
|
231
|
+
.global KeccakP200_AddByte
|
|
232
|
+
.type KeccakP200_AddByte, %function;
|
|
233
|
+
KeccakP200_AddByte:
|
|
234
|
+
ldrb r3, [r0, r2]
|
|
235
|
+
eors r3, r3, r1
|
|
236
|
+
strb r3, [r0, r2]
|
|
237
|
+
bx lr
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
@----------------------------------------------------------------------------
|
|
241
|
+
@
|
|
242
|
+
@ void KeccakP200_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
243
|
+
@
|
|
244
|
+
.align 4
|
|
245
|
+
.global KeccakP200_AddBytes
|
|
246
|
+
.type KeccakP200_AddBytes, %function;
|
|
247
|
+
KeccakP200_AddBytes:
|
|
248
|
+
subs r3, r3, #1
|
|
249
|
+
bcc KeccakP200_AddBytes_Exit
|
|
250
|
+
adds r0, r0, r2
|
|
251
|
+
push {r4,lr}
|
|
252
|
+
KeccakP200_AddBytes_Loop:
|
|
253
|
+
ldrb r2, [r1, r3]
|
|
254
|
+
ldrb r4, [r0, r3]
|
|
255
|
+
eors r2, r2, r4
|
|
256
|
+
strb r2, [r0, r3]
|
|
257
|
+
subs r3, r3, #1
|
|
258
|
+
bcs KeccakP200_AddBytes_Loop
|
|
259
|
+
pop {r4,pc}
|
|
260
|
+
KeccakP200_AddBytes_Exit:
|
|
261
|
+
bx lr
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
@ ----------------------------------------------------------------------------
|
|
265
|
+
@
|
|
266
|
+
@ void KeccakP200_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
267
|
+
@
|
|
268
|
+
.align 4
|
|
269
|
+
.global KeccakP200_OverwriteBytes
|
|
270
|
+
.type KeccakP200_OverwriteBytes, %function;
|
|
271
|
+
KeccakP200_OverwriteBytes:
|
|
272
|
+
subs r3, r3, #1
|
|
273
|
+
bcc KeccakP200_OverwriteBytes_Exit
|
|
274
|
+
adds r0, r0, r2
|
|
275
|
+
KeccakP200_OverwriteBytes_Loop:
|
|
276
|
+
ldrb r2, [r1, r3]
|
|
277
|
+
strb r2, [r0, r3]
|
|
278
|
+
subs r3, r3, #1
|
|
279
|
+
bcs KeccakP200_OverwriteBytes_Loop
|
|
280
|
+
KeccakP200_OverwriteBytes_Exit:
|
|
281
|
+
bx lr
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
@----------------------------------------------------------------------------
|
|
285
|
+
@
|
|
286
|
+
@ void KeccakP200_OverwriteWithZeroes(void *state, unsigned int byteCount)
|
|
287
|
+
@
|
|
288
|
+
.align 4
|
|
289
|
+
.global KeccakP200_OverwriteWithZeroes
|
|
290
|
+
.type KeccakP200_OverwriteWithZeroes, %function;
|
|
291
|
+
KeccakP200_OverwriteWithZeroes:
|
|
292
|
+
movs r3, #0
|
|
293
|
+
cmp r1, #0
|
|
294
|
+
beq KeccakP200_OverwriteWithZeroes_Exit
|
|
295
|
+
KeccakP200_OverwriteWithZeroes_LoopBytes:
|
|
296
|
+
subs r1, r1, #1
|
|
297
|
+
strb r3, [r0, r1]
|
|
298
|
+
bne KeccakP200_OverwriteWithZeroes_LoopBytes
|
|
299
|
+
KeccakP200_OverwriteWithZeroes_Exit:
|
|
300
|
+
bx lr
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
@ ----------------------------------------------------------------------------
|
|
304
|
+
@
|
|
305
|
+
@ void KeccakP200_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
306
|
+
@
|
|
307
|
+
.align 4
|
|
308
|
+
.global KeccakP200_ExtractBytes
|
|
309
|
+
.type KeccakP200_ExtractBytes, %function;
|
|
310
|
+
KeccakP200_ExtractBytes:
|
|
311
|
+
subs r3, r3, #1
|
|
312
|
+
bcc KeccakP200_ExtractBytes_Exit
|
|
313
|
+
adds r0, r0, r2
|
|
314
|
+
KeccakP200_ExtractBytes_Loop:
|
|
315
|
+
ldrb r2, [r0, r3]
|
|
316
|
+
strb r2, [r1, r3]
|
|
317
|
+
subs r3, r3, #1
|
|
318
|
+
bcs KeccakP200_ExtractBytes_Loop
|
|
319
|
+
KeccakP200_ExtractBytes_Exit:
|
|
320
|
+
bx lr
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
@ ----------------------------------------------------------------------------
|
|
324
|
+
@
|
|
325
|
+
@ void KeccakP200_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
|
|
326
|
+
@
|
|
327
|
+
.align 4
|
|
328
|
+
.global KeccakP200_ExtractAndAddBytes
|
|
329
|
+
.type KeccakP200_ExtractAndAddBytes, %function;
|
|
330
|
+
KeccakP200_ExtractAndAddBytes:
|
|
331
|
+
push {r4,r5}
|
|
332
|
+
adds r0, r0, r3 @ state += offset (offset register no longer needed, reuse for length)
|
|
333
|
+
ldr r3, [sp, #8] @ get length argument from stack
|
|
334
|
+
subs r3, r3, #1 @ .if length != 0
|
|
335
|
+
bcc KeccakP200_ExtractAndAddBytes_Exit
|
|
336
|
+
KeccakP200_ExtractAndAddBytes_Loop:
|
|
337
|
+
ldrb r5, [r0, r3]
|
|
338
|
+
ldrb r4, [r1, r3]
|
|
339
|
+
eors r5, r5, r4
|
|
340
|
+
strb r5, [r2, r3]
|
|
341
|
+
subs r3, r3, #1
|
|
342
|
+
bcs KeccakP200_ExtractAndAddBytes_Loop
|
|
343
|
+
KeccakP200_ExtractAndAddBytes_Exit:
|
|
344
|
+
pop {r4,r5}
|
|
345
|
+
bx lr
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
@----------------------------------------------------------------------------
|
|
349
|
+
@
|
|
350
|
+
@ void KeccakP200_Permute_Nrounds( void *state, unsigned int nr )
|
|
351
|
+
@
|
|
352
|
+
.align 4
|
|
353
|
+
.global KeccakP200_Permute_Nrounds
|
|
354
|
+
.type KeccakP200_Permute_Nrounds, %function;
|
|
355
|
+
KeccakP200_Permute_Nrounds:
|
|
356
|
+
push { r4 - r6, lr }
|
|
357
|
+
mov r2, r8
|
|
358
|
+
mov r3, r9
|
|
359
|
+
mov r4, r10
|
|
360
|
+
mov r5, r11
|
|
361
|
+
mov r6, r12
|
|
362
|
+
push { r2 - r7 }
|
|
363
|
+
sub sp, sp, #25+7
|
|
364
|
+
mov r6, sp
|
|
365
|
+
adr r7, KeccakP200_Permute_RoundConstants18
|
|
366
|
+
adds r7, r7, #18
|
|
367
|
+
subs r7, r7, r1
|
|
368
|
+
lsls r1, r1, #31
|
|
369
|
+
beq KeccakP200_Permute_Nrounds_GoRoundLoop
|
|
370
|
+
ldm r0!, { r1, r2, r3, r4, r5 } @ odd number of rounds: copy state to stack
|
|
371
|
+
subs r0, r0, #20
|
|
372
|
+
stm r6!, { r1, r2, r3, r4, r5 }
|
|
373
|
+
subs r6, r6, #20
|
|
374
|
+
ldr r1, [r0, #_sa]
|
|
375
|
+
str r1, [r6, #_sa]
|
|
376
|
+
ldrb r1, [r0, #_su]
|
|
377
|
+
strb r1, [r6, #_su]
|
|
378
|
+
subs r7, r7, #1
|
|
379
|
+
mov r8, r7
|
|
380
|
+
b KeccakP200_Permute_RoundOdd
|
|
381
|
+
KeccakP200_Permute_Nrounds_GoRoundLoop:
|
|
382
|
+
b KeccakP200_Permute_RoundLoop
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
@----------------------------------------------------------------------------
|
|
386
|
+
@
|
|
387
|
+
@ void KeccakP200_Permute_18rounds( void *state )
|
|
388
|
+
@
|
|
389
|
+
.align 4
|
|
390
|
+
.global KeccakP200_Permute_18rounds
|
|
391
|
+
.type KeccakP200_Permute_18rounds, %function;
|
|
392
|
+
KeccakP200_Permute_18rounds:
|
|
393
|
+
push { r4 - r6, lr }
|
|
394
|
+
mov r2, r8
|
|
395
|
+
mov r3, r9
|
|
396
|
+
mov r4, r10
|
|
397
|
+
mov r5, r11
|
|
398
|
+
mov r6, r12
|
|
399
|
+
push { r2 - r7 }
|
|
400
|
+
sub sp, sp, #25+7
|
|
401
|
+
mov r6, sp
|
|
402
|
+
adr r7, KeccakP200_Permute_RoundConstants18
|
|
403
|
+
b KeccakP200_Permute_RoundLoop
|
|
404
|
+
nop
|
|
405
|
+
|
|
406
|
+
KeccakP200_Permute_RoundConstants18:
|
|
407
|
+
.byte 0x01
|
|
408
|
+
.byte 0x82
|
|
409
|
+
.byte 0x8a
|
|
410
|
+
.byte 0x00
|
|
411
|
+
.byte 0x8b
|
|
412
|
+
.byte 0x01
|
|
413
|
+
.byte 0x81
|
|
414
|
+
.byte 0x09
|
|
415
|
+
.byte 0x8a
|
|
416
|
+
.byte 0x88
|
|
417
|
+
.byte 0x09
|
|
418
|
+
.byte 0x0a
|
|
419
|
+
.byte 0x8b
|
|
420
|
+
.byte 0x8b
|
|
421
|
+
.byte 0x89
|
|
422
|
+
.byte 0x03
|
|
423
|
+
.byte 0x02
|
|
424
|
+
.byte 0x80
|
|
425
|
+
|
|
426
|
+
.align 4
|
|
427
|
+
KeccakP200_Permute_RoundLoop:
|
|
428
|
+
mov r8, r7
|
|
429
|
+
KeccakRound r6, r0, 0
|
|
430
|
+
KeccakP200_Permute_RoundOdd:
|
|
431
|
+
KeccakRound r0, r6, 1
|
|
432
|
+
adds r7, r7, #2
|
|
433
|
+
cmp r2, #0x80
|
|
434
|
+
beq KeccakP200_Permute_Done
|
|
435
|
+
b KeccakP200_Permute_RoundLoop
|
|
436
|
+
KeccakP200_Permute_Done:
|
|
437
|
+
add sp,sp,#25+7
|
|
438
|
+
pop { r1 - r5, r7 }
|
|
439
|
+
mov r8, r1
|
|
440
|
+
mov r9, r2
|
|
441
|
+
mov r10, r3
|
|
442
|
+
mov r11, r4
|
|
443
|
+
mov r12, r5
|
|
444
|
+
pop { r4 - r6, pc }
|
|
445
|
+
|
|
446
|
+
|