Commit fdee5cf246 for openssl.org
commit fdee5cf246c73be74e6f9fbbe28e387a224c0041
Author: Zenithal <i@zenithal.me>
Date: Tue Mar 10 00:44:01 2026 +0000
riscv: aes: fix checks on null keys
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
MergeDate: Fri Mar 13 17:15:37 2026
(Merged from https://github.com/openssl/openssl/pull/30333)
diff --git a/crypto/aes/asm/aes-riscv32-zkn.pl b/crypto/aes/asm/aes-riscv32-zkn.pl
index 6fac451846..b57e10c485 100644
--- a/crypto/aes/asm/aes-riscv32-zkn.pl
+++ b/crypto/aes/asm/aes-riscv32-zkn.pl
@@ -704,11 +704,6 @@ sub AES_set_common {
my ($ke128, $ke192, $ke256) = @_;
my $ret = '';
$ret .= <<___;
- bnez $UKEY,1f # if (!userKey || !key) return -1;
- bnez $KEYP,1f
- li a0,-1
- ret
-1:
# Determine number of rounds from key size in bits
li $T0,128
bne $BITS,$T0,1f
diff --git a/crypto/aes/asm/aes-riscv64-zkn.pl b/crypto/aes/asm/aes-riscv64-zkn.pl
index 0e8a1540c4..34f71b2185 100644
--- a/crypto/aes/asm/aes-riscv64-zkn.pl
+++ b/crypto/aes/asm/aes-riscv64-zkn.pl
@@ -392,11 +392,6 @@ sub AES_set_common {
my ($ke128, $ke192, $ke256) = @_;
my $ret = '';
$ret .= <<___;
- bnez $UKEY,1f # if (!userKey || !key) return -1;
- bnez $KEYP,1f
- li a0,-1
- ret
-1:
# Determine number of rounds from key size in bits
li $T0,128
bne $BITS,$T0,1f
diff --git a/crypto/aes/asm/aes-riscv64-zvkned.pl b/crypto/aes/asm/aes-riscv64-zvkned.pl
index cac1d194cc..615542b46f 100644
--- a/crypto/aes/asm/aes-riscv64-zvkned.pl
+++ b/crypto/aes/asm/aes-riscv64-zvkned.pl
@@ -965,9 +965,6 @@ $code .= <<___;
.globl rv64i_zvkned_set_encrypt_key
.type rv64i_zvkned_set_encrypt_key,\@function
rv64i_zvkned_set_encrypt_key:
- beqz $UKEY, L_fail_m1
- beqz $KEYP, L_fail_m1
-
# Get proper routine for key size
li $T0, 256
beq $BITS, $T0, L_set_key_256
@@ -984,9 +981,6 @@ $code .= <<___;
.globl rv64i_zvkned_set_decrypt_key
.type rv64i_zvkned_set_decrypt_key,\@function
rv64i_zvkned_set_decrypt_key:
- beqz $UKEY, L_fail_m1
- beqz $KEYP, L_fail_m1
-
# Get proper routine for key size
li $T0, 256
beq $BITS, $T0, L_set_key_256
@@ -1493,11 +1487,6 @@ ___
}
$code .= <<___;
-L_fail_m1:
- li a0, -1
- ret
-.size L_fail_m1,.-L_fail_m1
-
L_fail_m2:
li a0, -2
ret
diff --git a/crypto/aes/asm/aes-riscv64.pl b/crypto/aes/asm/aes-riscv64.pl
index 525eba4b46..9c864dc6d8 100644
--- a/crypto/aes/asm/aes-riscv64.pl
+++ b/crypto/aes/asm/aes-riscv64.pl
@@ -773,11 +773,13 @@ AES_set_encrypt_key:
___
$code .= save_regs();
$code .= <<___;
- bnez $UKEY,1f # if (!userKey || !key) return -1;
- bnez $KEYP,1f
+ beqz $UKEY,1f # if (!userKey || !key) return -1;
+ beqz $KEYP,1f
+ j 2f
+1:
li a0,-1
ret
-1:
+2:
la $RCON,AES_rcon
la $TBL,AES_Te0
li $T8,128