mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
Move the QUIC_CONNECTION typedef to internal headers
Also add internal functionality to get a QUIC_CONNECTION pointer from an SSL pointer, and setters / getters for the GQX and ACKM fields. Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18838)
This commit is contained in:
parent
9ff5195423
commit
d5ab48a192
@ -13,7 +13,7 @@ Main structures
|
|||||||
### Connection
|
### Connection
|
||||||
|
|
||||||
Represented by an `QUIC_CONNECTION` object, defined in
|
Represented by an `QUIC_CONNECTION` object, defined in
|
||||||
[`ssl/quic/quic_local.h`](../../../ssl/quic/quic_local.h).
|
[`include/internal/quic_ssl.h`](../../../include/internal/quic_ssl.h).
|
||||||
|
|
||||||
### Stream
|
### Stream
|
||||||
|
|
||||||
|
47
include/internal/quic_ssl.h
Normal file
47
include/internal/quic_ssl.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OSSL_QUIC_SSL_H
|
||||||
|
# define OSSL_QUIC_SSL_H
|
||||||
|
|
||||||
|
# include <openssl/ssl.h>
|
||||||
|
# include "internal/quic_record_rx.h" /* OSSL_QRX */
|
||||||
|
# include "internal/quic_ackm.h" /* OSSL_ACKM */
|
||||||
|
|
||||||
|
__owur SSL *ossl_quic_new(SSL_CTX *ctx);
|
||||||
|
__owur int ossl_quic_init(SSL *s);
|
||||||
|
void ossl_quic_deinit(SSL *s);
|
||||||
|
void ossl_quic_free(SSL *s);
|
||||||
|
int ossl_quic_reset(SSL *s);
|
||||||
|
int ossl_quic_clear(SSL *s);
|
||||||
|
__owur int ossl_quic_accept(SSL *s);
|
||||||
|
__owur int ossl_quic_connect(SSL *s);
|
||||||
|
__owur int ossl_quic_read(SSL *s, void *buf, size_t len, size_t *readbytes);
|
||||||
|
__owur int ossl_quic_peek(SSL *s, void *buf, size_t len, size_t *readbytes);
|
||||||
|
__owur int ossl_quic_write(SSL *s, const void *buf, size_t len, size_t *written);
|
||||||
|
__owur int ossl_quic_shutdown(SSL *s);
|
||||||
|
__owur long ossl_quic_ctrl(SSL *s, int cmd, long larg, void *parg);
|
||||||
|
__owur long ossl_quic_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
|
||||||
|
__owur long ossl_quic_callback_ctrl(SSL *s, int cmd, void (*fp) (void));
|
||||||
|
__owur long ossl_quic_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void));
|
||||||
|
__owur size_t ossl_quic_pending(const SSL *s);
|
||||||
|
__owur OSSL_TIME ossl_quic_default_timeout(void);
|
||||||
|
__owur int ossl_quic_num_ciphers(void);
|
||||||
|
__owur const SSL_CIPHER *ossl_quic_get_cipher(unsigned int u);
|
||||||
|
int ossl_quic_renegotiate_check(SSL *ssl, int initok);
|
||||||
|
|
||||||
|
typedef struct quic_conn_st QUIC_CONNECTION;
|
||||||
|
|
||||||
|
__owur QUIC_CONNECTION *ossl_quic_conn_from_ssl(SSL *ssl);
|
||||||
|
int ossl_quic_conn_set_qrx(QUIC_CONNECTION *qc, OSSL_QRX *qrx);
|
||||||
|
OSSL_QRX *ossl_quic_conn_get_qrx(QUIC_CONNECTION *qc);
|
||||||
|
int ossl_quic_conn_set_ackm(QUIC_CONNECTION *qc, OSSL_ACKM *ackm);
|
||||||
|
OSSL_ACKM *ossl_quic_conn_set_akcm(QUIC_CONNECTION *qc);
|
||||||
|
|
||||||
|
#endif
|
@ -239,3 +239,39 @@ int ossl_quic_renegotiate_check(SSL *ssl, int initok)
|
|||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QUIC_CONNECTION *ossl_quic_conn_from_ssl(SSL *ssl)
|
||||||
|
{
|
||||||
|
return QUIC_CONNECTION_FROM_SSL(ssl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following are getters and setters of pointers, but they don't affect
|
||||||
|
* the objects being pointed at. They are CURRENTLY to be freed separately
|
||||||
|
* by the caller the set them in the first place.
|
||||||
|
*/
|
||||||
|
int ossl_quic_conn_set_qrx(QUIC_CONNECTION *qc, OSSL_QRX *qrx)
|
||||||
|
{
|
||||||
|
if (qc == NULL)
|
||||||
|
return 0;
|
||||||
|
qc->qrx = qrx;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSSL_QRX *ossl_quic_conn_get_qrx(QUIC_CONNECTION *qc)
|
||||||
|
{
|
||||||
|
return qc != NULL ? qc->qrx : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ossl_quic_conn_set_ackm(QUIC_CONNECTION *qc, OSSL_ACKM *ackm)
|
||||||
|
{
|
||||||
|
if (qc == NULL)
|
||||||
|
return 0;
|
||||||
|
qc->ackm = ackm;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSSL_ACKM *ossl_quic_conn_set_akcm(QUIC_CONNECTION *qc)
|
||||||
|
{
|
||||||
|
return qc != NULL ? qc->ackm : NULL;
|
||||||
|
}
|
||||||
|
@ -11,16 +11,19 @@
|
|||||||
# define OSSL_QUIC_LOCAL_H
|
# define OSSL_QUIC_LOCAL_H
|
||||||
|
|
||||||
# include <openssl/ssl.h>
|
# include <openssl/ssl.h>
|
||||||
|
# include "internal/quic_ssl.h" /* QUIC_CONNECTION */
|
||||||
# include "../ssl_local.h"
|
# include "../ssl_local.h"
|
||||||
|
|
||||||
typedef struct quic_conn_st {
|
struct quic_conn_st {
|
||||||
/* type identifier and common data */
|
/* type identifier and common data */
|
||||||
struct ssl_st ssl;
|
struct ssl_st ssl;
|
||||||
/* the associated tls-1.3 connection data */
|
/* the associated tls-1.3 connection data */
|
||||||
SSL *tls;
|
SSL *tls;
|
||||||
/* just an example member */
|
|
||||||
uint64_t conn_id;
|
/* For QUIC, diverse handlers */
|
||||||
} QUIC_CONNECTION;
|
OSSL_ACKM *ackm;
|
||||||
|
OSSL_QRX *qrx;
|
||||||
|
};
|
||||||
|
|
||||||
# define QUIC_CONNECTION_FROM_SSL_int(ssl, c) \
|
# define QUIC_CONNECTION_FROM_SSL_int(ssl, c) \
|
||||||
((ssl) == NULL ? NULL \
|
((ssl) == NULL ? NULL \
|
||||||
@ -86,28 +89,4 @@ const SSL_METHOD *func_name(void) \
|
|||||||
return &func_name##_data; \
|
return &func_name##_data; \
|
||||||
}
|
}
|
||||||
|
|
||||||
__owur SSL *ossl_quic_new(SSL_CTX *ctx);
|
|
||||||
__owur int ossl_quic_init(SSL *s);
|
|
||||||
void ossl_quic_deinit(SSL *s);
|
|
||||||
void ossl_quic_free(SSL *s);
|
|
||||||
int ossl_quic_reset(SSL *s);
|
|
||||||
int ossl_quic_clear(SSL *s);
|
|
||||||
__owur int ossl_quic_accept(SSL *s);
|
|
||||||
__owur int ossl_quic_connect(SSL *s);
|
|
||||||
__owur int ossl_quic_read(SSL *s, void *buf, size_t len, size_t *readbytes);
|
|
||||||
__owur int ossl_quic_peek(SSL *s, void *buf, size_t len, size_t *readbytes);
|
|
||||||
__owur int ossl_quic_write(SSL *s, const void *buf, size_t len, size_t *written);
|
|
||||||
__owur int ossl_quic_shutdown(SSL *s);
|
|
||||||
__owur long ossl_quic_ctrl(SSL *s, int cmd, long larg, void *parg);
|
|
||||||
__owur long ossl_quic_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
|
|
||||||
__owur long ossl_quic_callback_ctrl(SSL *s, int cmd, void (*fp) (void));
|
|
||||||
__owur long ossl_quic_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void));
|
|
||||||
__owur size_t ossl_quic_pending(const SSL *s);
|
|
||||||
__owur OSSL_TIME ossl_quic_default_timeout(void);
|
|
||||||
__owur int ossl_quic_num_ciphers(void);
|
|
||||||
__owur const SSL_CIPHER *ossl_quic_get_cipher(unsigned int u);
|
|
||||||
int ossl_quic_renegotiate_check(SSL *ssl, int initok);
|
|
||||||
|
|
||||||
__owur int ossl_quic_depacketize(QUIC_CONNECTION *connection);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#include <openssl/macros.h>
|
#include <openssl/macros.h>
|
||||||
#include <openssl/objects.h>
|
#include <openssl/objects.h>
|
||||||
#include "quic_local.h"
|
#include "internal/quic_ssl.h"
|
||||||
#include "internal/quic_vlint.h"
|
#include "internal/quic_vlint.h"
|
||||||
#include "internal/quic_wire.h"
|
#include "internal/quic_wire.h"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user