Latest update.
This commit is contained in:
+25
-5
@@ -4062,12 +4062,14 @@ long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void))
|
||||
ctx->ext.status_cb = (int (*)(SSL *, void *))fp;
|
||||
break;
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB:
|
||||
ctx->ext.ticket_key_cb = (int (*)(SSL *, unsigned char *,
|
||||
unsigned char *,
|
||||
EVP_CIPHER_CTX *,
|
||||
HMAC_CTX *, int))fp;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_SRP
|
||||
case SSL_CTRL_SET_SRP_VERIFY_PARAM_CB:
|
||||
@@ -4096,6 +4098,14 @@ long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void))
|
||||
return 1;
|
||||
}
|
||||
|
||||
int SSL_CTX_set_tlsext_ticket_key_evp_cb
|
||||
(SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *,
|
||||
EVP_CIPHER_CTX *, EVP_MAC_CTX *, int))
|
||||
{
|
||||
ctx->ext.ticket_key_evp_cb = fp;
|
||||
return 1;
|
||||
}
|
||||
|
||||
const SSL_CIPHER *ssl3_get_cipher_by_id(uint32_t id)
|
||||
{
|
||||
SSL_CIPHER c;
|
||||
@@ -4630,9 +4640,9 @@ int ssl_fill_hello_random(SSL *s, int server, unsigned char *result, size_t len,
|
||||
unsigned char *p = result;
|
||||
|
||||
l2n(Time, p);
|
||||
ret = RAND_bytes(p, len - 4);
|
||||
ret = RAND_bytes_ex(s->ctx->libctx, p, len - 4);
|
||||
} else {
|
||||
ret = RAND_bytes(result, len);
|
||||
ret = RAND_bytes_ex(s->ctx->libctx, result, len);
|
||||
}
|
||||
|
||||
if (ret > 0) {
|
||||
@@ -4719,14 +4729,14 @@ int ssl_generate_master_secret(SSL *s, unsigned char *pms, size_t pmslen,
|
||||
}
|
||||
|
||||
/* Generate a private key from parameters */
|
||||
EVP_PKEY *ssl_generate_pkey(EVP_PKEY *pm)
|
||||
EVP_PKEY *ssl_generate_pkey(SSL *s, EVP_PKEY *pm)
|
||||
{
|
||||
EVP_PKEY_CTX *pctx = NULL;
|
||||
EVP_PKEY *pkey = NULL;
|
||||
|
||||
if (pm == NULL)
|
||||
return NULL;
|
||||
pctx = EVP_PKEY_CTX_new(pm, NULL);
|
||||
pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, pm, s->ctx->propq);
|
||||
if (pctx == NULL)
|
||||
goto err;
|
||||
if (EVP_PKEY_keygen_init(pctx) <= 0)
|
||||
@@ -4759,6 +4769,11 @@ EVP_PKEY *ssl_generate_pkey_group(SSL *s, uint16_t id)
|
||||
goto err;
|
||||
}
|
||||
gtype = ginf->flags & TLS_GROUP_TYPE;
|
||||
/*
|
||||
* TODO(3.0): Convert these EVP_PKEY_CTX_new_id calls to ones that take
|
||||
* s->ctx->libctx and s->ctx->propq when keygen has been updated to be
|
||||
* provider aware.
|
||||
*/
|
||||
# ifndef OPENSSL_NO_DH
|
||||
if (gtype == TLS_GROUP_FFDHE)
|
||||
pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_DH, NULL);
|
||||
@@ -4852,6 +4867,11 @@ EVP_PKEY *ssl_generate_param_group(uint16_t id)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* TODO(3.0): Convert this EVP_PKEY_CTX_new_id call to one that takes
|
||||
* s->ctx->libctx and s->ctx->propq when paramgen has been updated to be
|
||||
* provider aware.
|
||||
*/
|
||||
pkey_ctx_id = (ginf->flags & TLS_GROUP_FFDHE)
|
||||
? EVP_PKEY_DH : EVP_PKEY_EC;
|
||||
pctx = EVP_PKEY_CTX_new_id(pkey_ctx_id, NULL);
|
||||
@@ -4898,7 +4918,7 @@ int ssl_derive(SSL *s, EVP_PKEY *privkey, EVP_PKEY *pubkey, int gensecret)
|
||||
return 0;
|
||||
}
|
||||
|
||||
pctx = EVP_PKEY_CTX_new(privkey, NULL);
|
||||
pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, privkey, s->ctx->propq);
|
||||
|
||||
if (EVP_PKEY_derive_init(pctx) <= 0
|
||||
|| EVP_PKEY_derive_set_peer(pctx, pubkey) <= 0
|
||||
|
||||
Reference in New Issue
Block a user