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,217 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
Keyak, designed by Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
|
|
6
|
+
|
|
7
|
+
Implementation by Ronny Van Keer, hereby denoted as "the implementer".
|
|
8
|
+
|
|
9
|
+
For more information, feedback or questions, please refer to the Keccak Team website:
|
|
10
|
+
https://keccak.team/
|
|
11
|
+
|
|
12
|
+
To the extent possible under law, the implementer has waived all copyright
|
|
13
|
+
and related or neighboring rights to the source code in this file.
|
|
14
|
+
http://creativecommons.org/publicdomain/zero/1.0/
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#ifndef _Keyakv2_h_
|
|
18
|
+
#define _Keyakv2_h_
|
|
19
|
+
|
|
20
|
+
#include <string.h>
|
|
21
|
+
#include "align.h"
|
|
22
|
+
#include "config.h"
|
|
23
|
+
|
|
24
|
+
/* For the documentation, please follow the link: */
|
|
25
|
+
/* #include "Keyak-documentation.h" */
|
|
26
|
+
|
|
27
|
+
#define Capacity (256/8)
|
|
28
|
+
#define TagLength (128/8)
|
|
29
|
+
|
|
30
|
+
#define Pistons_Phase_Fresh 0x00
|
|
31
|
+
#define Pistons_Phase_Running 0x01
|
|
32
|
+
#define Pistons_Phase_Full 0x02
|
|
33
|
+
#define Pistons_Phase_Done 0x04
|
|
34
|
+
|
|
35
|
+
#define Engine_Phase_Fresh 0x00
|
|
36
|
+
#define Engine_Phase_Crypting 0x01
|
|
37
|
+
#define Engine_Phase_Crypted 0x02
|
|
38
|
+
#define Engine_Phase_InjectOnly 0x04
|
|
39
|
+
#define Engine_Phase_EndOfMessage 0x08
|
|
40
|
+
|
|
41
|
+
#define Motorist_Phase_Ready 0x01
|
|
42
|
+
#define Motorist_Phase_Riding 0x02
|
|
43
|
+
#define Motorist_Phase_Failed 0x04
|
|
44
|
+
|
|
45
|
+
#define Motorist_Wrap_LastCryptData 1
|
|
46
|
+
#define Motorist_Wrap_LastMetaData 2
|
|
47
|
+
#define Motorist_Wrap_LastCryptAndMeta (Motorist_Wrap_LastCryptData|Motorist_Wrap_LastMetaData)
|
|
48
|
+
|
|
49
|
+
/* ------------------------------------------------------------------------ */
|
|
50
|
+
|
|
51
|
+
#define Atom_Error (-1)
|
|
52
|
+
#define Atom_Success 0
|
|
53
|
+
|
|
54
|
+
#define Atom_False 0
|
|
55
|
+
#define Atom_True 1
|
|
56
|
+
|
|
57
|
+
#ifdef UT_OUTPUT
|
|
58
|
+
|
|
59
|
+
#define XKCP_DeclarePistonsStructure(prefix, size, alignment) \
|
|
60
|
+
ALIGN(alignment) typedef struct prefix##_PistonsInstanceStruct { \
|
|
61
|
+
unsigned char state[size]; \
|
|
62
|
+
unsigned char indexCrypt; /* indexes only used by parallelized instances */ \
|
|
63
|
+
unsigned char indexInject; \
|
|
64
|
+
unsigned char offsetCrypt; \
|
|
65
|
+
unsigned char offsetInject; \
|
|
66
|
+
unsigned char phaseCrypt; \
|
|
67
|
+
unsigned char phaseInject; \
|
|
68
|
+
ALIGN(alignment) unsigned char stateShadow[size]; \
|
|
69
|
+
FILE * file; \
|
|
70
|
+
} prefix##_Pistons_Instance;
|
|
71
|
+
|
|
72
|
+
#else
|
|
73
|
+
|
|
74
|
+
#define XKCP_DeclarePistonsStructure(prefix, size, alignment) \
|
|
75
|
+
ALIGN(alignment) typedef struct prefix##_PistonsInstanceStruct { \
|
|
76
|
+
unsigned char state[size]; \
|
|
77
|
+
unsigned char indexCrypt; /* indexes only used by parallelized instances */ \
|
|
78
|
+
unsigned char indexInject; \
|
|
79
|
+
unsigned char offsetCrypt; \
|
|
80
|
+
unsigned char offsetInject; \
|
|
81
|
+
unsigned char phaseCrypt; \
|
|
82
|
+
unsigned char phaseInject; \
|
|
83
|
+
} prefix##_Pistons_Instance;
|
|
84
|
+
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
#define XKCP_DeclareEngineStructure(prefix, size, alignment) \
|
|
89
|
+
ALIGN(alignment) typedef struct prefix##_EngineInstanceStruct { \
|
|
90
|
+
prefix##_Pistons_Instance pistons; \
|
|
91
|
+
unsigned char phase; \
|
|
92
|
+
unsigned char tagEndIndex; \
|
|
93
|
+
unsigned char tagEndIndexNext; /* only used by parallelized instances */ \
|
|
94
|
+
} prefix##_Engine_Instance;
|
|
95
|
+
|
|
96
|
+
#define XKCP_DeclareMotoristStructure(prefix, size, alignment) \
|
|
97
|
+
ALIGN(alignment) typedef struct prefix##_MotoristInstanceStruct { \
|
|
98
|
+
prefix##_Engine_Instance engine; \
|
|
99
|
+
unsigned char phase; \
|
|
100
|
+
unsigned char lastFlag; \
|
|
101
|
+
} prefix##_Motorist_Instance;
|
|
102
|
+
|
|
103
|
+
#define XKCP_DeclareMotoristFunctions(prefix) \
|
|
104
|
+
int prefix##_Motorist_Initialize(prefix##_Motorist_Instance *instance); \
|
|
105
|
+
int prefix##_Motorist_StartEngine(prefix##_Motorist_Instance *instance, const unsigned char * SUV, size_t SUVlen, int tagFlag, unsigned char * tag, int unwrapFlag, int forgetFlag); \
|
|
106
|
+
int prefix##_Motorist_Wrap(prefix##_Motorist_Instance *instance, const unsigned char *input, size_t dataSizeInBytes, unsigned char *output, const unsigned char * AD, size_t ADlen, unsigned char * tag, int unwrapFlag, int forgetFlag, int lastFlags, size_t *processedIlen, size_t *processedAlen);
|
|
107
|
+
|
|
108
|
+
/* ------------------------------------------------------------------------ */
|
|
109
|
+
|
|
110
|
+
#define XKCP_DeclareKeyakStructure(prefix, prefixMotorist, alignment) \
|
|
111
|
+
ALIGN(alignment) typedef struct prefix##KeyakInstanceStruct { \
|
|
112
|
+
prefixMotorist##_Motorist_Instance motorist; \
|
|
113
|
+
} prefix##Keyak_Instance;
|
|
114
|
+
|
|
115
|
+
#define XKCP_DeclareKeyakFunctions(prefix) \
|
|
116
|
+
int prefix##Keyak_Initialize(prefix##Keyak_Instance *instance, const unsigned char *key, unsigned int keySizeInBytes, const unsigned char *nonce, unsigned int nonceSizeInBytes, int tagFlag, unsigned char * tag, int unwrapFlag, int forgetFlag); \
|
|
117
|
+
int prefix##Keyak_Wrap(prefix##Keyak_Instance *instance, const unsigned char *input, unsigned char *output, size_t dataSizeInBytes, const unsigned char * AD, size_t ADlen, unsigned char * tag, int unwrapFlag, int forgetFlag ); \
|
|
118
|
+
int prefix##Keyak_WrapPartial(prefix##Keyak_Instance *instance, const unsigned char *input, unsigned char *output, size_t dataSizeInBytes, const unsigned char * AD, size_t ADlen, unsigned char * tag, int unwrapFlag, int forgetFlag, int lastFlags, size_t *processedIlen, size_t *processedAlen);
|
|
119
|
+
|
|
120
|
+
/* ------------------------------------------------------------------------ */
|
|
121
|
+
|
|
122
|
+
/** Length of the River Keyak key pack. */
|
|
123
|
+
#define RiverKeyak_Lk 36
|
|
124
|
+
|
|
125
|
+
/** Maximum nonce length for River Keyak. */
|
|
126
|
+
#define RiverKeyak_MaxNoncelength 58
|
|
127
|
+
|
|
128
|
+
#ifdef XKCP_has_KeccakP800
|
|
129
|
+
#include "KeccakP-800-SnP.h"
|
|
130
|
+
XKCP_DeclarePistonsStructure(KeyakWidth800, KeccakP800_stateSizeInBytes, KeccakP800_stateAlignment)
|
|
131
|
+
XKCP_DeclareEngineStructure(KeyakWidth800, KeccakP800_stateSizeInBytes, KeccakP800_stateAlignment)
|
|
132
|
+
XKCP_DeclareMotoristStructure(KeyakWidth800, KeccakP800_stateSizeInBytes, KeccakP800_stateAlignment)
|
|
133
|
+
XKCP_DeclareMotoristFunctions(KeyakWidth800)
|
|
134
|
+
XKCP_DeclareKeyakStructure(River, KeyakWidth800, KeccakP800_stateAlignment)
|
|
135
|
+
XKCP_DeclareKeyakFunctions(River)
|
|
136
|
+
#define XKCP_has_RiverKeyak
|
|
137
|
+
#endif
|
|
138
|
+
|
|
139
|
+
/* ------------------------------------------------------------------------ */
|
|
140
|
+
|
|
141
|
+
/** Length of the Lake Keyak key pack. */
|
|
142
|
+
#define LakeKeyak_Lk 40
|
|
143
|
+
|
|
144
|
+
/** Maximum nonce length for Lake Keyak. */
|
|
145
|
+
#define LakeKeyak_MaxNoncelength 150
|
|
146
|
+
|
|
147
|
+
#ifdef XKCP_has_KeccakP1600
|
|
148
|
+
#include "KeccakP-1600-SnP.h"
|
|
149
|
+
XKCP_DeclarePistonsStructure(KeyakWidth1600, KeccakP1600_stateSizeInBytes, KeccakP1600_stateAlignment)
|
|
150
|
+
XKCP_DeclareEngineStructure(KeyakWidth1600, KeccakP1600_stateSizeInBytes, KeccakP1600_stateAlignment)
|
|
151
|
+
XKCP_DeclareMotoristStructure(KeyakWidth1600, KeccakP1600_stateSizeInBytes, KeccakP1600_stateAlignment)
|
|
152
|
+
XKCP_DeclareMotoristFunctions(KeyakWidth1600)
|
|
153
|
+
XKCP_DeclareKeyakStructure(Lake, KeyakWidth1600, KeccakP1600_stateAlignment)
|
|
154
|
+
XKCP_DeclareKeyakFunctions(Lake)
|
|
155
|
+
#define XKCP_has_LakeKeyak
|
|
156
|
+
#endif
|
|
157
|
+
|
|
158
|
+
/* ------------------------------------------------------------------------ */
|
|
159
|
+
|
|
160
|
+
/** Length of the Sea Keyak key pack. */
|
|
161
|
+
#define SeaKeyak_Lk 40
|
|
162
|
+
|
|
163
|
+
/** Maximum nonce length for Sea Keyak. */
|
|
164
|
+
#define SeaKeyak_MaxNoncelength 150
|
|
165
|
+
|
|
166
|
+
#ifdef XKCP_has_KeccakP1600times2
|
|
167
|
+
#include "KeccakP-1600-times2-SnP.h"
|
|
168
|
+
XKCP_DeclarePistonsStructure(KeyakWidth1600times2, KeccakP1600times2_statesSizeInBytes, KeccakP1600times2_statesAlignment)
|
|
169
|
+
XKCP_DeclareEngineStructure(KeyakWidth1600times2, KeccakP1600times2_statesSizeInBytes, KeccakP1600times2_statesAlignment)
|
|
170
|
+
XKCP_DeclareMotoristStructure(KeyakWidth1600times2, KeccakP1600times2_statesSizeInBytes, KeccakP1600times2_statesAlignment)
|
|
171
|
+
XKCP_DeclareMotoristFunctions(KeyakWidth1600times2)
|
|
172
|
+
XKCP_DeclareKeyakStructure(Sea, KeyakWidth1600times2, KeccakP1600times2_statesAlignment)
|
|
173
|
+
XKCP_DeclareKeyakFunctions(Sea)
|
|
174
|
+
#define XKCP_has_SeaKeyak
|
|
175
|
+
#endif
|
|
176
|
+
|
|
177
|
+
/* ------------------------------------------------------------------------ */
|
|
178
|
+
|
|
179
|
+
/** Length of the Ocean Keyak key pack. */
|
|
180
|
+
#define OceanKeyak_Lk 40
|
|
181
|
+
|
|
182
|
+
/** Maximum nonce length for Ocean Keyak. */
|
|
183
|
+
#define OceanKeyak_MaxNoncelength 150
|
|
184
|
+
|
|
185
|
+
#ifdef XKCP_has_KeccakP1600times4
|
|
186
|
+
#include "KeccakP-1600-times4-SnP.h"
|
|
187
|
+
XKCP_DeclarePistonsStructure(KeyakWidth1600times4, KeccakP1600times4_statesSizeInBytes, KeccakP1600times4_statesAlignment)
|
|
188
|
+
XKCP_DeclareEngineStructure(KeyakWidth1600times4, KeccakP1600times4_statesSizeInBytes, KeccakP1600times4_statesAlignment)
|
|
189
|
+
XKCP_DeclareMotoristStructure(KeyakWidth1600times4, KeccakP1600times4_statesSizeInBytes, KeccakP1600times4_statesAlignment)
|
|
190
|
+
XKCP_DeclareMotoristFunctions(KeyakWidth1600times4)
|
|
191
|
+
XKCP_DeclareKeyakStructure(Ocean, KeyakWidth1600times4, KeccakP1600times4_statesAlignment)
|
|
192
|
+
XKCP_DeclareKeyakFunctions(Ocean)
|
|
193
|
+
#define XKCP_has_OceanKeyak
|
|
194
|
+
#endif
|
|
195
|
+
|
|
196
|
+
/* ------------------------------------------------------------------------ */
|
|
197
|
+
|
|
198
|
+
/** Length of the Lunar Keyak key pack. */
|
|
199
|
+
#define LunarKeyak_Lk 40
|
|
200
|
+
|
|
201
|
+
/** Maximum nonce length for Lunar Keyak. */
|
|
202
|
+
#define LunarKeyak_MaxNoncelength 150
|
|
203
|
+
|
|
204
|
+
#ifdef XKCP_has_KeccakP1600times8
|
|
205
|
+
#include "KeccakP-1600-times8-SnP.h"
|
|
206
|
+
XKCP_DeclarePistonsStructure(KeyakWidth1600times8, KeccakP1600times8_statesSizeInBytes, KeccakP1600times8_statesAlignment)
|
|
207
|
+
XKCP_DeclareEngineStructure(KeyakWidth1600times8, KeccakP1600times8_statesSizeInBytes, KeccakP1600times8_statesAlignment)
|
|
208
|
+
XKCP_DeclareMotoristStructure(KeyakWidth1600times8, KeccakP1600times8_statesSizeInBytes, KeccakP1600times8_statesAlignment)
|
|
209
|
+
XKCP_DeclareMotoristFunctions(KeyakWidth1600times8)
|
|
210
|
+
XKCP_DeclareKeyakStructure(Lunar, KeyakWidth1600times8, KeccakP1600times8_statesAlignment)
|
|
211
|
+
XKCP_DeclareKeyakFunctions(Lunar)
|
|
212
|
+
#define XKCP_has_LunarKeyak
|
|
213
|
+
#endif
|
|
214
|
+
|
|
215
|
+
/* ------------------------------------------------------------------------ */
|
|
216
|
+
|
|
217
|
+
#endif
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
Keyak, designed by Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer.
|
|
6
|
+
|
|
7
|
+
Implementation by Ronny Van Keer, hereby denoted as "the implementer".
|
|
8
|
+
|
|
9
|
+
For more information, feedback or questions, please refer to the Keccak Team website:
|
|
10
|
+
https://keccak.team/
|
|
11
|
+
|
|
12
|
+
To the extent possible under law, the implementer has waived all copyright
|
|
13
|
+
and related or neighboring rights to the source code in this file.
|
|
14
|
+
http://creativecommons.org/publicdomain/zero/1.0/
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#define JOIN0(a, b) a ## b
|
|
18
|
+
#define JOIN(a, b) JOIN0(a, b)
|
|
19
|
+
|
|
20
|
+
#define Keyak_Instance JOIN(prefix, Keyak_Instance)
|
|
21
|
+
#define Keyak_Initialize JOIN(prefix, Keyak_Initialize)
|
|
22
|
+
#define Keyak_Wrap JOIN(prefix, Keyak_Wrap)
|
|
23
|
+
#define Keyak_WrapPartial JOIN(prefix, Keyak_WrapPartial)
|
|
24
|
+
#define Lk JOIN(prefix, Keyak_Lk)
|
|
25
|
+
#define MaxNoncelength JOIN(prefix, Keyak_MaxNoncelength)
|
|
26
|
+
|
|
27
|
+
#define Motorist_Instance JOIN(prefixMotorist, _Motorist_Instance)
|
|
28
|
+
#define Motorist_Initialize JOIN(prefixMotorist, _Motorist_Initialize)
|
|
29
|
+
#define Motorist_StartEngine JOIN(prefixMotorist, _Motorist_StartEngine)
|
|
30
|
+
#define Motorist_Wrap JOIN(prefixMotorist, _Motorist_Wrap)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
int Keyak_Initialize(Keyak_Instance *instance,
|
|
34
|
+
const unsigned char *key, unsigned int keySizeInBytes,
|
|
35
|
+
const unsigned char *nonce, unsigned int nonceSizeInBytes,
|
|
36
|
+
int tagFlag, unsigned char * tag,
|
|
37
|
+
int unwrapFlag, int forgetFlag)
|
|
38
|
+
{
|
|
39
|
+
unsigned char suv[Lk+MaxNoncelength];
|
|
40
|
+
|
|
41
|
+
if ( (keySizeInBytes > (Lk-2)) || ((keySizeInBytes + nonceSizeInBytes) > (Lk-2+MaxNoncelength)) )
|
|
42
|
+
return ( -1 );
|
|
43
|
+
if ( Motorist_Initialize( &instance->motorist ) != 0 )
|
|
44
|
+
return ( -1 );
|
|
45
|
+
|
|
46
|
+
/* Compose SUV */
|
|
47
|
+
suv[0] = Lk;
|
|
48
|
+
memcpy( &suv[1], key, keySizeInBytes );
|
|
49
|
+
suv[1+keySizeInBytes] = 1;
|
|
50
|
+
memset( &suv[1+keySizeInBytes+1], 0, Lk - (1+keySizeInBytes+1) );
|
|
51
|
+
memcpy( &suv[Lk], nonce, nonceSizeInBytes );
|
|
52
|
+
|
|
53
|
+
return ( Motorist_StartEngine( &instance->motorist, suv, Lk + nonceSizeInBytes, tagFlag, tag, unwrapFlag, forgetFlag) );
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
int Keyak_Wrap(Keyak_Instance *instance, const unsigned char *input, unsigned char *output, size_t dataSizeInBytes,
|
|
57
|
+
const unsigned char * AD, size_t ADlen, unsigned char * tag, int unwrapFlag, int forgetFlag )
|
|
58
|
+
{
|
|
59
|
+
size_t processedI, processedMD;
|
|
60
|
+
|
|
61
|
+
return ( Motorist_Wrap( &instance->motorist, input, dataSizeInBytes, output, AD, ADlen, tag, unwrapFlag, forgetFlag, Motorist_Wrap_LastCryptAndMeta, &processedI, &processedMD ) );
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
int Keyak_WrapPartial( Keyak_Instance *instance, const unsigned char *input, unsigned char *output, size_t dataSizeInBytes,
|
|
65
|
+
const unsigned char * AD, size_t ADlen, unsigned char * tag, int unwrapFlag, int forgetFlag,
|
|
66
|
+
int lastFlags, size_t *processedIlen, size_t *processedAlen)
|
|
67
|
+
{
|
|
68
|
+
return ( Motorist_Wrap( &instance->motorist, input, dataSizeInBytes, output, AD, ADlen, tag, unwrapFlag, forgetFlag, lastFlags, processedIlen, processedAlen ) );
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
#undef Keyak_Instance
|
|
72
|
+
#undef Keyak_Initialize
|
|
73
|
+
#undef Keyak_Wrap
|
|
74
|
+
#undef Keyak_WrapPartial
|
|
75
|
+
#undef Lk
|
|
76
|
+
#undef MaxNoncelength
|
|
77
|
+
|
|
78
|
+
#undef Motorist_Instance
|
|
79
|
+
#undef Motorist_Initialize
|
|
80
|
+
#undef Motorist_StartEngine
|
|
81
|
+
#undef Motorist_Wrap
|