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,485 @@
|
|
|
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 + NEON architecture (Cortex-A8, ...).
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
.text
|
|
21
|
+
|
|
22
|
+
@ ----------------------------------------------------------------------------
|
|
23
|
+
@
|
|
24
|
+
@ void Xoodoo_Initialize(void *state)
|
|
25
|
+
@
|
|
26
|
+
.align 8
|
|
27
|
+
.global Xoodoo_Initialize
|
|
28
|
+
.type Xoodoo_Initialize, %function;
|
|
29
|
+
Xoodoo_Initialize:
|
|
30
|
+
vmov.i32 q0, #0
|
|
31
|
+
vstm r0!, { d0 - d1 }
|
|
32
|
+
vstm r0!, { d0 - d1 }
|
|
33
|
+
vstm r0!, { d0 - d1 }
|
|
34
|
+
bx lr
|
|
35
|
+
.align 8
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@ ----------------------------------------------------------------------------
|
|
39
|
+
@
|
|
40
|
+
@ void Xoodoo_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
41
|
+
@
|
|
42
|
+
.global Xoodoo_AddBytes
|
|
43
|
+
.type Xoodoo_AddBytes, %function;
|
|
44
|
+
Xoodoo_AddBytes:
|
|
45
|
+
push {r4,lr}
|
|
46
|
+
adds r0, r0, r2 @ state += offset
|
|
47
|
+
subs r3, r3, #4 @ .if length >= 4
|
|
48
|
+
bcc Xoodoo_AddBytes_Bytes
|
|
49
|
+
Xoodoo_AddBytes_LanesLoop: @ then, perform on lanes
|
|
50
|
+
ldr r2, [r0]
|
|
51
|
+
ldr r4, [r1], #4
|
|
52
|
+
eors r2, r2, r4
|
|
53
|
+
str r2, [r0], #4
|
|
54
|
+
subs r3, r3, #4
|
|
55
|
+
bcs Xoodoo_AddBytes_LanesLoop
|
|
56
|
+
Xoodoo_AddBytes_Bytes:
|
|
57
|
+
adds r3, r3, #3
|
|
58
|
+
bcc Xoodoo_AddBytes_Exit
|
|
59
|
+
Xoodoo_AddBytes_BytesLoop:
|
|
60
|
+
ldrb r2, [r0]
|
|
61
|
+
ldrb r4, [r1], #1
|
|
62
|
+
eors r2, r2, r4
|
|
63
|
+
strb r2, [r0], #1
|
|
64
|
+
subs r3, r3, #1
|
|
65
|
+
bcs Xoodoo_AddBytes_BytesLoop
|
|
66
|
+
Xoodoo_AddBytes_Exit:
|
|
67
|
+
pop {r4,pc}
|
|
68
|
+
.align 8
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@ ----------------------------------------------------------------------------
|
|
72
|
+
@
|
|
73
|
+
@ void Xoodoo_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
74
|
+
@
|
|
75
|
+
.global Xoodoo_OverwriteBytes
|
|
76
|
+
.type Xoodoo_OverwriteBytes, %function;
|
|
77
|
+
Xoodoo_OverwriteBytes:
|
|
78
|
+
adds r0, r0, r2 @ state += offset
|
|
79
|
+
subs r3, r3, #4 @ .if length >= 4
|
|
80
|
+
bcc Xoodoo_OverwriteBytes_Bytes
|
|
81
|
+
Xoodoo_OverwriteBytes_LanesLoop: @ then, perform on words
|
|
82
|
+
ldr r2, [r1], #4
|
|
83
|
+
str r2, [r0], #4
|
|
84
|
+
subs r3, r3, #4
|
|
85
|
+
bcs Xoodoo_OverwriteBytes_LanesLoop
|
|
86
|
+
Xoodoo_OverwriteBytes_Bytes:
|
|
87
|
+
adds r3, r3, #3
|
|
88
|
+
bcc Xoodoo_OverwriteBytes_Exit
|
|
89
|
+
Xoodoo_OverwriteBytes_BytesLoop:
|
|
90
|
+
ldrb r2, [r1], #1
|
|
91
|
+
strb r2, [r0], #1
|
|
92
|
+
subs r3, r3, #1
|
|
93
|
+
bcs Xoodoo_OverwriteBytes_BytesLoop
|
|
94
|
+
Xoodoo_OverwriteBytes_Exit:
|
|
95
|
+
bx lr
|
|
96
|
+
.align 8
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@ ----------------------------------------------------------------------------
|
|
100
|
+
@
|
|
101
|
+
@ void Xoodoo_OverwriteWithZeroes(void *state, unsigned int byteCount)
|
|
102
|
+
@
|
|
103
|
+
.global Xoodoo_OverwriteWithZeroes
|
|
104
|
+
.type Xoodoo_OverwriteWithZeroes, %function;
|
|
105
|
+
Xoodoo_OverwriteWithZeroes:
|
|
106
|
+
movs r3, #0
|
|
107
|
+
lsrs r2, r1, #2
|
|
108
|
+
beq Xoodoo_OverwriteWithZeroes_Bytes
|
|
109
|
+
Xoodoo_OverwriteWithZeroes_LoopLanes:
|
|
110
|
+
str r3, [r0], #4
|
|
111
|
+
subs r2, r2, #1
|
|
112
|
+
bne Xoodoo_OverwriteWithZeroes_LoopLanes
|
|
113
|
+
Xoodoo_OverwriteWithZeroes_Bytes:
|
|
114
|
+
ands r1, #3
|
|
115
|
+
beq Xoodoo_OverwriteWithZeroes_Exit
|
|
116
|
+
Xoodoo_OverwriteWithZeroes_LoopBytes:
|
|
117
|
+
strb r3, [r0], #1
|
|
118
|
+
subs r1, r1, #1
|
|
119
|
+
bne Xoodoo_OverwriteWithZeroes_LoopBytes
|
|
120
|
+
Xoodoo_OverwriteWithZeroes_Exit:
|
|
121
|
+
bx lr
|
|
122
|
+
.align 8
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@ ----------------------------------------------------------------------------
|
|
126
|
+
@
|
|
127
|
+
@ void Xoodoo_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
|
|
128
|
+
@
|
|
129
|
+
.global Xoodoo_ExtractBytes
|
|
130
|
+
.type Xoodoo_ExtractBytes, %function;
|
|
131
|
+
Xoodoo_ExtractBytes:
|
|
132
|
+
adds r0, r0, r2 @ state += offset
|
|
133
|
+
subs r3, r3, #4 @ .if length >= 4
|
|
134
|
+
bcc Xoodoo_ExtractBytes_Bytes
|
|
135
|
+
Xoodoo_ExtractBytes_LanesLoop: @ then, handle words
|
|
136
|
+
ldr r2, [r0], #4
|
|
137
|
+
str r2, [r1], #4
|
|
138
|
+
subs r3, r3, #4
|
|
139
|
+
bcs Xoodoo_ExtractBytes_LanesLoop
|
|
140
|
+
Xoodoo_ExtractBytes_Bytes:
|
|
141
|
+
adds r3, r3, #3
|
|
142
|
+
bcc Xoodoo_ExtractBytes_Exit
|
|
143
|
+
Xoodoo_ExtractBytes_BytesLoop:
|
|
144
|
+
ldrb r2, [r0], #1
|
|
145
|
+
strb r2, [r1], #1
|
|
146
|
+
subs r3, r3, #1
|
|
147
|
+
bcs Xoodoo_ExtractBytes_BytesLoop
|
|
148
|
+
Xoodoo_ExtractBytes_Exit:
|
|
149
|
+
bx lr
|
|
150
|
+
.align 8
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
@ ----------------------------------------------------------------------------
|
|
154
|
+
@
|
|
155
|
+
@ void Xoodoo_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
|
|
156
|
+
@
|
|
157
|
+
.global Xoodoo_ExtractAndAddBytes
|
|
158
|
+
.type Xoodoo_ExtractAndAddBytes, %function;
|
|
159
|
+
Xoodoo_ExtractAndAddBytes:
|
|
160
|
+
push {r4,r5}
|
|
161
|
+
adds r0, r0, r3 @ state += offset (offset register no longer needed, reuse for length)
|
|
162
|
+
ldr r3, [sp, #8] @ get length argument from stack
|
|
163
|
+
subs r3, r3, #4 @ .if length >= 4
|
|
164
|
+
bcc Xoodoo_ExtractAndAddBytes_Bytes
|
|
165
|
+
Xoodoo_ExtractAndAddBytes_LanesLoop: @ then, handle words
|
|
166
|
+
ldr r5, [r0], #4
|
|
167
|
+
ldr r4, [r1], #4
|
|
168
|
+
eors r5, r5, r4
|
|
169
|
+
str r5, [r2], #4
|
|
170
|
+
subs r3, r3, #4
|
|
171
|
+
bcs Xoodoo_ExtractAndAddBytes_LanesLoop
|
|
172
|
+
Xoodoo_ExtractAndAddBytes_Bytes:
|
|
173
|
+
adds r3, r3, #3
|
|
174
|
+
bcc Xoodoo_ExtractAndAddBytes_Exit
|
|
175
|
+
Xoodoo_ExtractAndAddBytes_BytesLoop:
|
|
176
|
+
ldrb r5, [r0], #1
|
|
177
|
+
ldrb r4, [r1], #1
|
|
178
|
+
eors r5, r5, r4
|
|
179
|
+
strb r5, [r2], #1
|
|
180
|
+
subs r3, r3, #1
|
|
181
|
+
bcs Xoodoo_ExtractAndAddBytes_BytesLoop
|
|
182
|
+
Xoodoo_ExtractAndAddBytes_Exit:
|
|
183
|
+
pop {r4,r5}
|
|
184
|
+
bx lr
|
|
185
|
+
.align 8
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
@ ----------------------------------------------------------------------------
|
|
189
|
+
|
|
190
|
+
.macro mRound
|
|
191
|
+
|
|
192
|
+
@ Theta: Column Parity Mixer
|
|
193
|
+
veor.32 q4, q0, q1
|
|
194
|
+
veor.32 q4, q4, q2
|
|
195
|
+
vext.32 q4, q4, q4, #3
|
|
196
|
+
vshl.u32 q3, q4, #5
|
|
197
|
+
vsri.u32 q3, q4, #32-5
|
|
198
|
+
vshl.u32 q5, q4, #14
|
|
199
|
+
vsri.u32 q5, q4, #32-14
|
|
200
|
+
veor.32 q3, q3, q5
|
|
201
|
+
veor.32 q0, q0, q3
|
|
202
|
+
veor.32 q1, q1, q3
|
|
203
|
+
veor.32 q5, q2, q3 @ q2 resides in q5
|
|
204
|
+
|
|
205
|
+
@ Rho-west: Plane shift
|
|
206
|
+
@ Iota: add round constant
|
|
207
|
+
vshl.u32 q2, q5, #11
|
|
208
|
+
vext.32 q1, q1, q1, #3
|
|
209
|
+
vldmia r1!, {d6} @ iota
|
|
210
|
+
vsri.u32 q2, q5, #32-11
|
|
211
|
+
veor.32 d0, d0, d6 @ iota
|
|
212
|
+
|
|
213
|
+
@ Chi: non linear step, on colums
|
|
214
|
+
vbic.32 q3, q2, q1
|
|
215
|
+
vbic.32 q4, q0, q2
|
|
216
|
+
vbic.32 q5, q1, q0
|
|
217
|
+
veor.32 q0, q0, q3
|
|
218
|
+
veor.32 q4, q1, q4 @ q1 resides in q4
|
|
219
|
+
veor.32 q2, q2, q5
|
|
220
|
+
|
|
221
|
+
@ Rho-east: Plane shift
|
|
222
|
+
vext.32 q5, q2, q2, #2
|
|
223
|
+
vshl.u32 q1, q4, #1
|
|
224
|
+
vshl.u32 q2, q5, #8
|
|
225
|
+
vsri.u32 q1, q4, #32-1
|
|
226
|
+
vsri.u32 q2, q5, #32-8
|
|
227
|
+
.endm
|
|
228
|
+
|
|
229
|
+
@ ----------------------------------------------------------------------------
|
|
230
|
+
@
|
|
231
|
+
@ void Xoodoo_Permute_6rounds( void *state )
|
|
232
|
+
@
|
|
233
|
+
.global Xoodoo_Permute_6rounds
|
|
234
|
+
.type Xoodoo_Permute_6rounds, %function;
|
|
235
|
+
Xoodoo_Permute_6rounds:
|
|
236
|
+
vpush {q4-q5}
|
|
237
|
+
vldmia r0, {q0-q2}
|
|
238
|
+
adr r1, _rc6
|
|
239
|
+
mRound
|
|
240
|
+
mRound
|
|
241
|
+
mRound
|
|
242
|
+
mRound
|
|
243
|
+
mRound
|
|
244
|
+
mRound
|
|
245
|
+
vstmia r0, {q0-q2}
|
|
246
|
+
vpop {q4-q5}
|
|
247
|
+
bx lr
|
|
248
|
+
.ltorg
|
|
249
|
+
.align 8
|
|
250
|
+
_rc12:
|
|
251
|
+
.quad 0x00000058
|
|
252
|
+
.quad 0x00000038
|
|
253
|
+
.quad 0x000003C0
|
|
254
|
+
.quad 0x000000D0
|
|
255
|
+
.quad 0x00000120
|
|
256
|
+
.quad 0x00000014
|
|
257
|
+
_rc6:
|
|
258
|
+
.quad 0x00000060
|
|
259
|
+
.quad 0x0000002C
|
|
260
|
+
.quad 0x00000380
|
|
261
|
+
.quad 0x000000F0
|
|
262
|
+
.quad 0x000001A0
|
|
263
|
+
.quad 0x00000012
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
@ ----------------------------------------------------------------------------
|
|
267
|
+
@
|
|
268
|
+
@ void Xoodoo_Permute_12rounds( void *state )
|
|
269
|
+
@
|
|
270
|
+
.global Xoodoo_Permute_12rounds
|
|
271
|
+
.type Xoodoo_Permute_12rounds, %function;
|
|
272
|
+
Xoodoo_Permute_12rounds:
|
|
273
|
+
vpush {q4-q5}
|
|
274
|
+
vldmia r0, {q0-q2}
|
|
275
|
+
adr r1, _rc12
|
|
276
|
+
mRound
|
|
277
|
+
mRound
|
|
278
|
+
mRound
|
|
279
|
+
mRound
|
|
280
|
+
mRound
|
|
281
|
+
mRound
|
|
282
|
+
mRound
|
|
283
|
+
mRound
|
|
284
|
+
mRound
|
|
285
|
+
mRound
|
|
286
|
+
mRound
|
|
287
|
+
mRound
|
|
288
|
+
vstmia r0, {q0-q2}
|
|
289
|
+
vpop {q4-q5}
|
|
290
|
+
bx lr
|
|
291
|
+
.align 8
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
.equ Xoofff_BlockSize , 3*4*4
|
|
295
|
+
|
|
296
|
+
@ ----------------------------------------------------------------------------
|
|
297
|
+
@
|
|
298
|
+
@ void Xoofff_AddIs(BitSequence *output, const BitSequence *input, BitLength bitLen)
|
|
299
|
+
.global Xoofff_AddIs
|
|
300
|
+
.type Xoofff_AddIs, %function;
|
|
301
|
+
Xoofff_AddIs:
|
|
302
|
+
subs r2, r2, #Xoofff_BlockSize*8
|
|
303
|
+
bcc Xoofff_AddIs_LessThanBlock
|
|
304
|
+
Xoofff_AddIs_BlockLoop:
|
|
305
|
+
vld1.32 {q0, q1}, [r1]!
|
|
306
|
+
vld1.32 {q2}, [r1]!
|
|
307
|
+
vld1.32 {q8, q9}, [r0]!
|
|
308
|
+
vld1.32 {q10}, [r0]!
|
|
309
|
+
veor.32 q8, q8, q0
|
|
310
|
+
sub r0, r0, #Xoofff_BlockSize
|
|
311
|
+
veor.32 q9, q9, q1
|
|
312
|
+
veor.32 q10, q10, q2
|
|
313
|
+
vst1.32 {q8, q9}, [r0]!
|
|
314
|
+
vst1.32 {q10}, [r0]!
|
|
315
|
+
subs r2, r2, #Xoofff_BlockSize*8
|
|
316
|
+
bcs Xoofff_AddIs_BlockLoop
|
|
317
|
+
Xoofff_AddIs_LessThanBlock:
|
|
318
|
+
adds r2, r2, #Xoofff_BlockSize*8
|
|
319
|
+
beq Xoofff_AddIs_Return
|
|
320
|
+
subs r2, r2, #16*8
|
|
321
|
+
bcc Xoofff_AddIs_LessThan16
|
|
322
|
+
Xoofff_AddIs_16Loop:
|
|
323
|
+
vld1.32 {q0}, [r1]!
|
|
324
|
+
vld1.32 {q1}, [r0]
|
|
325
|
+
veor.32 q1, q1, q0
|
|
326
|
+
vst1.32 {q1}, [r0]!
|
|
327
|
+
subs r2, r2, #16*8
|
|
328
|
+
bcs Xoofff_AddIs_16Loop
|
|
329
|
+
Xoofff_AddIs_LessThan16:
|
|
330
|
+
adds r2, r2, #16*8
|
|
331
|
+
beq Xoofff_AddIs_Return
|
|
332
|
+
subs r2, r2, #4*8
|
|
333
|
+
bcc Xoofff_AddIs_LessThan4
|
|
334
|
+
Xoofff_AddIs_4Loop:
|
|
335
|
+
ldr r3, [r0]
|
|
336
|
+
ldr r12, [r1], #4
|
|
337
|
+
eors r3, r3, r12
|
|
338
|
+
str r3, [r0], #4
|
|
339
|
+
subs r2, r2, #4*8
|
|
340
|
+
bcs Xoofff_AddIs_4Loop
|
|
341
|
+
Xoofff_AddIs_LessThan4:
|
|
342
|
+
adds r2, r2, #4*8
|
|
343
|
+
beq Xoofff_AddIs_Return
|
|
344
|
+
subs r2, r2, #8
|
|
345
|
+
bcc Xoofff_AddIs_LessThan1
|
|
346
|
+
Xoofff_AddIs_1Loop:
|
|
347
|
+
ldrb r3, [r0]
|
|
348
|
+
ldrb r12, [r1], #1
|
|
349
|
+
eors r3, r3, r12
|
|
350
|
+
strb r3, [r0], #1
|
|
351
|
+
subs r2, r2, #8
|
|
352
|
+
bcs Xoofff_AddIs_1Loop
|
|
353
|
+
Xoofff_AddIs_LessThan1:
|
|
354
|
+
adds r2, r2, #8
|
|
355
|
+
beq Xoofff_AddIs_Return
|
|
356
|
+
ldrb r3, [r0]
|
|
357
|
+
ldrb r12, [r1]
|
|
358
|
+
movs r1, #1
|
|
359
|
+
eors r3, r3, r12
|
|
360
|
+
lsls r1, r1, r2
|
|
361
|
+
subs r1, r1, #1
|
|
362
|
+
ands r3, r3, r1
|
|
363
|
+
strb r3, [r0]
|
|
364
|
+
Xoofff_AddIs_Return:
|
|
365
|
+
bx lr
|
|
366
|
+
.align 8
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
@ ----------------------------------------------------------------------------
|
|
370
|
+
@
|
|
371
|
+
@ size_t Xoofff_CompressFastLoop(unsigned char *kRoll, unsigned char *xAccu, const unsigned char *input, size_t length)
|
|
372
|
+
@
|
|
373
|
+
.global Xoofff_CompressFastLoop
|
|
374
|
+
.type Xoofff_CompressFastLoop, %function;
|
|
375
|
+
Xoofff_CompressFastLoop:
|
|
376
|
+
subs r3, #Xoofff_BlockSize @ length must be greater than block size
|
|
377
|
+
push {r4,r5,r6,lr}
|
|
378
|
+
vpush {q4-q7}
|
|
379
|
+
mov r4, r0 @ kRoll
|
|
380
|
+
mov r5, r1 @ xAccu
|
|
381
|
+
mov r6, r2 @ initial input
|
|
382
|
+
vld1.32 {q6,q7}, [r0]! @ get kRoll
|
|
383
|
+
vld1.32 {q8}, [r0]
|
|
384
|
+
vld1.32 {q9,q10}, [r1]! @ get xAccu
|
|
385
|
+
vld1.32 {q11}, [r1]
|
|
386
|
+
Xoofff_CompressFastLoop_Loop:
|
|
387
|
+
vld1.32 {q0,q1}, [r2]! @ get input
|
|
388
|
+
adr r1, _rc6b
|
|
389
|
+
vld1.32 {q2}, [r2]!
|
|
390
|
+
veor.32 q0, q0, q6
|
|
391
|
+
veor.32 q1, q1, q7
|
|
392
|
+
veor.32 q2, q2, q8
|
|
393
|
+
mRound @ permutation
|
|
394
|
+
mRound
|
|
395
|
+
mRound
|
|
396
|
+
mRound
|
|
397
|
+
mRound
|
|
398
|
+
mRound
|
|
399
|
+
veor.32 q9, q9, q0 @ add into xAccu
|
|
400
|
+
veor.32 q10, q10, q1
|
|
401
|
+
veor.32 q11, q11, q2
|
|
402
|
+
vshl.u32 q3, q6, #13 @ roll-c kRoll
|
|
403
|
+
veor.32 q3, q3, q6
|
|
404
|
+
vshl.u32 q4, q7, #3
|
|
405
|
+
vsri.u32 q4, q7, #32-3
|
|
406
|
+
veor.32 q3, q3, q4
|
|
407
|
+
vext.32 q3, q6, q3, #1
|
|
408
|
+
vmov q6, q7
|
|
409
|
+
vmov q7, q8
|
|
410
|
+
vmov q8, q3
|
|
411
|
+
subs r3, #Xoofff_BlockSize
|
|
412
|
+
bcs Xoofff_CompressFastLoop_Loop
|
|
413
|
+
vst1.32 {q6,q7}, [r4]! @ save kRoll
|
|
414
|
+
vst1.32 {q8}, [r4]
|
|
415
|
+
vst1.32 {q9,q10}, [r5]! @ save xAccu
|
|
416
|
+
vst1.32 {q11}, [r5]
|
|
417
|
+
sub r0, r2, r6 @ return number of bytes processed
|
|
418
|
+
vpop {q4-q7}
|
|
419
|
+
pop {r4,r5,r6,pc}
|
|
420
|
+
.ltorg
|
|
421
|
+
.align 8
|
|
422
|
+
_rc6b:
|
|
423
|
+
.quad 0x00000060
|
|
424
|
+
.quad 0x0000002C
|
|
425
|
+
.quad 0x00000380
|
|
426
|
+
.quad 0x000000F0
|
|
427
|
+
.quad 0x000001A0
|
|
428
|
+
.quad 0x00000012
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
@ ----------------------------------------------------------------------------
|
|
432
|
+
@
|
|
433
|
+
@ size_t Xoofff_ExpandFastLoop(unsigned char *yAccu, const unsigned char *kRoll, unsigned char *output, size_t length)
|
|
434
|
+
@
|
|
435
|
+
.global Xoofff_ExpandFastLoop
|
|
436
|
+
.type Xoofff_ExpandFastLoop, %function;
|
|
437
|
+
Xoofff_ExpandFastLoop:
|
|
438
|
+
subs r3, #Xoofff_BlockSize @ length must be greater than block size
|
|
439
|
+
push {r4,r5,r6,lr}
|
|
440
|
+
vpush {q4-q7}
|
|
441
|
+
mov r5, r0 @ yAccu
|
|
442
|
+
mov r6, r2 @ initial output
|
|
443
|
+
vld1.32 {q6,q7}, [r1]! @ get kRoll
|
|
444
|
+
vld1.32 {q8}, [r1]
|
|
445
|
+
vld1.32 {q9,q10}, [r0]! @ get yAccu
|
|
446
|
+
vld1.32 {q11}, [r0]
|
|
447
|
+
Xoofff_ExpandFastLoop_Loop:
|
|
448
|
+
vmov q0, q9
|
|
449
|
+
vmov q1, q10
|
|
450
|
+
vmov q2, q11
|
|
451
|
+
adr r1, _rc6b
|
|
452
|
+
mRound @ permutation
|
|
453
|
+
mRound
|
|
454
|
+
mRound
|
|
455
|
+
mRound
|
|
456
|
+
mRound
|
|
457
|
+
mRound
|
|
458
|
+
veor.32 q0, q0, q6 @ add k and extract
|
|
459
|
+
veor.32 q1, q1, q7
|
|
460
|
+
veor.32 q2, q2, q8
|
|
461
|
+
vst1.32 {q0,q1}, [r2]! @ save output
|
|
462
|
+
vst1.32 {q2}, [r2]!
|
|
463
|
+
vshl.u32 q3, q9, #5 @ roll-e yAccu
|
|
464
|
+
vsri.u32 q3, q9, #32-5
|
|
465
|
+
vshl.u32 q4, q10, #13
|
|
466
|
+
vsri.u32 q4, q10, #32-13
|
|
467
|
+
veor.32 q3, q3, q4
|
|
468
|
+
vand.32 q4, q10, q11
|
|
469
|
+
veor.32 q3, q3, q4
|
|
470
|
+
vmov.i32 q4, #7
|
|
471
|
+
veor.32 q3, q3, q4
|
|
472
|
+
vext.32 q3, q9, q3, #1
|
|
473
|
+
vmov q9, q10
|
|
474
|
+
vmov q10, q11
|
|
475
|
+
vmov q11, q3
|
|
476
|
+
subs r3, #Xoofff_BlockSize
|
|
477
|
+
bcs Xoofff_ExpandFastLoop_Loop
|
|
478
|
+
vst1.32 {q9,q10}, [r5]! @ save yAccu
|
|
479
|
+
sub r0, r2, r6 @ return number of bytes processed
|
|
480
|
+
vst1.32 {q11}, [r5]
|
|
481
|
+
vpop {q4-q7}
|
|
482
|
+
pop {r4,r5,r6,pc}
|
|
483
|
+
.align 8
|
|
484
|
+
|
|
485
|
+
|