Я программирую клиента, который участвует в рукопожатии TLS 1.2, отправляя сообщения через TCP-сокет, подключенный к серверу Google. Я использую метод обмена ключами ECDH.
Я пытаюсь получить общий секрет, используя этот код.
Я получил ключ через сообщение serverKeyExchange и сохранилэто в буфере, поэтому мой вопрос: как мне сгенерировать EVP_PKEY из буфера? Я нашел возможное решение в этом посте и попробовал с:
i2d_PublicKey(peerkey, (unsigned char **) &server_pub_key)
но когда я запускаю код, я получаю сообщение об ошибке на этом шаге:
/* Provide the peer public key */
if(1 != EVP_PKEY_derive_set_peer(ctx, peerkey)) handleErrors();
Что заставляет меня думать, что мне не удалось получить открытый ключ сервера.
Любые предложения? Как мне узнать, был ли ключ успешно закодирован?