Commit 1ea4d09a authored by Matt Caswell's avatar Matt Caswell
Browse files

Construct the server side early_data extension

parent d781d247
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1629,6 +1629,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void));
long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void));

# define SSL_EARLY_DATA_NOT_SENT    0
# define SSL_EARLY_DATA_REJECTED    1
# define SSL_EARLY_DATA_ACCEPTED    2

__owur int SSL_get_early_data_status(SSL *s);

__owur int SSL_get_error(const SSL *s, int ret_code);
__owur const char *SSL_get_version(const SSL *s);

@@ -2374,6 +2380,7 @@ int ERR_load_SSL_strings(void);
# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE             374
# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG           452
# define SSL_F_TLS_CONSTRUCT_STOC_DONE                    375
# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA              531
# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO         525
# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS           453
# define SSL_F_TLS_CONSTRUCT_STOC_EMS                     454
+2 −0
Original line number Diff line number Diff line
@@ -362,6 +362,8 @@ static ERR_STRING_DATA SSL_str_functs[] = {
    {ERR_FUNC(SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG),
     "tls_construct_stoc_cryptopro_bug"},
    {ERR_FUNC(SSL_F_TLS_CONSTRUCT_STOC_DONE), "TLS_CONSTRUCT_STOC_DONE"},
    {ERR_FUNC(SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA),
     "tls_construct_stoc_early_data"},
    {ERR_FUNC(SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO),
     "tls_construct_stoc_early_data_info"},
    {ERR_FUNC(SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS),
+5 −0
Original line number Diff line number Diff line
@@ -1663,6 +1663,11 @@ int ssl_end_of_early_data_seen(SSL *s)
    return 0;
}

int SSL_get_early_data_status(SSL *s)
{
    return s->ext.early_data;
}

static int ssl_peek_internal(SSL *s, void *buf, size_t num, size_t *readbytes)
{
    if (s->handshake_func == NULL) {
+2 −2
Original line number Diff line number Diff line
@@ -1182,8 +1182,8 @@ struct ssl_st {
        /* Set to one if we have negotiated ETM */
        int use_etm;

        /* Set to 1 if we are expecting to receive early data */
        int expect_early_data;
        /* Are we expecting to receive early data? */
        int early_data;
    } ext;

    /* Parsed form of the ClientHello, kept around across early_cb calls. */
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ static const EXTENSION_DEFINITION ext_defs[] = {
    {
        TLSEXT_TYPE_early_data,
        EXT_CLIENT_HELLO | EXT_TLS1_3_ENCRYPTED_EXTENSIONS,
        NULL, tls_parse_ctos_early_data, NULL, NULL,
        NULL, tls_parse_ctos_early_data, NULL, tls_construct_stoc_early_data,
        tls_construct_ctos_early_data, NULL
    },
#ifndef OPENSSL_NO_EC
Loading