@@ -71,7 +71,7 @@ static int s_rsa_encrypt(
7171
7272 EVP_PKEY_CTX * ctx = EVP_PKEY_CTX_new (key_pair_impl -> key , NULL );
7373 if (ctx == NULL ) {
74- return aws_raise_error (AWS_ERROR_CAL_CRYPTO_OPERATION_FAILED );
74+ return aws_raise_error (AWS_ERROR_CAL_UNSUPPORTED_ALGORITHM );
7575 }
7676
7777 if (aws_reinterpret_lc_evp_error_as_crt (EVP_PKEY_encrypt_init (ctx ), "EVP_PKEY_encrypt_init" , AWS_LS_CAL_RSA )) {
@@ -129,7 +129,7 @@ static int s_rsa_decrypt(
129129
130130 EVP_PKEY_CTX * ctx = EVP_PKEY_CTX_new (key_pair_impl -> key , NULL );
131131 if (ctx == NULL ) {
132- return aws_raise_error (AWS_ERROR_CAL_CRYPTO_OPERATION_FAILED );
132+ return aws_raise_error (AWS_ERROR_CAL_UNSUPPORTED_ALGORITHM );
133133 }
134134
135135 if (aws_reinterpret_lc_evp_error_as_crt (EVP_PKEY_decrypt_init (ctx ), "EVP_PKEY_decrypt_init" , AWS_LS_CAL_RSA )) {
@@ -191,7 +191,14 @@ static int s_set_signature_ctx_from_algo(EVP_PKEY_CTX *ctx, enum aws_rsa_signatu
191191 }
192192 if (aws_reinterpret_lc_evp_error_as_crt (
193193 EVP_PKEY_CTX_set_signature_md (ctx , EVP_sha1 ()), "EVP_PKEY_CTX_set_signature_md" , AWS_LS_CAL_RSA )) {
194- return AWS_OP_ERR ;
194+ /*
195+ * This can fail with invalid digest on platforms that disabled sha1 for fips (ex. openssl 3.5+).
196+ * Unfortunately, error code for invalid digest is wildly inconsistent between versions, making it
197+ * impossible to write a backwards compatible error handling. In practice however the only way this should
198+ * fail is when algo is not supported, so lets just hardcode the error. Still call the helper to get
199+ * consistent logging for error.
200+ */
201+ return aws_raise_error (AWS_ERROR_CAL_UNSUPPORTED_ALGORITHM );
195202 }
196203 } else if (algorithm == AWS_CAL_RSA_SIGNATURE_PSS_SHA256 ) {
197204 if (aws_reinterpret_lc_evp_error_as_crt (
@@ -232,7 +239,7 @@ static int s_rsa_sign(
232239
233240 EVP_PKEY_CTX * ctx = EVP_PKEY_CTX_new (key_pair_impl -> key , NULL );
234241 if (ctx == NULL ) {
235- return aws_raise_error (AWS_ERROR_CAL_CRYPTO_OPERATION_FAILED );
242+ return aws_raise_error (AWS_ERROR_CAL_UNSUPPORTED_ALGORITHM );
236243 }
237244
238245 if (aws_reinterpret_lc_evp_error_as_crt (EVP_PKEY_sign_init (ctx ), "EVP_PKEY_sign_init" , AWS_LS_CAL_RSA )) {
@@ -290,7 +297,7 @@ static int s_rsa_verify(
290297
291298 EVP_PKEY_CTX * ctx = EVP_PKEY_CTX_new (key_pair_impl -> key , NULL );
292299 if (ctx == NULL ) {
293- return aws_raise_error (AWS_ERROR_CAL_CRYPTO_OPERATION_FAILED );
300+ return aws_raise_error (AWS_ERROR_CAL_UNSUPPORTED_ALGORITHM );
294301 }
295302
296303 if (aws_reinterpret_lc_evp_error_as_crt (EVP_PKEY_verify_init (ctx ), "EVP_PKEY_verify_init" , AWS_LS_CAL_RSA )) {
0 commit comments