1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
extern crate tls_api;
extern crate void;
use std::io;
use std::result;
use std::fmt;
use std::error::Error as std_Error;
use void::Void;
use tls_api::Result;
pub struct Pkcs12(Void);
pub struct Certificate(Void);
pub struct TlsConnectorBuilder(Void);
pub struct TlsConnector(Void);
pub struct TlsAcceptorBuilder(Void);
pub struct TlsAcceptor(Void);
#[derive(Debug)]
struct Error;
impl std_Error for Error {
fn description(&self) -> &str {
"stub implementation"
}
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
fmt::Display::fmt(self.description(), f)
}
}
impl tls_api::TlsConnectorBuilder for TlsConnectorBuilder {
type Connector = TlsConnector;
type Underlying = Void;
fn underlying_mut(&mut self) -> &mut Void {
&mut self.0
}
fn supports_alpn() -> bool {
false
}
fn set_alpn_protocols(&mut self, _protocols: &[&[u8]]) -> Result<()> {
Err(tls_api::Error::new(Error))
}
fn set_verify_hostname(&mut self, _verify: bool) -> Result<()> {
Err(tls_api::Error::new(Error))
}
fn add_root_certificate(&mut self, _cert: tls_api::Certificate) -> Result<&mut Self> {
Err(tls_api::Error::new(Error))
}
fn build(self) -> Result<TlsConnector> {
Err(tls_api::Error::new(Error))
}
}
impl tls_api::TlsConnector for TlsConnector {
type Builder = TlsConnectorBuilder;
fn builder() -> Result<TlsConnectorBuilder> {
Err(tls_api::Error::new(Error))
}
fn connect<S>(&self, _domain: &str, _stream: S)
-> result::Result<tls_api::TlsStream<S>, tls_api::HandshakeError<S>>
where S: io::Read + io::Write + fmt::Debug + 'static
{
Err(tls_api::HandshakeError::Failure(tls_api::Error::new(Error)))
}
}
impl tls_api::TlsAcceptorBuilder for TlsAcceptorBuilder {
type Acceptor = TlsAcceptor;
type Underlying = Void;
fn supports_alpn() -> bool {
false
}
fn set_alpn_protocols(&mut self, _protocols: &[&[u8]]) -> Result<()> {
Err(tls_api::Error::new(Error))
}
fn underlying_mut(&mut self) -> &mut Void {
&mut self.0
}
fn build(self) -> Result<TlsAcceptor> {
Err(tls_api::Error::new(Error))
}
}
impl tls_api::TlsAcceptor for TlsAcceptor {
type Builder = TlsAcceptorBuilder;
fn accept<S>(&self, _stream: S)
-> result::Result<tls_api::TlsStream<S>, tls_api::HandshakeError<S>>
where S: io::Read + io::Write + fmt::Debug + 'static
{
Err(tls_api::HandshakeError::Failure(tls_api::Error::new(Error)))
}
}