У меня есть простой тип stream_t
на C с вашими базовыми операциями чтения / записи и поддержкой нескольких базовых реализаций с использованием указателей на функции. Таким образом, поток может быть поддержан файлом, буфером символов и т. Д.
Один тип потока - это стандартный сокет POSIX, и я хотел бы закодировать поток-обертку, который добавит поддержку SSL к существующему потоку, аналогично * .NET *. Так что я мог бы написать что-то вроде этого:
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 функции, необходимые для ручного выполнения рукопожатия и шифрования? Или я могу использовать другую библиотеку?