Skip to content

Commit 33ff56b

Browse files
committed
Fix coexist and improve rsa_pss_calc_salt invalid salt length checking.
1 parent 4aa5dd9 commit 33ff56b

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

src/pk.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3534,25 +3534,25 @@ static int rsa_pss_calc_salt(int saltLen, int hashLen, int emLen)
35343534
/* Calculate the salt length to use for special cases. */
35353535
switch (saltLen) {
35363536
/* Negative saltLen values are treated differently. */
3537-
case RSA_PSS_SALTLEN_DIGEST:
3537+
case WC_RSA_PSS_SALTLEN_DIGEST:
35383538
saltLen = hashLen;
35393539
break;
3540-
case RSA_PSS_SALTLEN_MAX_SIGN:
3541-
case RSA_PSS_SALTLEN_MAX:
3540+
case WC_RSA_PSS_SALTLEN_MAX_SIGN:
3541+
case WC_RSA_PSS_SALTLEN_MAX:
35423542
#ifdef WOLFSSL_PSS_LONG_SALT
35433543
saltLen = emLen - hashLen - 2;
35443544
#else
35453545
saltLen = hashLen;
35463546
#endif
35473547
break;
35483548
default:
3549-
if (saltLen < 0) {
3550-
/* log invalid salt, let wolfCrypt report error */
3551-
WOLFSSL_ERROR_MSG("invalid saltLen");
3552-
saltLen = -3; /* for wolfCrypt to produce error must be < -2 */
3553-
}
35543549
break;
35553550
}
3551+
if (saltLen < 0) {
3552+
/* log invalid salt, let wolfCrypt handle error */
3553+
WOLFSSL_ERROR_MSG("invalid saltLen");
3554+
saltLen = -3; /* for wolfCrypt to produce error must be < -2 */
3555+
}
35563556
return saltLen;
35573557
}
35583558
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */

wolfssl/openssl/rsa.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,17 @@
4242
#define WC_RSA_PKCS1_OAEP_PADDING 1
4343
#define WC_RSA_PKCS1_PSS_PADDING 2
4444

45+
/* RSA PSS Salt special cases */
46+
/* Salt length same as digest length */
47+
#define WC_RSA_PSS_SALTLEN_DIGEST (-1)
48+
/* Old max salt length */
49+
#define WC_RSA_PSS_SALTLEN_MAX_SIGN (-2)
50+
/* Verification only value to indicate to discover salt length. */
51+
#define WC_RSA_PSS_SALTLEN_AUTO (-2)
52+
/* Max salt length */
53+
#define WC_RSA_PSS_SALTLEN_MAX (-3)
54+
55+
4556
#ifndef OPENSSL_COEXIST
4657

4758
/* Padding types */
@@ -60,14 +71,10 @@
6071
#define RSA_FLAG_NO_BLINDING (1 << 7)
6172
#define RSA_FLAG_NO_CONSTTIME (1 << 8)
6273

63-
/* Salt length same as digest length */
64-
#define RSA_PSS_SALTLEN_DIGEST (-1)
65-
/* Old max salt length */
66-
#define RSA_PSS_SALTLEN_MAX_SIGN (-2)
67-
/* Verification only value to indicate to discover salt length. */
68-
#define RSA_PSS_SALTLEN_AUTO (-2)
69-
/* Max salt length */
70-
#define RSA_PSS_SALTLEN_MAX (-3)
74+
#define RSA_PSS_SALTLEN_DIGEST WC_RSA_PSS_SALTLEN_DIGEST
75+
#define RSA_PSS_SALTLEN_MAX_SIGN WC_RSA_PSS_SALTLEN_MAX_SIGN
76+
#define RSA_PSS_SALTLEN_AUTO WC_RSA_PSS_SALTLEN_AUTO
77+
#define RSA_PSS_SALTLEN_MAX WC_RSA_PSS_SALTLEN_MAX
7178
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
7279

7380
#endif /* !OPENSSL_COEXIST */

0 commit comments

Comments
 (0)