@@ -55,17 +55,6 @@ impl TedgeP11Client {
55
55
offered : & [ rustls:: SignatureScheme ] ,
56
56
uri : Option < String > ,
57
57
) -> 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
-
69
58
let request = Frame1 :: ChooseSchemeRequest ( ChooseSchemeRequest {
70
59
offered : offered
71
60
. iter ( )
@@ -74,10 +63,7 @@ impl TedgeP11Client {
74
63
. collect :: < Vec < _ > > ( ) ,
75
64
uri,
76
65
} ) ;
77
- trace ! ( ?request) ;
78
- connection. write_frame ( & request) ?;
79
-
80
- let response = connection. read_frame ( ) ?;
66
+ let response = self . do_request ( request) ?;
81
67
82
68
let Frame1 :: ChooseSchemeResponse ( response) = response else {
83
69
bail ! ( "protocol error: bad response, expected chose scheme, received: {response:?}" ) ;
@@ -95,25 +81,12 @@ impl TedgeP11Client {
95
81
// this function is called only on the server when handling ClientHello message, so
96
82
// realistically it won't ever be called in our case
97
83
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
-
109
84
// if passed empty set of schemes, service doesn't return a scheme but returns an algorithm
110
85
let request = Frame1 :: ChooseSchemeRequest ( ChooseSchemeRequest {
111
86
offered : vec ! [ ] ,
112
87
uri : None ,
113
88
} ) ;
114
- connection. write_frame ( & request) ?;
115
-
116
- let response = connection. read_frame ( ) ?;
89
+ let response = self . do_request ( request) ?;
117
90
118
91
let Frame1 :: ChooseSchemeResponse ( response) = response else {
119
92
bail ! ( "protocol error: bad response, expected chose scheme, received: {response:?}" ) ;
@@ -130,24 +103,12 @@ impl TedgeP11Client {
130
103
sigscheme : SigScheme ,
131
104
uri : Option < String > ,
132
105
) -> 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
-
142
106
let request = Frame1 :: SignRequest ( SignRequest {
143
107
to_sign : message. to_vec ( ) ,
144
108
sigscheme,
145
109
uri,
146
110
} ) ;
147
- trace ! ( ?request) ;
148
- connection. write_frame ( & request) ?;
149
-
150
- let response = connection. read_frame ( ) ?;
111
+ let response = self . do_request ( request) ?;
151
112
152
113
let Frame1 :: SignResponse ( response) = response else {
153
114
bail ! ( "protocol error: bad response, expected sign, received: {response:?}" ) ;
@@ -175,11 +136,29 @@ impl TedgeP11Client {
175
136
let response = connection. read_frame ( ) ?;
176
137
177
138
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:?}" ) ;
179
140
} ;
180
141
181
142
debug ! ( "Sign complete" ) ;
182
143
183
144
Ok ( ( ) )
184
145
}
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
+ }
185
164
}
0 commit comments