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,458 @@
|
|
|
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[400] in a SnP-compatible way.
|
|
19
|
+
@ Please refer to SnP-documentation.h for more details.
|
|
20
|
+
@
|
|
21
|
+
@ This implementation comes with KeccakP-400-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*2
|
|
33
|
+
.equ _be , 1*2
|
|
34
|
+
.equ _bi , 2*2
|
|
35
|
+
.equ _bo , 3*2
|
|
36
|
+
.equ _bu , 4*2
|
|
37
|
+
.equ _ga , 5*2
|
|
38
|
+
.equ _ge , 6*2
|
|
39
|
+
.equ _gi , 7*2
|
|
40
|
+
.equ _go , 8*2
|
|
41
|
+
.equ _gu , 9*2
|
|
42
|
+
.equ _ka , 10*2
|
|
43
|
+
.equ _ke , 11*2
|
|
44
|
+
.equ _ki , 12*2
|
|
45
|
+
.equ _ko , 13*2
|
|
46
|
+
.equ _ku , 14*2
|
|
47
|
+
.equ _ma , 15*2
|
|
48
|
+
.equ _me , 16*2
|
|
49
|
+
.equ _mi , 17*2
|
|
50
|
+
.equ _mo , 18*2
|
|
51
|
+
.equ _mu , 19*2
|
|
52
|
+
.equ _sa , 20*2
|
|
53
|
+
.equ _se , 21*2
|
|
54
|
+
.equ _si , 22*2
|
|
55
|
+
.equ _so , 23*2
|
|
56
|
+
.equ _su , 24*2
|
|
57
|
+
|
|
58
|
+
.macro xor5 result,ptr,b,g,k,m,s
|
|
59
|
+
ldrh \result, [\ptr, #\b]
|
|
60
|
+
ldrh r7, [\ptr, #\g]
|
|
61
|
+
eors \result, \result, r7
|
|
62
|
+
ldrh r7, [\ptr, #\k]
|
|
63
|
+
eors \result, \result, r7
|
|
64
|
+
ldrh r7, [\ptr, #\m]
|
|
65
|
+
eors \result, \result, r7
|
|
66
|
+
ldrh 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, #16-\rr
|
|
76
|
+
orrs \b, \b, r7
|
|
77
|
+
uxth \b, \b
|
|
78
|
+
.endif
|
|
79
|
+
.endm
|
|
80
|
+
|
|
81
|
+
.macro rolxor d, a, b, rot
|
|
82
|
+
sxth r7, \b
|
|
83
|
+
rors r7, r7, \rot
|
|
84
|
+
eors r7, r7, \a
|
|
85
|
+
uxth 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
|
+
strh \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
|
+
ldrh \bb, [r7, #\rco]
|
|
101
|
+
eors \cc, \cc, \bb
|
|
102
|
+
strh \cc, [\resptr, #\resofs]
|
|
103
|
+
.endm
|
|
104
|
+
|
|
105
|
+
.macro KeccakRound sOut, sIn, rco
|
|
106
|
+
|
|
107
|
+
@prepTheta
|
|
108
|
+
push { \sOut }
|
|
109
|
+
movs \sOut, #31
|
|
110
|
+
xor5 r1, \sIn, _ba, _ga, _ka, _ma, _sa
|
|
111
|
+
xor5 r2, \sIn, _be, _ge, _ke, _me, _se
|
|
112
|
+
xor5 r3, \sIn, _bi, _gi, _ki, _mi, _si
|
|
113
|
+
xor5 r4, \sIn, _bo, _go, _ko, _mo, _so
|
|
114
|
+
xor5 r5, \sIn, _bu, _gu, _ku, _mu, _su
|
|
115
|
+
rolxor r9, r5, r2, \sOut
|
|
116
|
+
rolxor r10, r1, r3, \sOut
|
|
117
|
+
rolxor r11, r2, r4, \sOut
|
|
118
|
+
rolxor r12, r3, r5, \sOut
|
|
119
|
+
rolxor lr, r4, r1, \sOut
|
|
120
|
+
pop { \sOut }
|
|
121
|
+
|
|
122
|
+
@thetaRhoPiChiIota
|
|
123
|
+
ldrh r1, [\sIn, #_bo]
|
|
124
|
+
ldrh r2, [\sIn, #_gu]
|
|
125
|
+
ldrh r3, [\sIn, #_ka]
|
|
126
|
+
ldrh r4, [\sIn, #_me]
|
|
127
|
+
ldrh r5, [\sIn, #_si]
|
|
128
|
+
xorrol r1, r12, 12
|
|
129
|
+
xorrol r2, lr, 4
|
|
130
|
+
xorrol r3, r9, 3
|
|
131
|
+
xorrol r4, r10, 13
|
|
132
|
+
xorrol r5, r11, 13
|
|
133
|
+
xandnot \sOut, _ga, r1, r2, r3, r7
|
|
134
|
+
xandnot \sOut, _ge, r2, r3, r4, r7
|
|
135
|
+
xandnot \sOut, _gi, r3, r4, r5, r7
|
|
136
|
+
xandnot \sOut, _go, r4, r5, r1, r7
|
|
137
|
+
xandnot \sOut, _gu, r5, r1, r2, r7
|
|
138
|
+
|
|
139
|
+
ldrh r1, [\sIn, #_be]
|
|
140
|
+
ldrh r2, [\sIn, #_gi]
|
|
141
|
+
ldrh r3, [\sIn, #_ko]
|
|
142
|
+
ldrh r4, [\sIn, #_mu]
|
|
143
|
+
ldrh r5, [\sIn, #_sa]
|
|
144
|
+
xorrol r1, r10, 1
|
|
145
|
+
xorrol r2, r11, 6
|
|
146
|
+
xorrol r3, r12, 9
|
|
147
|
+
xorrol r4, lr, 8
|
|
148
|
+
xorrol r5, r9, 2
|
|
149
|
+
xandnot \sOut, _ka, r1, r2, r3, r7
|
|
150
|
+
xandnot \sOut, _ke, r2, r3, r4, r7
|
|
151
|
+
xandnot \sOut, _ki, r3, r4, r5, r7
|
|
152
|
+
xandnot \sOut, _ko, r4, r5, r1, r7
|
|
153
|
+
xandnot \sOut, _ku, r5, r1, r2, r7
|
|
154
|
+
|
|
155
|
+
ldrh r1, [\sIn, #_bu]
|
|
156
|
+
ldrh r2, [\sIn, #_ga]
|
|
157
|
+
ldrh r3, [\sIn, #_ke]
|
|
158
|
+
ldrh r4, [\sIn, #_mi]
|
|
159
|
+
ldrh r5, [\sIn, #_so]
|
|
160
|
+
xorrol r1, lr, 11
|
|
161
|
+
xorrol r2, r9, 4
|
|
162
|
+
xorrol r3, r10, 10
|
|
163
|
+
xorrol r4, r11, 15
|
|
164
|
+
xorrol r5, r12, 8
|
|
165
|
+
xandnot \sOut, _ma, r1, r2, r3, r7
|
|
166
|
+
xandnot \sOut, _me, r2, r3, r4, r7
|
|
167
|
+
xandnot \sOut, _mi, r3, r4, r5, r7
|
|
168
|
+
xandnot \sOut, _mo, r4, r5, r1, r7
|
|
169
|
+
xandnot \sOut, _mu, r5, r1, r2, r7
|
|
170
|
+
|
|
171
|
+
ldrh r1, [\sIn, #_bi]
|
|
172
|
+
ldrh r2, [\sIn, #_go]
|
|
173
|
+
ldrh r3, [\sIn, #_ku]
|
|
174
|
+
ldrh r4, [\sIn, #_ma]
|
|
175
|
+
ldrh r5, [\sIn, #_se]
|
|
176
|
+
xorrol r1, r11, 14
|
|
177
|
+
xorrol r2, r12, 7
|
|
178
|
+
xorrol r3, lr, 7
|
|
179
|
+
xorrol r4, r9, 9
|
|
180
|
+
xorrol r5, r10, 2
|
|
181
|
+
xandnot \sOut, _sa, r1, r2, r3, r7
|
|
182
|
+
xandnot \sOut, _se, r2, r3, r4, r7
|
|
183
|
+
xandnot \sOut, _si, r3, r4, r5, r7
|
|
184
|
+
xandnot \sOut, _so, r4, r5, r1, r7
|
|
185
|
+
xandnot \sOut, _su, r5, r1, r2, r7
|
|
186
|
+
|
|
187
|
+
ldrh r1, [\sIn, #_ba]
|
|
188
|
+
ldrh r2, [\sIn, #_ge]
|
|
189
|
+
ldrh r3, [\sIn, #_ki]
|
|
190
|
+
ldrh r4, [\sIn, #_mo]
|
|
191
|
+
ldrh r5, [\sIn, #_su]
|
|
192
|
+
xorrol r1, r9, 0
|
|
193
|
+
xorrol r2, r10, 12
|
|
194
|
+
xorrol r3, r11, 11
|
|
195
|
+
xorrol r4, r12, 5
|
|
196
|
+
xorrol r5, lr, 14
|
|
197
|
+
xandnot \sOut, _be, r2, r3, r4, r7
|
|
198
|
+
xandnot \sOut, _bi, r3, r4, r5, r7
|
|
199
|
+
xandnot \sOut, _bo, r4, r5, r1, r7
|
|
200
|
+
xandnot \sOut, _bu, r5, r1, r2, r7
|
|
201
|
+
xandnotRC \sOut, _ba, r1, r2, r3, \rco
|
|
202
|
+
.endm
|
|
203
|
+
|
|
204
|
+
@----------------------------------------------------------------------------
|
|
205
|
+
@
|
|
206
|
+
@ void KeccakP400_StaticInitialize( void )
|
|
207
|
+
@
|
|
208
|
+
.align 4
|
|
209
|
+
.global KeccakP400_StaticInitialize
|
|
210
|
+
.type KeccakP400_StaticInitialize, %function;
|
|
211
|
+
KeccakP400_StaticInitialize:
|
|
212
|
+
bx lr
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
@----------------------------------------------------------------------------
|
|
216
|
+
@
|
|
217
|
+
@ void KeccakP400_Initialize(void *state)
|
|
218
|
+
@
|
|
219
|
+
.align 4
|
|
220
|
+
.global KeccakP400_Initialize
|
|
221
|
+
.type KeccakP400_Initialize, %function;
|
|
222
|
+
KeccakP400_Initialize:
|
|
223
|
+
movs r1, #0
|
|
224
|
+
movs r2, #0
|
|
225
|
+
movs r3, #0
|
|
226
|
+
stmia r0!, { r1 - r3 }
|
|
227
|
+
stmia r0!, { r1 - r3 }
|
|
228
|
+
stmia r0!, { r1 - r3 }
|
|
229
|
+
stmia r0!, { r1 - r3 }
|
|
230
|
+
strh r1, [r0]
|
|
231
|
+
bx lr
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
@ ----------------------------------------------------------------------------
|
|
235
|
+
@
|
|
236
|
+
@ void KeccakP400_AddByte(void *state, unsigned char byte, unsigned int offset)
|
|
237
|
+
@
|
|
238
|
+
.align 4
|
|
239
|
+
.global KeccakP400_AddByte
|
|
240
|
+
.type KeccakP400_AddByte, %function;
|
|
241
|
+
KeccakP400_AddByte:
|
|
242
|
+
ldrb r3, [r0, r2]
|
|
243
|
+
eors r3, r3, r1
|
|
244
|
+
strb r3, [r0, r2]
|
|
245
|
+
bx lr
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
@----------------------------------------------------------------------------
|
|
249
|
+
@
|
|
250
|
+
@ void KeccakP400_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
251
|
+
@
|
|
252
|
+
.align 4
|
|
253
|
+
.global KeccakP400_AddBytes
|
|
254
|
+
.type KeccakP400_AddBytes, %function;
|
|
255
|
+
KeccakP400_AddBytes:
|
|
256
|
+
subs r3, r3, #1
|
|
257
|
+
bcc KeccakP400_AddBytes_Exit
|
|
258
|
+
adds r0, r0, r2
|
|
259
|
+
push {r4,lr}
|
|
260
|
+
KeccakP400_AddBytes_Loop:
|
|
261
|
+
ldrb r2, [r1, r3]
|
|
262
|
+
ldrb r4, [r0, r3]
|
|
263
|
+
eors r2, r2, r4
|
|
264
|
+
strb r2, [r0, r3]
|
|
265
|
+
subs r3, r3, #1
|
|
266
|
+
bcs KeccakP400_AddBytes_Loop
|
|
267
|
+
pop {r4,pc}
|
|
268
|
+
KeccakP400_AddBytes_Exit:
|
|
269
|
+
bx lr
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
@ ----------------------------------------------------------------------------
|
|
273
|
+
@
|
|
274
|
+
@ void KeccakP400_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
275
|
+
@
|
|
276
|
+
.align 4
|
|
277
|
+
.global KeccakP400_OverwriteBytes
|
|
278
|
+
.type KeccakP400_OverwriteBytes, %function;
|
|
279
|
+
KeccakP400_OverwriteBytes:
|
|
280
|
+
subs r3, r3, #1
|
|
281
|
+
bcc KeccakP400_OverwriteBytes_Exit
|
|
282
|
+
adds r0, r0, r2
|
|
283
|
+
KeccakP400_OverwriteBytes_Loop:
|
|
284
|
+
ldrb r2, [r1, r3]
|
|
285
|
+
strb r2, [r0, r3]
|
|
286
|
+
subs r3, r3, #1
|
|
287
|
+
bcs KeccakP400_OverwriteBytes_Loop
|
|
288
|
+
KeccakP400_OverwriteBytes_Exit:
|
|
289
|
+
bx lr
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
@----------------------------------------------------------------------------
|
|
293
|
+
@
|
|
294
|
+
@ void KeccakP400_OverwriteWithZeroes(void *state, unsigned int byteCount)
|
|
295
|
+
@
|
|
296
|
+
.align 4
|
|
297
|
+
.global KeccakP400_OverwriteWithZeroes
|
|
298
|
+
.type KeccakP400_OverwriteWithZeroes, %function;
|
|
299
|
+
KeccakP400_OverwriteWithZeroes:
|
|
300
|
+
movs r3, #0
|
|
301
|
+
cmp r1, #0
|
|
302
|
+
beq KeccakP400_OverwriteWithZeroes_Exit
|
|
303
|
+
KeccakP400_OverwriteWithZeroes_LoopBytes:
|
|
304
|
+
subs r1, r1, #1
|
|
305
|
+
strb r3, [r0, r1]
|
|
306
|
+
bne KeccakP400_OverwriteWithZeroes_LoopBytes
|
|
307
|
+
KeccakP400_OverwriteWithZeroes_Exit:
|
|
308
|
+
bx lr
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
@ ----------------------------------------------------------------------------
|
|
312
|
+
@
|
|
313
|
+
@ void KeccakP400_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
314
|
+
@
|
|
315
|
+
.align 4
|
|
316
|
+
.global KeccakP400_ExtractBytes
|
|
317
|
+
.type KeccakP400_ExtractBytes, %function;
|
|
318
|
+
KeccakP400_ExtractBytes:
|
|
319
|
+
subs r3, r3, #1
|
|
320
|
+
bcc KeccakP400_ExtractBytes_Exit
|
|
321
|
+
adds r0, r0, r2
|
|
322
|
+
KeccakP400_ExtractBytes_Loop:
|
|
323
|
+
ldrb r2, [r0, r3]
|
|
324
|
+
strb r2, [r1, r3]
|
|
325
|
+
subs r3, r3, #1
|
|
326
|
+
bcs KeccakP400_ExtractBytes_Loop
|
|
327
|
+
KeccakP400_ExtractBytes_Exit:
|
|
328
|
+
bx lr
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
@ ----------------------------------------------------------------------------
|
|
332
|
+
@
|
|
333
|
+
@ void KeccakP400_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
|
|
334
|
+
@
|
|
335
|
+
.align 4
|
|
336
|
+
.global KeccakP400_ExtractAndAddBytes
|
|
337
|
+
.type KeccakP400_ExtractAndAddBytes, %function;
|
|
338
|
+
KeccakP400_ExtractAndAddBytes:
|
|
339
|
+
push {r4,r5}
|
|
340
|
+
adds r0, r0, r3 @ state += offset (offset register no longer needed, reuse for length)
|
|
341
|
+
ldr r3, [sp, #8] @ get length argument from stack
|
|
342
|
+
subs r3, r3, #1 @ .if length != 0
|
|
343
|
+
bcc KeccakP400_ExtractAndAddBytes_Exit
|
|
344
|
+
KeccakP400_ExtractAndAddBytes_Loop:
|
|
345
|
+
ldrb r5, [r0, r3]
|
|
346
|
+
ldrb r4, [r1, r3]
|
|
347
|
+
eors r5, r5, r4
|
|
348
|
+
strb r5, [r2, r3]
|
|
349
|
+
subs r3, r3, #1
|
|
350
|
+
bcs KeccakP400_ExtractAndAddBytes_Loop
|
|
351
|
+
KeccakP400_ExtractAndAddBytes_Exit:
|
|
352
|
+
pop {r4,r5}
|
|
353
|
+
bx lr
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
@----------------------------------------------------------------------------
|
|
357
|
+
@
|
|
358
|
+
@ void KeccakP400_Permute_Nrounds( void *state, unsigned int nr )
|
|
359
|
+
@
|
|
360
|
+
.align 4
|
|
361
|
+
.global KeccakP400_Permute_Nrounds
|
|
362
|
+
.type KeccakP400_Permute_Nrounds, %function;
|
|
363
|
+
KeccakP400_Permute_Nrounds:
|
|
364
|
+
push { r4 - r6, lr }
|
|
365
|
+
mov r2, r8
|
|
366
|
+
mov r3, r9
|
|
367
|
+
mov r4, r10
|
|
368
|
+
mov r5, r11
|
|
369
|
+
mov r6, r12
|
|
370
|
+
push { r2 - r7 }
|
|
371
|
+
sub sp, sp, #25*2+6
|
|
372
|
+
mov r6, sp
|
|
373
|
+
adr r7, KeccakP400_Permute_RoundConstants
|
|
374
|
+
subs r7, r7, r1
|
|
375
|
+
subs r7, r7, r1
|
|
376
|
+
lsls r1, r1, #31
|
|
377
|
+
beq KeccakP400_Permute_Nrounds_GoRoundLoop
|
|
378
|
+
subs r7, r7, #2 @ odd number of rounds
|
|
379
|
+
mov r8, r7
|
|
380
|
+
ldm r0!, { r1, r2, r3, r4, r5, r7 } @ copy state to stack
|
|
381
|
+
stm r6!, { r1, r2, r3, r4, r5, r7 }
|
|
382
|
+
ldm r0!, { r1, r2, r3, r4, r5, r7 }
|
|
383
|
+
stm r6!, { r1, r2, r3, r4, r5, r7 }
|
|
384
|
+
subs r0, r0, #48
|
|
385
|
+
subs r6, r6, #48
|
|
386
|
+
ldrh r1, [r0, #_su]
|
|
387
|
+
strh r1, [r6, #_su]
|
|
388
|
+
b KeccakP400_Permute_RoundOdd
|
|
389
|
+
KeccakP400_Permute_Nrounds_GoRoundLoop:
|
|
390
|
+
b KeccakP400_Permute_RoundLoop
|
|
391
|
+
nop
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
@----------------------------------------------------------------------------
|
|
395
|
+
@
|
|
396
|
+
@ void KeccakP400_Permute_20rounds( void *state )
|
|
397
|
+
@
|
|
398
|
+
.align 4
|
|
399
|
+
.global KeccakP400_Permute_20rounds
|
|
400
|
+
.type KeccakP400_Permute_20rounds, %function;
|
|
401
|
+
KeccakP400_Permute_20rounds:
|
|
402
|
+
push { r4 - r6, lr }
|
|
403
|
+
mov r2, r8
|
|
404
|
+
mov r3, r9
|
|
405
|
+
mov r4, r10
|
|
406
|
+
mov r5, r11
|
|
407
|
+
mov r6, r12
|
|
408
|
+
push { r2 - r7 }
|
|
409
|
+
sub sp, sp, #25*2+6
|
|
410
|
+
mov r6, sp
|
|
411
|
+
adr r7, KeccakP400_Permute_RoundConstants20
|
|
412
|
+
b KeccakP400_Permute_RoundLoop
|
|
413
|
+
.align 4
|
|
414
|
+
KeccakP400_Permute_RoundConstants20:
|
|
415
|
+
.short 0x0001
|
|
416
|
+
.short 0x8082
|
|
417
|
+
.short 0x808a
|
|
418
|
+
.short 0x8000
|
|
419
|
+
.short 0x808b
|
|
420
|
+
.short 0x0001
|
|
421
|
+
.short 0x8081
|
|
422
|
+
.short 0x8009
|
|
423
|
+
.short 0x008a
|
|
424
|
+
.short 0x0088
|
|
425
|
+
.short 0x8009
|
|
426
|
+
.short 0x000a
|
|
427
|
+
.short 0x808b
|
|
428
|
+
.short 0x008b
|
|
429
|
+
.short 0x8089
|
|
430
|
+
.short 0x8003
|
|
431
|
+
.short 0x8002
|
|
432
|
+
.short 0x0080
|
|
433
|
+
.short 0x800a
|
|
434
|
+
.short 0x000a
|
|
435
|
+
KeccakP400_Permute_RoundConstants:
|
|
436
|
+
.short 0xFF @terminator
|
|
437
|
+
|
|
438
|
+
KeccakP400_Permute_RoundLoop:
|
|
439
|
+
mov r8, r7
|
|
440
|
+
KeccakRound r6, r0, 0
|
|
441
|
+
KeccakP400_Permute_RoundOdd:
|
|
442
|
+
KeccakRound r0, r6, 2
|
|
443
|
+
adds r7, r7, #4
|
|
444
|
+
ldrh r1, [r7]
|
|
445
|
+
cmp r1, #0xFF
|
|
446
|
+
beq KeccakP400_Permute_Done
|
|
447
|
+
b KeccakP400_Permute_RoundLoop
|
|
448
|
+
KeccakP400_Permute_Done:
|
|
449
|
+
add sp,sp,#25*2+6
|
|
450
|
+
pop { r1 - r5, r7 }
|
|
451
|
+
mov r8, r1
|
|
452
|
+
mov r9, r2
|
|
453
|
+
mov r10, r3
|
|
454
|
+
mov r11, r4
|
|
455
|
+
mov r12, r5
|
|
456
|
+
pop { r4 - r6, pc }
|
|
457
|
+
|
|
458
|
+
|