У меня есть простой тип stream_t
в C с вашими основными операциями чтения/записи и поддержка нескольких базовых реализаций с использованием указателей функций. Таким образом, поток может быть подкреплен файлом, буфером символов и т. Д.поток обертки SSL в C
Один тип потока - стандартный сокет POSIX, и я хотел бы закодировать поток оболочки, который добавит поддержку SSL к существующему потоку, аналогично .NET SslStream. Так что я мог бы написать что-то вроде этого:
stream_t *socket = something(); // wrap existing stream and perform handshake as client stream_t *ssl_stream = ssl_stream_create(socket); ssl_stream_authenticate_as_user(ssl_stream); // now all read/writes are encrypted and passed through to the wrapped stream
я написал некоторые SSL код сокета перед использованием OpenSSL, BIO_new_connect(...)
и т.д., но это более высокий уровень API, чем то, что мне нужно. Открывает ли OpenSSL функции, которые мне нужны, чтобы вручную выполнить рукопожатие и шифрование? Или есть какая-то другая библиотека, которую я могу использовать?