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,247 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
Kravatte, designed by Guido Bertoni, Joan Daemen, Seth Hoffert, 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 _KravatteModes_h_
|
|
18
|
+
#define _KravatteModes_h_
|
|
19
|
+
|
|
20
|
+
#include "config.h"
|
|
21
|
+
#ifdef XKCP_has_KeccakP1600
|
|
22
|
+
|
|
23
|
+
#include <stddef.h>
|
|
24
|
+
#include <stdint.h>
|
|
25
|
+
#include "align.h"
|
|
26
|
+
#include "Kravatte.h"
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Kravatte-SANE Tag Length in bytes.
|
|
30
|
+
*/
|
|
31
|
+
#define Kravatte_SANE_TagLength 16
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Definition of the constant l.
|
|
35
|
+
*/
|
|
36
|
+
#define Kravatte_SANE_l 8
|
|
37
|
+
|
|
38
|
+
typedef struct {
|
|
39
|
+
Kravatte_Instance kravatte;
|
|
40
|
+
unsigned int e;
|
|
41
|
+
} Kravatte_SANE_Instance;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Function to initialize a Kravatte SANE instance with given key and nonce.
|
|
46
|
+
* @param kvInstance Pointer to the instance to be initialized.
|
|
47
|
+
* @param Key Pointer to the key (K).
|
|
48
|
+
* @param KeyBitLen The length of the key in bits.
|
|
49
|
+
* @param Nonce Pointer to the nonce (N).
|
|
50
|
+
* @param NonceBitLen The length of the nonce in bits.
|
|
51
|
+
* @param tag The buffer where to store the tag.
|
|
52
|
+
* This buffer must be minimum Kravatte_SANE_TagLength bytes long.
|
|
53
|
+
* @return 0 if successful, 1 otherwise.
|
|
54
|
+
*/
|
|
55
|
+
int Kravatte_SANE_Initialize(Kravatte_SANE_Instance *kvInstance, const BitSequence *Key, BitLength KeyBitLen,
|
|
56
|
+
const BitSequence *Nonce, BitLength NonceBitLen, unsigned char *tag);
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Function to wrap plaintext into ciphertext.
|
|
60
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_SANE_Initialize().
|
|
61
|
+
* @param plaintext Pointer to plaintext data to wrap.
|
|
62
|
+
* @param ciphertext Pointer to buffer where the full wrapped data will be stored.
|
|
63
|
+
* The ciphertext buffer must not overlap plaintext.
|
|
64
|
+
* @param dataBitLen The size of the plaintext/ciphertext data.
|
|
65
|
+
* @param AD Pointer to the Associated Data.
|
|
66
|
+
* @param ADBitLen The number of bytes provided in the Associated Data.
|
|
67
|
+
* @param tag The buffer where to store the tag.
|
|
68
|
+
* This buffer must be minimum Kravatte_SANE_TagLength bytes long.
|
|
69
|
+
* @return 0 if successful, 1 otherwise.
|
|
70
|
+
*/
|
|
71
|
+
int Kravatte_SANE_Wrap(Kravatte_SANE_Instance *kvInstance, const BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
|
|
72
|
+
const BitSequence *AD, BitLength ADBitLen, unsigned char *tag);
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Function to unwrap ciphertext into plaintext.
|
|
76
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_SANE_Initialize().
|
|
77
|
+
* @param ciphertext Pointer to ciphertext data to unwrap.
|
|
78
|
+
* @param plaintext Pointer to buffer where the full unwrapped data will be stored.
|
|
79
|
+
* The plaintext buffer must not overlap ciphertext.
|
|
80
|
+
* @param dataBitLen The size of the ciphertext/plaintext data.
|
|
81
|
+
* @param AD Pointer to the Associated Data.
|
|
82
|
+
* @param ADBitLen The number of bytes provided in the Associated Data.
|
|
83
|
+
* @param tag The buffer where to read the tag to check (when lastFlag is set).
|
|
84
|
+
* This buffer must be minimum Kravatte_SANE_TagLength bytes long.
|
|
85
|
+
* @return 0 if successful, 1 otherwise.
|
|
86
|
+
*/
|
|
87
|
+
int Kravatte_SANE_Unwrap(Kravatte_SANE_Instance *kvInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
|
|
88
|
+
const BitSequence *AD, BitLength ADBitLen, const unsigned char *tag);
|
|
89
|
+
|
|
90
|
+
/* ------------------------------------------------------------------------- */
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Kravatte-SANSE Tag Length in bytes.
|
|
94
|
+
*/
|
|
95
|
+
#define Kravatte_SANSE_TagLength 32
|
|
96
|
+
|
|
97
|
+
typedef struct {
|
|
98
|
+
Kravatte_Instance kravatte;
|
|
99
|
+
unsigned int e;
|
|
100
|
+
} Kravatte_SANSE_Instance;
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Function to initialize a Kravatte SANSE instance with given key and nonce.
|
|
105
|
+
* @param kvInstance Pointer to the instance to be initialized.
|
|
106
|
+
* @param Key Pointer to the key (K).
|
|
107
|
+
* @param KeyBitLen The length of the key in bits.
|
|
108
|
+
* @return 0 if successful, 1 otherwise.
|
|
109
|
+
*/
|
|
110
|
+
int Kravatte_SANSE_Initialize(Kravatte_SANSE_Instance *kvInstance, const BitSequence *Key, BitLength KeyBitLen);
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Function to wrap plaintext into ciphertext.
|
|
114
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_SANSE_Initialize().
|
|
115
|
+
* @param plaintext Pointer to plaintext data to wrap.
|
|
116
|
+
* @param ciphertext Pointer to buffer where the full wrapped data will be stored.
|
|
117
|
+
* The ciphertext buffer must not overlap plaintext.
|
|
118
|
+
* @param dataBitLen The size of the plaintext/ciphertext data.
|
|
119
|
+
* @param AD Pointer to the Associated Data.
|
|
120
|
+
* @param ADBitLen The number of bytes provided in the Associated Data.
|
|
121
|
+
* @param tag The buffer where to store the tag.
|
|
122
|
+
* This buffer must be minimum Kravatte_SANSE_TagLength bytes long.
|
|
123
|
+
* @return 0 if successful, 1 otherwise.
|
|
124
|
+
*/
|
|
125
|
+
int Kravatte_SANSE_Wrap(Kravatte_SANSE_Instance *kvInstance, const BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
|
|
126
|
+
const BitSequence *AD, BitLength ADBitLen, unsigned char *tag);
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Function to unwrap ciphertext into plaintext.
|
|
130
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_SANSE_Initialize().
|
|
131
|
+
* @param ciphertext Pointer to ciphertext data to unwrap.
|
|
132
|
+
* @param plaintext Pointer to buffer where the full unwrapped data will be stored.
|
|
133
|
+
* The plaintext buffer must not overlap ciphertext.
|
|
134
|
+
* @param dataBitLen The size of the ciphertext/plaintext data.
|
|
135
|
+
* @param AD Pointer to the Associated Data.
|
|
136
|
+
* @param ADBitLen The number of bytes provided in the Associated Data.
|
|
137
|
+
* @param tag The buffer where to read the tag to check (when lastFlag is set).
|
|
138
|
+
* This buffer must be minimum Kravatte_SANSE_TagLength bytes long.
|
|
139
|
+
* @return 0 if successful, 1 otherwise.
|
|
140
|
+
*/
|
|
141
|
+
int Kravatte_SANSE_Unwrap(Kravatte_SANSE_Instance *kvInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
|
|
142
|
+
const BitSequence *AD, BitLength ADBitLen, const unsigned char *tag);
|
|
143
|
+
|
|
144
|
+
/* ------------------------------------------------------------------------- */
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Definition of the constant l, used to split the input into two parts.
|
|
148
|
+
* The left part of the input will be a multiple of l bits.
|
|
149
|
+
*/
|
|
150
|
+
#define Kravatte_WBC_l 8
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Definition of the constant b block length.
|
|
154
|
+
*/
|
|
155
|
+
#define Kravatte_WBC_b (SnP_widthInBytes*8)
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Macro to initialize a Kravatte_WBC instance with given key.
|
|
159
|
+
* @param kvw Pointer to the instance to be initialized.
|
|
160
|
+
* @param Key Pointer to the key (K).
|
|
161
|
+
* @param KeyBitLen The length of the key in bits.
|
|
162
|
+
* @return 0 if successful, 1 otherwise.
|
|
163
|
+
*/
|
|
164
|
+
#define Kravatte_WBC_Initialize(kvw, Key, KeyBitLen) Kravatte_MaskDerivation(kvw, Key, KeyBitLen)
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Function to encipher plaintext into ciphertext.
|
|
168
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
|
|
169
|
+
* @param plaintext Pointer to plaintext data to encipher.
|
|
170
|
+
* @param ciphertext Pointer to buffer where the enciphered data will be stored.
|
|
171
|
+
* The ciphertext buffer must not overlap plaintext.
|
|
172
|
+
* @param dataBitLen The size in bits of the plaintext/ciphertext data.
|
|
173
|
+
* @param W Pointer to the tweak W.
|
|
174
|
+
* @param WBitLen The number of bits provided in the tweak.
|
|
175
|
+
* @return 0 if successful, 1 otherwise.
|
|
176
|
+
*/
|
|
177
|
+
int Kravatte_WBC_Encipher(Kravatte_Instance *kvwInstance, const BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
|
|
178
|
+
const BitSequence *W, BitLength WBitLen);
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Function to decipher ciphertext into plaintext.
|
|
182
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
|
|
183
|
+
* @param ciphertext Pointer to ciphertext data to decipher.
|
|
184
|
+
* @param plaintext Pointer to buffer where the deciphered data will be stored.
|
|
185
|
+
* The plaintext buffer must not overlap ciphertext.
|
|
186
|
+
* @param dataBitLen The size in bits of the plaintext/ciphertext data.
|
|
187
|
+
* @param W Pointer to the tweak W.
|
|
188
|
+
* @param WBitLen The number of bits provided in the tweak.
|
|
189
|
+
* @return 0 if successful, 1 otherwise.
|
|
190
|
+
*/
|
|
191
|
+
int Kravatte_WBC_Decipher(Kravatte_Instance *kvwInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
|
|
192
|
+
const BitSequence *W, BitLength WBitLen);
|
|
193
|
+
|
|
194
|
+
/* ------------------------------------------------------------------------- */
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Definition of the constant t, expansion length (in bits).
|
|
198
|
+
*/
|
|
199
|
+
#define Kravatte_WBCAE_t 128
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Macro to initialize a Kravatte_WBC instance with given key.
|
|
203
|
+
* @param kvw Pointer to the instance to be initialized.
|
|
204
|
+
* @param Key Pointer to the key (K).
|
|
205
|
+
* @param KeyBitLen The length of the key in bits.
|
|
206
|
+
* @return 0 if successful, 1 otherwise.
|
|
207
|
+
*/
|
|
208
|
+
#define Kravatte_WBCAE_Initialize(kvw, Key, KeyBitLen) Kravatte_MaskDerivation(kvw, Key, KeyBitLen)
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Function to encipher plaintext into ciphertext.
|
|
212
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
|
|
213
|
+
* @param plaintext Pointer to plaintext data to encipher.
|
|
214
|
+
* The last ::Kravatte_WBCAE_t bits of the buffer will be overwritten with zeros.
|
|
215
|
+
* @param ciphertext Pointer to buffer where the enciphered data will be stored.
|
|
216
|
+
* The ciphertext buffer must not overlap plaintext.
|
|
217
|
+
* Ciphertext will be ::Kravatte_WBCAE_t bits longer than plaintext.
|
|
218
|
+
* @param dataBitLen The size in bits of the plaintext data.
|
|
219
|
+
* Plaintext and ciphertext buffers must be ::Kravatte_WBCAE_t bits longer than dataBitLen.
|
|
220
|
+
* @param AD Pointer to the metadata AD.
|
|
221
|
+
* @param ADBitLen The number of bits provided in the metadata.
|
|
222
|
+
* @return 0 if successful, 1 otherwise.
|
|
223
|
+
*/
|
|
224
|
+
int Kravatte_WBCAE_Encipher(Kravatte_Instance *kvwInstance, BitSequence *plaintext, BitSequence *ciphertext, BitLength dataBitLen,
|
|
225
|
+
const BitSequence *AD, BitLength ADBitLen);
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Function to decipher ciphertext into plaintext.
|
|
229
|
+
* @param kvInstance Pointer to the instance initialized by Kravatte_WBC_Initialize().
|
|
230
|
+
* @param ciphertext Pointer to ciphertext data to decipher.
|
|
231
|
+
* Ciphertext is ::Kravatte_WBCAE_t bits longer than plaintext.
|
|
232
|
+
* @param plaintext Pointer to buffer where the deciphered data will be stored.
|
|
233
|
+
* The plaintext buffer must not overlap ciphertext.
|
|
234
|
+
* @param dataBitLen The size in bits of the plaintext data.
|
|
235
|
+
* Ciphertext and plaintext buffers must be ::Kravatte_WBCAE_t bits longer than dataBitLen.
|
|
236
|
+
* @param AD Pointer to the metadata AD.
|
|
237
|
+
* @param ADBitLen The number of bits provided in the metadata.
|
|
238
|
+
* @return 0 if successful, 1 otherwise.
|
|
239
|
+
*/
|
|
240
|
+
int Kravatte_WBCAE_Decipher(Kravatte_Instance *kvwInstance, const BitSequence *ciphertext, BitSequence *plaintext, BitLength dataBitLen,
|
|
241
|
+
const BitSequence *AD, BitLength ADBitLen);
|
|
242
|
+
|
|
243
|
+
#else
|
|
244
|
+
#error This requires an implementation of Keccak-p[1600]
|
|
245
|
+
#endif
|
|
246
|
+
|
|
247
|
+
#endif
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
Xoodyak, designed by Joan Daemen, Seth Hoffert, 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 _Cyclist_h_
|
|
18
|
+
#define _Cyclist_h_
|
|
19
|
+
|
|
20
|
+
#include <stdint.h>
|
|
21
|
+
#include "align.h"
|
|
22
|
+
|
|
23
|
+
#define Cyclist_ModeHash 1
|
|
24
|
+
#define Cyclist_ModeKeyed 2
|
|
25
|
+
|
|
26
|
+
#define Cyclist_PhaseDown 1
|
|
27
|
+
#define Cyclist_PhaseUp 2
|
|
28
|
+
|
|
29
|
+
#ifdef OUTPUT
|
|
30
|
+
|
|
31
|
+
#include <stdio.h>
|
|
32
|
+
|
|
33
|
+
#define KCP_DeclareCyclistStructure(prefix, size, alignment) \
|
|
34
|
+
ALIGN(alignment) typedef struct prefix##_CyclistInstanceStruct { \
|
|
35
|
+
uint8_t state[size]; \
|
|
36
|
+
uint8_t stateShadow[size]; \
|
|
37
|
+
FILE *file; \
|
|
38
|
+
unsigned int phase; \
|
|
39
|
+
unsigned int mode; \
|
|
40
|
+
unsigned int Rabsorb; \
|
|
41
|
+
unsigned int Rsqueeze; \
|
|
42
|
+
} prefix##_Instance;
|
|
43
|
+
|
|
44
|
+
#else
|
|
45
|
+
|
|
46
|
+
#define KCP_DeclareCyclistStructure(prefix, size, alignment) \
|
|
47
|
+
ALIGN(alignment) typedef struct prefix##_CyclistInstanceStruct { \
|
|
48
|
+
uint8_t state[size]; \
|
|
49
|
+
unsigned int phase; \
|
|
50
|
+
unsigned int mode; \
|
|
51
|
+
unsigned int Rabsorb; \
|
|
52
|
+
unsigned int Rsqueeze; \
|
|
53
|
+
} prefix##_Instance;
|
|
54
|
+
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
#define KCP_DeclareCyclistFunctions(prefix) \
|
|
58
|
+
void prefix##_Initialize(prefix##_Instance *instance, const uint8_t *K, size_t KLen, const uint8_t *ID, size_t IDLen, const uint8_t *counter, size_t counterLen); \
|
|
59
|
+
void prefix##_Absorb(prefix##_Instance *instance, const uint8_t *X, size_t XLen); \
|
|
60
|
+
void prefix##_Encrypt(prefix##_Instance *instance, const uint8_t *P, uint8_t *C, size_t PLen); \
|
|
61
|
+
void prefix##_Decrypt(prefix##_Instance *instance, const uint8_t *C, uint8_t *P, size_t CLen); \
|
|
62
|
+
void prefix##_Squeeze(prefix##_Instance *instance, uint8_t *Y, size_t YLen); \
|
|
63
|
+
void prefix##_SqueezeKey(prefix##_Instance *instance, uint8_t *K, size_t KLen); \
|
|
64
|
+
void prefix##_Ratchet(prefix##_Instance *instance);
|
|
65
|
+
|
|
66
|
+
#endif
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
Xoodyak, designed by Joan Daemen, Seth Hoffert, 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 SnP_StaticInitialize JOIN(SnP, _StaticInitialize)
|
|
21
|
+
#define SnP_Initialize JOIN(SnP, _Initialize)
|
|
22
|
+
#define SnP_AddBytes JOIN(SnP, _AddBytes)
|
|
23
|
+
#define SnP_AddByte JOIN(SnP, _AddByte)
|
|
24
|
+
#define SnP_OverwriteBytes JOIN(SnP, _OverwriteBytes)
|
|
25
|
+
#define SnP_ExtractBytes JOIN(SnP, _ExtractBytes)
|
|
26
|
+
#define SnP_ExtractAndAddBytes JOIN(SnP, _ExtractAndAddBytes)
|
|
27
|
+
|
|
28
|
+
#define Cyclist_Instance JOIN(prefix, _Instance)
|
|
29
|
+
#define Cyclist_Initialize JOIN(prefix, _Initialize)
|
|
30
|
+
#define Cyclist_Absorb JOIN(prefix, _Absorb)
|
|
31
|
+
#define Cyclist_Encrypt JOIN(prefix, _Encrypt)
|
|
32
|
+
#define Cyclist_Decrypt JOIN(prefix, _Decrypt)
|
|
33
|
+
#define Cyclist_Squeeze JOIN(prefix, _Squeeze)
|
|
34
|
+
#define Cyclist_SqueezeKey JOIN(prefix, _SqueezeKey)
|
|
35
|
+
#define Cyclist_Ratchet JOIN(prefix, _Ratchet)
|
|
36
|
+
|
|
37
|
+
#define Cyclist_AbsorbAny JOIN(prefix, _AbsorbAny)
|
|
38
|
+
#define Cyclist_AbsorbKey JOIN(prefix, _AbsorbKey)
|
|
39
|
+
#define Cyclist_SqueezeAny JOIN(prefix, _SqueezeAny)
|
|
40
|
+
#define Cyclist_Down JOIN(prefix, _Down)
|
|
41
|
+
#define Cyclist_Up JOIN(prefix, _Up)
|
|
42
|
+
#define Cyclist_Crypt JOIN(prefix, _Crypt)
|
|
43
|
+
|
|
44
|
+
#define Cyclist_f_bPrime JOIN(prefix, _f_bPrime)
|
|
45
|
+
#define Cyclist_Rhash JOIN(prefix, _Rhash)
|
|
46
|
+
#define Cyclist_Rkin JOIN(prefix, _Rkin)
|
|
47
|
+
#define Cyclist_Rkout JOIN(prefix, _Rkout)
|
|
48
|
+
#define Cyclist_lRatchet JOIN(prefix, _lRatchet)
|
|
49
|
+
|
|
50
|
+
#if defined(CyclistFullBlocks_supported)
|
|
51
|
+
#define Cyclist_AbsorbKeyedFullBlocks JOIN(prefix, _AbsorbKeyedFullBlocks)
|
|
52
|
+
#define Cyclist_AbsorbHashFullBlocks JOIN(prefix, _AbsorbHashFullBlocks)
|
|
53
|
+
#define Cyclist_SqueezeKeyedFullBlocks JOIN(prefix, _SqueezeKeyedFullBlocks)
|
|
54
|
+
#define Cyclist_SqueezeHashFullBlocks JOIN(prefix, _SqueezeHashFullBlocks)
|
|
55
|
+
#define Cyclist_EncryptFullBlocks JOIN(prefix, _EncryptFullBlocks)
|
|
56
|
+
#define Cyclist_DecryptFullBlocks JOIN(prefix, _DecryptFullBlocks)
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
/* ------- Cyclist internal interfaces ------- */
|
|
60
|
+
|
|
61
|
+
static void Cyclist_Down(Cyclist_Instance *instance, const uint8_t *Xi, unsigned int XiLen, uint8_t Cd)
|
|
62
|
+
{
|
|
63
|
+
SnP_AddBytes(instance->state, Xi, 0, XiLen);
|
|
64
|
+
SnP_AddByte(instance->state, 0x01, XiLen);
|
|
65
|
+
SnP_AddByte(instance->state, (instance->mode == Cyclist_ModeHash) ? (Cd & 0x01) : Cd, Cyclist_f_bPrime - 1);
|
|
66
|
+
instance->phase = Cyclist_PhaseDown;
|
|
67
|
+
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static void Cyclist_Up(Cyclist_Instance *instance, uint8_t *Yi, unsigned int YiLen, uint8_t Cu)
|
|
71
|
+
{
|
|
72
|
+
#if defined(OUTPUT)
|
|
73
|
+
uint8_t s[Cyclist_f_bPrime];
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
if (instance->mode != Cyclist_ModeHash) {
|
|
77
|
+
SnP_AddByte(instance->state, Cu, Cyclist_f_bPrime - 1);
|
|
78
|
+
}
|
|
79
|
+
#if defined(OUTPUT)
|
|
80
|
+
if (instance->file != NULL) {
|
|
81
|
+
SnP_ExtractBytes( instance->stateShadow, s, 0, Cyclist_f_bPrime );
|
|
82
|
+
SnP_ExtractAndAddBytes( instance->state, s, s, 0, Cyclist_f_bPrime );
|
|
83
|
+
}
|
|
84
|
+
#endif
|
|
85
|
+
SnP_Permute( instance->state );
|
|
86
|
+
#if defined(OUTPUT)
|
|
87
|
+
if (instance->file != NULL) {
|
|
88
|
+
memcpy( instance->stateShadow, instance->state, sizeof(instance->state) );
|
|
89
|
+
fprintf( instance->file, "Data XORed" );
|
|
90
|
+
displayByteString( instance->file, "", s, Cyclist_f_bPrime );
|
|
91
|
+
SnP_ExtractBytes( instance->stateShadow, s, 0, Cyclist_f_bPrime );
|
|
92
|
+
fprintf( instance->file, "After f() ");
|
|
93
|
+
displayByteString( instance->file, "", s, Cyclist_f_bPrime );
|
|
94
|
+
}
|
|
95
|
+
#endif
|
|
96
|
+
instance->phase = Cyclist_PhaseUp;
|
|
97
|
+
SnP_ExtractBytes( instance->state, Yi, 0, YiLen );
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
static void Cyclist_AbsorbAny(Cyclist_Instance *instance, const uint8_t *X, size_t XLen, unsigned int r, uint8_t Cd)
|
|
101
|
+
{
|
|
102
|
+
unsigned int splitLen;
|
|
103
|
+
|
|
104
|
+
do {
|
|
105
|
+
if (instance->phase != Cyclist_PhaseUp) {
|
|
106
|
+
Cyclist_Up(instance, NULL, 0, 0);
|
|
107
|
+
}
|
|
108
|
+
splitLen = (unsigned int)MyMin(XLen, r);
|
|
109
|
+
Cyclist_Down(instance, X, splitLen, Cd);
|
|
110
|
+
Cd = 0;
|
|
111
|
+
X += splitLen;
|
|
112
|
+
XLen -= splitLen;
|
|
113
|
+
#if defined(CyclistFullBlocks_supported)
|
|
114
|
+
if ((r == Cyclist_Rkin) && (XLen >= Cyclist_Rkin)) {
|
|
115
|
+
size_t lenProcessed = Cyclist_AbsorbKeyedFullBlocks(instance->state, X, XLen);
|
|
116
|
+
X += lenProcessed;
|
|
117
|
+
XLen -= lenProcessed;
|
|
118
|
+
}
|
|
119
|
+
else if ((r == Cyclist_Rhash) && (XLen >= Cyclist_Rhash)) {
|
|
120
|
+
size_t lenProcessed = Cyclist_AbsorbHashFullBlocks(instance->state, X, XLen);
|
|
121
|
+
X += lenProcessed;
|
|
122
|
+
XLen -= lenProcessed;
|
|
123
|
+
}
|
|
124
|
+
#endif
|
|
125
|
+
} while ( XLen != 0 );
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
static void Cyclist_AbsorbKey(Cyclist_Instance *instance, const uint8_t *K, size_t KLen, const uint8_t *ID, size_t IDLen, const uint8_t *counter, size_t counterLen)
|
|
129
|
+
{
|
|
130
|
+
uint8_t KID[Cyclist_Rkin];
|
|
131
|
+
|
|
132
|
+
#if DEBUG
|
|
133
|
+
assert(instance->mode == Cyclist_ModeHash);
|
|
134
|
+
assert((KLen + IDLen) <= (Cyclist_Rkin - 1));
|
|
135
|
+
#endif
|
|
136
|
+
instance->mode = Cyclist_ModeKeyed;
|
|
137
|
+
instance->Rabsorb = Cyclist_Rkin;
|
|
138
|
+
instance->Rsqueeze = Cyclist_Rkout;
|
|
139
|
+
if (KLen != 0) {
|
|
140
|
+
memcpy(KID, K, KLen);
|
|
141
|
+
memcpy(KID + KLen, ID, IDLen);
|
|
142
|
+
KID[KLen + IDLen] = (uint8_t)IDLen;
|
|
143
|
+
Cyclist_AbsorbAny(instance, KID, KLen + IDLen + 1, instance->Rabsorb, 0x02);
|
|
144
|
+
if (counterLen != 0) {
|
|
145
|
+
Cyclist_AbsorbAny(instance, counter, counterLen, 1, 0x00);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
static void Cyclist_SqueezeAny(Cyclist_Instance *instance, uint8_t *Y, size_t YLen, uint8_t Cu)
|
|
151
|
+
{
|
|
152
|
+
unsigned int len;
|
|
153
|
+
|
|
154
|
+
len = (unsigned int)MyMin(YLen, instance->Rsqueeze );
|
|
155
|
+
Cyclist_Up(instance, Y, len, Cu);
|
|
156
|
+
Y += len;
|
|
157
|
+
YLen -= len;
|
|
158
|
+
while (YLen != 0) {
|
|
159
|
+
#if defined(CyclistFullBlocks_supported)
|
|
160
|
+
if ((instance->mode == Cyclist_ModeKeyed) && (YLen >= Cyclist_Rkin)) {
|
|
161
|
+
size_t lenProcessed = Cyclist_SqueezeKeyedFullBlocks(instance->state, Y, YLen);
|
|
162
|
+
Y += lenProcessed;
|
|
163
|
+
YLen -= lenProcessed;
|
|
164
|
+
}
|
|
165
|
+
else if ((instance->mode == Cyclist_ModeHash) && (YLen >= Cyclist_Rhash)) {
|
|
166
|
+
size_t lenProcessed = Cyclist_SqueezeHashFullBlocks(instance->state, Y, YLen);
|
|
167
|
+
Y += lenProcessed;
|
|
168
|
+
YLen -= lenProcessed;
|
|
169
|
+
}
|
|
170
|
+
else
|
|
171
|
+
#endif
|
|
172
|
+
{
|
|
173
|
+
Cyclist_Down(instance, NULL, 0, 0);
|
|
174
|
+
len = (unsigned int)MyMin(YLen, instance->Rsqueeze );
|
|
175
|
+
Cyclist_Up(instance, Y, len, 0);
|
|
176
|
+
Y += len;
|
|
177
|
+
YLen -= len;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
static void Cyclist_Crypt(Cyclist_Instance *instance, const uint8_t *I, uint8_t *O, size_t IOLen, int decrypt)
|
|
183
|
+
{
|
|
184
|
+
unsigned int splitLen;
|
|
185
|
+
uint8_t P[Cyclist_Rkout];
|
|
186
|
+
uint8_t Cu = 0x80;
|
|
187
|
+
|
|
188
|
+
do {
|
|
189
|
+
if (decrypt != 0) {
|
|
190
|
+
#if defined(CyclistFullBlocks_supported)
|
|
191
|
+
if ((Cu == 0) && (IOLen >= Cyclist_Rkout)) {
|
|
192
|
+
size_t lenProcessed = Cyclist_DecryptFullBlocks(instance->state, I, O, IOLen);
|
|
193
|
+
I += lenProcessed;
|
|
194
|
+
O += lenProcessed;
|
|
195
|
+
IOLen -= lenProcessed;
|
|
196
|
+
}
|
|
197
|
+
else
|
|
198
|
+
#endif
|
|
199
|
+
{
|
|
200
|
+
splitLen = (unsigned int)MyMin(IOLen, Cyclist_Rkout); /* use Rkout instead of Rsqueeze, this function is only called in keyed mode */
|
|
201
|
+
Cyclist_Up(instance, NULL, 0, Cu); /* Up without extract */
|
|
202
|
+
SnP_ExtractAndAddBytes(instance->state, I, O, 0, splitLen); /* Extract from Up and Add */
|
|
203
|
+
Cyclist_Down(instance, O, splitLen, 0x00);
|
|
204
|
+
I += splitLen;
|
|
205
|
+
O += splitLen;
|
|
206
|
+
IOLen -= splitLen;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
#if defined(CyclistFullBlocks_supported)
|
|
211
|
+
if ((Cu == 0) && (IOLen >= Cyclist_Rkout)) {
|
|
212
|
+
size_t lenProcessed = Cyclist_EncryptFullBlocks(instance->state, I, O, IOLen);
|
|
213
|
+
I += lenProcessed;
|
|
214
|
+
O += lenProcessed;
|
|
215
|
+
IOLen -= lenProcessed;
|
|
216
|
+
}
|
|
217
|
+
else
|
|
218
|
+
#endif
|
|
219
|
+
{
|
|
220
|
+
splitLen = (unsigned int)MyMin(IOLen, Cyclist_Rkout); /* use Rkout instead of Rsqueeze, this function is only called in keyed mode */
|
|
221
|
+
memcpy(P, I, splitLen);
|
|
222
|
+
Cyclist_Up(instance, NULL, 0, Cu); /* Up without extract */
|
|
223
|
+
SnP_ExtractAndAddBytes(instance->state, I, O, 0, splitLen); /* Extract from Up and Add */
|
|
224
|
+
Cyclist_Down(instance, P, splitLen, 0x00);
|
|
225
|
+
I += splitLen;
|
|
226
|
+
O += splitLen;
|
|
227
|
+
IOLen -= splitLen;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
Cu = 0x00;
|
|
231
|
+
} while ( IOLen != 0 );
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* ------- Cyclist interfaces ------- */
|
|
235
|
+
|
|
236
|
+
void Cyclist_Initialize(Cyclist_Instance *instance, const uint8_t *K, size_t KLen, const uint8_t *ID, size_t IDLen, const uint8_t *counter, size_t counterLen)
|
|
237
|
+
{
|
|
238
|
+
SnP_StaticInitialize();
|
|
239
|
+
SnP_Initialize(instance->state);
|
|
240
|
+
instance->phase = Cyclist_PhaseUp;
|
|
241
|
+
instance->mode = Cyclist_ModeHash;
|
|
242
|
+
instance->Rabsorb = Cyclist_Rhash;
|
|
243
|
+
instance->Rsqueeze = Cyclist_Rhash;
|
|
244
|
+
#ifdef OUTPUT
|
|
245
|
+
instance->file = 0;
|
|
246
|
+
SnP_Initialize( instance->stateShadow );
|
|
247
|
+
#endif
|
|
248
|
+
if (KLen != 0) {
|
|
249
|
+
Cyclist_AbsorbKey(instance, K, KLen, ID, IDLen, counter, counterLen);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
void Cyclist_Absorb(Cyclist_Instance *instance, const uint8_t *X, size_t XLen)
|
|
254
|
+
{
|
|
255
|
+
Cyclist_AbsorbAny(instance, X, XLen, instance->Rabsorb, 0x03);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
void Cyclist_Encrypt(Cyclist_Instance *instance, const uint8_t *P, uint8_t *C, size_t PLen)
|
|
259
|
+
{
|
|
260
|
+
#if DEBUG
|
|
261
|
+
assert(instance->mode == Cyclist_ModeKeyed);
|
|
262
|
+
#endif
|
|
263
|
+
Cyclist_Crypt(instance, P, C, PLen, 0);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
void Cyclist_Decrypt(Cyclist_Instance *instance, const uint8_t *C, uint8_t *P, size_t CLen)
|
|
267
|
+
{
|
|
268
|
+
#if DEBUG
|
|
269
|
+
assert(instance->mode == Cyclist_ModeKeyed);
|
|
270
|
+
#endif
|
|
271
|
+
Cyclist_Crypt(instance, C, P, CLen, 1);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
void Cyclist_Squeeze(Cyclist_Instance *instance, uint8_t *Y, size_t YLen)
|
|
275
|
+
{
|
|
276
|
+
Cyclist_SqueezeAny(instance, Y, YLen, 0x40);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
void Cyclist_SqueezeKey(Cyclist_Instance *instance, uint8_t *K, size_t KLen)
|
|
280
|
+
{
|
|
281
|
+
#if DEBUG
|
|
282
|
+
assert(instance->mode == Cyclist_ModeKeyed);
|
|
283
|
+
#endif
|
|
284
|
+
Cyclist_SqueezeAny(instance, K, KLen, 0x20);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
void Cyclist_Ratchet(Cyclist_Instance *instance)
|
|
288
|
+
{
|
|
289
|
+
uint8_t buffer[Cyclist_lRatchet];
|
|
290
|
+
|
|
291
|
+
#if DEBUG
|
|
292
|
+
assert(instance->mode == Cyclist_ModeKeyed);
|
|
293
|
+
#endif
|
|
294
|
+
/* Squeeze then absorb is the same as overwriting with zeros */
|
|
295
|
+
Cyclist_SqueezeAny(instance, buffer, sizeof(buffer), 0x10);
|
|
296
|
+
Cyclist_AbsorbAny(instance, buffer, sizeof(buffer), instance->Rabsorb, 0x00);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
#undef SnP_StaticInitialize
|
|
300
|
+
#undef SnP_Initialize
|
|
301
|
+
#undef SnP_AddBytes
|
|
302
|
+
#undef SnP_AddByte
|
|
303
|
+
#undef SnP_OverwriteBytes
|
|
304
|
+
#undef SnP_ExtractBytes
|
|
305
|
+
#undef SnP_ExtractAndAddBytes
|
|
306
|
+
|
|
307
|
+
#undef Cyclist_Instance
|
|
308
|
+
#undef Cyclist_Initialize
|
|
309
|
+
#undef Cyclist_Absorb
|
|
310
|
+
#undef Cyclist_Encrypt
|
|
311
|
+
#undef Cyclist_Decrypt
|
|
312
|
+
#undef Cyclist_Squeeze
|
|
313
|
+
#undef Cyclist_SqueezeKey
|
|
314
|
+
#undef Cyclist_Ratchet
|
|
315
|
+
|
|
316
|
+
#undef Cyclist_AbsorbAny
|
|
317
|
+
#undef Cyclist_AbsorbKey
|
|
318
|
+
#undef Cyclist_SqueezeAny
|
|
319
|
+
#undef Cyclist_Down
|
|
320
|
+
#undef Cyclist_Up
|
|
321
|
+
#undef Cyclist_Crypt
|
|
322
|
+
|
|
323
|
+
#undef Cyclist_f_bPrime
|
|
324
|
+
#undef Cyclist_Rhash
|
|
325
|
+
#undef Cyclist_Rkin
|
|
326
|
+
#undef Cyclist_Rkout
|
|
327
|
+
#undef Cyclist_lRatchet
|
|
328
|
+
|
|
329
|
+
#if defined(CyclistFullBlocks_supported)
|
|
330
|
+
#undef Cyclist_AbsorbKeyedFullBlocks
|
|
331
|
+
#undef Cyclist_AbsorbHashFullBlocks
|
|
332
|
+
#undef Cyclist_SqueezeKeyedFullBlocks
|
|
333
|
+
#undef Cyclist_SqueezeHashFullBlocks
|
|
334
|
+
#undef Cyclist_EncryptFullBlocks
|
|
335
|
+
#undef Cyclist_DecryptFullBlocks
|
|
336
|
+
#endif
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The eXtended Keccak Code Package (XKCP)
|
|
3
|
+
https://github.com/XKCP/XKCP
|
|
4
|
+
|
|
5
|
+
Xoodyak, designed by Joan Daemen, Seth Hoffert, 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 _Xoodyak_parameters_h_
|
|
18
|
+
#define _Xoodyak_parameters_h_
|
|
19
|
+
|
|
20
|
+
#define Xoodyak_f_bPrime 48
|
|
21
|
+
#define Xoodyak_Rhash 16
|
|
22
|
+
#define Xoodyak_Rkin 44
|
|
23
|
+
#define Xoodyak_Rkout 24
|
|
24
|
+
#define Xoodyak_lRatchet 16
|
|
25
|
+
|
|
26
|
+
#endif
|