Как отформатировать запись tls для отправки с помощью winsock для https?

Я написал базовый клиент winsock и пытаюсь реализовать tls для https позже. Я написал функцию, которая собирает открытый текст для отправки Winsock’s

int send( SOCKET s,const char *buf,int len, int flags)
как const char* или же BYTE* массив.

BYTE * ComputeTLSRecordPlainText(BYTE * phandshakerequest, _in_ const int handshakesize, _out_ int * pTLSrecordsize, _in_ BYTE controltype, _in_ BYTE * protocolversion)
{
*pTLSrecordsize = handshakesize + 5;
BYTE * TLSPlainText = new BYTE[*pTLSrecordsize];
TLSPlainText[0] = controltype;
TLSPlainText[1] = protocolversion[1]; //Major.
TLSPlainText[2] = protocolversion[0]; //Minor.
TLSPlainText[3] = handshakesize;
TLSPlainText[4] = 0x0; // Refactor for messages greater than 255 bytes.
for (int j = 5; j < *pTLSrecordsize; j++)
{
TLSPlainText[j] = phandshakerequest[j - 5];
}
return TLSPlainText;
}

Цикл for добавляет сообщение рукопожатия, к которому добавлен hellomessage. Для краткости я не включил их здесь.

Единственный действительный ответ TLS, который я получил, был от сервера google.com, который отвечает правильным фатальным предупреждением с десятичным кодом 70: protocol_version.

Другие сайты либо recv() не возвращается, или это происходит с ошибкой 10054. Или с заголовками http и неправильным запросом. Я инициализировал соединение с портом 443?

Итак, мой вопрос заключается в следующем

1) Правильно ли я форматирую запись по порядку байтов в сети и по порядку байтов?

2) Что происходит с разницей в ответах сервера? Может ли это быть что-то со слоем TCP? Нормальный каждый день HTTPS HTTP по TLS через TCP правильно?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]