У меня есть простой тип stream_t
на 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 функции, которые мне понадобятся для ручного подтверждения и шифрования? Или есть еще одна библиотека, которую я могу использовать?