pluto-src 0.1.1+0.10.4

Sources of Pluto (Lua 5.4 dialect) and logic to build it.
Documentation
#pragma once

#include "type.hpp"

#include "Packet.hpp"

#include "TlsHelloExtensions.hpp"
#include "TlsProtocolVersion.hpp"
#include "TlsRandom.hpp"

NAMESPACE_SOUP
{
	SOUP_PACKET(TlsClientHello)
	{
		TlsProtocolVersion version{};
		TlsRandom random;
		std::string session_id{};
		std::vector<TlsCipherSuite_t> cipher_suites{};
		std::vector<uint8_t> compression_methods{};
		TlsHelloExtensions extensions{};

		SOUP_PACKET_IO(s)
		{
			return version.io(s)
				&& random.io(s)
				&& s.template str_lp<u8_t>(session_id, 32)
				&& s.vec_u16be_bl_u16be(cipher_suites)
				&& s.vec_u8_u8(compression_methods)
				&& extensions.io(s)
				;
		}
	};
}