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,367 @@
|
|
|
1
|
+
@
|
|
2
|
+
@ The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
@ https://github.com/XKCP/XKCP
|
|
4
|
+
@
|
|
5
|
+
@ The Xoodoo permutation, designed by Joan Daemen, Seth Hoffert, 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@ ARMv7A architecture (Cortex-A7, ...).
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
.text
|
|
21
|
+
|
|
22
|
+
.equ Xoodyak_Rkin , 44
|
|
23
|
+
.equ Xoodyak_Rkout , 24
|
|
24
|
+
.equ Xoodyak_Rhash , 16
|
|
25
|
+
|
|
26
|
+
.macro mRound
|
|
27
|
+
|
|
28
|
+
@ Theta: Column Parity Mixer
|
|
29
|
+
veor.32 q4, q0, q1
|
|
30
|
+
veor.32 q4, q4, q2
|
|
31
|
+
vext.32 q4, q4, q4, #3
|
|
32
|
+
vshl.u32 q3, q4, #5
|
|
33
|
+
vsri.u32 q3, q4, #32-5
|
|
34
|
+
vshl.u32 q5, q4, #14
|
|
35
|
+
vsri.u32 q5, q4, #32-14
|
|
36
|
+
veor.32 q3, q3, q5
|
|
37
|
+
veor.32 q0, q0, q3
|
|
38
|
+
veor.32 q1, q1, q3
|
|
39
|
+
veor.32 q5, q2, q3 @ q2 resides in q5
|
|
40
|
+
|
|
41
|
+
@ Rho-west: Plane shift
|
|
42
|
+
@ Iota: add round constant
|
|
43
|
+
vshl.u32 q2, q5, #11
|
|
44
|
+
vext.32 q1, q1, q1, #3
|
|
45
|
+
vldmia r1!, {d6} @ iota
|
|
46
|
+
vsri.u32 q2, q5, #32-11
|
|
47
|
+
veor.32 d0, d0, d6 @ iota
|
|
48
|
+
|
|
49
|
+
@ Chi: non linear step, on colums
|
|
50
|
+
vbic.32 q3, q2, q1
|
|
51
|
+
vbic.32 q4, q0, q2
|
|
52
|
+
vbic.32 q5, q1, q0
|
|
53
|
+
veor.32 q0, q0, q3
|
|
54
|
+
veor.32 q4, q1, q4 @ q1 resides in q4
|
|
55
|
+
veor.32 q2, q2, q5
|
|
56
|
+
|
|
57
|
+
@ Rho-east: Plane shift
|
|
58
|
+
vext.32 q5, q2, q2, #2
|
|
59
|
+
vshl.u32 q1, q4, #1
|
|
60
|
+
vshl.u32 q2, q5, #8
|
|
61
|
+
vsri.u32 q1, q4, #32-1
|
|
62
|
+
vsri.u32 q2, q5, #32-8
|
|
63
|
+
.endm
|
|
64
|
+
|
|
65
|
+
@ ----------------------------------------------------------------------------
|
|
66
|
+
@
|
|
67
|
+
@ Xoodoo_Permute_12roundsAsm: only callable from asm
|
|
68
|
+
@
|
|
69
|
+
.align 8
|
|
70
|
+
.type Xoodoo_Permute_12roundsAsm, %function;
|
|
71
|
+
Xoodoo_Permute_12roundsAsm:
|
|
72
|
+
adr r1, _rc12
|
|
73
|
+
mRound
|
|
74
|
+
mRound
|
|
75
|
+
mRound
|
|
76
|
+
mRound
|
|
77
|
+
mRound
|
|
78
|
+
mRound
|
|
79
|
+
mRound
|
|
80
|
+
mRound
|
|
81
|
+
mRound
|
|
82
|
+
mRound
|
|
83
|
+
mRound
|
|
84
|
+
mRound
|
|
85
|
+
bx lr
|
|
86
|
+
.ltorg
|
|
87
|
+
.align 0
|
|
88
|
+
_rc12:
|
|
89
|
+
.quad 0x00000058
|
|
90
|
+
.quad 0x00000038
|
|
91
|
+
.quad 0x000003C0
|
|
92
|
+
.quad 0x000000D0
|
|
93
|
+
.quad 0x00000120
|
|
94
|
+
.quad 0x00000014
|
|
95
|
+
.quad 0x00000060
|
|
96
|
+
.quad 0x0000002C
|
|
97
|
+
.quad 0x00000380
|
|
98
|
+
.quad 0x000000F0
|
|
99
|
+
.quad 0x000001A0
|
|
100
|
+
.quad 0x00000012
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@ ----------------------------------------------------------------------------
|
|
104
|
+
@
|
|
105
|
+
@ size_t Xoodyak_AbsorbKeyedFullBlocks(void *state, const uint8_t *X, size_t XLen)
|
|
106
|
+
@ {
|
|
107
|
+
@ size_t initialLength = XLen@
|
|
108
|
+
@
|
|
109
|
+
@ do {
|
|
110
|
+
@ SnP_Permute(state )@ /* Xoodyak_Up(instance, NULL, 0, 0)@ */
|
|
111
|
+
@ SnP_AddBytes(state, X, 0, Xoodyak_Rkin)@ /* Xoodyak_Down(instance, X, Xoodyak_Rkin, 0)@ */
|
|
112
|
+
@ SnP_AddByte(state, 0x01, Xoodyak_Rkin)@
|
|
113
|
+
@ X += Xoodyak_Rkin@
|
|
114
|
+
@ XLen -= Xoodyak_Rkin@
|
|
115
|
+
@ } while (XLen >= Xoodyak_Rkin)@
|
|
116
|
+
@
|
|
117
|
+
@ return initialLength - XLen@
|
|
118
|
+
@ }
|
|
119
|
+
@
|
|
120
|
+
.global Xoodyak_AbsorbKeyedFullBlocks
|
|
121
|
+
.type Xoodyak_AbsorbKeyedFullBlocks, %function;
|
|
122
|
+
Xoodyak_AbsorbKeyedFullBlocks:
|
|
123
|
+
push {r4,lr}
|
|
124
|
+
vpush {q4-q7}
|
|
125
|
+
vmov.i32 d13, #1
|
|
126
|
+
mov r3, r1 @ r3 X
|
|
127
|
+
mov r4, r1 @ r4 initial X
|
|
128
|
+
vldmia r0, {q0-q2} @ get state
|
|
129
|
+
subs r2, r2, #Xoodyak_Rkin
|
|
130
|
+
Xoodyak_AbsorbKeyedFullBlocks_Loop:
|
|
131
|
+
bl Xoodoo_Permute_12roundsAsm
|
|
132
|
+
vld1.32 {q3,q4}, [r3]! @ get X Xoodyak_Rkin bytes
|
|
133
|
+
vld1.32 {d12}, [r3]!
|
|
134
|
+
vld1.32 {d13[0]}, [r3]!
|
|
135
|
+
veor.32 q0, q0, q3
|
|
136
|
+
veor.32 q1, q1, q4
|
|
137
|
+
veor.32 q2, q2, q6 @X + pad
|
|
138
|
+
subs r2, r2, #Xoodyak_Rkin
|
|
139
|
+
bcs Xoodyak_AbsorbKeyedFullBlocks_Loop
|
|
140
|
+
vstmia r0, {q0-q2} @ save state
|
|
141
|
+
sub r0, r3, r4
|
|
142
|
+
vpop {q4-q7}
|
|
143
|
+
pop {r4,pc}
|
|
144
|
+
.align 8
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
@ ----------------------------------------------------------------------------
|
|
148
|
+
@
|
|
149
|
+
@ size_t Xoodyak_AbsorbHashFullBlocks(void *state, const uint8_t *X, size_t XLen)
|
|
150
|
+
@ {
|
|
151
|
+
@ size_t initialLength = XLen@
|
|
152
|
+
@
|
|
153
|
+
@ do {
|
|
154
|
+
@ SnP_Permute(state )@ /* Xoodyak_Up(instance, NULL, 0, 0)@ */
|
|
155
|
+
@ SnP_AddBytes(state, X, 0, Xoodyak_Rhash)@ /* Xoodyak_Down(instance, X, Xoodyak_Rhash, 0)@ */
|
|
156
|
+
@ SnP_AddByte(state, 0x01, Xoodyak_Rhash)@
|
|
157
|
+
@ X += Xoodyak_Rhash@
|
|
158
|
+
@ XLen -= Xoodyak_Rhash@
|
|
159
|
+
@ } while (XLen >= Xoodyak_Rhash)@
|
|
160
|
+
@
|
|
161
|
+
@ return initialLength - XLen@
|
|
162
|
+
@ }
|
|
163
|
+
@
|
|
164
|
+
.global Xoodyak_AbsorbHashFullBlocks
|
|
165
|
+
.type Xoodyak_AbsorbHashFullBlocks, %function;
|
|
166
|
+
Xoodyak_AbsorbHashFullBlocks:
|
|
167
|
+
push {r4,lr}
|
|
168
|
+
vpush {q4-q7}
|
|
169
|
+
mov r3, r1 @ r3 X
|
|
170
|
+
vmov.i32 d12, #1
|
|
171
|
+
vshr.u64 d12, d12, #32
|
|
172
|
+
mov r4, r1 @ r4 initial X
|
|
173
|
+
vldmia r0, {q0-q2} @ get state
|
|
174
|
+
subs r2, r2, #Xoodyak_Rhash
|
|
175
|
+
Xoodyak_AbsorbHashFullBlocks_Loop:
|
|
176
|
+
bl Xoodoo_Permute_12roundsAsm
|
|
177
|
+
vld1.32 {q3}, [r3]! @ get X Xoodyak_Rhash bytes
|
|
178
|
+
veor.32 d2, d2, d12
|
|
179
|
+
veor.32 q0, q0, q3
|
|
180
|
+
subs r2, r2, #Xoodyak_Rhash
|
|
181
|
+
bcs Xoodyak_AbsorbHashFullBlocks_Loop
|
|
182
|
+
vstmia r0, {q0-q2} @ save state
|
|
183
|
+
sub r0, r3, r4
|
|
184
|
+
vpop {q4-q7}
|
|
185
|
+
pop {r4,pc}
|
|
186
|
+
.align 8
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
@ ----------------------------------------------------------------------------
|
|
190
|
+
@
|
|
191
|
+
@ size_t Xoodyak_SqueezeKeyedFullBlocks(void *state, uint8_t *Y, size_t YLen)
|
|
192
|
+
@ {
|
|
193
|
+
@ size_t initialLength = YLen@
|
|
194
|
+
@
|
|
195
|
+
@ do {
|
|
196
|
+
@ SnP_AddByte(state, 0x01, 0)@ /* Xoodyak_Down(instance, NULL, 0, 0)@ */
|
|
197
|
+
@ SnP_Permute(state )@ /* Xoodyak_Up(instance, Y, Xoodyak_Rkout, 0)@ */
|
|
198
|
+
@ SnP_ExtractBytes(state, Y, 0, Xoodyak_Rkout)@
|
|
199
|
+
@ Y += Xoodyak_Rkout@
|
|
200
|
+
@ YLen -= Xoodyak_Rkout@
|
|
201
|
+
@ } while (YLen >= Xoodyak_Rkout)@
|
|
202
|
+
@
|
|
203
|
+
@ return initialLength - YLen@
|
|
204
|
+
@ }
|
|
205
|
+
@
|
|
206
|
+
.global Xoodyak_SqueezeKeyedFullBlocks
|
|
207
|
+
.type Xoodyak_SqueezeKeyedFullBlocks, %function;
|
|
208
|
+
Xoodyak_SqueezeKeyedFullBlocks:
|
|
209
|
+
push {r4,lr}
|
|
210
|
+
vpush {q4-q7}
|
|
211
|
+
vmov.i32 d12, #1
|
|
212
|
+
vshr.u64 d12, d12, #32
|
|
213
|
+
mov r3, r1 @ r3 Y
|
|
214
|
+
mov r4, r1 @ r4 initial Y
|
|
215
|
+
vldmia r0, {q0-q2} @ get state
|
|
216
|
+
subs r2, r2, #Xoodyak_Rkout
|
|
217
|
+
Xoodyak_SqueezeKeyedFullBlocks_Loop:
|
|
218
|
+
veor.32 d0, d0, d12
|
|
219
|
+
bl Xoodoo_Permute_12roundsAsm
|
|
220
|
+
vst1.32 {q0}, [r3]! @ save Y Xoodyak_Rkout bytes
|
|
221
|
+
vst1.32 {d2}, [r3]!
|
|
222
|
+
subs r2, r2, #Xoodyak_Rkout
|
|
223
|
+
bcs Xoodyak_SqueezeKeyedFullBlocks_Loop
|
|
224
|
+
vstmia r0, {q0-q2} @ save state
|
|
225
|
+
sub r0, r3, r4
|
|
226
|
+
vpop {q4-q7}
|
|
227
|
+
pop {r4,pc}
|
|
228
|
+
.align 8
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
@ ----------------------------------------------------------------------------
|
|
232
|
+
@
|
|
233
|
+
@ size_t Xoodyak_SqueezeHashFullBlocks(void *state, uint8_t *Y, size_t YLen)
|
|
234
|
+
@ {
|
|
235
|
+
@ size_t initialLength = YLen@
|
|
236
|
+
@
|
|
237
|
+
@ do {
|
|
238
|
+
@ SnP_AddByte(state, 0x01, 0)@ /* Xoodyak_Down(instance, NULL, 0, 0)@ */
|
|
239
|
+
@ SnP_Permute(state)@ /* Xoodyak_Up(instance, Y, Xoodyak_Rhash, 0)@ */
|
|
240
|
+
@ SnP_ExtractBytes(state, Y, 0, Xoodyak_Rhash)@
|
|
241
|
+
@ Y += Xoodyak_Rhash@
|
|
242
|
+
@ YLen -= Xoodyak_Rhash@
|
|
243
|
+
@ } while (YLen >= Xoodyak_Rhash)@
|
|
244
|
+
@
|
|
245
|
+
@ return initialLength - YLen@
|
|
246
|
+
@ }
|
|
247
|
+
@
|
|
248
|
+
.global Xoodyak_SqueezeHashFullBlocks
|
|
249
|
+
.type Xoodyak_SqueezeHashFullBlocks, %function;
|
|
250
|
+
Xoodyak_SqueezeHashFullBlocks:
|
|
251
|
+
push {r4,lr}
|
|
252
|
+
vpush {q4-q7}
|
|
253
|
+
vmov.i32 d12, #1
|
|
254
|
+
vshr.u64 d12, d12, #32
|
|
255
|
+
mov r3, r1 @ r3 Y
|
|
256
|
+
mov r4, r1 @ r4 initial Y
|
|
257
|
+
vldmia r0, {q0-q2} @ get state
|
|
258
|
+
subs r2, r2, #Xoodyak_Rhash
|
|
259
|
+
Xoodyak_SqueezeHashFullBlocks_Loop:
|
|
260
|
+
veor.32 d0, d0, d12
|
|
261
|
+
bl Xoodoo_Permute_12roundsAsm
|
|
262
|
+
vst1.32 {q0}, [r3]! @ save Y Xoodyak_Rhash bytes
|
|
263
|
+
subs r2, r2, #Xoodyak_Rhash
|
|
264
|
+
bcs Xoodyak_SqueezeHashFullBlocks_Loop
|
|
265
|
+
vstmia r0, {q0-q2} @ save state
|
|
266
|
+
sub r0, r3, r4
|
|
267
|
+
vpop {q4-q7}
|
|
268
|
+
pop {r4,pc}
|
|
269
|
+
.align 8
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
@ ----------------------------------------------------------------------------
|
|
273
|
+
@
|
|
274
|
+
@ size_t Xoodyak_EncryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
|
|
275
|
+
@ {
|
|
276
|
+
@ size_t initialLength = IOLen@
|
|
277
|
+
@
|
|
278
|
+
@ do {
|
|
279
|
+
@ SnP_Permute(state)@
|
|
280
|
+
@ SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout)@
|
|
281
|
+
@ SnP_OverwriteBytes(state, O, 0, Xoodyak_Rkout)@
|
|
282
|
+
@ SnP_AddByte(state, 0x01, Xoodyak_Rkout)@
|
|
283
|
+
@ I += Xoodyak_Rkout@
|
|
284
|
+
@ O += Xoodyak_Rkout@
|
|
285
|
+
@ IOLen -= Xoodyak_Rkout@
|
|
286
|
+
@ } while (IOLen >= Xoodyak_Rkout)@
|
|
287
|
+
@
|
|
288
|
+
@ return initialLength - IOLen@
|
|
289
|
+
@ }
|
|
290
|
+
@
|
|
291
|
+
.global Xoodyak_EncryptFullBlocks
|
|
292
|
+
.type Xoodyak_EncryptFullBlocks, %function;
|
|
293
|
+
Xoodyak_EncryptFullBlocks:
|
|
294
|
+
push {r4-r6,lr}
|
|
295
|
+
vpush {q4-q7}
|
|
296
|
+
mov r4, r1 @ r4 I
|
|
297
|
+
vmov.i32 d13, #1
|
|
298
|
+
vshr.u64 d13, d13, #32
|
|
299
|
+
mov r5, r1 @ r5 initial I
|
|
300
|
+
vldmia r0, {q0-q2} @ get state
|
|
301
|
+
subs r3, r3, #Xoodyak_Rkout
|
|
302
|
+
Xoodyak_EncryptFullBlocks_Loop:
|
|
303
|
+
bl Xoodoo_Permute_12roundsAsm
|
|
304
|
+
vld1.32 {q3}, [r4]! @ get input
|
|
305
|
+
vld1.32 {d12}, [r4]!
|
|
306
|
+
veor.32 q0, q0, q3
|
|
307
|
+
veor.32 q1, q1, q6
|
|
308
|
+
vst1.32 {q0}, [r2]!
|
|
309
|
+
subs r3, r3, #Xoodyak_Rkout
|
|
310
|
+
vst1.32 {d2}, [r2]!
|
|
311
|
+
bcs Xoodyak_EncryptFullBlocks_Loop
|
|
312
|
+
vstmia r0, {q0-q2} @ save state
|
|
313
|
+
sub r0, r4, r5
|
|
314
|
+
vpop {q4-q7}
|
|
315
|
+
pop {r4-r6,pc}
|
|
316
|
+
.align 8
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
@ ----------------------------------------------------------------------------
|
|
320
|
+
@
|
|
321
|
+
@ size_t Xoodyak_DecryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
|
|
322
|
+
@ {
|
|
323
|
+
@ size_t initialLength = IOLen@
|
|
324
|
+
@
|
|
325
|
+
@ do {
|
|
326
|
+
@ SnP_Permute(state)@
|
|
327
|
+
@ SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout)@
|
|
328
|
+
@ SnP_AddBytes(state, O, 0, Xoodyak_Rkout)@
|
|
329
|
+
@ SnP_AddByte(state, 0x01, Xoodyak_Rkout)@
|
|
330
|
+
@ I += Xoodyak_Rkout@
|
|
331
|
+
@ O += Xoodyak_Rkout@
|
|
332
|
+
@ IOLen -= Xoodyak_Rkout@
|
|
333
|
+
@ } while (IOLen >= Xoodyak_Rkout)@
|
|
334
|
+
@
|
|
335
|
+
@ return initialLength - IOLen@
|
|
336
|
+
@ }
|
|
337
|
+
@
|
|
338
|
+
.global Xoodyak_DecryptFullBlocks
|
|
339
|
+
.type Xoodyak_DecryptFullBlocks, %function;
|
|
340
|
+
Xoodyak_DecryptFullBlocks:
|
|
341
|
+
push {r4-r6,lr}
|
|
342
|
+
vpush {q4-q7}
|
|
343
|
+
mov r4, r1 @ r4 I
|
|
344
|
+
vmov.i32 d13, #1
|
|
345
|
+
mov r5, r1 @ r5 initial I
|
|
346
|
+
vshr.u64 d13, d13, #32
|
|
347
|
+
subs r3, r3, #Xoodyak_Rkout
|
|
348
|
+
vldmia r0, {q0-q2} @ get state
|
|
349
|
+
Xoodyak_DecryptFullBlocks_Loop:
|
|
350
|
+
bl Xoodoo_Permute_12roundsAsm
|
|
351
|
+
vld1.32 {q3}, [r4]! @ get input
|
|
352
|
+
vld1.32 {d12}, [r4]!
|
|
353
|
+
veor.32 q0, q0, q3
|
|
354
|
+
veor.32 q1, q1, q6
|
|
355
|
+
vst1.32 {q0}, [r2]!
|
|
356
|
+
vst1.32 {d2}, [r2]!
|
|
357
|
+
vmov q0, q3
|
|
358
|
+
subs r3, r3, #Xoodyak_Rkout
|
|
359
|
+
vmov d2, d12
|
|
360
|
+
bcs Xoodyak_DecryptFullBlocks_Loop
|
|
361
|
+
vstmia r0, {q0-q2} @ save state
|
|
362
|
+
sub r0, r4, r5
|
|
363
|
+
vpop {q4-q7}
|
|
364
|
+
pop {r4-r6,pc}
|
|
365
|
+
.align 8
|
|
366
|
+
|
|
367
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
The Xoodoo permutation, designed by Joan Daemen, Seth Hoffert, 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
|
+
#ifndef _Xoodoo_SnP_h_
|
|
18
|
+
#define _Xoodoo_SnP_h_
|
|
19
|
+
|
|
20
|
+
#include <stddef.h>
|
|
21
|
+
#include <stdint.h>
|
|
22
|
+
|
|
23
|
+
/** For the documentation, see SnP-documentation.h.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#define Xoodoo_implementation "AVR8 optimized implementation"
|
|
27
|
+
#define Xoodoo_stateSizeInBytes (3*4*4)
|
|
28
|
+
#define Xoodoo_stateAlignment 1
|
|
29
|
+
#define Xoodoo_HasNround
|
|
30
|
+
|
|
31
|
+
#define Xoodoo_StaticInitialize()
|
|
32
|
+
void Xoodoo_Initialize(void *state);
|
|
33
|
+
#define Xoodoo_AddByte(argS, argData, argOffset) ((uint8_t*)argS)[argOffset] ^= (argData)
|
|
34
|
+
void Xoodoo_AddBytes(void *state, const uint8_t *data, unsigned int offset, unsigned int length);
|
|
35
|
+
void Xoodoo_OverwriteBytes(void *state, const uint8_t *data, unsigned int offset, unsigned int length);
|
|
36
|
+
void Xoodoo_OverwriteWithZeroes(void *state, unsigned int byteCount);
|
|
37
|
+
void Xoodoo_Permute_Nrounds(void *state, unsigned int nrounds);
|
|
38
|
+
void Xoodoo_Permute_6rounds(void *state);
|
|
39
|
+
void Xoodoo_Permute_12rounds(void *state);
|
|
40
|
+
void Xoodoo_ExtractBytes(const void *state, uint8_t *data, unsigned int offset, unsigned int length);
|
|
41
|
+
void Xoodoo_ExtractAndAddBytes(const void *state, const uint8_t *input, uint8_t *output, unsigned int offset, unsigned int length);
|
|
42
|
+
|
|
43
|
+
#endif
|