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,562 @@
|
|
|
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 ARMv6 architecture (e.g., ARM11).
|
|
18
|
+
|
|
19
|
+
PRESERVE8
|
|
20
|
+
AREA |.text|, CODE, READONLY
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
; ----------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
_r0 equ 5
|
|
26
|
+
_r1 equ 14
|
|
27
|
+
_t3 equ 1
|
|
28
|
+
|
|
29
|
+
_w1 equ 11
|
|
30
|
+
|
|
31
|
+
_e0 equ 2
|
|
32
|
+
_e1 equ 8
|
|
33
|
+
|
|
34
|
+
_rc12 equ 0x00000058
|
|
35
|
+
_rc11 equ 0x00000038
|
|
36
|
+
_rc10 equ 0x000003C0
|
|
37
|
+
_rc9 equ 0x000000D0
|
|
38
|
+
_rc8 equ 0x00000120
|
|
39
|
+
_rc7 equ 0x00000014
|
|
40
|
+
_rc6 equ 0x00000060
|
|
41
|
+
_rc5 equ 0x0000002C
|
|
42
|
+
_rc4 equ 0x00000380
|
|
43
|
+
_rc3 equ 0x000000F0
|
|
44
|
+
_rc2 equ 0x000001A0
|
|
45
|
+
_rc1 equ 0x00000012
|
|
46
|
+
|
|
47
|
+
_rc6x1 equ 0x00000003
|
|
48
|
+
_rc5x2 equ 0x0b000000
|
|
49
|
+
_rc4x3 equ 0x07000000
|
|
50
|
+
_rc3x4 equ 0x000f0000
|
|
51
|
+
_rc2x5 equ 0x0000d000
|
|
52
|
+
_rc1x6 equ 0x00000048
|
|
53
|
+
|
|
54
|
+
_rc12x1 equ 0xc0000002
|
|
55
|
+
_rc11x2 equ 0x0e000000
|
|
56
|
+
_rc10x3 equ 0x07800000
|
|
57
|
+
_rc9x4 equ 0x000d0000
|
|
58
|
+
_rc8x5 equ 0x00009000
|
|
59
|
+
_rc7x6 equ 0x00000050
|
|
60
|
+
_rc6x7 equ 0x0000000c
|
|
61
|
+
_rc5x8 equ 0x2c000000
|
|
62
|
+
_rc4x9 equ 0x1c000000
|
|
63
|
+
_rc3x10 equ 0x003c0000
|
|
64
|
+
_rc2x11 equ 0x00034000
|
|
65
|
+
_rc1x12 equ 0x00000120
|
|
66
|
+
|
|
67
|
+
; ----------------------------------------------------------------------------
|
|
68
|
+
|
|
69
|
+
MACRO
|
|
70
|
+
mXor3 $ro, $a0, $a1, $a2, $rho_e1, $rho_e2
|
|
71
|
+
if (($rho_e1)%32) == 0
|
|
72
|
+
eors $ro, $a0, $a1
|
|
73
|
+
else
|
|
74
|
+
eor $ro, $a0, $a1, ROR #(32-($rho_e1))%32
|
|
75
|
+
endif
|
|
76
|
+
if (($rho_e2)%32) == 0
|
|
77
|
+
eors $ro, $ro, $a2
|
|
78
|
+
else
|
|
79
|
+
eor $ro, $ro, $a2, ROR #(32-($rho_e2))%32
|
|
80
|
+
endif
|
|
81
|
+
MEND
|
|
82
|
+
|
|
83
|
+
MACRO
|
|
84
|
+
mRliXor $ro, $ri, $rot
|
|
85
|
+
if (($rot)%32) == 0
|
|
86
|
+
eors $ro, $ro, $ri
|
|
87
|
+
else
|
|
88
|
+
eor $ro, $ro, $ri, ROR #(32-($rot))%32
|
|
89
|
+
endif
|
|
90
|
+
MEND
|
|
91
|
+
|
|
92
|
+
MACRO
|
|
93
|
+
mRloXor $ro, $ri, $rot
|
|
94
|
+
if (($rot)%32) == 0
|
|
95
|
+
eors $ro, $ro, $ri
|
|
96
|
+
else
|
|
97
|
+
eor $ro, $ri, $ro, ROR #(32-($rot))%32
|
|
98
|
+
endif
|
|
99
|
+
MEND
|
|
100
|
+
|
|
101
|
+
MACRO
|
|
102
|
+
mChi3 $a0,$a1,$a2,$r0,$r1
|
|
103
|
+
bic $r0, $a2, $a1, ROR #_w1
|
|
104
|
+
eors $a0, $a0, $r0, ROR #32-_w1
|
|
105
|
+
bic $r1, $a0, $a2, ROR #32-_w1
|
|
106
|
+
eors $a1, $a1, $r1
|
|
107
|
+
bic $r1, $a1, $a0
|
|
108
|
+
eors $a2, $a2, $r1, ROR #_w1
|
|
109
|
+
MEND
|
|
110
|
+
|
|
111
|
+
MACRO
|
|
112
|
+
mRound $r6i, $r7i, $r8i, $r9i, $r6w, $r7w, $r8w, $r9w, $r10i, $r11i, $r12i, $lri, $rho_e1, $rho_we2, $rc
|
|
113
|
+
|
|
114
|
+
; Theta: Column Parity Mixer (with late Rho-west, Rho-east bit rotations)
|
|
115
|
+
mXor3 r0, r5, $r9i, $lri, $rho_e1, $rho_we2
|
|
116
|
+
mXor3 r1, r2, $r6i, $r10i, $rho_e1, $rho_we2
|
|
117
|
+
mRliXor r0, r0, _r1-_r0
|
|
118
|
+
mRloXor r2, r0, 32-_r0
|
|
119
|
+
mRloXor $r6i, r0, $rho_e1-_r0
|
|
120
|
+
mRloXor $r10i, r0, $rho_we2-_r0
|
|
121
|
+
|
|
122
|
+
mXor3 r0, r3, $r7i, $r11i, $rho_e1, $rho_we2
|
|
123
|
+
mRliXor r1, r1, _r1-_r0
|
|
124
|
+
mRloXor r3, r1, 32-_r0
|
|
125
|
+
mRloXor $r7i, r1, $rho_e1-_r0
|
|
126
|
+
mRloXor $r11i, r1, $rho_we2-_r0
|
|
127
|
+
|
|
128
|
+
mXor3 r1, r4, $r8i, $r12i, $rho_e1, $rho_we2
|
|
129
|
+
mRliXor r0, r0, _r1-_r0
|
|
130
|
+
mRloXor r4, r0, 32-_r0
|
|
131
|
+
mRloXor $r8i, r0, $rho_e1-_r0
|
|
132
|
+
mRloXor $r12i, r0, $rho_we2-_r0
|
|
133
|
+
|
|
134
|
+
mRliXor r1, r1, _r1-_r0
|
|
135
|
+
mRloXor r5, r1, 32-_r0
|
|
136
|
+
mRloXor $r9i, r1, $rho_e1-_r0
|
|
137
|
+
mRloXor $lri, r1, $rho_we2-_r0
|
|
138
|
+
; After Theta the whole state is rotated -r0
|
|
139
|
+
; from here we must use a1.w instead of a1.i
|
|
140
|
+
|
|
141
|
+
; Iota: round constant
|
|
142
|
+
if $rc == 0xc0000002
|
|
143
|
+
eor r2, r2, #0x00000002
|
|
144
|
+
eor r2, r2, #0xc0000000
|
|
145
|
+
else
|
|
146
|
+
eor r2, r2, #$rc
|
|
147
|
+
endif
|
|
148
|
+
|
|
149
|
+
; Chi: non linear step, on colums
|
|
150
|
+
mChi3 r2, $r6w, $r10i, r0, r1
|
|
151
|
+
mChi3 r3, $r7w, $r11i, r0, r1
|
|
152
|
+
mChi3 r4, $r8w, $r12i, r0, r1
|
|
153
|
+
mChi3 r5, $r9w, $lri, r0, r1
|
|
154
|
+
MEND
|
|
155
|
+
|
|
156
|
+
offsetInstance equ 0
|
|
157
|
+
offsetInitialLen equ 16
|
|
158
|
+
offsetReturn equ 20
|
|
159
|
+
|
|
160
|
+
; ----------------------------------------------------------------------------
|
|
161
|
+
;
|
|
162
|
+
; Xoodoo_Permute_12roundsAsm: only callable from asm
|
|
163
|
+
;
|
|
164
|
+
align 4
|
|
165
|
+
Xoodoo_Permute_12roundsAsm PROC
|
|
166
|
+
mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 32, 32, _rc12x1
|
|
167
|
+
mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc11x2
|
|
168
|
+
mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc10x3
|
|
169
|
+
mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc9x4
|
|
170
|
+
mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc8x5
|
|
171
|
+
mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc7x6
|
|
172
|
+
mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc6x7
|
|
173
|
+
mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc5x8
|
|
174
|
+
mRound r6, r7, r8, r9, r9, r6, r7, r8, r10, r11, r12, lr, 1, _e1+_w1, _rc4x9
|
|
175
|
+
mRound r9, r6, r7, r8, r8, r9, r6, r7, r12, lr, r10, r11, 1, _e1+_w1, _rc3x10
|
|
176
|
+
mRound r8, r9, r6, r7, r7, r8, r9, r6, r10, r11, r12, lr, 1, _e1+_w1, _rc2x11
|
|
177
|
+
mRound r7, r8, r9, r6, r6, r7, r8, r9, r12, lr, r10, r11, 1, _e1+_w1, _rc1x12
|
|
178
|
+
ror r2, r2, #32-(12*_r0)%32
|
|
179
|
+
ror r3, r3, #32-(12*_r0)%32
|
|
180
|
+
ror r4, r4, #32-(12*_r0)%32
|
|
181
|
+
ror r5, r5, #32-(12*_r0)%32
|
|
182
|
+
ror r6, r6, #32-(12*_r0+1)%32
|
|
183
|
+
ror r7, r7, #32-(12*_r0+1)%32
|
|
184
|
+
ror r8, r8, #32-(12*_r0+1)%32
|
|
185
|
+
ror r9, r9, #32-(12*_r0+1)%32
|
|
186
|
+
ror r10, r10, #32-(12*_r0+_e1+_w1)%32
|
|
187
|
+
ror r11, r11, #32-(12*_r0+_e1+_w1)%32
|
|
188
|
+
ror r12, r12, #32-(12*_r0+_e1+_w1)%32
|
|
189
|
+
ror lr, lr, #32-(12*_r0+_e1+_w1)%32
|
|
190
|
+
ldr pc, [sp, #offsetReturn]
|
|
191
|
+
ENDP
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
; ----------------------------------------------------------------------------
|
|
195
|
+
;
|
|
196
|
+
; size_t Xoodyak_AbsorbKeyedFullBlocks(void *state, const uint8_t *X, size_t XLen)
|
|
197
|
+
; {
|
|
198
|
+
; size_t initialLength = XLen;
|
|
199
|
+
;
|
|
200
|
+
; do {
|
|
201
|
+
; SnP_Permute(state ); /* Xoodyak_Up(instance, NULL, 0, 0); */
|
|
202
|
+
; SnP_AddBytes(state, X, 0, Xoodyak_Rkin); /* Xoodyak_Down(instance, X, Xoodyak_Rkin, 0); */
|
|
203
|
+
; SnP_AddByte(state, 0x01, Xoodyak_Rkin);
|
|
204
|
+
; X += Xoodyak_Rkin;
|
|
205
|
+
; XLen -= Xoodyak_Rkin;
|
|
206
|
+
; } while (XLen >= Xoodyak_Rkin);
|
|
207
|
+
;
|
|
208
|
+
; return initialLength - XLen;
|
|
209
|
+
; }
|
|
210
|
+
;
|
|
211
|
+
offsetAbsorbX equ 4
|
|
212
|
+
offsetAbsorbXLen equ 8
|
|
213
|
+
|
|
214
|
+
align 4
|
|
215
|
+
EXPORT Xoodyak_AbsorbKeyedFullBlocks
|
|
216
|
+
Xoodyak_AbsorbKeyedFullBlocks PROC
|
|
217
|
+
push {r4-r12,lr}
|
|
218
|
+
mov r4, r2 ; r4 initialLength
|
|
219
|
+
subs r2, r2, #44
|
|
220
|
+
ldr r5, =Xoodyak_AbsorbKeyedFullBlocks_Ret
|
|
221
|
+
push {r0-r5}
|
|
222
|
+
ldmia r0, {r2-r12,lr}
|
|
223
|
+
Xoodyak_AbsorbKeyedFullBlocks_Loop
|
|
224
|
+
b Xoodoo_Permute_12roundsAsm
|
|
225
|
+
Xoodyak_AbsorbKeyedFullBlocks_Ret
|
|
226
|
+
ldr r0, [sp, #offsetAbsorbX]
|
|
227
|
+
ldr r1, [r0], #4
|
|
228
|
+
eors r2, r2, r1
|
|
229
|
+
ldr r1, [r0], #4
|
|
230
|
+
eors r3, r3, r1
|
|
231
|
+
ldr r1, [r0], #4
|
|
232
|
+
eors r4, r4, r1
|
|
233
|
+
ldr r1, [r0], #4
|
|
234
|
+
eors r5, r5, r1
|
|
235
|
+
ldr r1, [r0], #4
|
|
236
|
+
eors r6, r6, r1
|
|
237
|
+
ldr r1, [r0], #4
|
|
238
|
+
eors r7, r7, r1
|
|
239
|
+
ldr r1, [r0], #4
|
|
240
|
+
eors r8, r8, r1
|
|
241
|
+
ldr r1, [r0], #4
|
|
242
|
+
eors r9, r9, r1
|
|
243
|
+
ldr r1, [r0], #4
|
|
244
|
+
eors r10, r10, r1
|
|
245
|
+
ldr r1, [r0], #4
|
|
246
|
+
eors r11, r11, r1
|
|
247
|
+
ldr r1, [r0], #4
|
|
248
|
+
eors lr, lr, #1
|
|
249
|
+
eors r12, r12, r1
|
|
250
|
+
ldr r1, [sp, #offsetAbsorbXLen]
|
|
251
|
+
str r0, [sp, #offsetAbsorbX]
|
|
252
|
+
subs r1, r1, #44
|
|
253
|
+
str r1, [sp, #offsetAbsorbXLen]
|
|
254
|
+
bcs Xoodyak_AbsorbKeyedFullBlocks_Loop
|
|
255
|
+
ldr r0, [sp, #offsetInstance]
|
|
256
|
+
stmia r0, {r2-r12,lr}
|
|
257
|
+
pop {r0-r5}
|
|
258
|
+
adds r2, r2, #44
|
|
259
|
+
sub r0, r4, r2
|
|
260
|
+
pop {r4-r12,pc}
|
|
261
|
+
ENDP
|
|
262
|
+
|
|
263
|
+
; ----------------------------------------------------------------------------
|
|
264
|
+
;
|
|
265
|
+
; size_t Xoodyak_AbsorbHashFullBlocks(void *state, const uint8_t *X, size_t XLen)
|
|
266
|
+
; {
|
|
267
|
+
; size_t initialLength = XLen;
|
|
268
|
+
;
|
|
269
|
+
; do {
|
|
270
|
+
; SnP_Permute(state ); /* Xoodyak_Up(instance, NULL, 0, 0); */
|
|
271
|
+
; SnP_AddBytes(state, X, 0, Xoodyak_Rhash); /* Xoodyak_Down(instance, X, Xoodyak_Rhash, 0); */
|
|
272
|
+
; SnP_AddByte(state, 0x01, Xoodyak_Rhash);
|
|
273
|
+
; X += Xoodyak_Rhash;
|
|
274
|
+
; XLen -= Xoodyak_Rhash;
|
|
275
|
+
; } while (XLen >= Xoodyak_Rhash);
|
|
276
|
+
;
|
|
277
|
+
; return initialLength - XLen;
|
|
278
|
+
; }
|
|
279
|
+
;
|
|
280
|
+
align 4
|
|
281
|
+
EXPORT Xoodyak_AbsorbHashFullBlocks
|
|
282
|
+
Xoodyak_AbsorbHashFullBlocks PROC
|
|
283
|
+
push {r4-r12,lr}
|
|
284
|
+
mov r4, r2 ; r4 initialLength
|
|
285
|
+
subs r2, r2, #16
|
|
286
|
+
ldr r5, =Xoodyak_AbsorbHashFullBlocks_Ret
|
|
287
|
+
push {r0-r5}
|
|
288
|
+
ldmia r0, {r2-r12,lr}
|
|
289
|
+
Xoodyak_AbsorbHashFullBlocks_Loop
|
|
290
|
+
b Xoodoo_Permute_12roundsAsm
|
|
291
|
+
Xoodyak_AbsorbHashFullBlocks_Ret
|
|
292
|
+
ldr r0, [sp, #offsetAbsorbX]
|
|
293
|
+
ldr r1, [r0], #4
|
|
294
|
+
eors r2, r2, r1
|
|
295
|
+
ldr r1, [r0], #4
|
|
296
|
+
eors r3, r3, r1
|
|
297
|
+
ldr r1, [r0], #4
|
|
298
|
+
eors r4, r4, r1
|
|
299
|
+
ldr r1, [r0], #4
|
|
300
|
+
eors r6, r6, #1
|
|
301
|
+
eors r5, r5, r1
|
|
302
|
+
ldr r1, [sp, #offsetAbsorbXLen]
|
|
303
|
+
str r0, [sp, #offsetAbsorbX]
|
|
304
|
+
subs r1, r1, #16
|
|
305
|
+
str r1, [sp, #offsetAbsorbXLen]
|
|
306
|
+
bcs Xoodyak_AbsorbHashFullBlocks_Loop
|
|
307
|
+
ldr r0, [sp, #offsetInstance]
|
|
308
|
+
stmia r0, {r2-r12,lr}
|
|
309
|
+
pop {r0-r5}
|
|
310
|
+
adds r2, r2, #16
|
|
311
|
+
sub r0, r4, r2
|
|
312
|
+
pop {r4-r12,pc}
|
|
313
|
+
ENDP
|
|
314
|
+
|
|
315
|
+
; ----------------------------------------------------------------------------
|
|
316
|
+
;
|
|
317
|
+
; size_t Xoodyak_SqueezeKeyedFullBlocks(void *state, uint8_t *Y, size_t YLen)
|
|
318
|
+
; {
|
|
319
|
+
; size_t initialLength = YLen;
|
|
320
|
+
;
|
|
321
|
+
; do {
|
|
322
|
+
; SnP_AddByte(state, 0x01, 0); /* Xoodyak_Down(instance, NULL, 0, 0); */
|
|
323
|
+
; SnP_Permute(state ); /* Xoodyak_Up(instance, Y, Xoodyak_Rkout, 0); */
|
|
324
|
+
; SnP_ExtractBytes(state, Y, 0, Xoodyak_Rkout);
|
|
325
|
+
; Y += Xoodyak_Rkout;
|
|
326
|
+
; YLen -= Xoodyak_Rkout;
|
|
327
|
+
; } while (YLen >= Xoodyak_Rkout);
|
|
328
|
+
;
|
|
329
|
+
; return initialLength - YLen;
|
|
330
|
+
; }
|
|
331
|
+
;
|
|
332
|
+
offsetSqueezeY equ 4
|
|
333
|
+
offsetSqueezeYLen equ 8
|
|
334
|
+
|
|
335
|
+
align 4
|
|
336
|
+
EXPORT Xoodyak_SqueezeKeyedFullBlocks
|
|
337
|
+
Xoodyak_SqueezeKeyedFullBlocks PROC
|
|
338
|
+
push {r4-r12,lr}
|
|
339
|
+
mov r4, r2 ; r4 initialLength
|
|
340
|
+
subs r2, r2, #24
|
|
341
|
+
ldr r5, =Xoodyak_SqueezeKeyedFullBlocks_Ret
|
|
342
|
+
push {r0-r5}
|
|
343
|
+
ldmia r0, {r2-r12,lr}
|
|
344
|
+
Xoodyak_SqueezeKeyedFullBlocks_Loop
|
|
345
|
+
eors r2, r2, #1
|
|
346
|
+
b Xoodoo_Permute_12roundsAsm
|
|
347
|
+
Xoodyak_SqueezeKeyedFullBlocks_Ret
|
|
348
|
+
ldr r0, [sp, #offsetSqueezeY]
|
|
349
|
+
str r2, [r0], #4
|
|
350
|
+
str r3, [r0], #4
|
|
351
|
+
str r4, [r0], #4
|
|
352
|
+
str r5, [r0], #4
|
|
353
|
+
str r6, [r0], #4
|
|
354
|
+
str r7, [r0], #4
|
|
355
|
+
ldr r1, [sp, #offsetSqueezeYLen]
|
|
356
|
+
str r0, [sp, #offsetSqueezeY]
|
|
357
|
+
subs r1, r1, #24
|
|
358
|
+
str r1, [sp, #offsetSqueezeYLen]
|
|
359
|
+
bcs Xoodyak_SqueezeKeyedFullBlocks_Loop
|
|
360
|
+
ldr r0, [sp, #offsetInstance]
|
|
361
|
+
stmia r0, {r2-r12,lr}
|
|
362
|
+
pop {r0-r5}
|
|
363
|
+
adds r2, r2, #24
|
|
364
|
+
sub r0, r4, r2
|
|
365
|
+
pop {r4-r12,pc}
|
|
366
|
+
ENDP
|
|
367
|
+
|
|
368
|
+
; ----------------------------------------------------------------------------
|
|
369
|
+
;
|
|
370
|
+
; size_t Xoodyak_SqueezeHashFullBlocks(void *state, uint8_t *Y, size_t YLen)
|
|
371
|
+
; {
|
|
372
|
+
; size_t initialLength = YLen;
|
|
373
|
+
;
|
|
374
|
+
; do {
|
|
375
|
+
; SnP_AddByte(state, 0x01, 0); /* Xoodyak_Down(instance, NULL, 0, 0); */
|
|
376
|
+
; SnP_Permute(state); /* Xoodyak_Up(instance, Y, Xoodyak_Rhash, 0); */
|
|
377
|
+
; SnP_ExtractBytes(state, Y, 0, Xoodyak_Rhash);
|
|
378
|
+
; Y += Xoodyak_Rhash;
|
|
379
|
+
; YLen -= Xoodyak_Rhash;
|
|
380
|
+
; } while (YLen >= Xoodyak_Rhash);
|
|
381
|
+
;
|
|
382
|
+
; return initialLength - YLen;
|
|
383
|
+
; }
|
|
384
|
+
;
|
|
385
|
+
align 4
|
|
386
|
+
EXPORT Xoodyak_SqueezeHashFullBlocks
|
|
387
|
+
Xoodyak_SqueezeHashFullBlocks PROC
|
|
388
|
+
push {r4-r12,lr}
|
|
389
|
+
mov r4, r2 ; r4 initialLength
|
|
390
|
+
subs r2, r2, #16
|
|
391
|
+
ldr r5, =Xoodyak_SqueezeHashFullBlocks_Ret
|
|
392
|
+
push {r0-r5}
|
|
393
|
+
ldmia r0, {r2-r12,lr}
|
|
394
|
+
Xoodyak_SqueezeHashFullBlocks_Loop
|
|
395
|
+
eors r2, r2, #1
|
|
396
|
+
b Xoodoo_Permute_12roundsAsm
|
|
397
|
+
Xoodyak_SqueezeHashFullBlocks_Ret
|
|
398
|
+
ldr r0, [sp, #offsetSqueezeY]
|
|
399
|
+
str r2, [r0], #4
|
|
400
|
+
str r3, [r0], #4
|
|
401
|
+
str r4, [r0], #4
|
|
402
|
+
str r5, [r0], #4
|
|
403
|
+
ldr r1, [sp, #offsetSqueezeYLen]
|
|
404
|
+
str r0, [sp, #offsetSqueezeY]
|
|
405
|
+
subs r1, r1, #16
|
|
406
|
+
str r1, [sp, #offsetSqueezeYLen]
|
|
407
|
+
bcs Xoodyak_SqueezeHashFullBlocks_Loop
|
|
408
|
+
ldr r0, [sp, #offsetInstance]
|
|
409
|
+
stmia r0, {r2-r12,lr}
|
|
410
|
+
pop {r0-r5}
|
|
411
|
+
adds r2, r2, #16
|
|
412
|
+
sub r0, r4, r2
|
|
413
|
+
pop {r4-r12,pc}
|
|
414
|
+
ENDP
|
|
415
|
+
|
|
416
|
+
; ----------------------------------------------------------------------------
|
|
417
|
+
;
|
|
418
|
+
; size_t Xoodyak_EncryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
|
|
419
|
+
; {
|
|
420
|
+
; size_t initialLength = IOLen;
|
|
421
|
+
;
|
|
422
|
+
; do {
|
|
423
|
+
; SnP_Permute(state);
|
|
424
|
+
; SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout);
|
|
425
|
+
; SnP_OverwriteBytes(state, O, 0, Xoodyak_Rkout);
|
|
426
|
+
; SnP_AddByte(state, 0x01, Xoodyak_Rkout);
|
|
427
|
+
; I += Xoodyak_Rkout;
|
|
428
|
+
; O += Xoodyak_Rkout;
|
|
429
|
+
; IOLen -= Xoodyak_Rkout;
|
|
430
|
+
; } while (IOLen >= Xoodyak_Rkout);
|
|
431
|
+
;
|
|
432
|
+
; return initialLength - IOLen;
|
|
433
|
+
; }
|
|
434
|
+
;
|
|
435
|
+
offsetCryptI equ 4+8
|
|
436
|
+
offsetCryptO equ 8+8
|
|
437
|
+
offsetCryptIOLen equ 12
|
|
438
|
+
|
|
439
|
+
align 4
|
|
440
|
+
EXPORT Xoodyak_EncryptFullBlocks
|
|
441
|
+
Xoodyak_EncryptFullBlocks PROC
|
|
442
|
+
push {r4-r12,lr}
|
|
443
|
+
mov r4, r3 ; r4 initialLength
|
|
444
|
+
subs r3, r3, #24
|
|
445
|
+
ldr r5, =Xoodyak_EncryptFullBlocks_Ret
|
|
446
|
+
push {r0-r5}
|
|
447
|
+
ldmia r0, {r2-r12,lr}
|
|
448
|
+
Xoodyak_EncryptFullBlocks_Loop
|
|
449
|
+
b Xoodoo_Permute_12roundsAsm
|
|
450
|
+
Xoodyak_EncryptFullBlocks_Ret
|
|
451
|
+
push {r10, r11}
|
|
452
|
+
ldr r11, [sp, #offsetCryptI]
|
|
453
|
+
ldr r10, [sp, #offsetCryptO]
|
|
454
|
+
ldr r0, [r11], #4
|
|
455
|
+
ldr r1, [r11], #4
|
|
456
|
+
eors r2, r2, r0
|
|
457
|
+
str r2, [r10], #4
|
|
458
|
+
eors r3, r3, r1
|
|
459
|
+
ldr r0, [r11], #4
|
|
460
|
+
str r3, [r10], #4
|
|
461
|
+
eors r4, r4, r0
|
|
462
|
+
ldr r1, [r11], #4
|
|
463
|
+
str r4, [r10], #4
|
|
464
|
+
eors r5, r5, r1
|
|
465
|
+
ldr r0, [r11], #4
|
|
466
|
+
str r5, [r10], #4
|
|
467
|
+
eors r6, r6, r0
|
|
468
|
+
ldr r1, [r11], #4
|
|
469
|
+
str r6, [r10], #4
|
|
470
|
+
eors r7, r7, r1
|
|
471
|
+
str r7, [r10], #4
|
|
472
|
+
str r10, [sp, #offsetCryptO]
|
|
473
|
+
str r11, [sp, #offsetCryptI]
|
|
474
|
+
pop {r10, r11}
|
|
475
|
+
ldr r0, [sp, #offsetCryptIOLen]
|
|
476
|
+
eors r8, r8, #1
|
|
477
|
+
subs r0, r0, #24
|
|
478
|
+
str r0, [sp, #offsetCryptIOLen]
|
|
479
|
+
bcs Xoodyak_EncryptFullBlocks_Loop
|
|
480
|
+
ldr r0, [sp, #offsetInstance]
|
|
481
|
+
stmia r0, {r2-r12,lr}
|
|
482
|
+
pop {r0-r5}
|
|
483
|
+
adds r3, r3, #24
|
|
484
|
+
sub r0, r4, r3
|
|
485
|
+
pop {r4-r12,pc}
|
|
486
|
+
ENDP
|
|
487
|
+
|
|
488
|
+
; ----------------------------------------------------------------------------
|
|
489
|
+
;
|
|
490
|
+
; size_t Xoodyak_DecryptFullBlocks(void *state, const uint8_t *I, uint8_t *O, size_t IOLen)
|
|
491
|
+
; {
|
|
492
|
+
; size_t initialLength = IOLen;
|
|
493
|
+
;
|
|
494
|
+
; do {
|
|
495
|
+
; SnP_Permute(state);
|
|
496
|
+
; SnP_ExtractAndAddBytes(state, I, O, 0, Xoodyak_Rkout);
|
|
497
|
+
; SnP_AddBytes(state, O, 0, Xoodyak_Rkout);
|
|
498
|
+
; SnP_AddByte(state, 0x01, Xoodyak_Rkout);
|
|
499
|
+
; I += Xoodyak_Rkout;
|
|
500
|
+
; O += Xoodyak_Rkout;
|
|
501
|
+
; IOLen -= Xoodyak_Rkout;
|
|
502
|
+
; } while (IOLen >= Xoodyak_Rkout);
|
|
503
|
+
;
|
|
504
|
+
; return initialLength - IOLen;
|
|
505
|
+
; }
|
|
506
|
+
;
|
|
507
|
+
align 4
|
|
508
|
+
EXPORT Xoodyak_DecryptFullBlocks
|
|
509
|
+
Xoodyak_DecryptFullBlocks PROC
|
|
510
|
+
push {r4-r12,lr}
|
|
511
|
+
mov r4, r3 ; r4 initialLength
|
|
512
|
+
subs r3, r3, #24
|
|
513
|
+
ldr r5, =Xoodyak_DecryptFullBlocks_Ret
|
|
514
|
+
push {r0-r5}
|
|
515
|
+
ldmia r0, {r2-r12,lr}
|
|
516
|
+
Xoodyak_DecryptFullBlocks_Loop
|
|
517
|
+
b Xoodoo_Permute_12roundsAsm
|
|
518
|
+
Xoodyak_DecryptFullBlocks_Ret
|
|
519
|
+
push {r10, r11}
|
|
520
|
+
ldr r11, [sp, #offsetCryptI]
|
|
521
|
+
ldr r10, [sp, #offsetCryptO]
|
|
522
|
+
ldr r0, [r11], #4
|
|
523
|
+
ldr r1, [r11], #4
|
|
524
|
+
eors r2, r2, r0
|
|
525
|
+
str r2, [r10], #4
|
|
526
|
+
mov r2, r0
|
|
527
|
+
eors r3, r3, r1
|
|
528
|
+
ldr r0, [r11], #4
|
|
529
|
+
str r3, [r10], #4
|
|
530
|
+
mov r3, r1
|
|
531
|
+
eors r4, r4, r0
|
|
532
|
+
ldr r1, [r11], #4
|
|
533
|
+
str r4, [r10], #4
|
|
534
|
+
mov r4, r0
|
|
535
|
+
eors r5, r5, r1
|
|
536
|
+
ldr r0, [r11], #4
|
|
537
|
+
str r5, [r10], #4
|
|
538
|
+
mov r5, r1
|
|
539
|
+
eors r6, r6, r0
|
|
540
|
+
ldr r1, [r11], #4
|
|
541
|
+
str r6, [r10], #4
|
|
542
|
+
mov r6, r0
|
|
543
|
+
eors r7, r7, r1
|
|
544
|
+
str r7, [r10], #4
|
|
545
|
+
mov r7, r1
|
|
546
|
+
str r10, [sp, #offsetCryptO]
|
|
547
|
+
str r11, [sp, #offsetCryptI]
|
|
548
|
+
pop {r10, r11}
|
|
549
|
+
ldr r0, [sp, #offsetCryptIOLen]
|
|
550
|
+
eors r8, r8, #1
|
|
551
|
+
subs r0, r0, #24
|
|
552
|
+
str r0, [sp, #offsetCryptIOLen]
|
|
553
|
+
bcs Xoodyak_DecryptFullBlocks_Loop
|
|
554
|
+
ldr r0, [sp, #offsetInstance]
|
|
555
|
+
stmia r0, {r2-r12,lr}
|
|
556
|
+
pop {r0-r5}
|
|
557
|
+
adds r3, r3, #24
|
|
558
|
+
sub r0, r4, r3
|
|
559
|
+
pop {r4-r12,pc}
|
|
560
|
+
ENDP
|
|
561
|
+
|
|
562
|
+
END
|