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,590 @@
|
|
|
1
|
+
@
|
|
2
|
+
@ The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
@ https://github.com/XKCP/XKCP
|
|
4
|
+
@
|
|
5
|
+
@ Ketje, designed by Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
|
|
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
|
+
@ WARNING: These functions work only on little endian CPU with@ ARMv7m architecture (Cortex-M3, ...).
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
.thumb
|
|
21
|
+
.syntax unified
|
|
22
|
+
.text
|
|
23
|
+
|
|
24
|
+
.equ _ba , 0*2
|
|
25
|
+
.equ _be , 1*2
|
|
26
|
+
.equ _bi , 2*2
|
|
27
|
+
.equ _bo , 3*2
|
|
28
|
+
.equ _bu , 4*2
|
|
29
|
+
.equ _ga , 5*2
|
|
30
|
+
.equ _ge , 6*2
|
|
31
|
+
.equ _gi , 7*2
|
|
32
|
+
.equ _go , 8*2
|
|
33
|
+
.equ _gu , 9*2
|
|
34
|
+
.equ _ka , 10*2
|
|
35
|
+
.equ _ke , 11*2
|
|
36
|
+
.equ _ki , 12*2
|
|
37
|
+
.equ _ko , 13*2
|
|
38
|
+
.equ _ku , 14*2
|
|
39
|
+
.equ _ma , 15*2
|
|
40
|
+
.equ _me , 16*2
|
|
41
|
+
.equ _mi , 17*2
|
|
42
|
+
.equ _mo , 18*2
|
|
43
|
+
.equ _mu , 19*2
|
|
44
|
+
.equ _sa , 20*2
|
|
45
|
+
.equ _se , 21*2
|
|
46
|
+
.equ _si , 22*2
|
|
47
|
+
.equ _so , 23*2
|
|
48
|
+
.equ _su , 24*2
|
|
49
|
+
|
|
50
|
+
.equ _spare , 25*2 @ 16-bit
|
|
51
|
+
.equ _nBlock , 26*2
|
|
52
|
+
.equ _plaintext , 28*2
|
|
53
|
+
.equ _ciphertext , 30*2
|
|
54
|
+
.equ _AllocSize , 32*2
|
|
55
|
+
|
|
56
|
+
.macro xor5 result,ptr,b,g,k,m,rs
|
|
57
|
+
|
|
58
|
+
ldrh \result, [\ptr, #\b]
|
|
59
|
+
ldrh r6, [\ptr, #\g]
|
|
60
|
+
eor \result, \result, \rs
|
|
61
|
+
ldrh \rs, [\ptr, #\k]
|
|
62
|
+
eor \result, \result, r6
|
|
63
|
+
ldrh r6, [\ptr, #\m]
|
|
64
|
+
eor \result, \result, \rs
|
|
65
|
+
eor \result, \result, r6
|
|
66
|
+
.endm
|
|
67
|
+
|
|
68
|
+
.macro xor5D resultL,resultH,ptr,b,g,k,m,rsL,rsH
|
|
69
|
+
|
|
70
|
+
bfi \rsL, \rsH, #16, #16
|
|
71
|
+
ldr \resultL, [\ptr, #\b]
|
|
72
|
+
ldr r6, [\ptr, #\g]
|
|
73
|
+
eor \resultL, \resultL, \rsL
|
|
74
|
+
ldr \rsL, [\ptr, #\k]
|
|
75
|
+
eor \resultL, \resultL, r6
|
|
76
|
+
ldr r6, [\ptr, #\m]
|
|
77
|
+
eor \resultL, \resultL, \rsL
|
|
78
|
+
eor \resultL, \resultL, r6
|
|
79
|
+
lsr \resultH, \resultL, #16
|
|
80
|
+
uxth \resultL, \resultL
|
|
81
|
+
.endm
|
|
82
|
+
|
|
83
|
+
.macro xorrol b, yy, rr
|
|
84
|
+
|
|
85
|
+
eor \b, \b, \yy
|
|
86
|
+
lsl \b, \b, #\rr
|
|
87
|
+
orr \b, \b, \b, LSR #16
|
|
88
|
+
.endm
|
|
89
|
+
|
|
90
|
+
.macro rolxor d, a, b
|
|
91
|
+
|
|
92
|
+
eor \d, \a, \b, LSL #1
|
|
93
|
+
eor \d, \d, \b, LSR #15
|
|
94
|
+
uxth \d, \d
|
|
95
|
+
.endm
|
|
96
|
+
|
|
97
|
+
.macro xandnot resptr, resofs, aa, bb, cc, temp
|
|
98
|
+
|
|
99
|
+
bic \temp, \cc, \bb
|
|
100
|
+
eor \temp, \temp, \aa
|
|
101
|
+
strh \temp, [\resptr, #\resofs]
|
|
102
|
+
.endm
|
|
103
|
+
|
|
104
|
+
.macro xandnotRC resptr, resofs, aa, bb, cc
|
|
105
|
+
|
|
106
|
+
bic \cc, \cc, \bb
|
|
107
|
+
eor \cc, \cc, #0x0a
|
|
108
|
+
eor \cc, \cc, \aa
|
|
109
|
+
strh \cc, [\resptr, #\resofs]
|
|
110
|
+
.endm
|
|
111
|
+
|
|
112
|
+
.macro KeccakRound sOut, sIn
|
|
113
|
+
|
|
114
|
+
@prepTheta
|
|
115
|
+
xor5D r1, r2, \sIn, _ba, _ga, _ka, _ma, r8, r9
|
|
116
|
+
xor5D r3, r4, \sIn, _bi, _gi, _ki, _mi, r10, r11
|
|
117
|
+
rolxor r8, r7, r2
|
|
118
|
+
rolxor r9, r1, r3
|
|
119
|
+
rolxor r10, r2, r4
|
|
120
|
+
rolxor r11, r3, r7
|
|
121
|
+
rolxor r12, r4, r1
|
|
122
|
+
|
|
123
|
+
@thetaRhoPiChiIota
|
|
124
|
+
ldrh r1, [\sIn, #_ba]
|
|
125
|
+
ldrh r2, [\sIn, #_ge]
|
|
126
|
+
ldrh r3, [\sIn, #_ki]
|
|
127
|
+
ldrh r4, [\sIn, #_mo]
|
|
128
|
+
eor r1, r1, r8
|
|
129
|
+
xorrol r2, r9, 12
|
|
130
|
+
xorrol r3, r10, 11
|
|
131
|
+
xorrol r4, r11, 5
|
|
132
|
+
xorrol r5, r12, 14
|
|
133
|
+
xandnot \sOut, _be, r2, r3, r4, r6
|
|
134
|
+
xandnot \sOut, _bi, r3, r4, r5, r6
|
|
135
|
+
xandnot \sOut, _bo, r4, r5, r1, r6
|
|
136
|
+
xandnot \sOut, _bu, r5, r1, r2, r7
|
|
137
|
+
xandnotRC \sOut, _ba, r1, r2, r3
|
|
138
|
+
|
|
139
|
+
ldrh r1, [\sIn, #_bo]
|
|
140
|
+
ldrh r2, [\sIn, #_gu]
|
|
141
|
+
ldrh r3, [\sIn, #_ka]
|
|
142
|
+
ldrh r4, [\sIn, #_me]
|
|
143
|
+
ldrh r5, [\sIn, #_si]
|
|
144
|
+
xorrol r1, r11, 12
|
|
145
|
+
xorrol r2, r12, 4
|
|
146
|
+
xorrol r3, r8, 3
|
|
147
|
+
xorrol r4, r9, 13
|
|
148
|
+
xorrol r5, r10, 13
|
|
149
|
+
xandnot \sOut, _ga, r1, r2, r3, r6
|
|
150
|
+
xandnot \sOut, _ge, r2, r3, r4, r6
|
|
151
|
+
xandnot \sOut, _gi, r3, r4, r5, r6
|
|
152
|
+
xandnot \sOut, _go, r4, r5, r1, r6
|
|
153
|
+
xandnot \sOut, _gu, r5, r1, r2, r6
|
|
154
|
+
eor r7, r7, r6
|
|
155
|
+
|
|
156
|
+
ldrh r1, [\sIn, #_be]
|
|
157
|
+
ldrh r2, [\sIn, #_gi]
|
|
158
|
+
ldrh r3, [\sIn, #_ko]
|
|
159
|
+
ldrh r4, [\sIn, #_mu]
|
|
160
|
+
ldrh r5, [\sIn, #_sa]
|
|
161
|
+
xorrol r1, r9, 1
|
|
162
|
+
xorrol r2, r10, 6
|
|
163
|
+
xorrol r3, r11, 9
|
|
164
|
+
xorrol r4, r12, 8
|
|
165
|
+
xorrol r5, r8, 2
|
|
166
|
+
xandnot \sOut, _ka, r1, r2, r3, r6
|
|
167
|
+
xandnot \sOut, _ke, r2, r3, r4, r6
|
|
168
|
+
xandnot \sOut, _ki, r3, r4, r5, r6
|
|
169
|
+
xandnot \sOut, _ko, r4, r5, r1, r6
|
|
170
|
+
xandnot \sOut, _ku, r5, r1, r2, r6
|
|
171
|
+
eor r7, r7, r6
|
|
172
|
+
|
|
173
|
+
ldrh r1, [\sIn, #_bu]
|
|
174
|
+
ldrh r2, [\sIn, #_ga]
|
|
175
|
+
ldrh r3, [\sIn, #_ke]
|
|
176
|
+
ldrh r4, [\sIn, #_mi]
|
|
177
|
+
ldrh r5, [\sIn, #_so]
|
|
178
|
+
xorrol r1, r12, 11
|
|
179
|
+
xorrol r2, r8, 4
|
|
180
|
+
xorrol r3, r9, 10
|
|
181
|
+
xorrol r4, r10, 15
|
|
182
|
+
xorrol r5, r11, 8
|
|
183
|
+
xandnot \sOut, _ma, r1, r2, r3, r6
|
|
184
|
+
xandnot \sOut, _me, r2, r3, r4, r6
|
|
185
|
+
xandnot \sOut, _mi, r3, r4, r5, r6
|
|
186
|
+
xandnot \sOut, _mo, r4, r5, r1, r6
|
|
187
|
+
xandnot \sOut, _mu, r5, r1, r2, r6
|
|
188
|
+
eor r7, r7, r6
|
|
189
|
+
|
|
190
|
+
ldrh r1, [\sIn, #_bi]
|
|
191
|
+
ldrh r2, [\sIn, #_go]
|
|
192
|
+
ldrh r3, [\sIn, #_ku]
|
|
193
|
+
ldrh r4, [\sIn, #_ma]
|
|
194
|
+
ldrh r5, [\sIn, #_se]
|
|
195
|
+
xorrol r1, r10, 14
|
|
196
|
+
xorrol r2, r11, 7
|
|
197
|
+
xorrol r3, r12, 7
|
|
198
|
+
xorrol r4, r8, 9
|
|
199
|
+
xorrol r5, r9, 2
|
|
200
|
+
xandnot \sOut, _sa, r1, r2, r3, r8
|
|
201
|
+
xandnot \sOut, _se, r2, r3, r4, r9
|
|
202
|
+
xandnot \sOut, _si, r3, r4, r5, r10
|
|
203
|
+
xandnot \sOut, _so, r4, r5, r1, r11
|
|
204
|
+
bic r1, r2, r1
|
|
205
|
+
eor r5, r5, r1
|
|
206
|
+
eor r7, r7, r5
|
|
207
|
+
uxth r7, r7
|
|
208
|
+
strh r5, [\sOut, #_su]
|
|
209
|
+
uxth r5, r5
|
|
210
|
+
.endm
|
|
211
|
+
|
|
212
|
+
@----------------------------------------------------------------------------
|
|
213
|
+
@
|
|
214
|
+
@ void KetSr_StateAddByte( void *state, unsigned char value, unsigned int offset )
|
|
215
|
+
@
|
|
216
|
+
.align 8
|
|
217
|
+
.global KetSr_StateAddByte
|
|
218
|
+
.type KetSr_StateAddByte, %function;
|
|
219
|
+
KetSr_StateAddByte:
|
|
220
|
+
adr r3, Ket_StateTwistIndexes
|
|
221
|
+
lsr r12, r2, #1
|
|
222
|
+
ldrb r3, [r3, r12]
|
|
223
|
+
and r2, r2, #1
|
|
224
|
+
add r3, r3, r2
|
|
225
|
+
ldrb r2, [r0, r3]
|
|
226
|
+
eors r1, r1, r2
|
|
227
|
+
strb r1, [r0, r3]
|
|
228
|
+
bx lr
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
@----------------------------------------------------------------------------
|
|
232
|
+
@
|
|
233
|
+
@ unsigned char KetSr_StateExtractByte( void *state, unsigned int offset )
|
|
234
|
+
@
|
|
235
|
+
.align 8
|
|
236
|
+
.global KetSr_StateExtractByte
|
|
237
|
+
.type KetSr_StateExtractByte, %function;
|
|
238
|
+
KetSr_StateExtractByte:
|
|
239
|
+
adr r3, Ket_StateTwistIndexes
|
|
240
|
+
lsrs r2, r1, #1
|
|
241
|
+
ldrb r3, [r3, r2]
|
|
242
|
+
and r1, r1, #1
|
|
243
|
+
add r3, r3, r1
|
|
244
|
+
ldrb r0, [r0, r3]
|
|
245
|
+
bx lr
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
@----------------------------------------------------------------------------
|
|
249
|
+
@
|
|
250
|
+
@ void KetSr_StateOverwrite( void *state, unsigned int offset, const unsigned char *data, unsigned int length )
|
|
251
|
+
@
|
|
252
|
+
.align 8
|
|
253
|
+
.global KetSr_StateOverwrite
|
|
254
|
+
.type KetSr_StateOverwrite, %function;
|
|
255
|
+
KetSr_StateOverwrite:
|
|
256
|
+
cmp r3, #0
|
|
257
|
+
beq KetSr_StateOverwrite_Exit
|
|
258
|
+
push {r4-r5}
|
|
259
|
+
adr r4, Ket_StateTwistIndexes
|
|
260
|
+
adds r4, r4, r1, LSR #1
|
|
261
|
+
ands r1, r1, #1
|
|
262
|
+
beq KetSr_StateOverwrite_Loop
|
|
263
|
+
ldrb r1, [r4], #1
|
|
264
|
+
b KetSr_StateOverwrite_OffsetOdd
|
|
265
|
+
KetSr_StateOverwrite_Loop:
|
|
266
|
+
ldrb r1, [r4], #1
|
|
267
|
+
ldrb r5, [r2], #1
|
|
268
|
+
subs r3, r3, #1
|
|
269
|
+
strb r5, [r0, r1]
|
|
270
|
+
beq KetSr_StateOverwrite_Done
|
|
271
|
+
KetSr_StateOverwrite_OffsetOdd:
|
|
272
|
+
adds r1, r1, #1
|
|
273
|
+
ldrb r5, [r2], #1
|
|
274
|
+
subs r3, r3, #1
|
|
275
|
+
strb r5, [r0, r1]
|
|
276
|
+
bne KetSr_StateOverwrite_Loop
|
|
277
|
+
KetSr_StateOverwrite_Done:
|
|
278
|
+
pop {r4-r5}
|
|
279
|
+
KetSr_StateOverwrite_Exit:
|
|
280
|
+
bx lr
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
@----------------------------------------------------------------------------
|
|
284
|
+
@
|
|
285
|
+
@ void KetSr_Step( void *state, unsigned int size, unsigned char framing )
|
|
286
|
+
@
|
|
287
|
+
.align 8
|
|
288
|
+
.global KetSr_Step
|
|
289
|
+
.type KetSr_Step, %function;
|
|
290
|
+
KetSr_Step:
|
|
291
|
+
push {r4-r12,lr}
|
|
292
|
+
sub sp, sp, #_AllocSize
|
|
293
|
+
adr r4, Ket_StateTwistIndexes @ framing
|
|
294
|
+
add r4, r4, r1, LSR #1
|
|
295
|
+
ldrb r4, [r4]
|
|
296
|
+
and r1, r1, #1
|
|
297
|
+
add r1, r1, r4
|
|
298
|
+
ldrb r4, [r0, r1]
|
|
299
|
+
eors r2, r2, r4
|
|
300
|
+
strb r2, [r0, r1]
|
|
301
|
+
ldrb r2, [r0, #_ki] @ padding
|
|
302
|
+
eor r2, r2, #0x08
|
|
303
|
+
strb r2, [r0, #_ki]
|
|
304
|
+
mov r4, sp @ Odd number of blocks, so copy state to stack
|
|
305
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
306
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
307
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
308
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
309
|
+
sub r0, r0, #2*24
|
|
310
|
+
ldrh r12, [r0, #_su]
|
|
311
|
+
strh r12, [sp, #_su]
|
|
312
|
+
ldrh r8, [sp, #_sa]
|
|
313
|
+
ldrh r9, [sp, #_se]
|
|
314
|
+
ldrh r10, [sp, #_si]
|
|
315
|
+
ldrh r12, [sp, #_su]
|
|
316
|
+
ldrh r11, [sp, #_so]
|
|
317
|
+
mov r5, r12
|
|
318
|
+
xor5 r7, sp, _bu, _gu, _ku, _mu, r12
|
|
319
|
+
bl KeccakP400_1_StatePermuteFromStack
|
|
320
|
+
add sp, sp, #_AllocSize
|
|
321
|
+
pop {r4-r12,pc}
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
.align 8
|
|
325
|
+
Ket_StateTwistIndexes:
|
|
326
|
+
.byte 0*2, 6*2, 12*2, 18*2, 24*2
|
|
327
|
+
.byte 3*2, 9*2, 10*2, 16*2, 22*2
|
|
328
|
+
.byte 1*2, 7*2, 13*2, 19*2, 20*2
|
|
329
|
+
.byte 4*2, 5*2, 11*2, 17*2, 23*2
|
|
330
|
+
.byte 2*2, 8*2, 14*2, 15*2, 21*2
|
|
331
|
+
|
|
332
|
+
@----------------------------------------------------------------------------
|
|
333
|
+
@
|
|
334
|
+
@ void KetSr_FeedAssociatedDataBlocks( void *state, const unsigned char *data, unsigned int nBlocks )
|
|
335
|
+
@
|
|
336
|
+
.align 8
|
|
337
|
+
.global KetSr_FeedAssociatedDataBlocks
|
|
338
|
+
.type KetSr_FeedAssociatedDataBlocks, %function;
|
|
339
|
+
KetSr_FeedAssociatedDataBlocks:
|
|
340
|
+
push {r4-r12,lr}
|
|
341
|
+
sub sp, sp, #_AllocSize
|
|
342
|
+
lsrs r3, r2, #1
|
|
343
|
+
bcc KetSr_FeedAssociatedDataBlocks_Even
|
|
344
|
+
adds r2, r2, #1
|
|
345
|
+
str r2, [sp, #_nBlock]
|
|
346
|
+
mov r4, sp @ Odd number of blocks, so copy state to stack
|
|
347
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
348
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
349
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
350
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
351
|
+
sub r0, r0, #2*24
|
|
352
|
+
ldrh r12, [r0, #_su]
|
|
353
|
+
strh r12, [sp, #_su]
|
|
354
|
+
ldrh r8, [sp, #_sa]
|
|
355
|
+
ldrh r9, [sp, #_se]
|
|
356
|
+
ldrh r10, [sp, #_si]
|
|
357
|
+
ldrh r12, [sp, #_su]
|
|
358
|
+
ldrh r11, [sp, #_so]
|
|
359
|
+
mov r5, r12
|
|
360
|
+
xor5 r7, sp, _bu, _gu, _ku, _mu, r12
|
|
361
|
+
b KetSr_FeedAssociatedDataBlocks_Odd
|
|
362
|
+
KetSr_FeedAssociatedDataBlocks_Even: @ Even number of blocks
|
|
363
|
+
ldrh r8, [r0, #_sa]
|
|
364
|
+
ldrh r9, [r0, #_se]
|
|
365
|
+
ldrh r10, [r0, #_si]
|
|
366
|
+
ldrh r12, [r0, #_su]
|
|
367
|
+
ldrh r11, [r0, #_so]
|
|
368
|
+
mov r5, r12
|
|
369
|
+
xor5 r7, r0, _bu, _gu, _ku, _mu, r12
|
|
370
|
+
KetSr_FeedAssociatedDataBlocks_Loop:
|
|
371
|
+
str r2, [sp, #_nBlock]
|
|
372
|
+
ldr r6, [r1], #4 @ Get data (2 lanes)
|
|
373
|
+
ldrh lr, [r0, #_ba] @ Add lane 1
|
|
374
|
+
eor lr, lr, r6
|
|
375
|
+
strh lr, [r0, #_ba]
|
|
376
|
+
ldrh lr, [r0, #_ge] @ Add lane 2
|
|
377
|
+
eor lr, lr, r6, LSR #16
|
|
378
|
+
strh lr, [r0, #_ge]
|
|
379
|
+
ldr r6, [r0, #_ki] @ Add FRAMEBITS00 and padding
|
|
380
|
+
eor r6, r6, #0x0C
|
|
381
|
+
str r6, [r0, #_ki]
|
|
382
|
+
str r1, [sp, #_plaintext]
|
|
383
|
+
bl KeccakP400_1_StatePermuteToStack
|
|
384
|
+
ldr r1, [sp, #_plaintext]
|
|
385
|
+
KetSr_FeedAssociatedDataBlocks_Odd:
|
|
386
|
+
ldr r6, [r1], #4 @ Get data (2 lanes)
|
|
387
|
+
ldrh lr, [sp, #_ba] @ Add lane 1
|
|
388
|
+
eor lr, lr, r6
|
|
389
|
+
strh lr, [sp, #_ba]
|
|
390
|
+
ldrh lr, [sp, #_ge] @ Add lane 2
|
|
391
|
+
eor lr, lr, r6, LSR #16
|
|
392
|
+
strh lr, [sp, #_ge]
|
|
393
|
+
ldr r6, [sp, #_ki] @ Add FRAMEBITS00 and padding
|
|
394
|
+
eor r6, r6, #0x0C
|
|
395
|
+
str r6, [sp, #_ki]
|
|
396
|
+
str r1, [sp, #_plaintext]
|
|
397
|
+
bl KeccakP400_1_StatePermuteFromStack
|
|
398
|
+
ldr r1, [sp, #_plaintext]
|
|
399
|
+
ldr r2, [sp, #_nBlock]
|
|
400
|
+
subs r2, r2, #2
|
|
401
|
+
bne KetSr_FeedAssociatedDataBlocks_Loop
|
|
402
|
+
add sp, sp, #_AllocSize
|
|
403
|
+
pop {r4-r12,pc}
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
@----------------------------------------------------------------------------
|
|
407
|
+
@
|
|
408
|
+
@ void KetSr_UnwrapBlocks( void *state, const unsigned char *ciphertext, unsigned char *plaintext, unsigned int nBlocks )
|
|
409
|
+
@
|
|
410
|
+
.align 8
|
|
411
|
+
.global KetSr_UnwrapBlocks
|
|
412
|
+
.type KetSr_UnwrapBlocks, %function;
|
|
413
|
+
KetSr_UnwrapBlocks:
|
|
414
|
+
push {r4-r12,lr}
|
|
415
|
+
sub sp, sp, #_AllocSize
|
|
416
|
+
lsrs r4, r3, #1
|
|
417
|
+
bcc KetSr_UnwrapBlocks_Even
|
|
418
|
+
adds r3, r3, #1
|
|
419
|
+
str r3, [sp, #_nBlock]
|
|
420
|
+
mov r4, sp @ Odd number of blocks, so copy state to stack
|
|
421
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
422
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
423
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
424
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
425
|
+
sub r0, r0, #2*24
|
|
426
|
+
ldrh r12, [r0, #_su]
|
|
427
|
+
strh r12, [sp, #_su]
|
|
428
|
+
ldrh r8, [sp, #_sa]
|
|
429
|
+
ldrh r9, [sp, #_se]
|
|
430
|
+
ldrh r10, [sp, #_si]
|
|
431
|
+
ldrh r12, [sp, #_su]
|
|
432
|
+
ldrh r11, [sp, #_so]
|
|
433
|
+
mov r5, r12
|
|
434
|
+
xor5 r7, sp, _bu, _gu, _ku, _mu, r12
|
|
435
|
+
b KetSr_UnwrapBlocks_Odd
|
|
436
|
+
KetSr_UnwrapBlocks_Even: @ Even number of blocks
|
|
437
|
+
ldrh r8, [r0, #_sa]
|
|
438
|
+
ldrh r9, [r0, #_se]
|
|
439
|
+
ldrh r10, [r0, #_si]
|
|
440
|
+
ldrh r12, [r0, #_su]
|
|
441
|
+
ldrh r11, [r0, #_so]
|
|
442
|
+
mov r5, r12
|
|
443
|
+
xor5 r7, r0, _bu, _gu, _ku, _mu, r12
|
|
444
|
+
KetSr_UnwrapBlocks_Loop:
|
|
445
|
+
str r3, [sp, #_nBlock]
|
|
446
|
+
ldr r6, [r1], #4 @ Get ciphertext (2 lanes)
|
|
447
|
+
ldrh lr, [r0, #_ba] @ Lane 1 from state
|
|
448
|
+
eor lr, lr, r6
|
|
449
|
+
strh lr, [r2], #2 @ Save plaintext lane 1
|
|
450
|
+
strh r6, [r0, #_ba] @ Save ciphertext into state lane 1
|
|
451
|
+
ldrh lr, [r0, #_ge] @ Lane 2 from state
|
|
452
|
+
eor lr, lr, r6, LSR #16
|
|
453
|
+
strh lr, [r2], #2 @ Save plaintext lane 2
|
|
454
|
+
lsrs r6, r6, #16
|
|
455
|
+
strh r6, [r0, #_ge] @ Save ciphertext into state lane 2
|
|
456
|
+
ldr r6, [r0, #_ki] @ Add FRAMEBITS11 and padding
|
|
457
|
+
eor r6, r6, #0x0F
|
|
458
|
+
str r6, [r0, #_ki]
|
|
459
|
+
str r1, [sp, #_ciphertext]
|
|
460
|
+
str r2, [sp, #_plaintext]
|
|
461
|
+
bl KeccakP400_1_StatePermuteToStack
|
|
462
|
+
ldr r1, [sp, #_ciphertext]
|
|
463
|
+
ldr r2, [sp, #_plaintext]
|
|
464
|
+
KetSr_UnwrapBlocks_Odd:
|
|
465
|
+
ldr r6, [r1], #4 @ Get ciphertext (2 lanes)
|
|
466
|
+
ldrh lr, [sp, #_ba] @ Get lane 1 from state
|
|
467
|
+
eor lr, lr, r6
|
|
468
|
+
strh lr, [r2], #2 @ Save plaintext lane 1
|
|
469
|
+
strh r6, [sp, #_ba] @ Save ciphertext into state lane 1
|
|
470
|
+
ldrh lr, [sp, #_ge] @ Get lane 2 from state
|
|
471
|
+
eor lr, lr, r6, LSR #16
|
|
472
|
+
strh lr, [r2], #2 @ Save plaintext lane 2
|
|
473
|
+
lsrs r6, r6, #16
|
|
474
|
+
strh r6, [sp, #_ge] @ Save ciphertext into state lane 2
|
|
475
|
+
ldr r6, [sp, #_ki] @ Add FRAMEBITS11 and padding
|
|
476
|
+
eor r6, r6, #0x0F
|
|
477
|
+
str r6, [sp, #_ki]
|
|
478
|
+
str r1, [sp, #_ciphertext]
|
|
479
|
+
str r2, [sp, #_plaintext]
|
|
480
|
+
bl KeccakP400_1_StatePermuteFromStack
|
|
481
|
+
ldr r1, [sp, #_ciphertext]
|
|
482
|
+
ldr r2, [sp, #_plaintext]
|
|
483
|
+
ldr r3, [sp, #_nBlock]
|
|
484
|
+
subs r3, r3, #2
|
|
485
|
+
bne KetSr_UnwrapBlocks_Loop
|
|
486
|
+
add sp, sp, #_AllocSize
|
|
487
|
+
pop {r4-r12,pc}
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
@----------------------------------------------------------------------------
|
|
491
|
+
@
|
|
492
|
+
@ void KetSr_WrapBlocks( void *state, const unsigned char *plaintext, unsigned char *ciphertext, unsigned int nBlocks )
|
|
493
|
+
@
|
|
494
|
+
.align 8
|
|
495
|
+
.global KetSr_WrapBlocks
|
|
496
|
+
.type KetSr_WrapBlocks, %function;
|
|
497
|
+
KetSr_WrapBlocks:
|
|
498
|
+
push {r4-r12,lr}
|
|
499
|
+
sub sp, sp, #_AllocSize
|
|
500
|
+
lsrs r4, r3, #1
|
|
501
|
+
bcc KetSr_WrapBlocks_Even
|
|
502
|
+
adds r3, r3, #1
|
|
503
|
+
str r3, [sp, #_nBlock]
|
|
504
|
+
mov r4, sp @ Odd number of blocks, so copy state to stack
|
|
505
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
506
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
507
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
508
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
509
|
+
sub r0, r0, #2*24
|
|
510
|
+
ldrh r12, [r0, #_su]
|
|
511
|
+
strh r12, [sp, #_su]
|
|
512
|
+
ldrh r8, [sp, #_sa]
|
|
513
|
+
ldrh r9, [sp, #_se]
|
|
514
|
+
ldrh r10, [sp, #_si]
|
|
515
|
+
ldrh r12, [sp, #_su]
|
|
516
|
+
ldrh r11, [sp, #_so]
|
|
517
|
+
mov r5, r12
|
|
518
|
+
xor5 r7, sp, _bu, _gu, _ku, _mu, r12
|
|
519
|
+
b KetSr_WrapBlocks_Odd
|
|
520
|
+
KetSr_WrapBlocks_Even: @ Even number of blocks
|
|
521
|
+
ldrh r8, [r0, #_sa]
|
|
522
|
+
ldrh r9, [r0, #_se]
|
|
523
|
+
ldrh r10, [r0, #_si]
|
|
524
|
+
ldrh r12, [r0, #_su]
|
|
525
|
+
ldrh r11, [r0, #_so]
|
|
526
|
+
mov r5, r12
|
|
527
|
+
xor5 r7, r0, _bu, _gu, _ku, _mu, r12
|
|
528
|
+
KetSr_WrapBlocks_Loop:
|
|
529
|
+
str r3, [sp, #_nBlock]
|
|
530
|
+
ldr r6, [r1], #4 @ Get plaintext (2 lanes)
|
|
531
|
+
ldrh lr, [r0, #_ba] @ Get lane 1 from state
|
|
532
|
+
eor lr, lr, r6
|
|
533
|
+
strh lr, [r2], #2 @ Save ciphertext lane 1
|
|
534
|
+
strh lr, [r0, #_ba] @ Save ciphertext into state lane 1
|
|
535
|
+
ldrh lr, [r0, #_ge] @ Get lane 2 from state
|
|
536
|
+
eor lr, lr, r6, LSR #16
|
|
537
|
+
strh lr, [r2], #2 @ Save ciphertext lane 2
|
|
538
|
+
strh lr, [r0, #_ge] @ Save ciphertext into state lane 2
|
|
539
|
+
ldr r6, [r0, #_ki] @ Add FRAMEBITS11 and padding
|
|
540
|
+
eor r6, r6, #0x0F
|
|
541
|
+
str r6, [r0, #_ki]
|
|
542
|
+
str r1, [sp, #_plaintext]
|
|
543
|
+
str r2, [sp, #_ciphertext]
|
|
544
|
+
bl KeccakP400_1_StatePermuteToStack
|
|
545
|
+
ldr r1, [sp, #_plaintext]
|
|
546
|
+
ldr r2, [sp, #_ciphertext]
|
|
547
|
+
KetSr_WrapBlocks_Odd:
|
|
548
|
+
ldr r6, [r1], #4 @ Get plaintext (2 lanes)
|
|
549
|
+
ldrh lr, [sp, #_ba] @ Get lane 1 from state
|
|
550
|
+
eor lr, lr, r6
|
|
551
|
+
strh lr, [r2], #2 @ Save ciphertext lane 1
|
|
552
|
+
strh lr, [sp, #_ba] @ Save ciphertext into state lane 1
|
|
553
|
+
ldrh lr, [sp, #_ge] @ Get lane 2 from state
|
|
554
|
+
eor lr, lr, r6, LSR #16
|
|
555
|
+
strh lr, [r2], #2 @ Save ciphertext lane 2
|
|
556
|
+
strh lr, [sp, #_ge] @ Save ciphertext into state lane 2
|
|
557
|
+
ldr r6, [sp, #_ki] @ Add FRAMEBITS11 and padding
|
|
558
|
+
eor r6, r6, #0x0F
|
|
559
|
+
str r6, [sp, #_ki]
|
|
560
|
+
str r1, [sp, #_plaintext]
|
|
561
|
+
str r2, [sp, #_ciphertext]
|
|
562
|
+
bl KeccakP400_1_StatePermuteFromStack
|
|
563
|
+
ldr r1, [sp, #_plaintext]
|
|
564
|
+
ldr r2, [sp, #_ciphertext]
|
|
565
|
+
ldr r3, [sp, #_nBlock]
|
|
566
|
+
subs r3, r3, #2
|
|
567
|
+
bne KetSr_WrapBlocks_Loop
|
|
568
|
+
add sp, sp, #_AllocSize
|
|
569
|
+
pop {r4-r12,pc}
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
@----------------------------------------------------------------------------
|
|
573
|
+
@
|
|
574
|
+
@ Keccak-P[400, 1] usable from asm only, from r0 to sp
|
|
575
|
+
@
|
|
576
|
+
KeccakP400_1_StatePermuteToStack:
|
|
577
|
+
KeccakRound sp, r0
|
|
578
|
+
bx lr
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
@----------------------------------------------------------------------------
|
|
582
|
+
@
|
|
583
|
+
@ Keccak-P[400, 1] usable from asm only, from sp to r0
|
|
584
|
+
@
|
|
585
|
+
KeccakP400_1_StatePermuteFromStack:
|
|
586
|
+
KeccakRound r0, sp
|
|
587
|
+
bx lr
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
Ketje, designed by Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
|
|
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
|
+
#ifdef KeccakReference
|
|
18
|
+
#include "displayIntermediateValues.h"
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
/* Info: Designed for Little Endian CPU with pure state layout. */
|
|
22
|
+
|
|
23
|
+
#include <stdint.h>
|
|
24
|
+
#include "config.h"
|
|
25
|
+
#include "Ket.h"
|
|
26
|
+
|
|
27
|
+
//#define NO_MISALIGNED_ACCESSES
|
|
28
|
+
|
|
29
|
+
#define Ket_Minimum( a, b ) (((a) < (b)) ? (a) : (b))
|
|
30
|
+
|
|
31
|
+
#ifdef XKCP_has_KeccakP200
|
|
32
|
+
#include "KeccakP-200-SnP.h"
|
|
33
|
+
|
|
34
|
+
#define prefix KetJr
|
|
35
|
+
#define SnP KeccakP200
|
|
36
|
+
#define SnP_width 200
|
|
37
|
+
#define SnP_PermuteRounds KeccakP200_Permute_Nrounds
|
|
38
|
+
#define tKeccakLane uint8_t
|
|
39
|
+
#define ReadUnalignedLane(__a) *(tKeccakLane*)(__a)
|
|
40
|
+
#define WriteUnalignedLane(__a,__v) *(tKeccakLane*)(__a) = (__v)
|
|
41
|
+
#include "Ket.inc"
|
|
42
|
+
#undef prefix
|
|
43
|
+
#undef SnP
|
|
44
|
+
#undef SnP_width
|
|
45
|
+
#undef SnP_PermuteRounds
|
|
46
|
+
#undef tKeccakLane
|
|
47
|
+
#undef ReadUnalignedLane
|
|
48
|
+
#undef WriteUnalignedLane
|
|
49
|
+
#endif
|
|
50
|
+
|
|
51
|
+
#ifdef XKCP_has_KeccakP400
|
|
52
|
+
#include "KeccakP-400-SnP.h"
|
|
53
|
+
|
|
54
|
+
#define prefix KetSr
|
|
55
|
+
#define SnP KeccakP400
|
|
56
|
+
#define SnP_width 400
|
|
57
|
+
#define SnP_PermuteRounds KeccakP400_Permute_Nrounds
|
|
58
|
+
#define tKeccakLane uint16_t
|
|
59
|
+
#ifdef NO_MISALIGNED_ACCESSES
|
|
60
|
+
#define ReadUnalignedLane(__a) (*(__a)|(*((__a)+1)<<8))
|
|
61
|
+
#define WriteUnalignedLane(__a,__v) *(__a) = (uint8_t)(__v), *((__a)+1) = (uint8_t)((__v)>> 8)
|
|
62
|
+
#else
|
|
63
|
+
#define ReadUnalignedLane(__a) *(tKeccakLane*)(__a)
|
|
64
|
+
#define WriteUnalignedLane(__a,__v) *(tKeccakLane*)(__a) = (__v)
|
|
65
|
+
#endif
|
|
66
|
+
#include "Ket.inc"
|
|
67
|
+
#undef prefix
|
|
68
|
+
#undef SnP
|
|
69
|
+
#undef SnP_width
|
|
70
|
+
#undef SnP_PermuteRounds
|
|
71
|
+
#undef tKeccakLane
|
|
72
|
+
#undef ReadUnalignedLane
|
|
73
|
+
#undef WriteUnalignedLane
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
#ifdef XKCP_has_KeccakP800
|
|
77
|
+
#include "KeccakP-800-SnP.h"
|
|
78
|
+
|
|
79
|
+
#define prefix KetMn
|
|
80
|
+
#define SnP KeccakP800
|
|
81
|
+
#define SnP_width 800
|
|
82
|
+
#define SnP_PermuteRounds KeccakP800_Permute_Nrounds
|
|
83
|
+
#define tKeccakLane uint32_t
|
|
84
|
+
#ifdef NO_MISALIGNED_ACCESSES
|
|
85
|
+
#define ReadUnalignedLane(__a) (*(__a)|(*((__a)+1)<<8)|(*((__a)+2)<<16)|(*((__a)+3)<<24))
|
|
86
|
+
#define WriteUnalignedLane(__a,__v) *(__a) = (uint8_t)(__v), *((__a)+1) = (uint8_t)((__v)>>8), *((__a)+2) = (uint8_t)((__v)>>16), *((__a)+3) = (uint8_t)((__v)>>24)
|
|
87
|
+
#else
|
|
88
|
+
#define ReadUnalignedLane(__a) *(tKeccakLane*)(__a)
|
|
89
|
+
#define WriteUnalignedLane(__a,__v) *(tKeccakLane*)(__a) = (__v)
|
|
90
|
+
#endif
|
|
91
|
+
#include "Ket.inc"
|
|
92
|
+
#undef prefix
|
|
93
|
+
#undef SnP
|
|
94
|
+
#undef SnP_width
|
|
95
|
+
#undef SnP_PermuteRounds
|
|
96
|
+
#undef tKeccakLane
|
|
97
|
+
#undef ReadUnalignedLane
|
|
98
|
+
#undef WriteUnalignedLane
|
|
99
|
+
#endif
|
|
100
|
+
|
|
101
|
+
#ifdef XKCP_has_KeccakP1600
|
|
102
|
+
#include "KeccakP-1600-SnP.h"
|
|
103
|
+
|
|
104
|
+
#define prefix KetMj
|
|
105
|
+
#define SnP KeccakP1600
|
|
106
|
+
#define SnP_width 1600
|
|
107
|
+
#define SnP_PermuteRounds KeccakP1600_Permute_Nrounds
|
|
108
|
+
#define tKeccakLane uint64_t
|
|
109
|
+
#ifdef NO_MISALIGNED_ACCESSES
|
|
110
|
+
#define ReadUnalignedLane(__a) (*(__a)|((uint64_t)*((__a)+1)<<8)|((uint64_t)*((__a)+2)<<16)|((uint64_t)*((__a)+3)<<24) \
|
|
111
|
+
|((uint64_t)*((__a)+4)<<32)|((uint64_t)*((__a)+5)<<40)|((uint64_t)*((__a)+6)<<48)|((uint64_t)*((__a)+7)<<56))
|
|
112
|
+
#define WriteUnalignedLane(__a,__v) *(__a) = (uint8_t)(__v), *((__a)+1) = (uint8_t)((__v)>>8), *((__a)+2) = (uint8_t)((__v)>>16), *((__a)+3) = (uint8_t)((__v)>>24), \
|
|
113
|
+
*((__a)+4) = (uint8_t)((__v)>>32), *((__a)+5) = (uint8_t)((__v)>>40), *((__a)+6) = (uint8_t)((__v)>>48), *((__a)+7) = (uint8_t)((__v)>>56)
|
|
114
|
+
#else
|
|
115
|
+
#define ReadUnalignedLane(__a) *(tKeccakLane*)(__a)
|
|
116
|
+
#define WriteUnalignedLane(__a,__v) *(tKeccakLane*)(__a) = (__v)
|
|
117
|
+
#endif
|
|
118
|
+
#include "Ket.inc"
|
|
119
|
+
#undef prefix
|
|
120
|
+
#undef SnP
|
|
121
|
+
#undef SnP_width
|
|
122
|
+
#undef SnP_PermuteRounds
|
|
123
|
+
#undef tKeccakLane
|
|
124
|
+
#undef ReadUnalignedLane
|
|
125
|
+
#undef WriteUnalignedLane
|
|
126
|
+
#endif
|