Skip to content

Commit ad3ea07

Browse files
committed
refactor: TedgeP11Client extract request submission
Signed-off-by: Marcel Guzik <marcel.guzik@cumulocity.com>
1 parent d1fba8b commit ad3ea07

File tree

1 file changed

+22
-43
lines changed
  • crates/extensions/tedge-p11-server/src

1 file changed

+22
-43
lines changed

crates/extensions/tedge-p11-server/src/client.rs

Lines changed: 22 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,6 @@ impl TedgeP11Client {
5353
offered: &[rustls::SignatureScheme],
5454
uri: Option<String>,
5555
) -> anyhow::Result<Option<rustls::SignatureScheme>> {
56-
trace!("Connecting to socket...");
57-
let stream = UnixStream::connect(&self.socket_path).with_context(|| {
58-
format!(
59-
"Failed to connect to tedge-p11-server UNIX socket at '{}'",
60-
self.socket_path.display()
61-
)
62-
})?;
63-
let mut connection = crate::connection::Connection::new(stream);
64-
65-
debug!("Connected to socket");
66-
6756
let request = Frame1::ChooseSchemeRequest(ChooseSchemeRequest {
6857
offered: offered
6958
.iter()
@@ -72,10 +61,7 @@ impl TedgeP11Client {
7261
.collect::<Vec<_>>(),
7362
uri,
7463
});
75-
trace!(?request);
76-
connection.write_frame(&request)?;
77-
78-
let response = connection.read_frame()?;
64+
let response = self.do_request(request)?;
7965

8066
let Frame1::ChooseSchemeResponse(response) = response else {
8167
bail!("protocol error: bad response, expected chose scheme, received: {response:?}");
@@ -93,25 +79,12 @@ impl TedgeP11Client {
9379
// this function is called only on the server when handling ClientHello message, so
9480
// realistically it won't ever be called in our case
9581
pub fn algorithm(&self) -> anyhow::Result<rustls::SignatureAlgorithm> {
96-
trace!("Connecting to socket...");
97-
let stream = UnixStream::connect(&self.socket_path).with_context(|| {
98-
format!(
99-
"Failed to connect to tedge-p11-server UNIX socket at '{}'",
100-
self.socket_path.display()
101-
)
102-
})?;
103-
let mut connection = crate::connection::Connection::new(stream);
104-
105-
debug!("Connected to socket");
106-
10782
// if passed empty set of schemes, service doesn't return a scheme but returns an algorithm
10883
let request = Frame1::ChooseSchemeRequest(ChooseSchemeRequest {
10984
offered: vec![],
11085
uri: None,
11186
});
112-
connection.write_frame(&request)?;
113-
114-
let response = connection.read_frame()?;
87+
let response = self.do_request(request)?;
11588

11689
let Frame1::ChooseSchemeResponse(response) = response else {
11790
bail!("protocol error: bad response, expected chose scheme, received: {response:?}");
@@ -123,23 +96,11 @@ impl TedgeP11Client {
12396
}
12497

12598
pub fn sign(&self, message: &[u8], uri: Option<String>) -> anyhow::Result<Vec<u8>> {
126-
let stream = UnixStream::connect(&self.socket_path).with_context(|| {
127-
format!(
128-
"Failed to connect to tedge-p11-server UNIX socket at '{}'",
129-
self.socket_path.display()
130-
)
131-
})?;
132-
let mut connection = crate::connection::Connection::new(stream);
133-
debug!("Connected to socket");
134-
13599
let request = Frame1::SignRequest(SignRequest {
136100
to_sign: message.to_vec(),
137101
uri,
138102
});
139-
trace!(?request);
140-
connection.write_frame(&request)?;
141-
142-
let response = connection.read_frame()?;
103+
let response = self.do_request(request)?;
143104

144105
let Frame1::SignResponse(response) = response else {
145106
bail!("protocol error: bad response, expected sign, received: {response:?}");
@@ -167,11 +128,29 @@ impl TedgeP11Client {
167128
let response = connection.read_frame()?;
168129

169130
let Frame1::CreateKeyResponse = response else {
170-
bail!("protocol error: bad response, expected sign, received: {response:?}");
131+
bail!("protocol error: bad response, expected create_key, received: {response:?}");
171132
};
172133

173134
debug!("Sign complete");
174135

175136
Ok(())
176137
}
138+
139+
fn do_request(&self, request: Frame1) -> anyhow::Result<Frame1> {
140+
let stream = UnixStream::connect(&self.socket_path).with_context(|| {
141+
format!(
142+
"Failed to connect to tedge-p11-server UNIX socket at '{}'",
143+
self.socket_path.display()
144+
)
145+
})?;
146+
let mut connection = crate::connection::Connection::new(stream);
147+
debug!("Connected to socket");
148+
149+
trace!(?request);
150+
connection.write_frame(&request)?;
151+
152+
let response = connection.read_frame()?;
153+
154+
Ok(response)
155+
}
177156
}

0 commit comments

Comments
 (0)