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,442 @@
|
|
|
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
|
+
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
|
+
MACRO
|
|
58
|
+
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
|
+
MEND
|
|
69
|
+
|
|
70
|
+
MACRO
|
|
71
|
+
xorrol $b, $yy, $rr
|
|
72
|
+
mov r7, $yy
|
|
73
|
+
eors $b, $b, r7
|
|
74
|
+
if $rr != 0
|
|
75
|
+
lsls r7, $b, #$rr
|
|
76
|
+
lsrs $b, $b, #8-$rr
|
|
77
|
+
orrs $b, $b, r7
|
|
78
|
+
uxtb $b, $b
|
|
79
|
+
endif
|
|
80
|
+
MEND
|
|
81
|
+
|
|
82
|
+
MACRO
|
|
83
|
+
rolxor $d, $a, $b, $rot
|
|
84
|
+
sxtb r7, $b
|
|
85
|
+
rors r7, r7, $rot
|
|
86
|
+
eors r7, r7, $a
|
|
87
|
+
uxtb r7, r7
|
|
88
|
+
mov $d, r7
|
|
89
|
+
MEND
|
|
90
|
+
|
|
91
|
+
MACRO
|
|
92
|
+
xandnot $resptr, $resofs, $aa, $bb, $cc, $temp
|
|
93
|
+
mov $temp, $cc
|
|
94
|
+
bics $temp, $temp, $bb
|
|
95
|
+
eors $temp, $temp, $aa
|
|
96
|
+
strb $temp, [$resptr, #$resofs]
|
|
97
|
+
MEND
|
|
98
|
+
|
|
99
|
+
MACRO
|
|
100
|
+
xandnotRC $resptr, $resofs, $aa, $bb, $cc, $rco
|
|
101
|
+
bics $cc, $cc, $bb
|
|
102
|
+
eors $cc, $cc, $aa
|
|
103
|
+
mov r7, r8
|
|
104
|
+
ldrb $bb, [r7, #$rco]
|
|
105
|
+
eors $cc, $cc, $bb
|
|
106
|
+
strb $cc, [$resptr, #$resofs]
|
|
107
|
+
MEND
|
|
108
|
+
|
|
109
|
+
MACRO
|
|
110
|
+
KeccakRound $sOut, $sIn, $rco
|
|
111
|
+
;prepTheta
|
|
112
|
+
push { $sOut }
|
|
113
|
+
movs $sOut, #31
|
|
114
|
+
xor5 r1, $sIn, _ba, _ga, _ka, _ma, _sa
|
|
115
|
+
xor5 r2, $sIn, _be, _ge, _ke, _me, _se
|
|
116
|
+
xor5 r3, $sIn, _bi, _gi, _ki, _mi, _si
|
|
117
|
+
xor5 r4, $sIn, _bo, _go, _ko, _mo, _so
|
|
118
|
+
xor5 r5, $sIn, _bu, _gu, _ku, _mu, _su
|
|
119
|
+
rolxor r9, r5, r2, $sOut
|
|
120
|
+
rolxor r10, r1, r3, $sOut
|
|
121
|
+
rolxor r11, r2, r4, $sOut
|
|
122
|
+
rolxor r12, r3, r5, $sOut
|
|
123
|
+
rolxor lr, r4, r1, $sOut
|
|
124
|
+
pop { $sOut }
|
|
125
|
+
;thetaRhoPiChiIota
|
|
126
|
+
ldrb r1, [$sIn, #_bo]
|
|
127
|
+
ldrb r2, [$sIn, #_gu]
|
|
128
|
+
ldrb r3, [$sIn, #_ka]
|
|
129
|
+
ldrb r4, [$sIn, #_me]
|
|
130
|
+
ldrb r5, [$sIn, #_si]
|
|
131
|
+
xorrol r1, r12, 4
|
|
132
|
+
xorrol r2, lr, 4
|
|
133
|
+
xorrol r3, r9, 3
|
|
134
|
+
xorrol r4, r10, 5
|
|
135
|
+
xorrol r5, r11, 5
|
|
136
|
+
xandnot $sOut, _ga, r1, r2, r3, r7
|
|
137
|
+
xandnot $sOut, _ge, r2, r3, r4, r7
|
|
138
|
+
xandnot $sOut, _gi, r3, r4, r5, r7
|
|
139
|
+
xandnot $sOut, _go, r4, r5, r1, r7
|
|
140
|
+
xandnot $sOut, _gu, r5, r1, r2, r7
|
|
141
|
+
ldrb r1, [$sIn, #_be]
|
|
142
|
+
ldrb r2, [$sIn, #_gi]
|
|
143
|
+
ldrb r3, [$sIn, #_ko]
|
|
144
|
+
ldrb r4, [$sIn, #_mu]
|
|
145
|
+
ldrb r5, [$sIn, #_sa]
|
|
146
|
+
xorrol r1, r10, 1
|
|
147
|
+
xorrol r2, r11, 6
|
|
148
|
+
xorrol r3, r12, 1
|
|
149
|
+
xorrol r4, lr, 0
|
|
150
|
+
xorrol r5, r9, 2
|
|
151
|
+
xandnot $sOut, _ka, r1, r2, r3, r7
|
|
152
|
+
xandnot $sOut, _ke, r2, r3, r4, r7
|
|
153
|
+
xandnot $sOut, _ki, r3, r4, r5, r7
|
|
154
|
+
xandnot $sOut, _ko, r4, r5, r1, r7
|
|
155
|
+
xandnot $sOut, _ku, r5, r1, r2, r7
|
|
156
|
+
ldrb r1, [$sIn, #_bu]
|
|
157
|
+
ldrb r2, [$sIn, #_ga]
|
|
158
|
+
ldrb r3, [$sIn, #_ke]
|
|
159
|
+
ldrb r4, [$sIn, #_mi]
|
|
160
|
+
ldrb r5, [$sIn, #_so]
|
|
161
|
+
xorrol r1, lr, 3
|
|
162
|
+
xorrol r2, r9, 4
|
|
163
|
+
xorrol r3, r10, 2
|
|
164
|
+
xorrol r4, r11, 7
|
|
165
|
+
xorrol r5, r12, 0
|
|
166
|
+
xandnot $sOut, _ma, r1, r2, r3, r7
|
|
167
|
+
xandnot $sOut, _me, r2, r3, r4, r7
|
|
168
|
+
xandnot $sOut, _mi, r3, r4, r5, r7
|
|
169
|
+
xandnot $sOut, _mo, r4, r5, r1, r7
|
|
170
|
+
xandnot $sOut, _mu, r5, r1, r2, r7
|
|
171
|
+
ldrb r1, [$sIn, #_bi]
|
|
172
|
+
ldrb r2, [$sIn, #_go]
|
|
173
|
+
ldrb r3, [$sIn, #_ku]
|
|
174
|
+
ldrb r4, [$sIn, #_ma]
|
|
175
|
+
ldrb r5, [$sIn, #_se]
|
|
176
|
+
xorrol r1, r11, 6
|
|
177
|
+
xorrol r2, r12, 7
|
|
178
|
+
xorrol r3, lr, 7
|
|
179
|
+
xorrol r4, r9, 1
|
|
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
|
+
ldrb r1, [$sIn, #_ba]
|
|
187
|
+
ldrb r2, [$sIn, #_ge]
|
|
188
|
+
ldrb r3, [$sIn, #_ki]
|
|
189
|
+
ldrb r4, [$sIn, #_mo]
|
|
190
|
+
ldrb r5, [$sIn, #_su]
|
|
191
|
+
xorrol r1, r9, 0
|
|
192
|
+
xorrol r2, r10, 4
|
|
193
|
+
xorrol r3, r11, 3
|
|
194
|
+
xorrol r4, r12, 5
|
|
195
|
+
xorrol r5, lr, 6
|
|
196
|
+
xandnot $sOut, _be, r2, r3, r4, r7
|
|
197
|
+
xandnot $sOut, _bi, r3, r4, r5, r7
|
|
198
|
+
xandnot $sOut, _bo, r4, r5, r1, r7
|
|
199
|
+
xandnot $sOut, _bu, r5, r1, r2, r7
|
|
200
|
+
xandnotRC $sOut, _ba, r1, r2, r3, $rco
|
|
201
|
+
MEND
|
|
202
|
+
|
|
203
|
+
;----------------------------------------------------------------------------
|
|
204
|
+
;
|
|
205
|
+
; void KeccakP200_StaticInitialize( void )
|
|
206
|
+
;
|
|
207
|
+
ALIGN 4
|
|
208
|
+
EXPORT KeccakP200_StaticInitialize
|
|
209
|
+
KeccakP200_StaticInitialize PROC
|
|
210
|
+
bx lr
|
|
211
|
+
ENDP
|
|
212
|
+
|
|
213
|
+
;----------------------------------------------------------------------------
|
|
214
|
+
;
|
|
215
|
+
; void KeccakP200_Initialize(void *state)
|
|
216
|
+
;
|
|
217
|
+
ALIGN 4
|
|
218
|
+
EXPORT KeccakP200_Initialize
|
|
219
|
+
KeccakP200_Initialize PROC
|
|
220
|
+
movs r1, #0
|
|
221
|
+
movs r2, #0
|
|
222
|
+
movs r3, #0
|
|
223
|
+
stmia r0!, { r1 - r3 }
|
|
224
|
+
stmia r0!, { r1 - r3 }
|
|
225
|
+
strb r1, [r0]
|
|
226
|
+
bx lr
|
|
227
|
+
ENDP
|
|
228
|
+
|
|
229
|
+
; ----------------------------------------------------------------------------
|
|
230
|
+
;
|
|
231
|
+
; void KeccakP200_AddByte(void *state, unsigned char byte, unsigned int offset)
|
|
232
|
+
;
|
|
233
|
+
ALIGN 4
|
|
234
|
+
EXPORT KeccakP200_AddByte
|
|
235
|
+
KeccakP200_AddByte PROC
|
|
236
|
+
ldrb r3, [r0, r2]
|
|
237
|
+
eors r3, r3, r1
|
|
238
|
+
strb r3, [r0, r2]
|
|
239
|
+
bx lr
|
|
240
|
+
ENDP
|
|
241
|
+
|
|
242
|
+
;----------------------------------------------------------------------------
|
|
243
|
+
;
|
|
244
|
+
; void KeccakP200_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
245
|
+
;
|
|
246
|
+
ALIGN 4
|
|
247
|
+
EXPORT KeccakP200_AddBytes
|
|
248
|
+
KeccakP200_AddBytes PROC
|
|
249
|
+
subs r3, r3, #1
|
|
250
|
+
bcc KeccakP200_AddBytes_Exit
|
|
251
|
+
adds r0, r0, r2
|
|
252
|
+
push {r4,lr}
|
|
253
|
+
KeccakP200_AddBytes_Loop
|
|
254
|
+
ldrb r2, [r1, r3]
|
|
255
|
+
ldrb r4, [r0, r3]
|
|
256
|
+
eors r2, r2, r4
|
|
257
|
+
strb r2, [r0, r3]
|
|
258
|
+
subs r3, r3, #1
|
|
259
|
+
bcs KeccakP200_AddBytes_Loop
|
|
260
|
+
pop {r4,pc}
|
|
261
|
+
KeccakP200_AddBytes_Exit
|
|
262
|
+
bx lr
|
|
263
|
+
ENDP
|
|
264
|
+
|
|
265
|
+
; ----------------------------------------------------------------------------
|
|
266
|
+
;
|
|
267
|
+
; void KeccakP200_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
268
|
+
;
|
|
269
|
+
ALIGN 4
|
|
270
|
+
EXPORT KeccakP200_OverwriteBytes
|
|
271
|
+
KeccakP200_OverwriteBytes PROC
|
|
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
|
+
ENDP
|
|
283
|
+
|
|
284
|
+
;----------------------------------------------------------------------------
|
|
285
|
+
;
|
|
286
|
+
; void KeccakP200_OverwriteWithZeroes(void *state, unsigned int byteCount)
|
|
287
|
+
;
|
|
288
|
+
ALIGN 4
|
|
289
|
+
EXPORT KeccakP200_OverwriteWithZeroes
|
|
290
|
+
KeccakP200_OverwriteWithZeroes PROC
|
|
291
|
+
movs r3, #0
|
|
292
|
+
cmp r1, #0
|
|
293
|
+
beq KeccakP200_OverwriteWithZeroes_Exit
|
|
294
|
+
KeccakP200_OverwriteWithZeroes_LoopBytes
|
|
295
|
+
subs r1, r1, #1
|
|
296
|
+
strb r3, [r0, r1]
|
|
297
|
+
bne KeccakP200_OverwriteWithZeroes_LoopBytes
|
|
298
|
+
KeccakP200_OverwriteWithZeroes_Exit
|
|
299
|
+
bx lr
|
|
300
|
+
ENDP
|
|
301
|
+
|
|
302
|
+
; ----------------------------------------------------------------------------
|
|
303
|
+
;
|
|
304
|
+
; void KeccakP200_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
305
|
+
;
|
|
306
|
+
ALIGN 4
|
|
307
|
+
EXPORT KeccakP200_ExtractBytes
|
|
308
|
+
KeccakP200_ExtractBytes PROC
|
|
309
|
+
subs r3, r3, #1
|
|
310
|
+
bcc KeccakP200_ExtractBytes_Exit
|
|
311
|
+
adds r0, r0, r2
|
|
312
|
+
KeccakP200_ExtractBytes_Loop
|
|
313
|
+
ldrb r2, [r0, r3]
|
|
314
|
+
strb r2, [r1, r3]
|
|
315
|
+
subs r3, r3, #1
|
|
316
|
+
bcs KeccakP200_ExtractBytes_Loop
|
|
317
|
+
KeccakP200_ExtractBytes_Exit
|
|
318
|
+
bx lr
|
|
319
|
+
ENDP
|
|
320
|
+
|
|
321
|
+
; ----------------------------------------------------------------------------
|
|
322
|
+
;
|
|
323
|
+
; void KeccakP200_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
|
|
324
|
+
;
|
|
325
|
+
ALIGN 4
|
|
326
|
+
EXPORT KeccakP200_ExtractAndAddBytes
|
|
327
|
+
KeccakP200_ExtractAndAddBytes PROC
|
|
328
|
+
push {r4,r5}
|
|
329
|
+
adds r0, r0, r3 ; state += offset (offset register no longer needed, reuse for length)
|
|
330
|
+
ldr r3, [sp, #8] ; get length argument from stack
|
|
331
|
+
subs r3, r3, #1 ; if length != 0
|
|
332
|
+
bcc KeccakP200_ExtractAndAddBytes_Exit
|
|
333
|
+
KeccakP200_ExtractAndAddBytes_Loop
|
|
334
|
+
ldrb r5, [r0, r3]
|
|
335
|
+
ldrb r4, [r1, r3]
|
|
336
|
+
eors r5, r5, r4
|
|
337
|
+
strb r5, [r2, r3]
|
|
338
|
+
subs r3, r3, #1
|
|
339
|
+
bcs KeccakP200_ExtractAndAddBytes_Loop
|
|
340
|
+
KeccakP200_ExtractAndAddBytes_Exit
|
|
341
|
+
pop {r4,r5}
|
|
342
|
+
bx lr
|
|
343
|
+
ENDP
|
|
344
|
+
|
|
345
|
+
;----------------------------------------------------------------------------
|
|
346
|
+
;
|
|
347
|
+
; void KeccakP200_Permute_Nrounds( void *state, unsigned int nr )
|
|
348
|
+
;
|
|
349
|
+
ALIGN 4
|
|
350
|
+
EXPORT KeccakP200_Permute_Nrounds
|
|
351
|
+
KeccakP200_Permute_Nrounds PROC
|
|
352
|
+
push { r4 - r6, lr }
|
|
353
|
+
mov r2, r8
|
|
354
|
+
mov r3, r9
|
|
355
|
+
mov r4, r10
|
|
356
|
+
mov r5, r11
|
|
357
|
+
mov r6, r12
|
|
358
|
+
push { r2 - r7 }
|
|
359
|
+
sub sp, sp, #25+7
|
|
360
|
+
mov r6, sp
|
|
361
|
+
adr r7, KeccakP200_Permute_RoundConstants18
|
|
362
|
+
adds r7, r7, #18
|
|
363
|
+
subs r7, r7, r1
|
|
364
|
+
lsls r1, r1, #31
|
|
365
|
+
beq KeccakP200_Permute_Nrounds_GoRoundLoop
|
|
366
|
+
ldm r0!, { r1, r2, r3, r4, r5 } ; odd number of rounds: copy state to stack
|
|
367
|
+
subs r0, r0, #20
|
|
368
|
+
stm r6!, { r1, r2, r3, r4, r5 }
|
|
369
|
+
subs r6, r6, #20
|
|
370
|
+
ldr r1, [r0, #_sa]
|
|
371
|
+
str r1, [r6, #_sa]
|
|
372
|
+
ldrb r1, [r0, #_su]
|
|
373
|
+
strb r1, [r6, #_su]
|
|
374
|
+
subs r7, r7, #1
|
|
375
|
+
mov r8, r7
|
|
376
|
+
b KeccakP200_Permute_RoundOdd
|
|
377
|
+
KeccakP200_Permute_Nrounds_GoRoundLoop
|
|
378
|
+
b KeccakP200_Permute_RoundLoop
|
|
379
|
+
ENDP
|
|
380
|
+
|
|
381
|
+
;----------------------------------------------------------------------------
|
|
382
|
+
;
|
|
383
|
+
; void KeccakP200_Permute_18rounds( void *state )
|
|
384
|
+
;
|
|
385
|
+
ALIGN 4
|
|
386
|
+
EXPORT KeccakP200_Permute_18rounds
|
|
387
|
+
KeccakP200_Permute_18rounds PROC
|
|
388
|
+
push { r4 - r6, lr }
|
|
389
|
+
mov r2, r8
|
|
390
|
+
mov r3, r9
|
|
391
|
+
mov r4, r10
|
|
392
|
+
mov r5, r11
|
|
393
|
+
mov r6, r12
|
|
394
|
+
push { r2 - r7 }
|
|
395
|
+
sub sp, sp, #25+7
|
|
396
|
+
mov r6, sp
|
|
397
|
+
adr r7, KeccakP200_Permute_RoundConstants18
|
|
398
|
+
b KeccakP200_Permute_RoundLoop
|
|
399
|
+
nop
|
|
400
|
+
|
|
401
|
+
KeccakP200_Permute_RoundConstants18
|
|
402
|
+
dcb 0x01
|
|
403
|
+
dcb 0x82
|
|
404
|
+
dcb 0x8a
|
|
405
|
+
dcb 0x00
|
|
406
|
+
dcb 0x8b
|
|
407
|
+
dcb 0x01
|
|
408
|
+
dcb 0x81
|
|
409
|
+
dcb 0x09
|
|
410
|
+
dcb 0x8a
|
|
411
|
+
dcb 0x88
|
|
412
|
+
dcb 0x09
|
|
413
|
+
dcb 0x0a
|
|
414
|
+
dcb 0x8b
|
|
415
|
+
dcb 0x8b
|
|
416
|
+
dcb 0x89
|
|
417
|
+
dcb 0x03
|
|
418
|
+
dcb 0x02
|
|
419
|
+
dcb 0x80
|
|
420
|
+
|
|
421
|
+
ALIGN 4
|
|
422
|
+
KeccakP200_Permute_RoundLoop
|
|
423
|
+
mov r8, r7
|
|
424
|
+
KeccakRound r6, r0, 0
|
|
425
|
+
KeccakP200_Permute_RoundOdd
|
|
426
|
+
KeccakRound r0, r6, 1
|
|
427
|
+
adds r7, r7, #2
|
|
428
|
+
cmp r2, #0x80
|
|
429
|
+
beq KeccakP200_Permute_Done
|
|
430
|
+
b KeccakP200_Permute_RoundLoop
|
|
431
|
+
KeccakP200_Permute_Done
|
|
432
|
+
add sp,sp,#25+7
|
|
433
|
+
pop { r1 - r5, r7 }
|
|
434
|
+
mov r8, r1
|
|
435
|
+
mov r9, r2
|
|
436
|
+
mov r10, r3
|
|
437
|
+
mov r11, r4
|
|
438
|
+
mov r12, r5
|
|
439
|
+
pop { r4 - r6, pc }
|
|
440
|
+
ENDP
|
|
441
|
+
|
|
442
|
+
END
|