Skip to content

Commit 1a1bdb2

Browse files
committed
Address review feedback
1 parent b553e74 commit 1a1bdb2

2 files changed

Lines changed: 20 additions & 22 deletions

File tree

src/internal.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41491,7 +41491,7 @@ static int DefTicketEncCb(WOLFSSL* ssl, byte key_name[WOLFSSL_TICKET_NAME_SZ],
4149141491
{
4149241492
RsaKey* key = (RsaKey*)ssl->hsKey;
4149341493
volatile int lenErrMask;
41494-
int lenErrMaskCopy;
41494+
int mask;
4149541495

4149641496
ret = RsaDec(ssl,
4149741497
input + args->idx,
@@ -41518,9 +41518,11 @@ static int DefTicketEncCb(WOLFSSL* ssl, byte key_name[WOLFSSL_TICKET_NAME_SZ],
4151841518
goto exit_dcke;
4151941519

4152041520
lenErrMask = 0 - (SECRET_LEN != args->sigSz);
41521-
lenErrMaskCopy = lenErrMask;
41522-
args->lastErr = (ret & (~lenErrMaskCopy)) |
41523-
(WC_NO_ERR_TRACE(RSA_PAD_E) & lenErrMaskCopy);
41521+
/* Snapshot volatile to avoid multiple volatile
41522+
* accesses per expression. */
41523+
mask = lenErrMask;
41524+
args->lastErr = (ret & (~mask)) |
41525+
(WC_NO_ERR_TRACE(RSA_PAD_E) & mask);
4152441526
ret = 0;
4152541527
break;
4152641528
} /* rsa_kea */

wolfcrypt/src/rsa.c

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1890,10 +1890,8 @@ static int RsaUnPad(const byte *pkcsBlock, unsigned int pkcsBlockLen,
18901890
volatile byte invalid = 0;
18911891
volatile byte minPad;
18921892
volatile int invalidMask;
1893-
word16 pastSepCopy;
1894-
byte invalidCopy;
1895-
byte minPadCopy;
1896-
int invalidMaskCopy;
1893+
byte inv;
1894+
word16 sep;
18971895

18981896
i = 0;
18991897
/* Decrypted with private key - unpad must be constant time. */
@@ -1904,27 +1902,25 @@ static int RsaUnPad(const byte *pkcsBlock, unsigned int pkcsBlockLen,
19041902
pastSep |= ctMask16Eq(pkcsBlock[j], 0x00);
19051903
}
19061904

1905+
/* Snapshot volatiles to avoid multiple volatile accesses per
1906+
* expression. */
1907+
inv = invalid;
1908+
sep = pastSep;
1909+
19071910
/* Minimum of 11 bytes of pre-message data - including leading 0x00. */
19081911
minPad = ctMaskLT(i, RSA_MIN_PAD_SZ);
1909-
minPadCopy = minPad;
1910-
invalidCopy = invalid;
1911-
invalid = invalidCopy | minPadCopy;
1912+
inv |= minPad;
19121913
/* Must have seen separator. */
1913-
pastSepCopy = pastSep;
1914-
invalidCopy = invalid;
1915-
invalid = invalidCopy | (byte)~pastSepCopy;
1914+
inv |= (byte)~sep;
19161915
/* First byte must be 0x00. */
1917-
invalidCopy = invalid;
1918-
invalid = invalidCopy | ctMaskNotEq(pkcsBlock[0], 0x00);
1916+
inv |= ctMaskNotEq(pkcsBlock[0], 0x00);
19191917
/* Check against expected block type: padValue */
1920-
invalidCopy = invalid;
1921-
invalid = invalidCopy | ctMaskNotEq(pkcsBlock[1], padValue);
1918+
inv |= ctMaskNotEq(pkcsBlock[1], padValue);
19221919

1920+
invalid = inv;
19231921
*output = (byte *)(pkcsBlock + i);
1924-
invalidCopy = invalid;
1925-
invalidMask = (int)-1 + (int)(invalidCopy >> 7);
1926-
invalidMaskCopy = invalidMask;
1927-
ret = invalidMaskCopy & ((int)pkcsBlockLen - i);
1922+
invalidMask = (int)-1 + (int)(inv >> 7);
1923+
ret = invalidMask & ((int)pkcsBlockLen - i);
19281924
}
19291925
#endif
19301926

0 commit comments

Comments
 (0)