summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorbeck <beck@openbsd.org>2019-11-20 16:21:20 +0000
committerbeck <beck@openbsd.org>2019-11-20 16:21:20 +0000
commit7d42f7619b7ab62ae6563e52a49087db702d641f (patch)
tree3de7103990321bd11e16ba7e62faf1bb22735055 /lib
parentCorrectly match another 9560-based device. (diff)
downloadwireguard-openbsd-7d42f7619b7ab62ae6563e52a49087db702d641f.tar.xz
wireguard-openbsd-7d42f7619b7ab62ae6563e52a49087db702d641f.zip
Add accessors to change the buffer in a handshake message.
Needed for doing TLS 1.3 Post Handshake Handshake messages. ok jsing@
Diffstat (limited to 'lib')
-rw-r--r--lib/libssl/tls13_buffer.c11
-rw-r--r--lib/libssl/tls13_handshake_msg.c8
-rw-r--r--lib/libssl/tls13_internal.h4
3 files changed, 20 insertions, 3 deletions
diff --git a/lib/libssl/tls13_buffer.c b/lib/libssl/tls13_buffer.c
index 1b490c8b46d..8990327bb62 100644
--- a/lib/libssl/tls13_buffer.c
+++ b/lib/libssl/tls13_buffer.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls13_buffer.c,v 1.1 2019/01/17 06:32:12 jsing Exp $ */
+/* $OpenBSD: tls13_buffer.c,v 1.2 2019/11/20 16:21:20 beck Exp $ */
/*
* Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
*
@@ -75,6 +75,15 @@ tls13_buffer_resize(struct tls13_buffer *buf, size_t capacity)
return 1;
}
+int
+tls13_buffer_set_data(struct tls13_buffer *buf, CBS *data)
+{
+ if (!tls13_buffer_resize(buf, CBS_len(data)))
+ return 0;
+ memcpy(buf->data, CBS_data(data), CBS_len(data));
+ return 1;
+}
+
ssize_t
tls13_buffer_extend(struct tls13_buffer *buf, size_t len,
tls13_read_cb read_cb, void *cb_arg)
diff --git a/lib/libssl/tls13_handshake_msg.c b/lib/libssl/tls13_handshake_msg.c
index f85271a537c..21932fc4eef 100644
--- a/lib/libssl/tls13_handshake_msg.c
+++ b/lib/libssl/tls13_handshake_msg.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls13_handshake_msg.c,v 1.1 2019/01/20 12:27:34 jsing Exp $ */
+/* $OpenBSD: tls13_handshake_msg.c,v 1.2 2019/11/20 16:21:20 beck Exp $ */
/*
* Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
*
@@ -72,6 +72,12 @@ tls13_handshake_msg_data(struct tls13_handshake_msg *msg, CBS *cbs)
CBS_init(cbs, msg->data, msg->data_len);
}
+int
+tls13_handshake_msg_set_buffer(struct tls13_handshake_msg *msg, CBS *cbs)
+{
+ return tls13_buffer_set_data(msg->buf, cbs);
+}
+
uint8_t
tls13_handshake_msg_type(struct tls13_handshake_msg *msg)
{
diff --git a/lib/libssl/tls13_internal.h b/lib/libssl/tls13_internal.h
index 03e75933a19..859030747f4 100644
--- a/lib/libssl/tls13_internal.h
+++ b/lib/libssl/tls13_internal.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls13_internal.h,v 1.34 2019/11/18 15:25:59 beck Exp $ */
+/* $OpenBSD: tls13_internal.h,v 1.35 2019/11/20 16:21:20 beck Exp $ */
/*
* Copyright (c) 2018 Bob Beck <beck@openbsd.org>
* Copyright (c) 2018 Theo Buehler <tb@openbsd.org>
@@ -47,6 +47,7 @@ typedef ssize_t (*tls13_write_cb)(const void *_buf, size_t _buflen,
struct tls13_buffer;
struct tls13_buffer *tls13_buffer_new(size_t init_size);
+int tls13_buffer_set_data(struct tls13_buffer *buf, CBS *data);
void tls13_buffer_free(struct tls13_buffer *buf);
ssize_t tls13_buffer_extend(struct tls13_buffer *buf, size_t len,
tls13_read_cb read_cb, void *cb_arg);
@@ -141,6 +142,7 @@ struct tls13_handshake_msg;
struct tls13_handshake_msg *tls13_handshake_msg_new(void);
void tls13_handshake_msg_free(struct tls13_handshake_msg *msg);
void tls13_handshake_msg_data(struct tls13_handshake_msg *msg, CBS *cbs);
+int tls13_handshake_msg_set_buffer(struct tls13_handshake_msg *msg, CBS *cbs);
uint8_t tls13_handshake_msg_type(struct tls13_handshake_msg *msg);
int tls13_handshake_msg_content(struct tls13_handshake_msg *msg, CBS *cbs);
int tls13_handshake_msg_start(struct tls13_handshake_msg *msg, CBB *body,