Add RISC-V vector cryptography implementations of SHA256 and SHA512
* cipher/Makefile.am: Add 'sha256-riscv-zvknha-zvkb.c' and 'sha512-riscv-zvknhb-zvkb.c'. * cipher/sha256-riscv-zvknha-zvkb.c: New. * cipher/sha256.c (USE_RISCV_V_CRYPTO): New. [USE_RISCV_V_CRYPTO] (_gcry_sha256_riscv_v_check_hw) (_gcry_sha256_transform_riscv_zvknha_zvkb) (do_sha256_transform_riscv_zvknha): New. (sha256_common_init) [sha256_common_init]: Enable new implementation if supported by HW. * cipher/sha512-riscv-zvknhb-zvkb.c: New. * cipher/sha512.c (USE_RISCV_V_CRYPTO): New. [USE_RISCV_V_CRYPTO] (_gcry_sha512_riscv_v_check_hw) (_gcry_sha512_transform_riscv_zvknhb_zvkb) (do_sha512_transform_riscv_zvknhb): New. (sha512_common_init) [sha512_common_init]: Enable new implementation if supported by HW. * configure.ac: Add 'sha256-riscv-zvknha-zvkb.lo' and 'sha512-riscv-zvknhb-zvkb.lo'. (GCRY_RISCV_VECTOR_INTRINSICS_TEST): New. (gcry_cv_cc_riscv_vector_intrinsics) (gcry_cv_cc_riscv_vector_intrinsics_cflags): Move test code to new macro GCRY_RISCV_VECTOR_INTRINSICS_TEST. (GCRY_RISCV_VECTOR_CRYPTO_INTRINSICS_TEST) (gcry_cv_cc_riscv_vector_crypto_intrinsics) (gcry_cv_cc_riscv_vector_crypto_intrinsics_cflags) (gcry_cv_riscv_vsha2cl_intrinsics_work): New. * src/g10lib.h [HAVE_CPU_ARCH_RISCV] (HWF_RISCV_ZVKB, HWF_RISCV_ZVKNHA) (HWF_RISCV_ZVKNHB): New. * src/hwf-riscv.c (HWF_RISCV_HWPROBE_EXT_ZVKB) (HWF_RISCV_HWPROBE_EXT_ZVKNHA, HWF_RISCV_HWPROBE_EXT_ZVKNHB): New. * src/hwfeatures.c (hwflist) [HAVE_CPU_ARCH_RISCV]: Add "riscv-zvkb", "riscv-zvknha" and "riscv-zvknhb".
Implementations have been tested against QEMU emulator as there is no
actual HW available with these instructions yet.
- Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>