mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 16:58:38 +09:00
partly import changes from tenfourfox:
- #627: M1631583 M1631597 M1636771 M1637222 M1649316 M1651520 (2373458b5) - #627: M1631573 (0abd0fc5d)
This commit is contained in:
parent
84282125cf
commit
75e16e5121
10 changed files with 31511 additions and 31 deletions
|
|
@ -111,7 +111,7 @@ ChaCha20Poly1305_InitContext(ChaCha20Poly1305Context *ctx,
|
|||
PORT_SetError(SEC_ERROR_BAD_KEY);
|
||||
return SECFailure;
|
||||
}
|
||||
if (tagLen == 0 || tagLen > 16) {
|
||||
if (tagLen != 16) {
|
||||
PORT_SetError(SEC_ERROR_INPUT_LEN);
|
||||
return SECFailure;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -723,27 +723,6 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature,
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
/*
|
||||
** We do not want timing information to leak the length of k,
|
||||
** so we compute k*G using an equivalent scalar of fixed
|
||||
** bit-length.
|
||||
** Fix based on patch for ECDSA timing attack in the paper
|
||||
** by Billy Bob Brumley and Nicola Tuveri at
|
||||
** http://eprint.iacr.org/2011/232
|
||||
**
|
||||
** How do we convert k to a value of a fixed bit-length?
|
||||
** k starts off as an integer satisfying 0 <= k < n. Hence,
|
||||
** n <= k+n < 2n, which means k+n has either the same number
|
||||
** of bits as n or one more bit than n. If k+n has the same
|
||||
** number of bits as n, the second addition ensures that the
|
||||
** final value has exactly one more bit than n. Thus, we
|
||||
** always end up with a value that exactly one more bit than n.
|
||||
*/
|
||||
CHECK_MPI_OK(mp_add(&k, &n, &k));
|
||||
if (mpl_significant_bits(&k) <= mpl_significant_bits(&n)) {
|
||||
CHECK_MPI_OK(mp_add(&k, &n, &k));
|
||||
}
|
||||
|
||||
/*
|
||||
** ANSI X9.62, Section 5.3.2, Step 2
|
||||
**
|
||||
|
|
|
|||
|
|
@ -245,6 +245,8 @@ mp_err ec_group_set_gf2m233(ECGroup *group, ECCurveName name);
|
|||
|
||||
/* Optimized point multiplication */
|
||||
mp_err ec_group_set_gfp256_32(ECGroup *group, ECCurveName name);
|
||||
mp_err ec_group_set_secp384r1(ECGroup *group, ECCurveName name);
|
||||
mp_err ec_group_set_secp521r1(ECGroup *group, ECCurveName name);
|
||||
|
||||
SECStatus ec_Curve25519_mul(PRUint8 *q, const PRUint8 *s, const PRUint8 *p);
|
||||
#endif /* __ecl_priv_h_ */
|
||||
|
|
|
|||
|
|
@ -164,6 +164,16 @@ construct_ecgroup(const ECCurveName name, mp_int irr, mp_int curvea,
|
|||
MP_CHECKOK(ec_group_set_gfp256(group, name));
|
||||
MP_CHECKOK(ec_group_set_gfp256_32(group, name));
|
||||
break;
|
||||
case ECCurve_SECG_PRIME_384R1:
|
||||
group =
|
||||
ECGroup_consGFp(&irr, &curvea, &curveb, &genx, &geny,
|
||||
&order, cofactor);
|
||||
if (group == NULL) {
|
||||
res = MP_UNDEF;
|
||||
goto CLEANUP;
|
||||
}
|
||||
MP_CHECKOK(ec_group_set_secp384r1(group, name));
|
||||
break;
|
||||
case ECCurve_SECG_PRIME_521R1:
|
||||
group =
|
||||
ECGroup_consGFp(&irr, &curvea, &curveb, &genx, &geny,
|
||||
|
|
@ -173,6 +183,7 @@ construct_ecgroup(const ECCurveName name, mp_int irr, mp_int curvea,
|
|||
goto CLEANUP;
|
||||
}
|
||||
MP_CHECKOK(ec_group_set_gfp521(group, name));
|
||||
MP_CHECKOK(ec_group_set_secp521r1(group, name));
|
||||
break;
|
||||
default:
|
||||
/* use generic arithmetic */
|
||||
|
|
|
|||
19668
security/nss/lib/freebl/ecl/ecp_secp384r1.c
Normal file
19668
security/nss/lib/freebl/ecl/ecp_secp384r1.c
Normal file
File diff suppressed because it is too large
Load diff
11820
security/nss/lib/freebl/ecl/ecp_secp521r1.c
Normal file
11820
security/nss/lib/freebl/ecl/ecp_secp521r1.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -35,6 +35,8 @@
|
|||
'ecl/ecp_jac.c',
|
||||
'ecl/ecp_jm.c',
|
||||
'ecl/ecp_mont.c',
|
||||
'ecl/ecp_secp384r1.c',
|
||||
'ecl/ecp_secp521r1.c',
|
||||
'fipsfreebl.c',
|
||||
'blinit.c',
|
||||
'freeblver.c',
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ ECL_HDRS = ecl-exp.h ecl.h ecp.h ecl-priv.h
|
|||
ECL_SRCS = ecl.c ecl_mult.c ecl_gf.c \
|
||||
ecp_aff.c ecp_jac.c ecp_mont.c \
|
||||
ec_naf.c ecp_jm.c ecp_256.c ecp_384.c ecp_521.c \
|
||||
ecp_256_32.c ecp_25519.c
|
||||
ecp_256_32.c ecp_25519.c ecp_secp384r1.c ecp_secp521r1.c
|
||||
SHA_SRCS = sha_fast.c
|
||||
MPCPU_SRCS = mpcpucache.c
|
||||
VERIFIED_SRCS = $(NULL)
|
||||
|
|
|
|||
|
|
@ -1002,10 +1002,6 @@ sftk_CryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
|
|||
crv = CKR_KEY_TYPE_INCONSISTENT;
|
||||
break;
|
||||
}
|
||||
if (pMechanism->ulParameterLen < 8) {
|
||||
crv = CKR_DOMAIN_PARAMS_INVALID;
|
||||
break;
|
||||
}
|
||||
t = NSS_DES_CBC;
|
||||
goto finish_des;
|
||||
case CKM_DES3_ECB:
|
||||
|
|
@ -1023,12 +1019,13 @@ sftk_CryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
|
|||
crv = CKR_KEY_TYPE_INCONSISTENT;
|
||||
break;
|
||||
}
|
||||
if (pMechanism->ulParameterLen < 8) {
|
||||
t = NSS_DES_EDE3_CBC;
|
||||
finish_des:
|
||||
if ((t != NSS_DES && t != NSS_DES_EDE3) && (pMechanism->pParameter == NULL ||
|
||||
pMechanism->ulParameterLen < 8)) {
|
||||
crv = CKR_DOMAIN_PARAMS_INVALID;
|
||||
break;
|
||||
}
|
||||
t = NSS_DES_EDE3_CBC;
|
||||
finish_des:
|
||||
context->blockSize = 8;
|
||||
att = sftk_FindAttribute(key, CKA_VALUE);
|
||||
if (att == NULL) {
|
||||
|
|
@ -1205,6 +1202,7 @@ sftk_CryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
|
|||
break;
|
||||
|
||||
case CKM_NSS_CHACHA20_CTR:
|
||||
context->multi = PR_FALSE;
|
||||
if (key_type != CKK_NSS_CHACHA20) {
|
||||
crv = CKR_KEY_TYPE_INCONSISTENT;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -6677,7 +6677,7 @@ ssl_CheckServerSessionIdCorrectness(sslSocket *ss, SECItem *sidBytes)
|
|||
* fake. Check for the real value. */
|
||||
if (sentRealSid) {
|
||||
sidMatch = (sidBytes->len == sid->u.ssl3.sessionIDLength) &&
|
||||
PORT_Memcmp(sid->u.ssl3.sessionID, sidBytes->data, sidBytes->len) == 0;
|
||||
(!sidBytes->len || PORT_Memcmp(sid->u.ssl3.sessionID, sidBytes->data, sidBytes->len) == 0);
|
||||
} else {
|
||||
/* Otherwise, the session ID was a fake if TLS 1.3 compat mode is
|
||||
* enabled. If so, check for the fake value. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue