Skip to content

Commit b56b248

Browse files
committed
e2e_tests: Add handshake tests
The tests currently perform TLS handshake under various conditions. Currently the setup works with the default provider and future commits will add support for parsec provider. Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>
1 parent 3d614b4 commit b56b248

File tree

2 files changed

+154
-0
lines changed

2 files changed

+154
-0
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
// Copyright 2024 Contributors to the Parsec project.
2+
// SPDX-License-Identifier: Apache-2.0
3+
use e2e_tests::*;
4+
5+
#[test]
6+
fn test_handshake_no_authentication() {
7+
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
8+
let addr = listener.local_addr().unwrap();
9+
10+
let server = Server::new(
11+
Some(String::from("../../tests/tls/server/server_cert.pem")),
12+
Some(String::from("../../tests/tls/server/server_priv_key.pem")),
13+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
14+
SslVerifyMode::NONE,
15+
);
16+
server.accept(listener);
17+
18+
let client = Client::new(None, None, None, SslVerifyMode::NONE);
19+
client.connect(addr);
20+
}
21+
22+
#[should_panic]
23+
#[test]
24+
fn test_handshake_server_authentication_no_client_ca() {
25+
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
26+
let addr = listener.local_addr().unwrap();
27+
28+
let server = Server::new(
29+
Some(String::from("../../tests/tls/server/server_cert.pem")),
30+
Some(String::from("../../tests/tls/server/server_priv_key.pem")),
31+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
32+
SslVerifyMode::NONE,
33+
);
34+
server.accept(listener);
35+
36+
let client = Client::new(None, None, None, SslVerifyMode::PEER);
37+
client.connect(addr);
38+
}
39+
40+
#[test]
41+
fn test_handshake_server_authentication_with_client_ca() {
42+
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
43+
let addr = listener.local_addr().unwrap();
44+
45+
let server = Server::new(
46+
Some(String::from("../../tests/tls/server/server_cert.pem")),
47+
Some(String::from("../../tests/tls/server/server_priv_key.pem")),
48+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
49+
SslVerifyMode::NONE,
50+
);
51+
server.accept(listener);
52+
53+
let client = Client::new(
54+
None,
55+
None,
56+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
57+
SslVerifyMode::PEER,
58+
);
59+
client.connect(addr);
60+
}
61+
62+
#[should_panic]
63+
#[test]
64+
fn test_handshake_client_authentication_with_no_client_settings() {
65+
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
66+
let addr = listener.local_addr().unwrap();
67+
68+
let server = Server::new(
69+
Some(String::from("../../tests/tls/server/server_cert.pem")),
70+
Some(String::from("../../tests/tls/server/server_priv_key.pem")),
71+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
72+
SslVerifyMode::PEER | SslVerifyMode::FAIL_IF_NO_PEER_CERT,
73+
);
74+
server.accept(listener);
75+
76+
let client = Client::new(
77+
None,
78+
None,
79+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
80+
SslVerifyMode::PEER,
81+
);
82+
client.connect(addr);
83+
}
84+
85+
#[should_panic]
86+
#[test]
87+
fn test_handshake_client_authentication_with_no_client_key() {
88+
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
89+
let addr = listener.local_addr().unwrap();
90+
91+
let server = Server::new(
92+
Some(String::from("../../tests/tls/server/server_cert.pem")),
93+
Some(String::from("../../tests/tls/server/server_priv_key.pem")),
94+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
95+
SslVerifyMode::PEER | SslVerifyMode::FAIL_IF_NO_PEER_CERT,
96+
);
97+
server.accept(listener);
98+
99+
let client = Client::new(
100+
Some(String::from("../../tests/tls/client/client_cert.pem")),
101+
None,
102+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
103+
SslVerifyMode::PEER,
104+
);
105+
client.connect(addr);
106+
}
107+
108+
#[test]
109+
fn test_handshake_client_authentication() {
110+
let socket = TcpListener::bind("127.0.0.1:0").unwrap();
111+
let addr = socket.local_addr().unwrap();
112+
113+
let server = Server::new(
114+
Some(String::from("../../tests/tls/server/server_cert.pem")),
115+
Some(String::from("../../tests/tls/server/server_priv_key.pem")),
116+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
117+
SslVerifyMode::FAIL_IF_NO_PEER_CERT | SslVerifyMode::PEER,
118+
);
119+
server.accept(socket);
120+
121+
let client = Client::new(
122+
Some(String::from("../../tests/tls/client/client_cert.pem")),
123+
Some(String::from("../../tests/tls/client/client_priv_key.pem")),
124+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
125+
SslVerifyMode::PEER,
126+
);
127+
client.connect(addr);
128+
}
129+
130+
#[should_panic]
131+
#[test]
132+
fn test_handshake_client_authentication_with_fake_ca() {
133+
let socket = TcpListener::bind("127.0.0.1:0").unwrap();
134+
let addr = socket.local_addr().unwrap();
135+
136+
let server = Server::new(
137+
Some(String::from("../../tests/tls/server/server_cert.pem")),
138+
Some(String::from("../../tests/tls/server/server_priv_key.pem")),
139+
Some(String::from("../../tests/tls/ca/ca_cert.pem")),
140+
SslVerifyMode::FAIL_IF_NO_PEER_CERT | SslVerifyMode::PEER,
141+
);
142+
server.accept(socket);
143+
144+
let client = Client::new(
145+
Some(String::from("../../tests/tls/fake_client/client_cert.pem")),
146+
Some(String::from(
147+
"../../tests/tls/fake_client/client_priv_key.pem",
148+
)),
149+
Some(String::from("../../tests/tls/fake_ca/ca_cert.pem")),
150+
SslVerifyMode::PEER,
151+
);
152+
client.connect(addr);
153+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright 2024 Contributors to the Parsec project.
22
// SPDX-License-Identifier: Apache-2.0
33

4+
mod handshake;
45
mod keys;
56
mod provider;
67
mod sign;

0 commit comments

Comments
 (0)