mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 23:07:33 +09:00
Update NSS to 3.38
- Added HACL*Poly1305 32-bit (INRIA/Microsoft) - Updated to final TLS 1.3 draft version (28) - Removed TLS 1.3 prerelease draft limit check - Removed NPN code - Enabled dev/urandom-only RNG on Linux with NSS_SEED_ONLY_DEV_URANDOM for non-standard environments - Fixed several bugs with TLS 1.3 negotiation - Updated internal certificate store - Added support for the TLS Record Size Limit Extension. - Fixed CVE-2018-0495 - Various security fixes in the ASN.1 code.
This commit is contained in:
parent
0d5d154158
commit
d36d4eb674
197 changed files with 4873 additions and 7145 deletions
|
|
@ -121,6 +121,10 @@ typedef enum { SSLAppOpRead = 0,
|
|||
/* default number of entries in namedGroupPreferences */
|
||||
#define SSL_NAMED_GROUP_COUNT 31
|
||||
|
||||
/* The maximum DH and RSA bit-length supported. */
|
||||
#define SSL_MAX_DH_KEY_BITS 8192
|
||||
#define SSL_MAX_RSA_KEY_BITS 8192
|
||||
|
||||
/* Types and names of elliptic curves used in TLS */
|
||||
typedef enum {
|
||||
ec_type_explicitPrime = 1, /* not supported */
|
||||
|
|
@ -232,6 +236,7 @@ typedef struct sslOptionsStr {
|
|||
/* If SSL_SetNextProtoNego has been called, then this contains the
|
||||
* list of supported protocols. */
|
||||
SECItem nextProtoNego;
|
||||
PRUint16 recordSizeLimit;
|
||||
|
||||
PRUint32 maxEarlyDataSize;
|
||||
unsigned int useSecurity : 1;
|
||||
|
|
@ -251,7 +256,6 @@ typedef struct sslOptionsStr {
|
|||
unsigned int enableFalseStart : 1;
|
||||
unsigned int cbcRandomIV : 1;
|
||||
unsigned int enableOCSPStapling : 1;
|
||||
unsigned int enableNPN : 1;
|
||||
unsigned int enableALPN : 1;
|
||||
unsigned int reuseServerECDHEKey : 1;
|
||||
unsigned int enableFallbackSCSV : 1;
|
||||
|
|
@ -261,6 +265,7 @@ typedef struct sslOptionsStr {
|
|||
unsigned int requireDHENamedGroups : 1;
|
||||
unsigned int enable0RttData : 1;
|
||||
unsigned int enableTls13CompatMode : 1;
|
||||
unsigned int enableDtlsShortHeader : 1;
|
||||
} sslOptions;
|
||||
|
||||
typedef enum { sslHandshakingUndetermined = 0,
|
||||
|
|
@ -325,9 +330,11 @@ struct sslGatherStr {
|
|||
** than into buf or inbuf, while in the GS_HEADER state.
|
||||
** The portion of the SSL record header put here always comes off the wire
|
||||
** as plaintext, never ciphertext.
|
||||
** For SSL3/TLS, the plaintext portion is 5 bytes long. For DTLS it is 13.
|
||||
** For SSL3/TLS, the plaintext portion is 5 bytes long. For DTLS it
|
||||
** varies based on version and header type.
|
||||
*/
|
||||
unsigned char hdr[13];
|
||||
unsigned int hdrLen;
|
||||
|
||||
/* Buffer for DTLS data read off the wire as a single datagram */
|
||||
sslBuffer dtlsPacket;
|
||||
|
|
@ -440,7 +447,7 @@ struct sslSessionIDStr {
|
|||
*/
|
||||
SECItem signedCertTimestamps;
|
||||
|
||||
/* The NPN/ALPN value negotiated in the original connection.
|
||||
/* The ALPN value negotiated in the original connection.
|
||||
* Used for TLS 1.3. */
|
||||
SECItem alpnSelection;
|
||||
|
||||
|
|
@ -780,9 +787,13 @@ struct ssl3StateStr {
|
|||
#define IS_DTLS(ss) (ss->protocolVariant == ssl_variant_datagram)
|
||||
|
||||
typedef struct {
|
||||
SSL3ContentType type;
|
||||
SSL3ProtocolVersion version;
|
||||
sslSequenceNumber seq_num; /* DTLS only */
|
||||
/* |seqNum| eventually contains the reconstructed sequence number. */
|
||||
sslSequenceNumber seqNum;
|
||||
/* The header of the cipherText. */
|
||||
const PRUint8 *hdr;
|
||||
unsigned int hdrLen;
|
||||
|
||||
/* |buf| is the payload of the ciphertext. */
|
||||
sslBuffer *buf;
|
||||
} SSL3Ciphertext;
|
||||
|
||||
|
|
@ -805,7 +816,7 @@ struct ssl3DHParamsStr {
|
|||
};
|
||||
|
||||
typedef struct SSLWrappedSymWrappingKeyStr {
|
||||
PRUint8 wrappedSymmetricWrappingkey[512];
|
||||
PRUint8 wrappedSymmetricWrappingkey[SSL_MAX_RSA_KEY_BITS / 8];
|
||||
CK_MECHANISM_TYPE symWrapMechanism;
|
||||
/* unwrapped symmetric wrapping key uses this mechanism */
|
||||
CK_MECHANISM_TYPE asymWrapMechanism;
|
||||
|
|
@ -1375,8 +1386,11 @@ SECStatus ssl3_SendClientHello(sslSocket *ss, sslClientHelloType type);
|
|||
/*
|
||||
* input into the SSL3 machinery from the actualy network reading code
|
||||
*/
|
||||
SECStatus ssl3_HandleRecord(
|
||||
sslSocket *ss, SSL3Ciphertext *cipher, sslBuffer *out);
|
||||
SECStatus ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cipher);
|
||||
SECStatus ssl3_HandleNonApplicationData(sslSocket *ss, SSL3ContentType rType,
|
||||
DTLSEpoch epoch,
|
||||
sslSequenceNumber seqNum,
|
||||
sslBuffer *databuf);
|
||||
SECStatus ssl_RemoveTLSCBCPadding(sslBuffer *plaintext, unsigned int macSize);
|
||||
|
||||
int ssl3_GatherAppDataRecord(sslSocket *ss, int flags);
|
||||
|
|
@ -1537,8 +1551,8 @@ SECStatus ssl_GetSelfEncryptKeys(sslSocket *ss, unsigned char *keyName,
|
|||
PK11SymKey **encKey, PK11SymKey **macKey);
|
||||
void ssl_ResetSelfEncryptKeys();
|
||||
|
||||
extern SECStatus ssl3_ValidateNextProtoNego(const unsigned char *data,
|
||||
unsigned int length);
|
||||
extern SECStatus ssl3_ValidateAppProtocol(const unsigned char *data,
|
||||
unsigned int length);
|
||||
|
||||
/* Construct a new NSPR socket for the app to use */
|
||||
extern PRFileDesc *ssl_NewPRSocket(sslSocket *ss, PRFileDesc *fd);
|
||||
|
|
@ -1636,6 +1650,9 @@ SSLHashType ssl_SignatureSchemeToHashType(SSLSignatureScheme scheme);
|
|||
KeyType ssl_SignatureSchemeToKeyType(SSLSignatureScheme scheme);
|
||||
|
||||
SECStatus ssl3_SetupCipherSuite(sslSocket *ss, PRBool initHashes);
|
||||
SECStatus ssl_InsertRecordHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec,
|
||||
SSL3ContentType contentType, sslBuffer *wrBuf,
|
||||
PRBool *needsLength);
|
||||
|
||||
/* Pull in DTLS functions */
|
||||
#include "dtlscon.h"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue