@tdxvolt/volt-client-grpc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/lib/index.cjs +1883 -0
- package/package.json +50 -0
- package/protobuf/README.md +4 -0
- package/protobuf/tdx/volt_api/data/v1/sqlite.proto +43 -0
- package/protobuf/tdx/volt_api/data/v1/sqlite_database_api.proto +105 -0
- package/protobuf/tdx/volt_api/data/v1/sqlite_server_api.proto +42 -0
- package/protobuf/tdx/volt_api/ssi/v1/ssi_api.proto +37 -0
- package/protobuf/tdx/volt_api/sync/v1/sync.proto +14 -0
- package/protobuf/tdx/volt_api/tunnel/v1/proxy_api.proto +9 -0
- package/protobuf/tdx/volt_api/tunnel/v1/tunnel_api.proto +77 -0
- package/protobuf/tdx/volt_api/volt/v1/discovery_api.proto +39 -0
- package/protobuf/tdx/volt_api/volt/v1/file.proto +17 -0
- package/protobuf/tdx/volt_api/volt/v1/file_api.proto +117 -0
- package/protobuf/tdx/volt_api/volt/v1/remote.proto +94 -0
- package/protobuf/tdx/volt_api/volt/v1/status.proto +15 -0
- package/protobuf/tdx/volt_api/volt/v1/volt.proto +563 -0
- package/protobuf/tdx/volt_api/volt/v1/volt_api.proto +943 -0
- package/protobuf/tdx/volt_api/volt/v1/wire_api.proto +50 -0
- package/src/constants.js +75 -0
- package/src/grpc-call.js +254 -0
- package/src/grpc-utils.js +197 -0
- package/src/index.js +7 -0
- package/src/proto-utils.js +81 -0
- package/src/tunnel.pb.js +0 -0
- package/src/utils.js +105 -0
- package/src/volt-client-internal.js +288 -0
- package/src/volt-client.js +491 -0
- package/src/volt-connection.js +157 -0
- package/src/volt-crypto.js +213 -0
|
@@ -0,0 +1,943 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package tdx.volt_api.volt.v1;
|
|
4
|
+
|
|
5
|
+
import "tdx/volt_api/volt/v1/status.proto";
|
|
6
|
+
import "tdx/volt_api/volt/v1/remote.proto";
|
|
7
|
+
import "tdx/volt_api/volt/v1/volt.proto";
|
|
8
|
+
|
|
9
|
+
// The top-level volt management service.
|
|
10
|
+
// With the exception of `Bind`, all RPCs on this service must submit either a valid client certificate signed by the volt CA, or a signed JWT.
|
|
11
|
+
// A client certificate can be obtained from the `Bind` method.
|
|
12
|
+
// All methods include a `tdx.volt_api.volt.v1.Status` in the response. If the status contains a non-OK error code the client should assume the remainder of the message is invalid, unless otherwise indicated in the response documentation.
|
|
13
|
+
service VoltAPI {
|
|
14
|
+
// Issues a request to bind to the volt.
|
|
15
|
+
// All clients must successfully bind to the Volt in order to gain any kind of access.
|
|
16
|
+
// A client certificate is optional for this RPC, in which case a JWT must be provided in the call metadata.
|
|
17
|
+
// If the client plans to register one or more services with the Volt, it should use the 'host' field of the request so that the returned certificate has the appropriate SAN extension in place. Note that if the client IP address changes it will be necessary to re-Bind the client and obtain a new certificate.
|
|
18
|
+
// If the bind decision is 'permit', the bind response contains various details that should be persisted by the client, including the unique identifier assigned by the Volt and a signed client certificate along with the Volt CA certificate.
|
|
19
|
+
rpc Bind(BindRequest) returns (BindResponse);
|
|
20
|
+
|
|
21
|
+
// Determine if an identity can perform a specific action on a resource.
|
|
22
|
+
// Third party services can use this to interrogate the Volt policy and determine if a client has permission to perform a certain action on a resource.
|
|
23
|
+
rpc CanAccessResource(CanAccessResourceRequest) returns (CanAccessResourceResponse);
|
|
24
|
+
|
|
25
|
+
// Creates a long-lived, bi-directional connection (session) to the Volt.
|
|
26
|
+
// The connection stream serves several purposes, including remote invocations via a tunnel, Volt event notifications, pings and service registration management.
|
|
27
|
+
// A connection session is required in order for a client to be able to register services with the Volt.
|
|
28
|
+
// When the stream is closed, any services registered on it will be set to offline.
|
|
29
|
+
rpc Connect(stream ConnectRequest) returns (stream ConnectResponse);
|
|
30
|
+
|
|
31
|
+
// This is a work in progress - do not use.
|
|
32
|
+
rpc CreateVerifiableCredentialSession(CreateVerifiableCredentialSessionRequest) returns (CreateVerifiableCredentialSessionResponse);
|
|
33
|
+
|
|
34
|
+
// Remove a custom access rule, such as a file share.
|
|
35
|
+
rpc DeleteAccess(DeleteAccessRequest) returns (DeleteAccessResponse);
|
|
36
|
+
|
|
37
|
+
// Delete a resource from this volt.
|
|
38
|
+
rpc DeleteResource(DeleteResourceRequest) returns (DeleteResourceResponse);
|
|
39
|
+
|
|
40
|
+
// Discover services running on this volt.
|
|
41
|
+
// Lookup is done via the exposed serviceAPI, e.g. tdx.volt_api.data.v1.SqliteServerAPI.
|
|
42
|
+
rpc DiscoverServices(DiscoverServicesRequest) returns (DiscoverServicesResponse);
|
|
43
|
+
|
|
44
|
+
// Get access rule details.
|
|
45
|
+
// Only rules in which the authenticated identity participates will be retrieved, in addition to any rules that target a resource that is owned by the authenticated identity.
|
|
46
|
+
// If the authenticated identity is the Volt root, all rules will be retrieved that match the criteria.
|
|
47
|
+
rpc GetAccess(GetAccessRequest) returns (GetAccessResponse);
|
|
48
|
+
|
|
49
|
+
// Get the bindings for this volt.
|
|
50
|
+
// This is a privileged API call and requires Volt root access.
|
|
51
|
+
rpc GetBindings(GetBindingsRequest) returns (GetBindingsResponse);
|
|
52
|
+
|
|
53
|
+
// Retrieve identities matching the given criteria.
|
|
54
|
+
// Only identities that the authenticated identity has read access to will be retrieved.
|
|
55
|
+
rpc GetIdentities(GetIdentitiesRequest) returns (GetIdentitiesResponse);
|
|
56
|
+
|
|
57
|
+
// Get details of a specific identity.
|
|
58
|
+
// The identity will only be retrieved if the authenticated identity has read access to it.
|
|
59
|
+
rpc GetIdentity(GetIdentityRequest) returns (GetIdentityResponse);
|
|
60
|
+
|
|
61
|
+
// NOT YET IMPLEMENTED.
|
|
62
|
+
// Gets a credential for the currently authenticated client, signed by the volt CA.
|
|
63
|
+
rpc GetIdentityToken(GetIdentityTokenRequest) returns (GetIdentityTokenResponse);
|
|
64
|
+
|
|
65
|
+
// Retrieve the Volt parameters.
|
|
66
|
+
// This is a privileged API call and requires Volt root access.
|
|
67
|
+
rpc GetParameters(GetParametersRequest) returns (GetParametersResponse);
|
|
68
|
+
|
|
69
|
+
// Retrieve the active Volt policy.
|
|
70
|
+
// This is a privileged API call and requires Volt root access.
|
|
71
|
+
rpc GetPolicy(GetPolicyRequest) returns (GetPolicyResponse);
|
|
72
|
+
|
|
73
|
+
// Get resource from this volt.
|
|
74
|
+
rpc GetResource(GetResourceRequest) returns (GetResourceResponse);
|
|
75
|
+
|
|
76
|
+
// Get resources from this volt.
|
|
77
|
+
rpc GetResources(GetResourcesRequest) returns (GetResourcesResponse);
|
|
78
|
+
|
|
79
|
+
// Get ancestors of a resource.
|
|
80
|
+
rpc GetResourceAncestors(GetResourceAncestorsRequest) returns (GetResourceAncestorsResponse);
|
|
81
|
+
|
|
82
|
+
// Get descendants of a resource.
|
|
83
|
+
rpc GetResourceDescendants(GetResourceDescendantsRequest) returns (GetResourceDescendantsResponse);
|
|
84
|
+
|
|
85
|
+
// Invoke a method.
|
|
86
|
+
// This is primarily for use by tunnel connections when proxying invocations.
|
|
87
|
+
rpc Invoke(stream InvokeRequest) returns (stream InvokeResponse);
|
|
88
|
+
|
|
89
|
+
// Request access to a resource.
|
|
90
|
+
// The subject of the access is assumed to be the identity of the currently authenticated peer.
|
|
91
|
+
rpc RequestAccess(RequestAccessRequest) returns (RequestAccessResponse);
|
|
92
|
+
|
|
93
|
+
// Create or update an access rule.
|
|
94
|
+
rpc SaveAccess(SaveAccessRequest) returns (SaveAccessResponse);
|
|
95
|
+
|
|
96
|
+
// Create or update a cloud connection resource.
|
|
97
|
+
rpc SaveCloudConnection(SaveCloudConnectionRequest) returns (SaveCloudConnectionResponse);
|
|
98
|
+
|
|
99
|
+
// Create or update an identity.
|
|
100
|
+
rpc SaveIdentity(SaveIdentityRequest) returns (SaveIdentityResponse);
|
|
101
|
+
|
|
102
|
+
// Update Volt parameters.
|
|
103
|
+
// This is a privileged call that requires Volt root access.
|
|
104
|
+
rpc SaveParameters(SaveParametersRequest) returns (SaveParametersResponse);
|
|
105
|
+
|
|
106
|
+
// Create or update resource in this volt.
|
|
107
|
+
rpc SaveResource(SaveResourceRequest) returns (SaveResourceResponse);
|
|
108
|
+
|
|
109
|
+
// Set Volt access request decision.
|
|
110
|
+
// This is a privileged call that requires Volt root access.
|
|
111
|
+
rpc SetAccessRequestDecision(SetAccessRequestDecisionRequest) returns (SetAccessRequestDecisionResponse);
|
|
112
|
+
|
|
113
|
+
// Set Volt binding decision.
|
|
114
|
+
// This is a privileged call that requires Volt root access.
|
|
115
|
+
rpc SetBindingDecision(SetBindingDecisionRequest) returns (SetBindingDecisionResponse);
|
|
116
|
+
|
|
117
|
+
// Set the status of a Volt service.
|
|
118
|
+
rpc SetServiceStatus(SetServiceStatusRequest) returns (SetServiceStatusResponse);
|
|
119
|
+
|
|
120
|
+
// Used to shutdown remote Volts.
|
|
121
|
+
// This is a privileged call that requires Volt root access.
|
|
122
|
+
rpc Shutdown(ShutdownRequest) returns (ShutdownResponse);
|
|
123
|
+
|
|
124
|
+
// Sign or verify an arbitrary message using the Volt key.
|
|
125
|
+
rpc SignVerify(SignVerifyRequest) returns (SignVerifyResponse);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Describes a request to bind to a volt.
|
|
129
|
+
message BindRequest {
|
|
130
|
+
|
|
131
|
+
// The client public key - must be in PEM format.
|
|
132
|
+
string public_key = 1;
|
|
133
|
+
|
|
134
|
+
// A human-readable name of the entity requesting to bind.
|
|
135
|
+
string binding_name = 2;
|
|
136
|
+
|
|
137
|
+
// The volt challenge code, signed by the private key component of the `public_key` field above, and base64 encoded.
|
|
138
|
+
// This is optional.
|
|
139
|
+
string challenge = 3;
|
|
140
|
+
|
|
141
|
+
// The host name to add as a SAN to the issued certificate.
|
|
142
|
+
// This is optional, if you don't intend to host services with the certificate this can be omitted.
|
|
143
|
+
string host = 5;
|
|
144
|
+
|
|
145
|
+
// DO NOT USE
|
|
146
|
+
// Additional credentials to support the bind request.
|
|
147
|
+
// If a certificate chain is presented (in the form of a concatenated list of PEM format x509 certificates) that includes a certificate with a public key matching the `public_key` field and that certificate is signed by another certificate for which the volt policy has a trust rule, this can be used to automatically permit/deny the request.
|
|
148
|
+
// This is probably deprecated in favour of verifiable credentials.
|
|
149
|
+
repeated string x509_credential = 6;
|
|
150
|
+
|
|
151
|
+
// Optional verifiable credentials describing the client.
|
|
152
|
+
// This is a work in progress.
|
|
153
|
+
repeated VerifiablePresentation verifiable_presentation = 7;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
message BindResponse {
|
|
157
|
+
// Details of any error that occurred on the call.
|
|
158
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
159
|
+
|
|
160
|
+
// The identity id assigned to this binding.
|
|
161
|
+
// Only valid for PERMIT bind decisions.
|
|
162
|
+
string identity_id = 2;
|
|
163
|
+
|
|
164
|
+
// A certificate issued by the volt CA, binding the request public key to the identity.
|
|
165
|
+
// Only valid for PERMIT bind decisions.
|
|
166
|
+
string cert = 3;
|
|
167
|
+
|
|
168
|
+
// The volt CA chain. This is used by the client in subsequent API calls to secure the connection.
|
|
169
|
+
string chain = 4;
|
|
170
|
+
|
|
171
|
+
// The bind decision.
|
|
172
|
+
PolicyDecision decision = 5;
|
|
173
|
+
|
|
174
|
+
// Reserved for internal use.
|
|
175
|
+
int64 request_time = 6;
|
|
176
|
+
|
|
177
|
+
// Reserved for internal use.
|
|
178
|
+
int64 decision_time = 7;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
message CanAccessResourceRequest {
|
|
182
|
+
oneof subject {
|
|
183
|
+
// The subject of the access request.
|
|
184
|
+
// This is optional, and if omitted will default to the authenticated account.
|
|
185
|
+
string token = 1;
|
|
186
|
+
|
|
187
|
+
// The subject of the access request.
|
|
188
|
+
// This is optional, and if omitted will default to the authenticated account.
|
|
189
|
+
string cert = 2;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// The resource in question.
|
|
193
|
+
string resource_id = 3;
|
|
194
|
+
|
|
195
|
+
// The type of access that is required.
|
|
196
|
+
string access = 4;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
message CanAccessResourceResponse {
|
|
200
|
+
// Details of any error that occurred on the call.
|
|
201
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
202
|
+
|
|
203
|
+
// The identity subject that the access relates to.
|
|
204
|
+
string identity_id = 2;
|
|
205
|
+
|
|
206
|
+
// Optional identity that issued the access.
|
|
207
|
+
string issuer_id = 3;
|
|
208
|
+
|
|
209
|
+
// The resource the access relates to.
|
|
210
|
+
string resource_id = 4;
|
|
211
|
+
|
|
212
|
+
// The access type.
|
|
213
|
+
string access = 5;
|
|
214
|
+
|
|
215
|
+
// The policy decision for this access request.
|
|
216
|
+
PolicyDecision decision = 6;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// All fields in this message are optional, send an empty message if necessary.
|
|
220
|
+
message ConnectHello {
|
|
221
|
+
// Optionally specify the calling address of the peer.
|
|
222
|
+
// Not currently in use.
|
|
223
|
+
string address = 1;
|
|
224
|
+
|
|
225
|
+
// Set to automatically make **all** services owned by the calling identity online.
|
|
226
|
+
bool online_services = 2;
|
|
227
|
+
|
|
228
|
+
// Set to receive notification of resource events.
|
|
229
|
+
bool subscribe_resource_events = 3;
|
|
230
|
+
|
|
231
|
+
// Set this to support tunnelled service invocation.
|
|
232
|
+
// This indicates that the callee is happy to receive method invocations from other clients of the tunnel.
|
|
233
|
+
// Currently this will usually be set to the `id` of the calling Volt, but in theory any client could receive remote invocation requests in this way.
|
|
234
|
+
string tunnel_id = 4;
|
|
235
|
+
|
|
236
|
+
// A friendly name to present to other tunnel clients.
|
|
237
|
+
string tunnel_name = 5;
|
|
238
|
+
|
|
239
|
+
// The certificate authority to present to other tunnel clients.
|
|
240
|
+
string tunnel_ca_pem = 6;
|
|
241
|
+
|
|
242
|
+
// Set to indicate the connection is discoverable to other tunnel clients.
|
|
243
|
+
bool tunnel_discoverable = 7;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// A session ping message.
|
|
247
|
+
message ConnectPing {
|
|
248
|
+
// The time on the originating server.
|
|
249
|
+
uint64 timestamp = 1;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Reserved for internal use.
|
|
253
|
+
enum ConnectMessageType {
|
|
254
|
+
CONNECT_MESSAGE_TYPE_UNKNOWN = 0;
|
|
255
|
+
CONNECT_MESSAGE_TYPE_ORIGINAL = 1;
|
|
256
|
+
CONNECT_MESSAGE_TYPE_ECHO = 2;
|
|
257
|
+
CONNECT_MESSAGE_TYPE_FORWARD = 3;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Reserved for internal use.
|
|
261
|
+
enum ConnectMessageRelay {
|
|
262
|
+
CONNECT_MESSAGE_RELAY_UNKNOWN = 0;
|
|
263
|
+
CONNECT_MESSAGE_RELAY_OUTGOING = 1;
|
|
264
|
+
CONNECT_MESSAGE_RELAY_INCOMING = 2;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// This message is reserved for internal use.
|
|
268
|
+
message ConnectMessage {
|
|
269
|
+
string id = 1;
|
|
270
|
+
string thread_id = 2;
|
|
271
|
+
string to_id = 4;
|
|
272
|
+
string to_identity_id = 5;
|
|
273
|
+
string to_name = 6;
|
|
274
|
+
string message = 7;
|
|
275
|
+
uint64 timestamp = 8;
|
|
276
|
+
string from_id = 9;
|
|
277
|
+
string from_identity_id = 10;
|
|
278
|
+
string from_name = 11;
|
|
279
|
+
|
|
280
|
+
repeated string receipts = 12;
|
|
281
|
+
ConnectMessageType message_type = 15;
|
|
282
|
+
ConnectMessageRelay message_relay = 16;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
message ConnectGoodbye {
|
|
286
|
+
// Details of any error that occurred on the call.
|
|
287
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
288
|
+
|
|
289
|
+
// Set if the session was ended gracefully, as opposed to errored.
|
|
290
|
+
bool ended = 2;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
message ConnectTunnel {
|
|
294
|
+
// Indicates the tunnel connection status.
|
|
295
|
+
bool connected = 1;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
enum ConnectResourceEvent {
|
|
299
|
+
CONNECT_RESOURCE_EVENT_UNKNOWN = 0;
|
|
300
|
+
CONNECT_RESOURCE_EVENT_CREATE = 1;
|
|
301
|
+
CONNECT_RESOURCE_EVENT_UPDATE = 2;
|
|
302
|
+
CONNECT_RESOURCE_EVENT_DELETE = 3;
|
|
303
|
+
CONNECT_RESOURCE_EVENT_CREATE_CHILD = 4;
|
|
304
|
+
CONNECT_RESOURCE_EVENT_DELETE_CHILD = 5;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
message ConnectResource {
|
|
308
|
+
// The type of resource event that has occurred.
|
|
309
|
+
ConnectResourceEvent resource_event = 1;
|
|
310
|
+
|
|
311
|
+
// Details of the resource.
|
|
312
|
+
Resource resource = 2;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
message ConnectEvent {
|
|
316
|
+
oneof event {
|
|
317
|
+
// A resource event notification, such as updated or deleted.
|
|
318
|
+
ConnectResource connect_resource = 3;
|
|
319
|
+
|
|
320
|
+
// Events relating to tunnel connections.
|
|
321
|
+
ConnectTunnel tunnel = 6;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// One of the following payloads will be present in a given ConnectRequest message.
|
|
326
|
+
message ConnectRequest {
|
|
327
|
+
oneof payload {
|
|
328
|
+
// A ConnectHello message is the first message a client sends to the target upon successfully starting the call.
|
|
329
|
+
ConnectHello hello = 1;
|
|
330
|
+
|
|
331
|
+
// Indicates the client is closing the session.
|
|
332
|
+
ConnectGoodbye goodbye = 2;
|
|
333
|
+
|
|
334
|
+
// Reserved for internal use.
|
|
335
|
+
ConnectMessage msg = 3;
|
|
336
|
+
|
|
337
|
+
// Clients should periodically send ping requests to the target to confirm the stream is still live.
|
|
338
|
+
ConnectPing ping = 4;
|
|
339
|
+
|
|
340
|
+
// Send invocation responses back to the caller.
|
|
341
|
+
// n.b. The 'request' and 'response' semantics are inverted with remote invocations because the tunnelled connection is established by a request **from** the 'target' Volt to the tunnel. Hence any invocation on behalf of a client of the tunnel involves sending a **response** back down the tunnel connection to the 'target' Volt.
|
|
342
|
+
InvokeResponse invoke_response = 5;
|
|
343
|
+
|
|
344
|
+
// Send HTTP response back to the originating request.
|
|
345
|
+
// n.b. The 'request' and 'response' semantics are inverted with HTTP proxying for the same reason as `invoke_response` above.
|
|
346
|
+
HttpResponse http_response = 6;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// One of the following payloads will be present in a given ConnectResponse message.
|
|
351
|
+
message ConnectResponse {
|
|
352
|
+
oneof payload {
|
|
353
|
+
// Server response to initial handshake.
|
|
354
|
+
ConnectHello hello = 1;
|
|
355
|
+
|
|
356
|
+
// Indicates the server is ending the session.
|
|
357
|
+
ConnectGoodbye goodbye = 2;
|
|
358
|
+
|
|
359
|
+
// Notifies clients of various events on the Volt.
|
|
360
|
+
ConnectEvent evt = 3;
|
|
361
|
+
|
|
362
|
+
// Reserved for internal use.
|
|
363
|
+
ConnectMessage msg = 4;
|
|
364
|
+
|
|
365
|
+
// Periodic ping response.
|
|
366
|
+
ConnectPing ping = 5;
|
|
367
|
+
|
|
368
|
+
// Send an invocation request to a remote target.
|
|
369
|
+
// n.b. The 'request' and 'response' semantics are inverted for remote invocations because the tunnelled connection is established by a request **from** the 'target' Volt to the tunnel. Hence any invocation on behalf of a client of the tunnel involves sending a **response** back down the tunnel connection to the 'target' Volt.
|
|
370
|
+
InvokeRequest invoke_request = 6;
|
|
371
|
+
|
|
372
|
+
// Send an HTTP request to a remote target.
|
|
373
|
+
// n.b. The 'request' and 'response' semantics are inverted for HTTP requests for the same reason as `invoke_request` above.
|
|
374
|
+
HttpRequest http_request = 7;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
message CreateVerifiableCredentialSessionRequest {
|
|
379
|
+
string presentation = 1;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
message CreateVerifiableCredentialSessionResponse {
|
|
383
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
384
|
+
string session_id = 2;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
message DeleteAccessRequest {
|
|
388
|
+
// The id of the access rule to delete.
|
|
389
|
+
string id = 1;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
message DeleteAccessResponse {
|
|
393
|
+
// Details of any error that occurred on the call.
|
|
394
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
message DeleteResourceRequest {
|
|
398
|
+
// The resource to delete.
|
|
399
|
+
string resource_id = 1;
|
|
400
|
+
|
|
401
|
+
// Set to indicate all descendant resources should also be deleted.
|
|
402
|
+
// If this is not set and the resource has descendants, the call will fail.
|
|
403
|
+
bool recursive = 2;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
message DeleteResourceResponse {
|
|
407
|
+
// Details of any error that occurred on the call.
|
|
408
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
message DiscoverServicesRequest {
|
|
412
|
+
// List the service APIs that should be discovered.
|
|
413
|
+
// The response will include services that match **any of** the terms given.
|
|
414
|
+
// Use of '*' to indicate wildcards is supported.
|
|
415
|
+
repeated string service_api = 2;
|
|
416
|
+
|
|
417
|
+
// Set to indicate that offline services should be included in the response.
|
|
418
|
+
bool include_offline = 3;
|
|
419
|
+
|
|
420
|
+
// Set to include the service protobuf in the response.
|
|
421
|
+
bool include_protobuf = 4;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
message DiscoverServicesResponse {
|
|
425
|
+
// Details of any error that occurred on the call.
|
|
426
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
427
|
+
|
|
428
|
+
// The services that were discovered.
|
|
429
|
+
repeated Resource resources = 2;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
message GetAccessRequest {
|
|
433
|
+
// The resource id that is the target of the access rule. If omitted, all resources will be considered.
|
|
434
|
+
string resource_id = 1;
|
|
435
|
+
|
|
436
|
+
// The identity id that is the subject of the access rule. If omitted, all identities will be considered.
|
|
437
|
+
string identity_id = 2;
|
|
438
|
+
|
|
439
|
+
// The issuer of the access rule. If omitted, all issuers will be considered.
|
|
440
|
+
string issuer_id = 3;
|
|
441
|
+
|
|
442
|
+
// The type of access to retrieve, if omitted all access will be considered.
|
|
443
|
+
string access = 4;
|
|
444
|
+
|
|
445
|
+
// The type of decision, if omitted all decisions will be considered.
|
|
446
|
+
PolicyDecision decision = 5;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
message GetAccessResponse {
|
|
450
|
+
// Details of any error that occurred on the call.
|
|
451
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
452
|
+
|
|
453
|
+
// The access rules that match the criteria.
|
|
454
|
+
repeated Access access = 2;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
message GetBindingsRequest {
|
|
458
|
+
// The fingerprint of the binding subject. If omitted, all bindings are retrieved.
|
|
459
|
+
string fingerprint = 1;
|
|
460
|
+
|
|
461
|
+
// The decision of the binding. If omitted, all binding decisions are retrieved.
|
|
462
|
+
PolicyDecision decision = 2;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
message GetBindingsResponse {
|
|
466
|
+
// Details of any error that occurred on the call.
|
|
467
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
468
|
+
|
|
469
|
+
// The bindings that match the criteria.
|
|
470
|
+
repeated Binding bindings = 2;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
message GetIdentitiesRequest {
|
|
474
|
+
// Optional name of the identity.
|
|
475
|
+
// Use '*' to perform a wildcard search.
|
|
476
|
+
// If omitted all identities will be retrieved.
|
|
477
|
+
string name = 1;
|
|
478
|
+
|
|
479
|
+
// The identity alias criteria, if omitted all identities will be considered.
|
|
480
|
+
IdentityAlias alias = 2;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
message GetIdentitiesResponse {
|
|
484
|
+
// Details of any error that occurred on the call.
|
|
485
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
486
|
+
|
|
487
|
+
// The identity list that matched the criteria.
|
|
488
|
+
repeated Identity identities = 2;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
// One of `identity_id` or `fingerprint` must be populated.
|
|
492
|
+
message GetIdentityRequest {
|
|
493
|
+
oneof lookup {
|
|
494
|
+
// The id of the identity to retrieve.
|
|
495
|
+
string identity_id = 1;
|
|
496
|
+
// The public key fingerprint of the identity to retrieve.
|
|
497
|
+
string fingerprint = 2;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
message GetIdentityResponse {
|
|
502
|
+
// Details of any error that occurred on the call.
|
|
503
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
504
|
+
|
|
505
|
+
// The identity details.
|
|
506
|
+
Identity identity = 2;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
message GetIdentityTokenRequest {
|
|
510
|
+
// The token TTL, in seconds.
|
|
511
|
+
int32 ttl = 1;
|
|
512
|
+
|
|
513
|
+
// The intended token audience - usually the common name of the target volt
|
|
514
|
+
// CA.
|
|
515
|
+
string audience = 2;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
message GetIdentityTokenResponse {
|
|
519
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
520
|
+
string token = 2;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
// This an empty message.
|
|
524
|
+
message GetParametersRequest {
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
message GetParametersResponse {
|
|
528
|
+
// Details of any error that occurred on the call.
|
|
529
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
530
|
+
|
|
531
|
+
// The retrieved Volt parameters.
|
|
532
|
+
VoltParameters parameters = 2;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// This an empty message.
|
|
536
|
+
message GetPolicyRequest {
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
message GetPolicyResponse {
|
|
540
|
+
// Details of any error that occurred on the call.
|
|
541
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
542
|
+
|
|
543
|
+
// The live policy in JSON format.
|
|
544
|
+
string policy = 2;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
message GetResourceRequest {
|
|
548
|
+
// The id of the resource to retrieve.
|
|
549
|
+
string resource_id = 1;
|
|
550
|
+
|
|
551
|
+
// Set to include resource attributes in the response.
|
|
552
|
+
bool include_attributes = 2;
|
|
553
|
+
|
|
554
|
+
// Set to include service description protobuf in the response, if applicable.
|
|
555
|
+
bool include_protobuf = 3;
|
|
556
|
+
|
|
557
|
+
// Set to include any aliases associated with the resource.
|
|
558
|
+
bool include_aliases = 4;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
message GetResourceResponse {
|
|
562
|
+
// Details of any error that occurred on the call.
|
|
563
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
564
|
+
|
|
565
|
+
// The retrieved resource metadata.
|
|
566
|
+
Resource resource = 2;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
// Lookup is performed by combining the criteria below in the form:
|
|
570
|
+
// (id = id[0] or id = id[1]) and (name = name[0] or name = name[1]) etc...
|
|
571
|
+
// Also see note below regarding attributes.
|
|
572
|
+
message GetResourcesRequest {
|
|
573
|
+
repeated string id = 1;
|
|
574
|
+
|
|
575
|
+
// Wildcards permitted.
|
|
576
|
+
repeated string name = 2;
|
|
577
|
+
|
|
578
|
+
// Wildcards permitted.
|
|
579
|
+
repeated string description = 3;
|
|
580
|
+
|
|
581
|
+
// Wildcards permitted.
|
|
582
|
+
repeated string kind = 4;
|
|
583
|
+
|
|
584
|
+
repeated string parent_id = 5;
|
|
585
|
+
|
|
586
|
+
// Wildcards permitted.
|
|
587
|
+
repeated string service_api = 6;
|
|
588
|
+
|
|
589
|
+
repeated string owner = 8;
|
|
590
|
+
|
|
591
|
+
repeated string store = 9;
|
|
592
|
+
|
|
593
|
+
// Attributes to search by.
|
|
594
|
+
// n.b. currently this API is mutually exclusive in that if any attribute queries are specified the rpc will only search on those attributes, ignoring any parameters defined above.
|
|
595
|
+
repeated ResourceAttributeQuery attributes = 100;
|
|
596
|
+
|
|
597
|
+
// If set, will return resources where *any of* the attribute queries apply, otherwise will only return resources where *all of* the attribute queries apply.
|
|
598
|
+
bool any_of = 101;
|
|
599
|
+
|
|
600
|
+
// Set to include service description protobuf in the response where applicable.
|
|
601
|
+
bool include_protobuf = 102;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
message GetResourcesResponse {
|
|
605
|
+
// Details of any error that occurred on the call.
|
|
606
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
607
|
+
|
|
608
|
+
// The list of resources that match the lookup.
|
|
609
|
+
repeated Resource resources = 2;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
message GetResourceAncestorsRequest {
|
|
613
|
+
// The resource id whose ancestors will be retrieved.
|
|
614
|
+
string resource_id = 1;
|
|
615
|
+
|
|
616
|
+
// Optional - if set the resource_id resource will be included in the set of resources returned.
|
|
617
|
+
bool include_resource_id = 2;
|
|
618
|
+
|
|
619
|
+
// Optional - restrict the depth search, e.g. for immediate parents depth = 1
|
|
620
|
+
int32 depth = 3;
|
|
621
|
+
|
|
622
|
+
// Optional - only match ancestors of the given kind.
|
|
623
|
+
string ancestor_kind = 4;
|
|
624
|
+
|
|
625
|
+
// Optional - can be used to determine if a resource is an ancestor.
|
|
626
|
+
string ancestor_id = 5;
|
|
627
|
+
|
|
628
|
+
// Pre-load all resource attributes.
|
|
629
|
+
bool include_attributes = 6;
|
|
630
|
+
|
|
631
|
+
// Set to include any aliases associated with the resource.
|
|
632
|
+
bool include_aliases = 7;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
message GetResourceAncestorsResponse {
|
|
636
|
+
// Details of any error that occurred on the call.
|
|
637
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
638
|
+
|
|
639
|
+
// The retrieved ancestors.
|
|
640
|
+
repeated Resource ancestors = 2;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
message GetResourceDescendantsRequest {
|
|
644
|
+
// The resource id whose descendants will be retrieved.
|
|
645
|
+
string resource_id = 1;
|
|
646
|
+
|
|
647
|
+
// Optional - if set, the fully populated `resource_id` resource (i.e. the parent) will be included in the set of resources returned.
|
|
648
|
+
bool include_resource_id = 2;
|
|
649
|
+
|
|
650
|
+
// Optional - restrict the depth search, e.g. for immediate children depth = 1
|
|
651
|
+
int32 depth = 3;
|
|
652
|
+
|
|
653
|
+
// Optional - only match descendants of the given kind.
|
|
654
|
+
// If multiple kinds are given, resources matching **any of** the kinds will be included.
|
|
655
|
+
repeated string descendant_kind = 4;
|
|
656
|
+
|
|
657
|
+
// Optional - can be used to determine if a resource is a descendant.
|
|
658
|
+
string descendant_id = 5;
|
|
659
|
+
|
|
660
|
+
// Optional - restrict to descendants of a given parent, for use in multi-parent hierarchies.
|
|
661
|
+
string parent_id = 6;
|
|
662
|
+
|
|
663
|
+
// Restrict to a specific named resource.
|
|
664
|
+
string name = 7;
|
|
665
|
+
|
|
666
|
+
// Pre-load all resource attributes.
|
|
667
|
+
bool include_attributes = 8;
|
|
668
|
+
|
|
669
|
+
// Set to include any aliases associated with the resource.
|
|
670
|
+
bool include_aliases = 9;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
message GetResourceDescendantsResponse {
|
|
674
|
+
// Details of any error that occurred on the call.
|
|
675
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
676
|
+
|
|
677
|
+
// The retrieved descendants.
|
|
678
|
+
repeated Resource descendants = 2;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
message InvokeRequest {
|
|
682
|
+
// Client-assigned identifier for the request. Will be used to match responses and any subsequent requests.
|
|
683
|
+
uint64 invoke_id = 1;
|
|
684
|
+
|
|
685
|
+
// The client token to use for the invocation.
|
|
686
|
+
string token = 2;
|
|
687
|
+
|
|
688
|
+
// Key fingerprint of the target Volt.
|
|
689
|
+
// This is used by the tunnel to route the request.
|
|
690
|
+
string identity_fingerprint = 3;
|
|
691
|
+
|
|
692
|
+
oneof request_payload {
|
|
693
|
+
// A serialised and encrypted instance of `RemoteResponse` in pure binary format.
|
|
694
|
+
bytes payload = 4;
|
|
695
|
+
|
|
696
|
+
// A serialised and encrypted instance of `RemoteResponse` as serialised JSON.
|
|
697
|
+
string json_payload = 5;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
// Indicates the client has ended the invocation.
|
|
701
|
+
bool client_end = 6;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
message InvokeResponse {
|
|
705
|
+
// The invocation id to match the originating request.
|
|
706
|
+
uint64 invoke_id = 1;
|
|
707
|
+
|
|
708
|
+
oneof response_payload {
|
|
709
|
+
// A serialised and encrypted instance of `RemoteRequest` in pure binary format.
|
|
710
|
+
bytes payload = 2;
|
|
711
|
+
|
|
712
|
+
// A serialised and encrypted instance of `RemoteRequest` as serialised JSON.
|
|
713
|
+
string json_payload = 3;
|
|
714
|
+
|
|
715
|
+
// Details of any error that occurred on the call.
|
|
716
|
+
tdx.volt_api.volt.v1.Status status = 4;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// Indicates the server has ended the invocation.
|
|
720
|
+
bool server_end = 5;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
message RequestAccessRequest {
|
|
724
|
+
// The target resource id.
|
|
725
|
+
string resource_id = 1;
|
|
726
|
+
|
|
727
|
+
// The type of access requested.
|
|
728
|
+
string access = 3;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
message RequestAccessResponse {
|
|
732
|
+
// Details of any error that occurred on the call.
|
|
733
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
734
|
+
|
|
735
|
+
// The resource being accessed.
|
|
736
|
+
string resource_id = 2;
|
|
737
|
+
|
|
738
|
+
// The identity attempting access.
|
|
739
|
+
string identity_id = 4;
|
|
740
|
+
|
|
741
|
+
// The identity of the issuer of the access.
|
|
742
|
+
string issuer_id = 5;
|
|
743
|
+
|
|
744
|
+
// Requested access.
|
|
745
|
+
string access = 7;
|
|
746
|
+
|
|
747
|
+
// Assigned decision.
|
|
748
|
+
PolicyDecision decision = 9;
|
|
749
|
+
|
|
750
|
+
// Time at which the request was made.
|
|
751
|
+
int64 request_time = 10;
|
|
752
|
+
|
|
753
|
+
// Time at which the decision was taken.
|
|
754
|
+
int64 decision_time = 11;
|
|
755
|
+
|
|
756
|
+
// Counter of number times this access was requested.
|
|
757
|
+
int32 request_count = 12;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
message ResourceAttributeQuery {
|
|
761
|
+
string attribute_id = 1;
|
|
762
|
+
AttributeDataType data_type = 2;
|
|
763
|
+
AttributeValue value = 3;
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
message SaveAccessRequest {
|
|
767
|
+
// Omit `id` if creating new access.
|
|
768
|
+
Access access = 1;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
message SaveAccessResponse {
|
|
772
|
+
// Details of any error that occurred on the call.
|
|
773
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
message SaveCloudConnectionRequest {
|
|
777
|
+
// Details of the cloud connection.
|
|
778
|
+
ProxyConnection connection = 1;
|
|
779
|
+
|
|
780
|
+
// Set to indicate that this is a new cloud connection.
|
|
781
|
+
bool create = 2;
|
|
782
|
+
|
|
783
|
+
// Reserved for system use.
|
|
784
|
+
string create_in_parent_id = 3;
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
message SaveCloudConnectionResponse {
|
|
788
|
+
// Details of any error that occurred on the call.
|
|
789
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
790
|
+
|
|
791
|
+
// The updated connection details.
|
|
792
|
+
ProxyConnection connection = 2;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
message SaveIdentityRequest {
|
|
796
|
+
// Details of the identity to save.
|
|
797
|
+
Identity identity = 1;
|
|
798
|
+
|
|
799
|
+
// Set to indicate this is a new identity.
|
|
800
|
+
bool create = 2;
|
|
801
|
+
|
|
802
|
+
// The list of aliases that should be removed.
|
|
803
|
+
// For example, this allows a simple form of key rotation whereby an existing public key alias is replaced by a new one while still maintaining the same root identity id.
|
|
804
|
+
repeated IdentityAlias delete_alias = 3;
|
|
805
|
+
|
|
806
|
+
// Reserved for system use.
|
|
807
|
+
string create_in_parent_id = 4;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
message SaveIdentityResponse {
|
|
811
|
+
// Details of any error that occurred on the call.
|
|
812
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
813
|
+
|
|
814
|
+
// The updated identity details.
|
|
815
|
+
Identity identity = 2;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
message SaveParametersRequest {
|
|
819
|
+
// The updated parameters.
|
|
820
|
+
VoltParameters parameters = 1;
|
|
821
|
+
|
|
822
|
+
// The current root key passphrase. Only necessary if changes are being made to the Volt key.
|
|
823
|
+
string key_passphrase = 2;
|
|
824
|
+
|
|
825
|
+
// The new root key passphrase. Only necessary if changes are being made to the Volt key.
|
|
826
|
+
string new_key_passphrase = 3;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
message SaveParametersResponse {
|
|
830
|
+
// Details of any errors that occurred on the call.
|
|
831
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
832
|
+
|
|
833
|
+
// The updated Volt parameters.
|
|
834
|
+
VoltParameters parameters = 2;
|
|
835
|
+
|
|
836
|
+
// If set, the client will need to reconnect (usually because the key has changed).
|
|
837
|
+
bool reconnect = 3;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
message SaveResourceRequest {
|
|
841
|
+
// Details of the resource to save.
|
|
842
|
+
Resource resource = 1;
|
|
843
|
+
|
|
844
|
+
// Set to indicate this is a new resource.
|
|
845
|
+
bool create = 2;
|
|
846
|
+
|
|
847
|
+
// The id of the folder resource in which a new resource should be created.
|
|
848
|
+
// If omitted, the home folder of the currently authenticated identity will be used.
|
|
849
|
+
string create_in_parent_id = 3;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
message SaveResourceResponse {
|
|
853
|
+
// Details of any error that occurred on the call.
|
|
854
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
855
|
+
|
|
856
|
+
// The updated resource.
|
|
857
|
+
Resource resource = 2;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
message SetServiceStatusRequest {
|
|
861
|
+
// The service description details.
|
|
862
|
+
Resource service = 2;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
message SetServiceStatusResponse {
|
|
866
|
+
// Details of any error that occurred on the call.
|
|
867
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
868
|
+
|
|
869
|
+
// The updated service resource details.
|
|
870
|
+
Resource resource = 2;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
message SetAccessRequestDecisionRequest {
|
|
874
|
+
// The id of the access request.
|
|
875
|
+
string id = 1;
|
|
876
|
+
|
|
877
|
+
// The decision to save against the access request.
|
|
878
|
+
PolicyDecision decision = 2;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
message SetAccessRequestDecisionResponse {
|
|
882
|
+
// Details of any error that occurred on the call.
|
|
883
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
message SetBindingDecisionRequest {
|
|
887
|
+
// The fingerprint of the bind request.
|
|
888
|
+
string fingerprint = 1;
|
|
889
|
+
|
|
890
|
+
// The policy decision to assign to the bind request.
|
|
891
|
+
PolicyDecision decision = 2;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
message SetBindingDecisionResponse {
|
|
895
|
+
// Details of any error that occurred on the call.
|
|
896
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
// This message is emtpy.
|
|
900
|
+
message ShutdownRequest {
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
message ShutdownResponse {
|
|
904
|
+
// Details of any error that occurred on the call.
|
|
905
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
message SignVerifyRequest {
|
|
909
|
+
// Set to indicate this is a request to verify rather than sign.
|
|
910
|
+
bool verify = 1;
|
|
911
|
+
|
|
912
|
+
// Set to indicate the signature should be base64 encoded in the response.
|
|
913
|
+
// Only valid when signing.
|
|
914
|
+
bool encode = 2;
|
|
915
|
+
|
|
916
|
+
// The message to sign.
|
|
917
|
+
// Only valid when signing.
|
|
918
|
+
string message = 3;
|
|
919
|
+
|
|
920
|
+
oneof digest {
|
|
921
|
+
// The digest in raw binary form.
|
|
922
|
+
// Only valid if verifying.
|
|
923
|
+
bytes digest_raw = 4;
|
|
924
|
+
|
|
925
|
+
// The digest encoded using base64.
|
|
926
|
+
// Only valid if verifying.
|
|
927
|
+
string digest_encoded = 5;
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
// Note that if verification was successful the response will be empty (there is no error and no digest is returned).
|
|
932
|
+
message SignVerifyResponse {
|
|
933
|
+
// Details of any error that occurred on the call.
|
|
934
|
+
tdx.volt_api.volt.v1.Status status = 1;
|
|
935
|
+
|
|
936
|
+
oneof payload {
|
|
937
|
+
// The signature in raw binary form.
|
|
938
|
+
bytes digest = 3;
|
|
939
|
+
|
|
940
|
+
// The signature encoded using base64.
|
|
941
|
+
string digest_encoded = 4;
|
|
942
|
+
}
|
|
943
|
+
}
|