@@ -53,17 +53,6 @@ impl TedgeP11Client {
53
53
offered : & [ rustls:: SignatureScheme ] ,
54
54
uri : Option < String > ,
55
55
) -> 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
-
67
56
let request = Frame1 :: ChooseSchemeRequest ( ChooseSchemeRequest {
68
57
offered : offered
69
58
. iter ( )
@@ -72,10 +61,7 @@ impl TedgeP11Client {
72
61
. collect :: < Vec < _ > > ( ) ,
73
62
uri,
74
63
} ) ;
75
- trace ! ( ?request) ;
76
- connection. write_frame ( & request) ?;
77
-
78
- let response = connection. read_frame ( ) ?;
64
+ let response = self . do_request ( request) ?;
79
65
80
66
let Frame1 :: ChooseSchemeResponse ( response) = response else {
81
67
bail ! ( "protocol error: bad response, expected chose scheme, received: {response:?}" ) ;
@@ -93,25 +79,12 @@ impl TedgeP11Client {
93
79
// this function is called only on the server when handling ClientHello message, so
94
80
// realistically it won't ever be called in our case
95
81
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
-
107
82
// if passed empty set of schemes, service doesn't return a scheme but returns an algorithm
108
83
let request = Frame1 :: ChooseSchemeRequest ( ChooseSchemeRequest {
109
84
offered : vec ! [ ] ,
110
85
uri : None ,
111
86
} ) ;
112
- connection. write_frame ( & request) ?;
113
-
114
- let response = connection. read_frame ( ) ?;
87
+ let response = self . do_request ( request) ?;
115
88
116
89
let Frame1 :: ChooseSchemeResponse ( response) = response else {
117
90
bail ! ( "protocol error: bad response, expected chose scheme, received: {response:?}" ) ;
@@ -123,23 +96,11 @@ impl TedgeP11Client {
123
96
}
124
97
125
98
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
-
135
99
let request = Frame1 :: SignRequest ( SignRequest {
136
100
to_sign : message. to_vec ( ) ,
137
101
uri,
138
102
} ) ;
139
- trace ! ( ?request) ;
140
- connection. write_frame ( & request) ?;
141
-
142
- let response = connection. read_frame ( ) ?;
103
+ let response = self . do_request ( request) ?;
143
104
144
105
let Frame1 :: SignResponse ( response) = response else {
145
106
bail ! ( "protocol error: bad response, expected sign, received: {response:?}" ) ;
@@ -167,11 +128,29 @@ impl TedgeP11Client {
167
128
let response = connection. read_frame ( ) ?;
168
129
169
130
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:?}" ) ;
171
132
} ;
172
133
173
134
debug ! ( "Sign complete" ) ;
174
135
175
136
Ok ( ( ) )
176
137
}
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
+ }
177
156
}
0 commit comments