Как создать BufReader для openssl :: ssl :: SslStream? - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь создать BufReader из своего приложения. Он отлично работает для TcpStream, но я не видел возможности сделать это для SslStream.

Я пробовал:

 self.buf_reader = Some(BufReader::new(
     self.ssl_stream.as_ref().unwrap().get_ref().unwrap(),
 ));

С:

    ssl_stream: Option<SslStream<TcpStream>>,
    buf_reader: Option<BufReader<TcpStream>>,

Но пока читал буфер, данные, очевидно, все еще зашифрованы (потому что он клонирует базовый поток, но не SslStream).

Есть идеи?

1 Ответ

0 голосов
/ 09 мая 2020

Вы должны просто уметь это сделать:

BufReader::new(ssl_stream.unwrap())

EDIT: вот полный пример.

use openssl::ssl::SslStream;
use std::net::TcpStream;
use std::io::BufReader;

struct Test {
    ssl_stream: Option<SslStream<TcpStream>>,
    buf_reader: Option<BufReader<SslStream<TcpStream>>>,
}

impl Test {
    fn test(&mut self) {
        if let Some(s) = self.ssl_stream.take() {
            self.buf_reader = Some(BufReader::new(s));
        }
    }
}

Еще одно примечание: BufReader будет использовать SslStream. В приведенном выше примере я использую take() для перемещения потока вместо попытки использовать ссылку.

...