diff options
author | jsing <> | 2022-11-11 17:15:27 +0000 |
---|---|---|
committer | jsing <> | 2022-11-11 17:15:27 +0000 |
commit | 167103faa44f8407455f11f6599e9919e2b22653 (patch) | |
tree | a8f8e94c51cf1dc74d90e267faf0ad4720537e35 /src/lib/libssl/tls_content.c | |
parent | f8749b129444d560b9e645a68ec7b045800243ed (diff) | |
download | openbsd-167103faa44f8407455f11f6599e9919e2b22653.tar.gz openbsd-167103faa44f8407455f11f6599e9919e2b22653.tar.bz2 openbsd-167103faa44f8407455f11f6599e9919e2b22653.zip |
Convert the legacy TLS stack to tls_content.
This converts the legacy TLS stack to tls_content - records are now
opened into a tls_content structure, rather than being written back into
the same buffer that the sealed record was read into.
This will allow for further clean up of the legacy record layer.
ok tb@
Diffstat (limited to 'src/lib/libssl/tls_content.c')
-rw-r--r-- | src/lib/libssl/tls_content.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/lib/libssl/tls_content.c b/src/lib/libssl/tls_content.c index ede178f84c..726de0fdc4 100644 --- a/src/lib/libssl/tls_content.c +++ b/src/lib/libssl/tls_content.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls_content.c,v 1.1 2021/09/04 16:26:12 jsing Exp $ */ | 1 | /* $OpenBSD: tls_content.c,v 1.2 2022/11/11 17:15:27 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -26,7 +26,7 @@ struct tls_content { | |||
26 | uint16_t epoch; | 26 | uint16_t epoch; |
27 | 27 | ||
28 | const uint8_t *data; | 28 | const uint8_t *data; |
29 | size_t len; | 29 | size_t data_len; |
30 | CBS cbs; | 30 | CBS cbs; |
31 | }; | 31 | }; |
32 | 32 | ||
@@ -39,7 +39,7 @@ tls_content_new(void) | |||
39 | void | 39 | void |
40 | tls_content_clear(struct tls_content *content) | 40 | tls_content_clear(struct tls_content *content) |
41 | { | 41 | { |
42 | freezero((void *)content->data, content->len); | 42 | freezero((void *)content->data, content->data_len); |
43 | memset(content, 0, sizeof(*content)); | 43 | memset(content, 0, sizeof(*content)); |
44 | } | 44 | } |
45 | 45 | ||
@@ -113,9 +113,24 @@ tls_content_set_data(struct tls_content *content, uint8_t type, | |||
113 | 113 | ||
114 | content->type = type; | 114 | content->type = type; |
115 | content->data = data; | 115 | content->data = data; |
116 | content->len = data_len; | 116 | content->data_len = data_len; |
117 | 117 | ||
118 | CBS_init(&content->cbs, content->data, content->len); | 118 | CBS_init(&content->cbs, content->data, content->data_len); |
119 | } | ||
120 | |||
121 | int | ||
122 | tls_content_set_bounds(struct tls_content *content, size_t offset, size_t len) | ||
123 | { | ||
124 | size_t content_len; | ||
125 | |||
126 | content_len = offset + len; | ||
127 | if (content_len < len) | ||
128 | return 0; | ||
129 | if (content_len > content->data_len) | ||
130 | return 0; | ||
131 | |||
132 | CBS_init(&content->cbs, content->data, content_len); | ||
133 | return CBS_skip(&content->cbs, offset); | ||
119 | } | 134 | } |
120 | 135 | ||
121 | static ssize_t | 136 | static ssize_t |