[openssl-users] FW: Help to understand WPACKET API
Matt Caswell
matt at openssl.org
Fri Dec 22 10:53:09 UTC 2017
On 19/12/17 13:43, Sai Teja Chowdary wrote:
> After going through the code I understand the new tls1.3 implemented
> OpenSSL code is using WPACKET API to frame the records. I need help in
> understanding what the following functions do. I am new to the mailing
> list, thanks in advance.
>
>
>
> WPACKET_start_sub_packet_
>
> WPACKET_allocate_bytes
>
> WPACKET_sub_allocate_bytes__
>
> WPACKET_reserve_bytes
>
> WPACKET_start_sub_packet_len__
>
> WPACKET_sub_memcpy__
>
>
>
> Basically what does the word _sub_ mean in these functions and how do
> that differ from the non sub function say
>
> Difference between WPACKET_sub_memcpy__ and WPACKET_memcpy__
It is common in TLS for a block of data to be preceded by a length.
Depending on the context the number of length bytes might typically be
1, 2, 3 or 4. Such a block of data is considered a "sub" packet in the
WPACKET API. So:
int WPACKET_memcpy(WPACKET *pkt, const void *src, size_t len);
Copies len bytes of data from src into the pkt. Compare with:
#define WPACKET_sub_memcpy_u8(pkt, src, len) \
WPACKET_sub_memcpy__((pkt), (src), (len), 1)
So WPACKET_sub_memcpy_u8 will also copy len bytes of data from src into
pkt but will precede it with 1 byte containing the value of len.
Matt
More information about the openssl-users
mailing list