Статус документа
Статус документа

Р 1323565.1.020-2020 Информационная технология (ИТ). Криптографическая защита информации. Использование российских криптографических алгоритмов в протоколе безопасности транспортного уровня (TLS 1.2)

     6.1 Формат сообщений протокола Handshake


Каждое сообщение протокола Handshake содержит специальный заголовок, состоящий из 4 байтов. Первый байт содержит код типа сообщения, три следующих байта - длину сообщения:

enum {

hello_request (0), client_hello (1), server_hello (2),

certificate (11), certificate_request (13),

server_hello_done (14), certificate_verify (15),

client_key_exchange (16), fnished (20), (255)

} HandshakeType;

struct {

HandshakeType msg_type; /* handshake type */

uint24 length; /* bytes in message */

select (HandshakeType) {

case hello_request: HelloRequest;

case client_hello: ClientHello;

case server_hello: ServerHello;

case certificate: Certificate;

case certificate_request: CertificateRequest;

case server_hello_done: ServerHelloDone;

case certificate_verify: CertificateVerify;

case client_key_exchange: ClientKeyExchange;

case finished: Finished;

} body;

} Handshake;

Далее по тексту установлено, что под терминами "сообщение HelloRequest", "сообщение Client-Hello", …, "сообщение Finished" подразумевается набор данных, определяемых структурой Handshake (в частности, имеющий поля Handshake.msg_type и Handshake.length), описанной выше, для которых поле Handshake.msg_type содержит значения hello_request (0), client_hello (1), …, finished (20) соответственно.

В настоящих рекомендациях определено, что строки HelloRequest, ClientHello, …, Finished являются байтовыми представлениями сообщений HelloRequest, ClientHello, …, Finished соответственно (см. 3.2).