From: Hongren (Zenithal) Zheng Date: Fri, 13 May 2022 15:44:31 +0000 (+0800) Subject: aes_platform: add riscv32 zkn asm support X-Git-Tag: openssl-3.2.0-alpha1~2129 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cbb15b31b98f47276cf9e87453831d96274baf66;p=thirdparty%2Fopenssl.git aes_platform: add riscv32 zkn asm support Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/18308) --- diff --git a/include/crypto/aes_platform.h b/include/crypto/aes_platform.h index 836f7dca2dd..72f217ce4f0 100644 --- a/include/crypto/aes_platform.h +++ b/include/crypto/aes_platform.h @@ -441,6 +441,25 @@ void rv64i_zkne_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key); void rv64i_zknd_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key); +# elif defined(OPENSSL_CPUID_OBJ) && defined(__riscv) && __riscv_xlen == 32 +/* RISC-V 32 support */ +# include "riscv_arch.h" +# define RV32I_ZKND_ZKNE_CAPABLE (RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) +# define RV32I_ZBKB_ZKND_ZKNE_CAPABLE (RV32I_ZKND_ZKNE_CAPABLE && RISCV_HAS_ZBKB()) + +int rv32i_zkne_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +/* set_decrypt_key needs both zknd and zkne */ +int rv32i_zknd_zkne_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int rv32i_zbkb_zkne_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int rv32i_zbkb_zknd_zkne_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +void rv32i_zkne_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +void rv32i_zknd_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); # endif # if defined(HWAES_CAPABLE)