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
|
+
PRESERVE8
|
|
20
|
+
THUMB
|
|
21
|
+
AREA |.text|, CODE, READONLY
|
|
22
|
+
|
|
23
|
+
_ba equ 0*2
|
|
24
|
+
_be equ 1*2
|
|
25
|
+
_bi equ 2*2
|
|
26
|
+
_bo equ 3*2
|
|
27
|
+
_bu equ 4*2
|
|
28
|
+
_ga equ 5*2
|
|
29
|
+
_ge equ 6*2
|
|
30
|
+
_gi equ 7*2
|
|
31
|
+
_go equ 8*2
|
|
32
|
+
_gu equ 9*2
|
|
33
|
+
_ka equ 10*2
|
|
34
|
+
_ke equ 11*2
|
|
35
|
+
_ki equ 12*2
|
|
36
|
+
_ko equ 13*2
|
|
37
|
+
_ku equ 14*2
|
|
38
|
+
_ma equ 15*2
|
|
39
|
+
_me equ 16*2
|
|
40
|
+
_mi equ 17*2
|
|
41
|
+
_mo equ 18*2
|
|
42
|
+
_mu equ 19*2
|
|
43
|
+
_sa equ 20*2
|
|
44
|
+
_se equ 21*2
|
|
45
|
+
_si equ 22*2
|
|
46
|
+
_so equ 23*2
|
|
47
|
+
_su equ 24*2
|
|
48
|
+
|
|
49
|
+
_spare equ 25*2 ; 16-bit
|
|
50
|
+
_nBlock equ 26*2
|
|
51
|
+
_plaintext equ 28*2
|
|
52
|
+
_ciphertext equ 30*2
|
|
53
|
+
_AllocSize equ 32*2
|
|
54
|
+
|
|
55
|
+
MACRO
|
|
56
|
+
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
|
+
MEND
|
|
67
|
+
|
|
68
|
+
MACRO
|
|
69
|
+
xor5D $resultL,$resultH,$ptr,$b,$g,$k,$m,$rsL,$rsH
|
|
70
|
+
|
|
71
|
+
bfi $rsL, $rsH, #16, #16
|
|
72
|
+
ldr $resultL, [$ptr, #$b]
|
|
73
|
+
ldr r6, [$ptr, #$g]
|
|
74
|
+
eor $resultL, $resultL, $rsL
|
|
75
|
+
ldr $rsL, [$ptr, #$k]
|
|
76
|
+
eor $resultL, $resultL, r6
|
|
77
|
+
ldr r6, [$ptr, #$m]
|
|
78
|
+
eor $resultL, $resultL, $rsL
|
|
79
|
+
eor $resultL, $resultL, r6
|
|
80
|
+
lsr $resultH, $resultL, #16
|
|
81
|
+
uxth $resultL, $resultL
|
|
82
|
+
MEND
|
|
83
|
+
|
|
84
|
+
MACRO
|
|
85
|
+
xorrol $b, $yy, $rr
|
|
86
|
+
|
|
87
|
+
eor $b, $b, $yy
|
|
88
|
+
lsl $b, $b, #$rr
|
|
89
|
+
orr $b, $b, $b, LSR #16
|
|
90
|
+
MEND
|
|
91
|
+
|
|
92
|
+
MACRO
|
|
93
|
+
rolxor $d, $a, $b
|
|
94
|
+
|
|
95
|
+
eor $d, $a, $b, LSL #1
|
|
96
|
+
eor $d, $d, $b, LSR #15
|
|
97
|
+
uxth $d, $d
|
|
98
|
+
MEND
|
|
99
|
+
|
|
100
|
+
MACRO
|
|
101
|
+
xandnot $resptr, $resofs, $aa, $bb, $cc, $temp
|
|
102
|
+
|
|
103
|
+
bic $temp, $cc, $bb
|
|
104
|
+
eor $temp, $temp, $aa
|
|
105
|
+
strh $temp, [$resptr, #$resofs]
|
|
106
|
+
MEND
|
|
107
|
+
|
|
108
|
+
MACRO
|
|
109
|
+
xandnotRC $resptr, $resofs, $aa, $bb, $cc
|
|
110
|
+
|
|
111
|
+
bic $cc, $cc, $bb
|
|
112
|
+
eor $cc, $cc, #0x0a
|
|
113
|
+
eor $cc, $cc, $aa
|
|
114
|
+
strh $cc, [$resptr, #$resofs]
|
|
115
|
+
MEND
|
|
116
|
+
|
|
117
|
+
MACRO
|
|
118
|
+
KeccakRound $sOut, $sIn
|
|
119
|
+
|
|
120
|
+
;prepTheta
|
|
121
|
+
xor5D r1, r2, $sIn, _ba, _ga, _ka, _ma, r8, r9
|
|
122
|
+
xor5D r3, r4, $sIn, _bi, _gi, _ki, _mi, r10, r11
|
|
123
|
+
rolxor r8, r7, r2
|
|
124
|
+
rolxor r9, r1, r3
|
|
125
|
+
rolxor r10, r2, r4
|
|
126
|
+
rolxor r11, r3, r7
|
|
127
|
+
rolxor r12, r4, r1
|
|
128
|
+
|
|
129
|
+
;thetaRhoPiChiIota
|
|
130
|
+
ldrh r1, [$sIn, #_ba]
|
|
131
|
+
ldrh r2, [$sIn, #_ge]
|
|
132
|
+
ldrh r3, [$sIn, #_ki]
|
|
133
|
+
ldrh r4, [$sIn, #_mo]
|
|
134
|
+
eor r1, r1, r8
|
|
135
|
+
xorrol r2, r9, 12
|
|
136
|
+
xorrol r3, r10, 11
|
|
137
|
+
xorrol r4, r11, 5
|
|
138
|
+
xorrol r5, r12, 14
|
|
139
|
+
xandnot $sOut, _be, r2, r3, r4, r6
|
|
140
|
+
xandnot $sOut, _bi, r3, r4, r5, r6
|
|
141
|
+
xandnot $sOut, _bo, r4, r5, r1, r6
|
|
142
|
+
xandnot $sOut, _bu, r5, r1, r2, r7
|
|
143
|
+
xandnotRC $sOut, _ba, r1, r2, r3
|
|
144
|
+
|
|
145
|
+
ldrh r1, [$sIn, #_bo]
|
|
146
|
+
ldrh r2, [$sIn, #_gu]
|
|
147
|
+
ldrh r3, [$sIn, #_ka]
|
|
148
|
+
ldrh r4, [$sIn, #_me]
|
|
149
|
+
ldrh r5, [$sIn, #_si]
|
|
150
|
+
xorrol r1, r11, 12
|
|
151
|
+
xorrol r2, r12, 4
|
|
152
|
+
xorrol r3, r8, 3
|
|
153
|
+
xorrol r4, r9, 13
|
|
154
|
+
xorrol r5, r10, 13
|
|
155
|
+
xandnot $sOut, _ga, r1, r2, r3, r6
|
|
156
|
+
xandnot $sOut, _ge, r2, r3, r4, r6
|
|
157
|
+
xandnot $sOut, _gi, r3, r4, r5, r6
|
|
158
|
+
xandnot $sOut, _go, r4, r5, r1, r6
|
|
159
|
+
xandnot $sOut, _gu, r5, r1, r2, r6
|
|
160
|
+
eor r7, r7, r6
|
|
161
|
+
|
|
162
|
+
ldrh r1, [$sIn, #_be]
|
|
163
|
+
ldrh r2, [$sIn, #_gi]
|
|
164
|
+
ldrh r3, [$sIn, #_ko]
|
|
165
|
+
ldrh r4, [$sIn, #_mu]
|
|
166
|
+
ldrh r5, [$sIn, #_sa]
|
|
167
|
+
xorrol r1, r9, 1
|
|
168
|
+
xorrol r2, r10, 6
|
|
169
|
+
xorrol r3, r11, 9
|
|
170
|
+
xorrol r4, r12, 8
|
|
171
|
+
xorrol r5, r8, 2
|
|
172
|
+
xandnot $sOut, _ka, r1, r2, r3, r6
|
|
173
|
+
xandnot $sOut, _ke, r2, r3, r4, r6
|
|
174
|
+
xandnot $sOut, _ki, r3, r4, r5, r6
|
|
175
|
+
xandnot $sOut, _ko, r4, r5, r1, r6
|
|
176
|
+
xandnot $sOut, _ku, r5, r1, r2, r6
|
|
177
|
+
eor r7, r7, r6
|
|
178
|
+
|
|
179
|
+
ldrh r1, [$sIn, #_bu]
|
|
180
|
+
ldrh r2, [$sIn, #_ga]
|
|
181
|
+
ldrh r3, [$sIn, #_ke]
|
|
182
|
+
ldrh r4, [$sIn, #_mi]
|
|
183
|
+
ldrh r5, [$sIn, #_so]
|
|
184
|
+
xorrol r1, r12, 11
|
|
185
|
+
xorrol r2, r8, 4
|
|
186
|
+
xorrol r3, r9, 10
|
|
187
|
+
xorrol r4, r10, 15
|
|
188
|
+
xorrol r5, r11, 8
|
|
189
|
+
xandnot $sOut, _ma, r1, r2, r3, r6
|
|
190
|
+
xandnot $sOut, _me, r2, r3, r4, r6
|
|
191
|
+
xandnot $sOut, _mi, r3, r4, r5, r6
|
|
192
|
+
xandnot $sOut, _mo, r4, r5, r1, r6
|
|
193
|
+
xandnot $sOut, _mu, r5, r1, r2, r6
|
|
194
|
+
eor r7, r7, r6
|
|
195
|
+
|
|
196
|
+
ldrh r1, [$sIn, #_bi]
|
|
197
|
+
ldrh r2, [$sIn, #_go]
|
|
198
|
+
ldrh r3, [$sIn, #_ku]
|
|
199
|
+
ldrh r4, [$sIn, #_ma]
|
|
200
|
+
ldrh r5, [$sIn, #_se]
|
|
201
|
+
xorrol r1, r10, 14
|
|
202
|
+
xorrol r2, r11, 7
|
|
203
|
+
xorrol r3, r12, 7
|
|
204
|
+
xorrol r4, r8, 9
|
|
205
|
+
xorrol r5, r9, 2
|
|
206
|
+
xandnot $sOut, _sa, r1, r2, r3, r8
|
|
207
|
+
xandnot $sOut, _se, r2, r3, r4, r9
|
|
208
|
+
xandnot $sOut, _si, r3, r4, r5, r10
|
|
209
|
+
xandnot $sOut, _so, r4, r5, r1, r11
|
|
210
|
+
bic r1, r2, r1
|
|
211
|
+
eor r5, r5, r1
|
|
212
|
+
eor r7, r7, r5
|
|
213
|
+
uxth r7, r7
|
|
214
|
+
strh r5, [$sOut, #_su]
|
|
215
|
+
uxth r5, r5
|
|
216
|
+
MEND
|
|
217
|
+
|
|
218
|
+
;----------------------------------------------------------------------------
|
|
219
|
+
;
|
|
220
|
+
; void KetSr_StateAddByte( void *state, unsigned char value, unsigned int offset )
|
|
221
|
+
;
|
|
222
|
+
ALIGN
|
|
223
|
+
EXPORT KetSr_StateAddByte
|
|
224
|
+
KetSr_StateAddByte PROC
|
|
225
|
+
adr r3, Ket_StateTwistIndexes
|
|
226
|
+
lsr r12, r2, #1
|
|
227
|
+
ldrb r3, [r3, r12]
|
|
228
|
+
and r2, r2, #1
|
|
229
|
+
add r3, r3, r2
|
|
230
|
+
ldrb r2, [r0, r3]
|
|
231
|
+
eors r1, r1, r2
|
|
232
|
+
strb r1, [r0, r3]
|
|
233
|
+
bx lr
|
|
234
|
+
ENDP
|
|
235
|
+
|
|
236
|
+
;----------------------------------------------------------------------------
|
|
237
|
+
;
|
|
238
|
+
; unsigned char KetSr_StateExtractByte( void *state, unsigned int offset )
|
|
239
|
+
;
|
|
240
|
+
ALIGN
|
|
241
|
+
EXPORT KetSr_StateExtractByte
|
|
242
|
+
KetSr_StateExtractByte PROC
|
|
243
|
+
adr r3, Ket_StateTwistIndexes
|
|
244
|
+
lsrs r2, r1, #1
|
|
245
|
+
ldrb r3, [r3, r2]
|
|
246
|
+
and r1, r1, #1
|
|
247
|
+
add r3, r3, r1
|
|
248
|
+
ldrb r0, [r0, r3]
|
|
249
|
+
bx lr
|
|
250
|
+
ENDP
|
|
251
|
+
|
|
252
|
+
;----------------------------------------------------------------------------
|
|
253
|
+
;
|
|
254
|
+
; void KetSr_StateOverwrite( void *state, unsigned int offset, const unsigned char *data, unsigned int length )
|
|
255
|
+
;
|
|
256
|
+
ALIGN
|
|
257
|
+
EXPORT KetSr_StateOverwrite
|
|
258
|
+
KetSr_StateOverwrite PROC
|
|
259
|
+
cmp r3, #0
|
|
260
|
+
beq KetSr_StateOverwrite_Exit
|
|
261
|
+
push {r4-r5}
|
|
262
|
+
adr r4, Ket_StateTwistIndexes
|
|
263
|
+
adds r4, r4, r1, LSR #1
|
|
264
|
+
ands r1, r1, #1
|
|
265
|
+
beq KetSr_StateOverwrite_Loop
|
|
266
|
+
ldrb r1, [r4], #1
|
|
267
|
+
b KetSr_StateOverwrite_OffsetOdd
|
|
268
|
+
KetSr_StateOverwrite_Loop
|
|
269
|
+
ldrb r1, [r4], #1
|
|
270
|
+
ldrb r5, [r2], #1
|
|
271
|
+
subs r3, r3, #1
|
|
272
|
+
strb r5, [r0, r1]
|
|
273
|
+
beq KetSr_StateOverwrite_Done
|
|
274
|
+
KetSr_StateOverwrite_OffsetOdd
|
|
275
|
+
adds r1, r1, #1
|
|
276
|
+
ldrb r5, [r2], #1
|
|
277
|
+
subs r3, r3, #1
|
|
278
|
+
strb r5, [r0, r1]
|
|
279
|
+
bne KetSr_StateOverwrite_Loop
|
|
280
|
+
KetSr_StateOverwrite_Done
|
|
281
|
+
pop {r4-r5}
|
|
282
|
+
KetSr_StateOverwrite_Exit
|
|
283
|
+
bx lr
|
|
284
|
+
ENDP
|
|
285
|
+
|
|
286
|
+
;----------------------------------------------------------------------------
|
|
287
|
+
;
|
|
288
|
+
; void KetSr_Step( void *state, unsigned int size, unsigned char framing )
|
|
289
|
+
;
|
|
290
|
+
ALIGN
|
|
291
|
+
EXPORT KetSr_Step
|
|
292
|
+
KetSr_Step PROC
|
|
293
|
+
push {r4-r12,lr}
|
|
294
|
+
sub sp, sp, #_AllocSize
|
|
295
|
+
adr r4, Ket_StateTwistIndexes ; framing
|
|
296
|
+
add r4, r4, r1, LSR #1
|
|
297
|
+
ldrb r4, [r4]
|
|
298
|
+
and r1, r1, #1
|
|
299
|
+
add r1, r1, r4
|
|
300
|
+
ldrb r4, [r0, r1]
|
|
301
|
+
eors r2, r2, r4
|
|
302
|
+
strb r2, [r0, r1]
|
|
303
|
+
ldrb r2, [r0, #_ki] ; padding
|
|
304
|
+
eor r2, r2, #0x08
|
|
305
|
+
strb r2, [r0, #_ki]
|
|
306
|
+
mov r4, sp ; Odd number of blocks, so copy state to stack
|
|
307
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
308
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
309
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
310
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
311
|
+
sub r0, r0, #2*24
|
|
312
|
+
ldrh r12, [r0, #_su]
|
|
313
|
+
strh r12, [sp, #_su]
|
|
314
|
+
ldrh r8, [sp, #_sa]
|
|
315
|
+
ldrh r9, [sp, #_se]
|
|
316
|
+
ldrh r10, [sp, #_si]
|
|
317
|
+
ldrh r12, [sp, #_su]
|
|
318
|
+
ldrh r11, [sp, #_so]
|
|
319
|
+
mov r5, r12
|
|
320
|
+
xor5 r7, sp, _bu, _gu, _ku, _mu, r12
|
|
321
|
+
bl KeccakP400_1_StatePermuteFromStack
|
|
322
|
+
add sp, sp, #_AllocSize
|
|
323
|
+
pop {r4-r12,pc}
|
|
324
|
+
ENDP
|
|
325
|
+
|
|
326
|
+
ALIGN
|
|
327
|
+
Ket_StateTwistIndexes
|
|
328
|
+
dcb 0*2, 6*2, 12*2, 18*2, 24*2
|
|
329
|
+
dcb 3*2, 9*2, 10*2, 16*2, 22*2
|
|
330
|
+
dcb 1*2, 7*2, 13*2, 19*2, 20*2
|
|
331
|
+
dcb 4*2, 5*2, 11*2, 17*2, 23*2
|
|
332
|
+
dcb 2*2, 8*2, 14*2, 15*2, 21*2
|
|
333
|
+
|
|
334
|
+
;----------------------------------------------------------------------------
|
|
335
|
+
;
|
|
336
|
+
; void KetSr_FeedAssociatedDataBlocks( void *state, const unsigned char *data, unsigned int nBlocks )
|
|
337
|
+
;
|
|
338
|
+
ALIGN
|
|
339
|
+
EXPORT KetSr_FeedAssociatedDataBlocks
|
|
340
|
+
KetSr_FeedAssociatedDataBlocks PROC
|
|
341
|
+
push {r4-r12,lr}
|
|
342
|
+
sub sp, sp, #_AllocSize
|
|
343
|
+
lsrs r3, r2, #1
|
|
344
|
+
bcc KetSr_FeedAssociatedDataBlocks_Even
|
|
345
|
+
adds r2, r2, #1
|
|
346
|
+
str r2, [sp, #_nBlock]
|
|
347
|
+
mov r4, sp ; Odd number of blocks, so copy state to stack
|
|
348
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
349
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
350
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
351
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
352
|
+
sub r0, r0, #2*24
|
|
353
|
+
ldrh r12, [r0, #_su]
|
|
354
|
+
strh r12, [sp, #_su]
|
|
355
|
+
ldrh r8, [sp, #_sa]
|
|
356
|
+
ldrh r9, [sp, #_se]
|
|
357
|
+
ldrh r10, [sp, #_si]
|
|
358
|
+
ldrh r12, [sp, #_su]
|
|
359
|
+
ldrh r11, [sp, #_so]
|
|
360
|
+
mov r5, r12
|
|
361
|
+
xor5 r7, sp, _bu, _gu, _ku, _mu, r12
|
|
362
|
+
b KetSr_FeedAssociatedDataBlocks_Odd
|
|
363
|
+
KetSr_FeedAssociatedDataBlocks_Even ; Even number of blocks
|
|
364
|
+
ldrh r8, [r0, #_sa]
|
|
365
|
+
ldrh r9, [r0, #_se]
|
|
366
|
+
ldrh r10, [r0, #_si]
|
|
367
|
+
ldrh r12, [r0, #_su]
|
|
368
|
+
ldrh r11, [r0, #_so]
|
|
369
|
+
mov r5, r12
|
|
370
|
+
xor5 r7, r0, _bu, _gu, _ku, _mu, r12
|
|
371
|
+
KetSr_FeedAssociatedDataBlocks_Loop
|
|
372
|
+
str r2, [sp, #_nBlock]
|
|
373
|
+
ldr r6, [r1], #4 ; Get data (2 lanes)
|
|
374
|
+
ldrh lr, [r0, #_ba] ; Add lane 1
|
|
375
|
+
eor lr, lr, r6
|
|
376
|
+
strh lr, [r0, #_ba]
|
|
377
|
+
ldrh lr, [r0, #_ge] ; Add lane 2
|
|
378
|
+
eor lr, lr, r6, LSR #16
|
|
379
|
+
strh lr, [r0, #_ge]
|
|
380
|
+
ldr r6, [r0, #_ki] ; Add FRAMEBITS00 and padding
|
|
381
|
+
eor r6, r6, #0x0C
|
|
382
|
+
str r6, [r0, #_ki]
|
|
383
|
+
str r1, [sp, #_plaintext]
|
|
384
|
+
bl KeccakP400_1_StatePermuteToStack
|
|
385
|
+
ldr r1, [sp, #_plaintext]
|
|
386
|
+
KetSr_FeedAssociatedDataBlocks_Odd
|
|
387
|
+
ldr r6, [r1], #4 ; Get data (2 lanes)
|
|
388
|
+
ldrh lr, [sp, #_ba] ; Add lane 1
|
|
389
|
+
eor lr, lr, r6
|
|
390
|
+
strh lr, [sp, #_ba]
|
|
391
|
+
ldrh lr, [sp, #_ge] ; Add lane 2
|
|
392
|
+
eor lr, lr, r6, LSR #16
|
|
393
|
+
strh lr, [sp, #_ge]
|
|
394
|
+
ldr r6, [sp, #_ki] ; Add FRAMEBITS00 and padding
|
|
395
|
+
eor r6, r6, #0x0C
|
|
396
|
+
str r6, [sp, #_ki]
|
|
397
|
+
str r1, [sp, #_plaintext]
|
|
398
|
+
bl KeccakP400_1_StatePermuteFromStack
|
|
399
|
+
ldr r1, [sp, #_plaintext]
|
|
400
|
+
ldr r2, [sp, #_nBlock]
|
|
401
|
+
subs r2, r2, #2
|
|
402
|
+
bne KetSr_FeedAssociatedDataBlocks_Loop
|
|
403
|
+
add sp, sp, #_AllocSize
|
|
404
|
+
pop {r4-r12,pc}
|
|
405
|
+
ENDP
|
|
406
|
+
|
|
407
|
+
;----------------------------------------------------------------------------
|
|
408
|
+
;
|
|
409
|
+
; void KetSr_UnwrapBlocks( void *state, const unsigned char *ciphertext, unsigned char *plaintext, unsigned int nBlocks )
|
|
410
|
+
;
|
|
411
|
+
ALIGN
|
|
412
|
+
EXPORT KetSr_UnwrapBlocks
|
|
413
|
+
KetSr_UnwrapBlocks PROC
|
|
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
|
+
ENDP
|
|
489
|
+
|
|
490
|
+
;----------------------------------------------------------------------------
|
|
491
|
+
;
|
|
492
|
+
; void KetSr_WrapBlocks( void *state, const unsigned char *plaintext, unsigned char *ciphertext, unsigned int nBlocks )
|
|
493
|
+
;
|
|
494
|
+
ALIGN
|
|
495
|
+
EXPORT KetSr_WrapBlocks
|
|
496
|
+
KetSr_WrapBlocks PROC
|
|
497
|
+
push {r4-r12,lr}
|
|
498
|
+
sub sp, sp, #_AllocSize
|
|
499
|
+
lsrs r4, r3, #1
|
|
500
|
+
bcc KetSr_WrapBlocks_Even
|
|
501
|
+
adds r3, r3, #1
|
|
502
|
+
str r3, [sp, #_nBlock]
|
|
503
|
+
mov r4, sp ; Odd number of blocks, so copy state to stack
|
|
504
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
505
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
506
|
+
ldm r0!, { r5, r8, r9, r10, r11, r12 }
|
|
507
|
+
stm r4!, { r5, r8, r9, r10, r11, r12 }
|
|
508
|
+
sub r0, r0, #2*24
|
|
509
|
+
ldrh r12, [r0, #_su]
|
|
510
|
+
strh r12, [sp, #_su]
|
|
511
|
+
ldrh r8, [sp, #_sa]
|
|
512
|
+
ldrh r9, [sp, #_se]
|
|
513
|
+
ldrh r10, [sp, #_si]
|
|
514
|
+
ldrh r12, [sp, #_su]
|
|
515
|
+
ldrh r11, [sp, #_so]
|
|
516
|
+
mov r5, r12
|
|
517
|
+
xor5 r7, sp, _bu, _gu, _ku, _mu, r12
|
|
518
|
+
b KetSr_WrapBlocks_Odd
|
|
519
|
+
KetSr_WrapBlocks_Even ; Even number of blocks
|
|
520
|
+
ldrh r8, [r0, #_sa]
|
|
521
|
+
ldrh r9, [r0, #_se]
|
|
522
|
+
ldrh r10, [r0, #_si]
|
|
523
|
+
ldrh r12, [r0, #_su]
|
|
524
|
+
ldrh r11, [r0, #_so]
|
|
525
|
+
mov r5, r12
|
|
526
|
+
xor5 r7, r0, _bu, _gu, _ku, _mu, r12
|
|
527
|
+
KetSr_WrapBlocks_Loop
|
|
528
|
+
str r3, [sp, #_nBlock]
|
|
529
|
+
ldr r6, [r1], #4 ; Get plaintext (2 lanes)
|
|
530
|
+
ldrh lr, [r0, #_ba] ; Get lane 1 from state
|
|
531
|
+
eor lr, lr, r6
|
|
532
|
+
strh lr, [r2], #2 ; Save ciphertext lane 1
|
|
533
|
+
strh lr, [r0, #_ba] ; Save ciphertext into state lane 1
|
|
534
|
+
ldrh lr, [r0, #_ge] ; Get lane 2 from state
|
|
535
|
+
eor lr, lr, r6, LSR #16
|
|
536
|
+
strh lr, [r2], #2 ; Save ciphertext lane 2
|
|
537
|
+
strh lr, [r0, #_ge] ; Save ciphertext into state lane 2
|
|
538
|
+
ldr r6, [r0, #_ki] ; Add FRAMEBITS11 and padding
|
|
539
|
+
eor r6, r6, #0x0F
|
|
540
|
+
str r6, [r0, #_ki]
|
|
541
|
+
str r1, [sp, #_plaintext]
|
|
542
|
+
str r2, [sp, #_ciphertext]
|
|
543
|
+
bl KeccakP400_1_StatePermuteToStack
|
|
544
|
+
ldr r1, [sp, #_plaintext]
|
|
545
|
+
ldr r2, [sp, #_ciphertext]
|
|
546
|
+
KetSr_WrapBlocks_Odd
|
|
547
|
+
ldr r6, [r1], #4 ; Get plaintext (2 lanes)
|
|
548
|
+
ldrh lr, [sp, #_ba] ; Get lane 1 from state
|
|
549
|
+
eor lr, lr, r6
|
|
550
|
+
strh lr, [r2], #2 ; Save ciphertext lane 1
|
|
551
|
+
strh lr, [sp, #_ba] ; Save ciphertext into state lane 1
|
|
552
|
+
ldrh lr, [sp, #_ge] ; Get lane 2 from state
|
|
553
|
+
eor lr, lr, r6, LSR #16
|
|
554
|
+
strh lr, [r2], #2 ; Save ciphertext lane 2
|
|
555
|
+
strh lr, [sp, #_ge] ; Save ciphertext into state lane 2
|
|
556
|
+
ldr r6, [sp, #_ki] ; Add FRAMEBITS11 and padding
|
|
557
|
+
eor r6, r6, #0x0F
|
|
558
|
+
str r6, [sp, #_ki]
|
|
559
|
+
str r1, [sp, #_plaintext]
|
|
560
|
+
str r2, [sp, #_ciphertext]
|
|
561
|
+
bl KeccakP400_1_StatePermuteFromStack
|
|
562
|
+
ldr r1, [sp, #_plaintext]
|
|
563
|
+
ldr r2, [sp, #_ciphertext]
|
|
564
|
+
ldr r3, [sp, #_nBlock]
|
|
565
|
+
subs r3, r3, #2
|
|
566
|
+
bne KetSr_WrapBlocks_Loop
|
|
567
|
+
add sp, sp, #_AllocSize
|
|
568
|
+
pop {r4-r12,pc}
|
|
569
|
+
ENDP
|
|
570
|
+
|
|
571
|
+
;----------------------------------------------------------------------------
|
|
572
|
+
;
|
|
573
|
+
; Keccak-P[400, 1] usable from asm only, from r0 to sp
|
|
574
|
+
;
|
|
575
|
+
KeccakP400_1_StatePermuteToStack PROC
|
|
576
|
+
KeccakRound sp, r0
|
|
577
|
+
bx lr
|
|
578
|
+
ENDP
|
|
579
|
+
|
|
580
|
+
;----------------------------------------------------------------------------
|
|
581
|
+
;
|
|
582
|
+
; Keccak-P[400, 1] usable from asm only, from sp to r0
|
|
583
|
+
;
|
|
584
|
+
KeccakP400_1_StatePermuteFromStack PROC
|
|
585
|
+
KeccakRound r0, sp
|
|
586
|
+
bx lr
|
|
587
|
+
ENDP
|
|
588
|
+
|
|
589
|
+
END
|
|
590
|
+
|