From 999005e49355d738a017fa300630864f832b6273 Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Mon, 2 Feb 2015 10:38:12 +0000 Subject: [PATCH] Moved s3_pkt.c, s23_pkt.c and d1_pkt.c into the record layer. Reviewed-by: Richard Levitte --- ssl/Makefile | 12 ++++++------ ssl/{ => record}/d1_pkt.c | 2 +- ssl/record/rec_layer.h | 37 +++++++++++++++++++++++++++++++++++++ ssl/{ => record}/s23_pkt.c | 2 +- ssl/{ => record}/s3_pkt.c | 2 +- ssl/ssl_locl.h | 33 --------------------------------- 6 files changed, 46 insertions(+), 42 deletions(-) rename ssl/{ => record}/d1_pkt.c (99%) rename ssl/{ => record}/s23_pkt.c (99%) rename ssl/{ => record}/s3_pkt.c (99%) diff --git a/ssl/Makefile b/ssl/Makefile index b212084c8a..a2fb87dbfd 100644 --- a/ssl/Makefile +++ b/ssl/Makefile @@ -21,11 +21,11 @@ APPS= LIB=$(TOP)/libssl.a SHARED_LIB= libssl$(SHLIB_EXT) LIBSRC= \ - s3_meth.c s3_srvr.c s3_clnt.c s3_lib.c s3_enc.c s3_pkt.c s3_both.c s3_cbc.c \ + s3_meth.c s3_srvr.c s3_clnt.c s3_lib.c s3_enc.c record/s3_pkt.c s3_both.c s3_cbc.c \ s3_msg.c \ - s23_meth.c s23_srvr.c s23_clnt.c s23_lib.c s23_pkt.c \ + s23_meth.c s23_srvr.c s23_clnt.c s23_lib.c record/s23_pkt.c \ t1_meth.c t1_srvr.c t1_clnt.c t1_lib.c t1_enc.c t1_ext.c \ - d1_meth.c d1_srvr.c d1_clnt.c d1_lib.c d1_pkt.c d1_msg.c \ + d1_meth.c d1_srvr.c d1_clnt.c d1_lib.c record/d1_pkt.c d1_msg.c \ d1_both.c d1_srtp.c \ ssl_lib.c ssl_err2.c ssl_cert.c ssl_sess.c \ ssl_ciph.c ssl_stat.c ssl_rsa.c \ @@ -33,11 +33,11 @@ LIBSRC= \ bio_ssl.c ssl_err.c kssl.c t1_reneg.c tls_srp.c t1_trce.c ssl_utst.c \ record/ssl3_buffer.c record/ssl3_record.c LIBOBJ= \ - s3_meth.o s3_srvr.o s3_clnt.o s3_lib.o s3_enc.o s3_pkt.o s3_both.o s3_cbc.o \ + s3_meth.o s3_srvr.o s3_clnt.o s3_lib.o s3_enc.o record/s3_pkt.o s3_both.o s3_cbc.o \ s3_msg.o \ - s23_meth.o s23_srvr.o s23_clnt.o s23_lib.o s23_pkt.o \ + s23_meth.o s23_srvr.o s23_clnt.o s23_lib.o record/s23_pkt.o \ t1_meth.o t1_srvr.o t1_clnt.o t1_lib.o t1_enc.o t1_ext.o \ - d1_meth.o d1_srvr.o d1_clnt.o d1_lib.o d1_pkt.o d1_msg.o \ + d1_meth.o d1_srvr.o d1_clnt.o d1_lib.o record/d1_pkt.o d1_msg.o \ d1_both.o d1_srtp.o\ ssl_lib.o ssl_err2.o ssl_cert.o ssl_sess.o \ ssl_ciph.o ssl_stat.o ssl_rsa.o \ diff --git a/ssl/d1_pkt.c b/ssl/record/d1_pkt.c similarity index 99% rename from ssl/d1_pkt.c rename to ssl/record/d1_pkt.c index d82e0d5827..e85e94dd74 100644 --- a/ssl/d1_pkt.c +++ b/ssl/record/d1_pkt.c @@ -116,7 +116,7 @@ #include #include #define USE_SOCKETS -#include "ssl_locl.h" +#include "../ssl_locl.h" #include #include #include diff --git a/ssl/record/rec_layer.h b/ssl/record/rec_layer.h index 3f63fac82e..e8dd3ff1f1 100644 --- a/ssl/record/rec_layer.h +++ b/ssl/record/rec_layer.h @@ -111,6 +111,19 @@ #include "../ssl_locl.h" +typedef struct dtls1_bitmap_st { + unsigned long map; /* track 32 packets on 32-bit systems and 64 + * - on 64-bit systems */ + unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit + * value in big-endian encoding */ +} DTLS1_BITMAP; + + +typedef struct record_pqueue_st { + unsigned short epoch; + pqueue q; +} record_pqueue; + typedef struct record_layer_st { /* The parent SSL structure */ SSL *s; @@ -136,3 +149,27 @@ typedef struct record_layer_st { #define RECORD_LAYER_get_wbuf(rl) (&(rl)->wbuf) #define RECORD_LAYER_get_rrec(rl) (&(rl)->rrec) #define RECORD_LAYER_get_wrec(rl) (&(rl)->wrec) + +__owur int ssl23_read_bytes(SSL *s, int n); +__owur int ssl23_write_bytes(SSL *s); +__owur int ssl3_read_n(SSL *s, int n, int max, int extend); +__owur int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); +__owur int do_ssl3_write(SSL *s, int type, const unsigned char *buf, + unsigned int len, int create_empty_fragment); +__owur int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, + unsigned int len); +__owur int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); +__owur int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); +int dtls1_write_bytes(SSL *s, int type, const void *buf, int len); +__owur int do_dtls1_write(SSL *s, int type, const unsigned char *buf, + unsigned int len, int create_empty_fragement); +int dtls1_record_replay_check(SSL *s, DTLS1_BITMAP *bitmap); +void dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap); +DTLS1_BITMAP *dtls1_get_bitmap(SSL *s, SSL3_RECORD *rr, + unsigned int *is_next_epoch); +int dtls1_process_buffered_records(SSL *s); +int dtls1_retrieve_buffered_record(SSL *s, record_pqueue *queue); +int dtls1_buffer_record(SSL *s, record_pqueue *q, + unsigned char *priority); +void dtls1_reset_seq_numbers(SSL *s, int rw); + diff --git a/ssl/s23_pkt.c b/ssl/record/s23_pkt.c similarity index 99% rename from ssl/s23_pkt.c rename to ssl/record/s23_pkt.c index efc8647841..e3a91554fd 100644 --- a/ssl/s23_pkt.c +++ b/ssl/record/s23_pkt.c @@ -59,7 +59,7 @@ #include #include #define USE_SOCKETS -#include "ssl_locl.h" +#include "../ssl_locl.h" #include #include diff --git a/ssl/s3_pkt.c b/ssl/record/s3_pkt.c similarity index 99% rename from ssl/s3_pkt.c rename to ssl/record/s3_pkt.c index 16a6db42cc..b9d0575301 100644 --- a/ssl/s3_pkt.c +++ b/ssl/record/s3_pkt.c @@ -113,7 +113,7 @@ #include #include #define USE_SOCKETS -#include "ssl_locl.h" +#include "../ssl_locl.h" #include #include #include diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h index e6f2c67b7f..e0dd259788 100644 --- a/ssl/ssl_locl.h +++ b/ssl/ssl_locl.h @@ -1376,13 +1376,6 @@ typedef struct ssl3_state_st { /* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */ # define DTLS1_MAX_MTU_OVERHEAD 48 -typedef struct dtls1_bitmap_st { - unsigned long map; /* track 32 packets on 32-bit systems and 64 - * - on 64-bit systems */ - unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit - * value in big-endian encoding */ -} DTLS1_BITMAP; - struct dtls1_retransmit_state { EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ EVP_MD_CTX *write_hash; /* used for mac generation */ @@ -1419,11 +1412,6 @@ struct dtls1_timeout_st { unsigned int num_alerts; }; -typedef struct record_pqueue_st { - unsigned short epoch; - pqueue q; -} record_pqueue; - typedef struct hm_fragment_st { struct hm_header_st msg_header; unsigned char *fragment; @@ -2089,8 +2077,6 @@ __owur const SSL_CIPHER *ssl3_get_cipher(unsigned int u); int ssl3_renegotiate(SSL *ssl); int ssl3_renegotiate_check(SSL *ssl); __owur int ssl3_dispatch_alert(SSL *s); -__owur int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); -__owur int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); __owur int ssl3_final_finish_mac(SSL *s, const char *sender, int slen, unsigned char *p); __owur int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); @@ -2135,12 +2121,6 @@ __owur int ssl_allow_compression(SSL *s); __owur long tls1_default_timeout(void); __owur int dtls1_do_write(SSL *s, int type); -__owur int do_ssl3_write(SSL *s, int type, const unsigned char *buf, - unsigned int len, int create_empty_fragment); -__owur int ssl3_read_n(SSL *s, int n, int max, int extend); -__owur int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); -__owur int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, - unsigned int len); void dtls1_set_message_header(SSL *s, unsigned char *p, unsigned char mt, unsigned long len, @@ -2162,7 +2142,6 @@ void dtls1_clear_record_buffer(SSL *s); void dtls1_get_message_header(unsigned char *data, struct hm_header_st *msg_hdr); void dtls1_get_ccs_header(unsigned char *data, struct ccs_header_st *ccs_hdr); -void dtls1_reset_seq_numbers(SSL *s, int rw); __owur long dtls1_default_timeout(void); __owur struct timeval *dtls1_get_timeout(SSL *s, struct timeval *timeleft); __owur int dtls1_check_timeout_num(SSL *s); @@ -2176,14 +2155,6 @@ __owur int dtls1_send_newsession_ticket(SSL *s); __owur unsigned int dtls1_min_mtu(SSL *s); __owur unsigned int dtls1_link_min_mtu(void); void dtls1_hm_fragment_free(hm_fragment *frag); -int dtls1_record_replay_check(SSL *s, DTLS1_BITMAP *bitmap); -void dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap); -DTLS1_BITMAP *dtls1_get_bitmap(SSL *s, SSL3_RECORD *rr, - unsigned int *is_next_epoch); -int dtls1_process_buffered_records(SSL *s); -int dtls1_retrieve_buffered_record(SSL *s, record_pqueue *queue); -int dtls1_buffer_record(SSL *s, record_pqueue *q, - unsigned char *priority); /* some client-only functions */ __owur int ssl3_client_hello(SSL *s); @@ -2223,8 +2194,6 @@ __owur int ssl3_get_next_proto(SSL *s); __owur int ssl23_accept(SSL *s); __owur int ssl23_connect(SSL *s); -__owur int ssl23_read_bytes(SSL *s, int n); -__owur int ssl23_write_bytes(SSL *s); __owur int tls1_new(SSL *s); void tls1_free(SSL *s); @@ -2241,8 +2210,6 @@ long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg); __owur int dtls1_shutdown(SSL *s); __owur long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); -__owur int do_dtls1_write(SSL *s, int type, const unsigned char *buf, - unsigned int len, int create_empty_fragement); __owur int dtls1_dispatch_alert(SSL *s); __owur int ssl_init_wbio_buffer(SSL *s, int push); -- GitLab