enum { warning(1), fatal(2), (255) } AlertLevel;

enum {
	close_notify(0),
	end_of_early_data(1),
	unexpected_message(10),
	bad_record_mac(20),
	record_overflow(22),
	handshake_failure(40),
	bad_certificate(42),
	unsupported_certificate(43),
	certificate_revoked(44),
	certificate_expired(45),
	certificate_unknown(46),
	illegal_parameter(47),
	unknown_ca(48),
	access_denied(49),
	decode_error(50),
	decrypt_error(51),
	protocol_version(70),
	insufficient_security(71),
	internal_error(80),
	inappropriate_fallback(86),
	user_canceled(90),
	missing_extension(109),
	unsupported_extension(110),
	certificate_unobtainable(111),
	unrecognized_name(112),
	bad_certificate_status_response(113),
	bad_certificate_hash_value(114),
	unknown_psk_identity(115),
	(255)
} AlertDescription;

struct {
	AlertLevel level;
	AlertDescription description;
} Alert;
