mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 17:37:30 +09:00
re-introduce old nss im too tired for this
This commit is contained in:
parent
3c46be320d
commit
3a838106b9
2871 changed files with 1374431 additions and 1762417 deletions
|
|
@ -24,7 +24,7 @@
|
|||
#include "hasht.h"
|
||||
#include "nssilock.h"
|
||||
#include "pkcs11t.h"
|
||||
#if defined(XP_UNIX)
|
||||
#if defined(XP_UNIX) || defined(XP_BEOS)
|
||||
#include "unistd.h"
|
||||
#endif
|
||||
#include "nssrwlk.h"
|
||||
|
|
@ -36,11 +36,7 @@
|
|||
|
||||
typedef struct sslSocketStr sslSocket;
|
||||
typedef struct sslNamedGroupDefStr sslNamedGroupDef;
|
||||
typedef struct sslEchConfigStr sslEchConfig;
|
||||
typedef struct sslEchConfigContentsStr sslEchConfigContents;
|
||||
typedef struct sslEchCookieDataStr sslEchCookieData;
|
||||
typedef struct sslEchXtnStateStr sslEchXtnState;
|
||||
typedef struct sslPskStr sslPsk;
|
||||
typedef struct sslEsniKeysStr sslEsniKeys;
|
||||
typedef struct sslDelegatedCredentialStr sslDelegatedCredential;
|
||||
typedef struct sslEphemeralKeyPairStr sslEphemeralKeyPair;
|
||||
typedef struct TLS13KeyShareEntryStr TLS13KeyShareEntry;
|
||||
|
|
@ -240,7 +236,7 @@ typedef struct {
|
|||
#endif
|
||||
} ssl3CipherSuiteCfg;
|
||||
|
||||
#define ssl_V3_SUITES_IMPLEMENTED 71
|
||||
#define ssl_V3_SUITES_IMPLEMENTED 75
|
||||
|
||||
#define MAX_DTLS_SRTP_CIPHER_SUITES 4
|
||||
|
||||
|
|
@ -285,13 +281,6 @@ typedef struct sslOptionsStr {
|
|||
unsigned int enableV2CompatibleHello : 1;
|
||||
unsigned int enablePostHandshakeAuth : 1;
|
||||
unsigned int enableDelegatedCredentials : 1;
|
||||
unsigned int enableDtls13VersionCompat : 1;
|
||||
unsigned int suppressEndOfEarlyData : 1;
|
||||
unsigned int enableTls13GreaseEch : 1;
|
||||
unsigned int enableTls13BackendEch : 1;
|
||||
unsigned int callExtensionWriterOnEchInner : 1;
|
||||
unsigned int enableGrease : 1;
|
||||
unsigned int enableChXtnPermutation : 1;
|
||||
} sslOptions;
|
||||
|
||||
typedef enum { sslHandshakingUndetermined = 0,
|
||||
|
|
@ -612,24 +601,6 @@ typedef struct {
|
|||
PRUint32 timeout;
|
||||
} dtlsTimer;
|
||||
|
||||
/* TLS 1.3 client GREASE entry indices. */
|
||||
typedef enum {
|
||||
grease_cipher,
|
||||
grease_extension1,
|
||||
grease_extension2,
|
||||
grease_group,
|
||||
grease_sigalg,
|
||||
grease_version,
|
||||
grease_alpn,
|
||||
grease_entries
|
||||
} tls13ClientGreaseEntry;
|
||||
|
||||
/* TLS 1.3 client GREASE values struct. */
|
||||
typedef struct tls13ClientGreaseStr {
|
||||
PRUint16 idx[grease_entries];
|
||||
PRUint8 pskKem;
|
||||
} tls13ClientGrease;
|
||||
|
||||
/*
|
||||
** This is the "hs" member of the "ssl3" struct.
|
||||
** This entire struct is protected by ssl3HandshakeLock
|
||||
|
|
@ -637,26 +608,17 @@ typedef struct tls13ClientGreaseStr {
|
|||
typedef struct SSL3HandshakeStateStr {
|
||||
SSL3Random server_random;
|
||||
SSL3Random client_random;
|
||||
SSL3Random client_inner_random; /* TLS 1.3 ECH Inner. */
|
||||
SSL3WaitState ws; /* May also contain SSL3WaitState | 0x80 for TLS 1.3 */
|
||||
SSL3WaitState ws; /* May also contain SSL3WaitState | 0x80 for TLS 1.3 */
|
||||
|
||||
/* This group of members is used for handshake running hashes. */
|
||||
SSL3HandshakeHashType hashType;
|
||||
sslBuffer messages; /* Accumulated handshake messages */
|
||||
sslBuffer echInnerMessages; /* Accumulated ECH Inner handshake messages */
|
||||
sslBuffer messages; /* Accumulated handshake messages */
|
||||
/* PKCS #11 mode:
|
||||
* SSL 3.0 - TLS 1.1 use both |md5| and |sha|. |md5| is used for MD5 and
|
||||
* |sha| for SHA-1.
|
||||
* TLS 1.2 and later use only |sha| variants, for SHA-256.
|
||||
* Under normal (non-1.3 ECH) handshakes, only |sha| and |shaPostHandshake|
|
||||
* are used. When doing 1.3 ECH, |sha| contains the transcript hash
|
||||
* corresponding to the outer Client Hello. To facilitate secure retry and
|
||||
* disablement, |shaEchInner|, tracks, in parallel, the transcript hash
|
||||
* corresponding to the inner Client Hello. Once we process the SH
|
||||
* extensions, coalesce into |sha|. */
|
||||
* TLS 1.2 and later use only |sha|, for SHA-256. */
|
||||
PK11Context *md5;
|
||||
PK11Context *sha;
|
||||
PK11Context *shaEchInner;
|
||||
PK11Context *shaPostHandshake;
|
||||
SSLSignatureScheme signatureScheme;
|
||||
const ssl3KEADef *kea_def;
|
||||
|
|
@ -686,25 +648,20 @@ typedef struct SSL3HandshakeStateStr {
|
|||
PRUint8 data[72];
|
||||
} finishedMsgs;
|
||||
|
||||
/* True when handshake is blocked on client certificate selection */
|
||||
PRBool clientCertificatePending;
|
||||
/* Parameters stored whilst waiting for client certificate */
|
||||
SSLSignatureScheme *clientAuthSignatureSchemes;
|
||||
unsigned int clientAuthSignatureSchemesLen;
|
||||
|
||||
PRBool authCertificatePending;
|
||||
/* Which function should SSL_RestartHandshake* call if we're blocked?
|
||||
* One of NULL, ssl3_SendClientSecondRound, ssl3_FinishHandshake,
|
||||
* or ssl3_AlwaysFail */
|
||||
sslRestartTarget restartTarget;
|
||||
/* Shared state between ssl3_HandleFinished and ssl3_FinishHandshake */
|
||||
PRBool cacheSID;
|
||||
|
||||
PRBool canFalseStart; /* Can/did we False Start */
|
||||
/* Which preliminaryinfo values have been set. */
|
||||
PRUint32 preliminaryInfo;
|
||||
|
||||
/* Parsed extensions */
|
||||
PRCList remoteExtensions; /* Parsed incoming extensions */
|
||||
PRCList echOuterExtensions; /* If ECH, hold CHOuter extensions for decompression. */
|
||||
PRCList remoteExtensions; /* Parsed incoming extensions */
|
||||
|
||||
/* This group of values is used for DTLS */
|
||||
PRUint16 sendMessageSeq; /* The sending message sequence
|
||||
|
|
@ -732,8 +689,9 @@ typedef struct SSL3HandshakeStateStr {
|
|||
/* This group of values is used for TLS 1.3 and above */
|
||||
PK11SymKey *currentSecret; /* The secret down the "left hand side"
|
||||
* of the TLS 1.3 key schedule. */
|
||||
PK11SymKey *resumptionMasterSecret; /* The resumption_master_secret. */
|
||||
PK11SymKey *resumptionMasterSecret; /* The resumption PSK. */
|
||||
PK11SymKey *dheSecret; /* The (EC)DHE shared secret. */
|
||||
PK11SymKey *pskBinderKey; /* Used to compute the PSK binder. */
|
||||
PK11SymKey *clientEarlyTrafficSecret; /* The secret we use for 0-RTT. */
|
||||
PK11SymKey *clientHsTrafficSecret; /* The source keys for handshake */
|
||||
PK11SymKey *serverHsTrafficSecret; /* traffic keys. */
|
||||
|
|
@ -754,47 +712,23 @@ typedef struct SSL3HandshakeStateStr {
|
|||
* before the handshake started. */
|
||||
PRBool rejectCcs; /* Excessive ChangeCipherSpecs are rejected. */
|
||||
PRBool clientCertRequested; /* True if CertificateRequest received. */
|
||||
PRBool endOfFlight; /* Processed a full flight (DTLS 1.3). */
|
||||
ssl3KEADef kea_def_mutable; /* Used to hold the writable kea_def
|
||||
* we use for TLS 1.3 */
|
||||
PRTime serverHelloTime; /* Time the ServerHello flight was sent. */
|
||||
PRUint16 ticketNonce; /* A counter we use for tickets. */
|
||||
SECItem fakeSid; /* ... (server) the SID the client used. */
|
||||
PRCList psks; /* A list of PSKs, resumption and/or external. */
|
||||
|
||||
/* rttEstimate is used to guess the round trip time between server and client.
|
||||
* When the server sends ServerHello it sets this to the current time.
|
||||
* Only after it receives a message from the client's second flight does it
|
||||
* set the value to something resembling an RTT estimate. */
|
||||
PRTime rttEstimate;
|
||||
PRBool endOfFlight; /* Processed a full flight (DTLS 1.3). */
|
||||
|
||||
/* The following lists contain DTLSHandshakeRecordEntry */
|
||||
PRCList dtlsSentHandshake; /* Used to map records to handshake fragments. */
|
||||
PRCList dtlsRcvdHandshake; /* Handshake records we have received
|
||||
* used to generate ACKs. */
|
||||
|
||||
/* TLS 1.3 ECH state. */
|
||||
PRUint8 greaseEchSize;
|
||||
PRBool echAccepted; /* Client/Server: True if we've commited to using CHInner. */
|
||||
PRBool echDecided;
|
||||
HpkeContext *echHpkeCtx; /* Client/Server: HPKE context for ECH. */
|
||||
const char *echPublicName; /* Client: If rejected, the ECHConfig.publicName to
|
||||
* use for certificate verification. */
|
||||
sslBuffer greaseEchBuf; /* Client: Remember GREASE ECH, as advertised, for CH2 (HRR case).
|
||||
Server: Remember HRR Grease Value, for transcript calculations */
|
||||
PRBool echInvalidExtension; /* Client: True if the server offered an invalid extension for the ClientHelloInner */
|
||||
|
||||
/* TLS 1.3 GREASE state. */
|
||||
tls13ClientGrease *grease;
|
||||
|
||||
/* ClientHello Extension Permutation state. */
|
||||
sslExtensionBuilder *chExtensionPermutation;
|
||||
} SSL3HandshakeState;
|
||||
|
||||
#define SSL_ASSERT_HASHES_EMPTY(ss) \
|
||||
do { \
|
||||
PORT_Assert(ss->ssl3.hs.hashType == handshake_hash_unknown); \
|
||||
PORT_Assert(ss->ssl3.hs.messages.len == 0); \
|
||||
PORT_Assert(ss->ssl3.hs.echInnerMessages.len == 0); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
|
|
@ -877,7 +811,7 @@ typedef struct {
|
|||
/* |seqNum| eventually contains the reconstructed sequence number. */
|
||||
sslSequenceNumber seqNum;
|
||||
/* The header of the cipherText. */
|
||||
PRUint8 *hdr;
|
||||
const PRUint8 *hdr;
|
||||
unsigned int hdrLen;
|
||||
|
||||
/* |buf| is the payload of the ciphertext. */
|
||||
|
|
@ -1160,17 +1094,16 @@ struct sslSocketStr {
|
|||
/* Whether we are doing stream or datagram mode */
|
||||
SSLProtocolVariant protocolVariant;
|
||||
|
||||
/* TLS 1.3 Encrypted Client Hello. */
|
||||
PRCList echConfigs; /* Client/server: Must not change while hs
|
||||
* is in-progress. */
|
||||
SECKEYPublicKey *echPubKey; /* Server: The ECH keypair used in HPKE. */
|
||||
SECKEYPrivateKey *echPrivKey; /* As above. */
|
||||
/* The information from the ESNI keys record
|
||||
* (also the private key for the server). */
|
||||
sslEsniKeys *esniKeys;
|
||||
|
||||
/* Anti-replay for TLS 1.3 0-RTT. */
|
||||
SSLAntiReplayContext *antiReplay;
|
||||
|
||||
/* An out-of-band PSK. */
|
||||
sslPsk *psk;
|
||||
/* peer data passed in during getClientAuthData */
|
||||
const SSLSignatureScheme *peerSignatureSchemes;
|
||||
unsigned int peerSignatureSchemeCount;
|
||||
};
|
||||
|
||||
struct sslSelfEncryptKeysStr {
|
||||
|
|
@ -1294,7 +1227,7 @@ extern void ssl3_SetAlwaysBlock(sslSocket *ss);
|
|||
|
||||
extern SECStatus ssl_EnableNagleDelay(sslSocket *ss, PRBool enabled);
|
||||
|
||||
extern SECStatus ssl_FinishHandshake(sslSocket *ss);
|
||||
extern void ssl_FinishHandshake(sslSocket *ss);
|
||||
|
||||
extern SECStatus ssl_CipherPolicySet(PRInt32 which, PRInt32 policy);
|
||||
|
||||
|
|
@ -1323,10 +1256,6 @@ ssl_HashHandshakeMessageInt(sslSocket *ss, SSLHandshakeType type,
|
|||
sslUpdateHandshakeHashes cb);
|
||||
SECStatus ssl_HashHandshakeMessage(sslSocket *ss, SSLHandshakeType type,
|
||||
const PRUint8 *b, PRUint32 length);
|
||||
SECStatus ssl_HashHandshakeMessageEchInner(sslSocket *ss, SSLHandshakeType type,
|
||||
const PRUint8 *b, PRUint32 length);
|
||||
SECStatus ssl_HashHandshakeMessageDefault(sslSocket *ss, SSLHandshakeType type,
|
||||
const PRUint8 *b, PRUint32 length);
|
||||
SECStatus ssl_HashPostHandshakeMessage(sslSocket *ss, SSLHandshakeType type,
|
||||
const PRUint8 *b, PRUint32 length);
|
||||
|
||||
|
|
@ -1496,7 +1425,6 @@ extern SECStatus SSL3_SendAlert(sslSocket *ss, SSL3AlertLevel level,
|
|||
extern SECStatus ssl3_DecodeError(sslSocket *ss);
|
||||
|
||||
extern SECStatus ssl3_AuthCertificateComplete(sslSocket *ss, PRErrorCode error);
|
||||
extern SECStatus ssl3_ClientCertCallbackComplete(sslSocket *ss, SECStatus outcome, SECKEYPrivateKey *clientPrivateKey, CERTCertificate *clientCertificate);
|
||||
|
||||
/*
|
||||
* for dealing with SSL 3.0 clients sending SSL 2.0 format hellos
|
||||
|
|
@ -1504,11 +1432,6 @@ extern SECStatus ssl3_ClientCertCallbackComplete(sslSocket *ss, SECStatus outcom
|
|||
extern SECStatus ssl3_HandleV2ClientHello(
|
||||
sslSocket *ss, unsigned char *buffer, unsigned int length, PRUint8 padding);
|
||||
|
||||
SECStatus
|
||||
ssl3_CreateClientHelloPreamble(sslSocket *ss, const sslSessionID *sid,
|
||||
PRBool realSid, PRUint16 version, PRBool isEchInner,
|
||||
const sslBuffer *extensions, sslBuffer *preamble);
|
||||
SECStatus ssl3_InsertChHeaderSize(const sslSocket *ss, sslBuffer *preamble, const sslBuffer *extensions);
|
||||
SECStatus ssl3_SendClientHello(sslSocket *ss, sslClientHelloType type);
|
||||
|
||||
/*
|
||||
|
|
@ -1750,7 +1673,6 @@ SECStatus ssl3_NegotiateCipherSuiteInner(sslSocket *ss, const SECItem *suites,
|
|||
SECStatus ssl3_NegotiateCipherSuite(sslSocket *ss, const SECItem *suites,
|
||||
PRBool initHashes);
|
||||
SECStatus ssl3_InitHandshakeHashes(sslSocket *ss);
|
||||
void ssl3_CoalesceEchHandshakeHashes(sslSocket *ss);
|
||||
SECStatus ssl3_ServerCallSNICallback(sslSocket *ss);
|
||||
SECStatus ssl3_FlushHandshake(sslSocket *ss, PRInt32 flags);
|
||||
SECStatus ssl3_CompleteHandleCertificate(sslSocket *ss,
|
||||
|
|
@ -1765,21 +1687,15 @@ SECStatus ssl3_HandleServerSpki(sslSocket *ss);
|
|||
SECStatus ssl3_AuthCertificate(sslSocket *ss);
|
||||
SECStatus ssl_ReadCertificateStatus(sslSocket *ss, PRUint8 *b,
|
||||
PRUint32 length);
|
||||
SECStatus ssl3_EncodeSigAlgs(const sslSocket *ss, PRUint16 minVersion, PRBool forCert,
|
||||
PRBool grease, sslBuffer *buf);
|
||||
SECStatus ssl3_EncodeFilteredSigAlgs(const sslSocket *ss,
|
||||
const SSLSignatureScheme *schemes,
|
||||
PRUint32 numSchemes, PRBool grease, sslBuffer *buf);
|
||||
SECStatus ssl3_FilterSigAlgs(const sslSocket *ss, PRUint16 minVersion, PRBool disableRsae, PRBool forCert,
|
||||
unsigned int maxSchemes, SSLSignatureScheme *filteredSchemes,
|
||||
unsigned int *numFilteredSchemes);
|
||||
SECStatus ssl3_EncodeSigAlgs(const sslSocket *ss, PRUint16 minVersion,
|
||||
sslBuffer *buf);
|
||||
SECStatus ssl_GetCertificateRequestCAs(const sslSocket *ss,
|
||||
unsigned int *calenp,
|
||||
const SECItem **namesp,
|
||||
unsigned int *nnamesp);
|
||||
SECStatus ssl3_ParseCertificateRequestCAs(sslSocket *ss, PRUint8 **b,
|
||||
PRUint32 *length, CERTDistNames *ca_list);
|
||||
SECStatus ssl3_BeginHandleCertificateRequest(
|
||||
SECStatus ssl3_CompleteHandleCertificateRequest(
|
||||
sslSocket *ss, const SSLSignatureScheme *signatureSchemes,
|
||||
unsigned int signatureSchemeCount, CERTDistNames *ca_list);
|
||||
SECStatus ssl_ConstructServerHello(sslSocket *ss, PRBool helloRetry,
|
||||
|
|
@ -1797,7 +1713,6 @@ SECStatus ssl_CreateECDHEphemeralKeyPair(const sslSocket *ss,
|
|||
SECStatus ssl_CreateStaticECDHEKey(sslSocket *ss,
|
||||
const sslNamedGroupDef *ecGroup);
|
||||
SECStatus ssl3_FlushHandshake(sslSocket *ss, PRInt32 flags);
|
||||
SECStatus ssl3_GetNewRandom(SSL3Random random);
|
||||
PK11SymKey *ssl3_GetWrappingKey(sslSocket *ss,
|
||||
PK11SlotInfo *masterSecretSlot,
|
||||
CK_MECHANISM_TYPE masterWrapMech,
|
||||
|
|
@ -1830,7 +1745,6 @@ SECStatus ssl_PickClientSignatureScheme(sslSocket *ss,
|
|||
unsigned int numSchemes,
|
||||
SSLSignatureScheme *schemePtr);
|
||||
SECOidTag ssl3_HashTypeToOID(SSLHashType hashType);
|
||||
SECOidTag ssl3_AuthTypeToOID(SSLAuthType hashType);
|
||||
SSLHashType ssl_SignatureSchemeToHashType(SSLSignatureScheme scheme);
|
||||
SSLAuthType ssl_SignatureSchemeToAuthType(SSLSignatureScheme scheme);
|
||||
|
||||
|
|
@ -1895,9 +1809,6 @@ PK11SymKey *ssl_unwrapSymKey(PK11SymKey *wrapKey,
|
|||
CK_MECHANISM_TYPE target, CK_ATTRIBUTE_TYPE operation,
|
||||
int keySize, CK_FLAGS keyFlags, void *pinArg);
|
||||
|
||||
/* determine if the current ssl connection is operating in FIPS mode */
|
||||
PRBool ssl_isFIPS(sslSocket *ss);
|
||||
|
||||
/* Experimental APIs. Remove when stable. */
|
||||
|
||||
SECStatus SSLExp_SetResumptionTokenCallback(PRFileDesc *fd,
|
||||
|
|
@ -1927,10 +1838,6 @@ SECStatus SSLExp_GetCurrentEpoch(PRFileDesc *fd, PRUint16 *readEpoch,
|
|||
SECStatus SSLExp_MakeAead(PRUint16 version, PRUint16 cipherSuite, PK11SymKey *secret,
|
||||
const char *labelPrefix, unsigned int labelPrefixLen,
|
||||
SSLAeadContext **ctx);
|
||||
|
||||
SECStatus SSLExp_MakeVariantAead(PRUint16 version, PRUint16 cipherSuite, SSLProtocolVariant variant,
|
||||
PK11SymKey *secret, const char *labelPrefix,
|
||||
unsigned int labelPrefixLen, SSLAeadContext **ctx);
|
||||
SECStatus SSLExp_DestroyAead(SSLAeadContext *ctx);
|
||||
SECStatus SSLExp_AeadEncrypt(const SSLAeadContext *ctx, PRUint64 counter,
|
||||
const PRUint8 *aad, unsigned int aadLen,
|
||||
|
|
@ -1947,68 +1854,18 @@ SECStatus SSLExp_HkdfExpandLabel(PRUint16 version, PRUint16 cipherSuite, PK11Sym
|
|||
const PRUint8 *hsHash, unsigned int hsHashLen,
|
||||
const char *label, unsigned int labelLen,
|
||||
PK11SymKey **key);
|
||||
SECStatus SSLExp_HkdfVariantExpandLabel(PRUint16 version, PRUint16 cipherSuite, PK11SymKey *prk,
|
||||
const PRUint8 *hsHash, unsigned int hsHashLen,
|
||||
const char *label, unsigned int labelLen,
|
||||
SSLProtocolVariant variant, PK11SymKey **key);
|
||||
SECStatus
|
||||
SSLExp_HkdfExpandLabelWithMech(PRUint16 version, PRUint16 cipherSuite, PK11SymKey *prk,
|
||||
const PRUint8 *hsHash, unsigned int hsHashLen,
|
||||
const char *label, unsigned int labelLen,
|
||||
CK_MECHANISM_TYPE mech, unsigned int keySize,
|
||||
PK11SymKey **keyp);
|
||||
SECStatus
|
||||
SSLExp_HkdfVariantExpandLabelWithMech(PRUint16 version, PRUint16 cipherSuite, PK11SymKey *prk,
|
||||
const PRUint8 *hsHash, unsigned int hsHashLen,
|
||||
const char *label, unsigned int labelLen,
|
||||
CK_MECHANISM_TYPE mech, unsigned int keySize,
|
||||
SSLProtocolVariant variant, PK11SymKey **keyp);
|
||||
|
||||
SECStatus SSLExp_SetDtls13VersionWorkaround(PRFileDesc *fd, PRBool enabled);
|
||||
|
||||
SECStatus SSLExp_SetTimeFunc(PRFileDesc *fd, SSLTimeFunc f, void *arg);
|
||||
|
||||
extern SECStatus ssl_CreateMaskingContextInner(PRUint16 version, PRUint16 cipherSuite,
|
||||
SSLProtocolVariant variant,
|
||||
PK11SymKey *secret,
|
||||
const char *label,
|
||||
unsigned int labelLen,
|
||||
SSLMaskingContext **ctx);
|
||||
|
||||
extern SECStatus ssl_CreateMaskInner(SSLMaskingContext *ctx, const PRUint8 *sample,
|
||||
unsigned int sampleLen, PRUint8 *outMask,
|
||||
unsigned int maskLen);
|
||||
|
||||
extern SECStatus ssl_DestroyMaskingContextInner(SSLMaskingContext *ctx);
|
||||
|
||||
SECStatus SSLExp_CreateMaskingContext(PRUint16 version, PRUint16 cipherSuite,
|
||||
PK11SymKey *secret,
|
||||
const char *label,
|
||||
unsigned int labelLen,
|
||||
SSLMaskingContext **ctx);
|
||||
|
||||
SECStatus SSLExp_CreateVariantMaskingContext(PRUint16 version, PRUint16 cipherSuite,
|
||||
SSLProtocolVariant variant,
|
||||
PK11SymKey *secret,
|
||||
const char *label,
|
||||
unsigned int labelLen,
|
||||
SSLMaskingContext **ctx);
|
||||
|
||||
SECStatus SSLExp_CreateMask(SSLMaskingContext *ctx, const PRUint8 *sample,
|
||||
unsigned int sampleLen, PRUint8 *mask,
|
||||
unsigned int len);
|
||||
|
||||
SECStatus SSLExp_DestroyMaskingContext(SSLMaskingContext *ctx);
|
||||
|
||||
SECStatus SSLExp_EnableTls13GreaseEch(PRFileDesc *fd, PRBool enabled);
|
||||
SECStatus SSLExp_SetTls13GreaseEchSize(PRFileDesc *fd, PRUint8 size);
|
||||
|
||||
SECStatus SSLExp_EnableTls13BackendEch(PRFileDesc *fd, PRBool enabled);
|
||||
SECStatus SSLExp_CallExtensionWriterOnEchInner(PRFileDesc *fd, PRBool enabled);
|
||||
|
||||
SEC_END_PROTOS
|
||||
|
||||
#if defined(XP_UNIX) || defined(XP_OS2)
|
||||
#if defined(XP_UNIX) || defined(XP_OS2) || defined(XP_BEOS)
|
||||
#define SSL_GETPID getpid
|
||||
#elif defined(WIN32)
|
||||
extern int __cdecl _getpid(void);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue