Home GnuPG

Add RISC-V vector cryptography implementation of AES

Description

Add RISC-V vector cryptography implementation of AES

* cipher/Makefile.am: Add 'rijndael-riscv-zvkned.c'.
* cipher/rijndael-internal.h (USE_RISCV_V_CRYPTO): New.
* cipher/rijndael-riscv-zvkned.c: New.
* cipher/rijndael.c [USE_RISCV_V_CRYPTO]
(_gcry_aes_riscv_zvkned_setup_acceleration, _gcry_aes_riscv_zvkned_setkey)
(_gcry_aes_riscv_zvkned_prepare_decryption)
(_gcry_aes_riscv_zvkned_encrypt, _gcry_aes_riscv_zvkned_decrypt)
(_gcry_aes_riscv_zvkned_cfb_enc, _gcry_aes_riscv_zvkned_cbc_enc)
(_gcry_aes_riscv_zvkned_ctr_enc, _gcry_aes_riscv_zvkned_ctr32le_enc)
(_gcry_aes_riscv_zvkned_cfb_dec, _gcry_aes_riscv_zvkned_cbc_dec)
(_gcry_aes_riscv_zvkned_ocb_crypt, _gcry_aes_riscv_zvkned_ocb_auth)
(_gcry_aes_riscv_zvkned_ecb_crypt, _gcry_aes_riscv_zvkned_xts_crypt): New.
(do_setkey) [USE_RISCV_V_CRYPTO]: Add setup for RISC-V vector cryptography
extension implementation.
* configure.ac: Add 'rijndael-riscv-zvkned.lo'.
(GCRY_RISCV_VECTOR_CRYPTO_INTRINSICS_TEST): Add AES intrinsics.
(gcry_cv_riscv_vaes_vs_intrinsics_work, HAVE_BROKEN_VAES_VS_INTRINSIC): New.
* src/g10lib.h (HWF_RISCV_ZVKNED): Insert before HWF_RISCV_ZVKNHA.
* src/hwf-riscv.c (HWF_RISCV_HWPROBE_EXT_ZVKNED): New.
(hwprobe_features): Add Zvkned.
* src/hwfeatures.c (hwflist): Add "riscv-zvkned".

Implementation has 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>

Details

Provenance
jukiviliAuthored on Tue, Aug 5, 1:38 PM
Parents
rC79149be2b0ba: riscv: always use -mstrict-align for vector intrinsic implementations
Branches
Unknown
Tags
Unknown