Skip to content

Commit 1a1b7c4

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

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
@@ -55,17 +55,6 @@ impl TedgeP11Client {
5555
offered: &[rustls::SignatureScheme],
5656
uri: Option<String>,
5757
) -> anyhow::Result<Option<rustls::SignatureScheme>> {
58-
trace!("Connecting to socket...");
59-
let stream = UnixStream::connect(&self.socket_path).with_context(|| {
60-
format!(
61-
"Failed to connect to tedge-p11-server UNIX socket at '{}'",
62-
self.socket_path.display()
63-
)
64-
})?;
65-
let mut connection = crate::connection::Connection::new(stream);
66-
67-
debug!("Connected to socket");
68-
6958
let request = Frame1::ChooseSchemeRequest(ChooseSchemeRequest {
7059
offered: offered
7160
.iter()
@@ -74,10 +63,7 @@ impl TedgeP11Client {
7463
.collect::<Vec<_>>(),
7564
uri,
7665
});
77-
trace!(?request);
78-
connection.write_frame(&request)?;
79-
80-
let response = connection.read_frame()?;
66+
let response = self.do_request(request)?;
8167

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

11891
let Frame1::ChooseSchemeResponse(response) = response else {
11992
bail!("protocol error: bad response, expected chose scheme, received: {response:?}");
@@ -130,24 +103,12 @@ impl TedgeP11Client {
130103
sigscheme: SigScheme,
131104
uri: Option<String>,
132105
) -> anyhow::Result<Vec<u8>> {
133-
let stream = UnixStream::connect(&self.socket_path).with_context(|| {
134-
format!(
135-
"Failed to connect to tedge-p11-server UNIX socket at '{}'",
136-
self.socket_path.display()
137-
)
138-
})?;
139-
let mut connection = crate::connection::Connection::new(stream);
140-
debug!("Connected to socket");
141-
142106
let request = Frame1::SignRequest(SignRequest {
143107
to_sign: message.to_vec(),
144108
sigscheme,
145109
uri,
146110
});
147-
trace!(?request);
148-
connection.write_frame(&request)?;
149-
150-
let response = connection.read_frame()?;
111+
let response = self.do_request(request)?;
151112

152113
let Frame1::SignResponse(response) = response else {
153114
bail!("protocol error: bad response, expected sign, received: {response:?}");
@@ -175,11 +136,29 @@ impl TedgeP11Client {
175136
let response = connection.read_frame()?;
176137

177138
let Frame1::CreateKeyResponse = response else {
178-
bail!("protocol error: bad response, expected sign, received: {response:?}");
139+
bail!("protocol error: bad response, expected create_key, received: {response:?}");
179140
};
180141

181142
debug!("Sign complete");
182143

183144
Ok(())
184145
}
146+
147+
fn do_request(&self, request: Frame1) -> anyhow::Result<Frame1> {
148+
let stream = UnixStream::connect(&self.socket_path).with_context(|| {
149+
format!(
150+
"Failed to connect to tedge-p11-server UNIX socket at '{}'",
151+
self.socket_path.display()
152+
)
153+
})?;
154+
let mut connection = crate::connection::Connection::new(stream);
155+
debug!("Connected to socket");
156+
157+
trace!(?request);
158+
connection.write_frame(&request)?;
159+
160+
let response = connection.read_frame()?;
161+
162+
Ok(response)
163+
}
185164
}

0 commit comments

Comments
 (0)