@sphereon/ssi-sdk.kms-rest-client 0.34.1-feature.IDK.11.294

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.
Files changed (72) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +369 -0
  3. package/dist/index.cjs +3924 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +3927 -0
  6. package/dist/index.d.ts +3927 -0
  7. package/dist/index.js +3903 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +60 -0
  10. package/plugin.schema.json +1004 -0
  11. package/src/agent/KmsRestClient.ts +468 -0
  12. package/src/index.ts +8 -0
  13. package/src/models/AwsAssumeRoleCredentials.ts +90 -0
  14. package/src/models/AwsClientConfiguration.ts +69 -0
  15. package/src/models/AwsKmsSetting.ts +112 -0
  16. package/src/models/AwsStaticCredentials.ts +90 -0
  17. package/src/models/AwsWebIdentityTokenCredentials.ts +91 -0
  18. package/src/models/AzureClientSecretCredentialOpts.ts +85 -0
  19. package/src/models/AzureCredentialOpts.ts +65 -0
  20. package/src/models/AzureKeyVaultSetting.ts +101 -0
  21. package/src/models/CoseKey.ts +137 -0
  22. package/src/models/CoseKeyPair.ts +73 -0
  23. package/src/models/CoseKeyType.ts +52 -0
  24. package/src/models/CreateKeyProvider.ts +101 -0
  25. package/src/models/CreateRawSignature.ts +74 -0
  26. package/src/models/CreateRawSignatureResponse.ts +62 -0
  27. package/src/models/CreateSimpleSignature.ts +86 -0
  28. package/src/models/CryptoAlg.ts +52 -0
  29. package/src/models/Curve.ts +56 -0
  30. package/src/models/DigestAlg.ts +55 -0
  31. package/src/models/ErrorResponse.ts +79 -0
  32. package/src/models/GenerateKey.ts +92 -0
  33. package/src/models/GenerateKeyGlobal.ts +100 -0
  34. package/src/models/GenerateKeyResponse.ts +65 -0
  35. package/src/models/GetKeyResponse.ts +65 -0
  36. package/src/models/IdentifierMethod.ts +53 -0
  37. package/src/models/JoseKeyPair.ts +73 -0
  38. package/src/models/Jwk.ts +231 -0
  39. package/src/models/JwkKeyType.ts +52 -0
  40. package/src/models/JwkUse.ts +50 -0
  41. package/src/models/KeyEncoding.ts +50 -0
  42. package/src/models/KeyInfo.ts +144 -0
  43. package/src/models/KeyOperations.ts +56 -0
  44. package/src/models/KeyProvider.ts +74 -0
  45. package/src/models/KeyProviderResponse.ts +74 -0
  46. package/src/models/KeyProviderType.ts +51 -0
  47. package/src/models/KeyResolver.ts +85 -0
  48. package/src/models/KeyType.ts +51 -0
  49. package/src/models/KeyVisibility.ts +50 -0
  50. package/src/models/ListKeyProvidersResponse.ts +65 -0
  51. package/src/models/ListKeysResponse.ts +65 -0
  52. package/src/models/ListResolversResponse.ts +65 -0
  53. package/src/models/LookupMode.ts +51 -0
  54. package/src/models/ManagedKeyInfo.ts +147 -0
  55. package/src/models/ManagedKeyPair.ts +102 -0
  56. package/src/models/MaskGenFunction.ts +49 -0
  57. package/src/models/ProviderCapabilities.ts +106 -0
  58. package/src/models/ResolvePublicKey.ts +91 -0
  59. package/src/models/ResolvedKeyInfo.ts +145 -0
  60. package/src/models/Resolver.ts +85 -0
  61. package/src/models/SignInput.ts +87 -0
  62. package/src/models/SignOutput.ts +73 -0
  63. package/src/models/Signature.ts +92 -0
  64. package/src/models/SignatureAlgorithm.ts +60 -0
  65. package/src/models/StoreKey.ts +73 -0
  66. package/src/models/StoreKeyResponse.ts +65 -0
  67. package/src/models/UpdateKeyProvider.ts +90 -0
  68. package/src/models/VerifyRawSignature.ts +83 -0
  69. package/src/models/VerifyRawSignatureResponse.ts +62 -0
  70. package/src/models/VerifySimpleSignature.ts +76 -0
  71. package/src/models/index.ts +60 -0
  72. package/src/types/IKmsRestClient.ts +134 -0
@@ -0,0 +1,468 @@
1
+ import { IAgentPlugin } from '@veramo/core'
2
+ import { Loggers } from '@sphereon/ssi-types'
3
+ import { fetch } from 'cross-fetch'
4
+ import type {
5
+ kmsClientGetResolverArgs,
6
+ KmsClientListResolversArgs,
7
+ IKmsRestClient,
8
+ KmsClientResolveKeyArgs,
9
+ KmsClientCreateRawSignatureArgs,
10
+ KmsClientGetKeyArgs,
11
+ KmsClientListKeysArgs,
12
+ KmsClientStoreKeyArgs,
13
+ KmsClientGenerateKeyArgs,
14
+ KmsClientDeleteKeyArgs,
15
+ KmsClientGetKeyProviderArgs,
16
+ KmsClientListKeyProvidersArgs,
17
+ KmsClientProviderListKeysArgs,
18
+ KmsClientProviderStoreKeyArgs,
19
+ KmsClientProviderGenerateKeyArgs,
20
+ KmsClientProviderGetKeyArgs,
21
+ KmsClientProviderDeleteKeyArgs,
22
+ RestClientAuthenticationOpts,
23
+ KmsRestClientArgs,
24
+ KmsClientIsValidRawSignatureArgs,
25
+ } from '../types/IKmsRestClient'
26
+ import type {
27
+ CreateRawSignature,
28
+ CreateRawSignatureResponse,
29
+ GenerateKey,
30
+ GenerateKeyGlobal,
31
+ ListKeyProvidersResponse,
32
+ ListKeysResponse,
33
+ ListResolversResponse,
34
+ ResolvedKeyInfo,
35
+ ResolvePublicKey,
36
+ Resolver,
37
+ VerifyRawSignatureResponse,
38
+ StoreKey,
39
+ VerifyRawSignature,
40
+ KeyProviderResponse,
41
+ GenerateKeyResponse,
42
+ StoreKeyResponse,
43
+ GetKeyResponse
44
+ } from '../models'
45
+ import {
46
+ CreateRawSignatureResponseFromJSONTyped,
47
+ CreateRawSignatureToJSONTyped,
48
+ GenerateKeyGlobalToJSONTyped,
49
+ GenerateKeyToJSONTyped,
50
+ GenerateKeyResponseFromJSONTyped,
51
+ GetKeyResponseFromJSONTyped,
52
+ KeyProviderResponseFromJSONTyped,
53
+ ListKeyProvidersResponseFromJSONTyped,
54
+ ListKeysResponseFromJSONTyped,
55
+ ListResolversResponseFromJSONTyped,
56
+ ResolvePublicKeyToJSONTyped,
57
+ ResolvedKeyInfoFromJSONTyped,
58
+ ResolverFromJSONTyped,
59
+ StoreKeyToJSONTyped,
60
+ StoreKeyResponseFromJSONTyped,
61
+ VerifyRawSignatureResponseFromJSONTyped,
62
+ VerifyRawSignatureToJSONTyped
63
+ } from '../models'
64
+
65
+ const logger = Loggers.DEFAULT.get('sphereon:ssi-sdk:kms:rest-client')
66
+
67
+ /**
68
+ * {@inheritDoc IKmsRestClient}
69
+ */
70
+ export class KmsRestClient implements IAgentPlugin {
71
+ readonly methods: IKmsRestClient = {
72
+ kmsClientGetKey: this.kmsClientGetKey.bind(this),
73
+ kmsClientListKeys: this.kmsClientListKeys.bind(this),
74
+ kmsClientStoreKey: this.kmsClientStoreKey.bind(this),
75
+ kmsClientGenerateKey: this.kmsClientGenerateKey.bind(this),
76
+ kmsClientDeleteKey: this.kmsClientDeleteKey.bind(this),
77
+
78
+ kmsClientGetKeyProvider: this.kmsClientGetKeyProvider.bind(this),
79
+ kmsClientListKeyProviders: this.kmsClientListKeyProviders.bind(this),
80
+ kmsClientProviderListKeys: this.kmsClientProviderListKeys.bind(this),
81
+ kmsClientProviderStoreKey: this.kmsClientProviderStoreKey.bind(this),
82
+ kmsClientProviderGenerateKey: this.kmsClientProviderGenerateKey.bind(this),
83
+ kmsClientProviderGetKey: this.kmsClientProviderGetKey.bind(this),
84
+ kmsClientProviderDeleteKey: this.kmsClientProviderDeleteKey.bind(this),
85
+
86
+ kmsClientGetResolver: this.kmsClientGetResolver.bind(this),
87
+ kmsClientListResolvers: this.kmsClientListResolvers.bind(this),
88
+ kmsClientResolveKey: this.kmsClientResolveKey.bind(this),
89
+
90
+ kmsClientCreateRawSignature: this.kmsClientCreateRawSignature.bind(this),
91
+ kmsClientIsValidRawSignature: this.kmsClientIsValidRawSignature.bind(this),
92
+ }
93
+
94
+ private readonly agentBaseUrl?: string
95
+ private readonly authOpts?: RestClientAuthenticationOpts
96
+
97
+ constructor(args?: KmsRestClientArgs) {
98
+ if (args?.baseUrl) {
99
+ this.agentBaseUrl = args.baseUrl
100
+ }
101
+ this.authOpts = args?.authentication
102
+ }
103
+
104
+ private static urlWithBase(path: string, baseUrl: string): string {
105
+ return `${baseUrl}${path.startsWith('/') ? path : `/${path}`}`
106
+ }
107
+
108
+ /** {@inheritDoc IKmsRestClient.kmsGetResolver} */
109
+ private async kmsClientGetResolver(args: kmsClientGetResolverArgs): Promise<Resolver> {
110
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
111
+ const url = KmsRestClient.urlWithBase(`/resolvers/${args.resolverId}`, baseUrl)
112
+
113
+ const response = await fetch(url, {
114
+ method: 'GET',
115
+ })
116
+ logger.debug(`get resolver response: ${response}`)
117
+
118
+ try {
119
+ return ResolverFromJSONTyped(await response.json(), false)
120
+ } catch (error) {
121
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
122
+ }
123
+ }
124
+
125
+ /** {@inheritDoc IKmsRestClient.kmsListResolvers} */
126
+ private async kmsClientListResolvers(args?: KmsClientListResolversArgs): Promise<ListResolversResponse> {
127
+ const baseUrl = this.assertedAgentBaseUrl(args?.baseUrl)
128
+ const url = KmsRestClient.urlWithBase('/resolvers', baseUrl)
129
+
130
+ const response = await fetch(url, {
131
+ method: 'GET',
132
+ })
133
+ logger.debug(`list resolvers response: ${response}`)
134
+
135
+ try {
136
+ return ListResolversResponseFromJSONTyped(await response.json(), false)
137
+ } catch (error) {
138
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
139
+ }
140
+ }
141
+
142
+ /** {@inheritDoc IKmsRestClient.kmsResolveKey} */
143
+ private async kmsClientResolveKey(args: KmsClientResolveKeyArgs): Promise<ResolvedKeyInfo> {
144
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
145
+ const url = KmsRestClient.urlWithBase(`/resolvers/${args.resolverId}/resolve`, baseUrl)
146
+
147
+ const body = {
148
+ keyInfo: args.keyInfo,
149
+ identifierMethod: args.identifierMethod,
150
+ trustedCerts: args.trustedCerts,
151
+ verifyX509CertificateChain: args.verifyX509CertificateChain,
152
+ } satisfies ResolvePublicKey
153
+ const response = await fetch(url, {
154
+ method: 'POST',
155
+ headers: await this.createHeaders({ 'Content-Type': 'application/json' }),
156
+ body: JSON.stringify(ResolvePublicKeyToJSONTyped(body)),
157
+ })
158
+ logger.debug(`resolve key response: ${response}`)
159
+
160
+ try {
161
+ return ResolvedKeyInfoFromJSONTyped(await response.json(), false)
162
+ } catch (error) {
163
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
164
+ }
165
+ }
166
+
167
+ /** {@inheritDoc IKmsRestClient.kmsCreateRawSignature} */
168
+ private async kmsClientCreateRawSignature(args: KmsClientCreateRawSignatureArgs): Promise<CreateRawSignatureResponse> {
169
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
170
+ const url = KmsRestClient.urlWithBase(`/signatures/raw`, baseUrl)
171
+
172
+ const body = {
173
+ keyInfo: args.keyInfo,
174
+ input: args.input,
175
+ } satisfies CreateRawSignature
176
+ const response = await fetch(url, {
177
+ method: 'POST',
178
+ headers: await this.createHeaders({ 'Content-Type': 'application/json' }),
179
+ body: JSON.stringify(CreateRawSignatureToJSONTyped(body)),
180
+ })
181
+ logger.debug(`create raw signature response: ${response}`)
182
+
183
+ try {
184
+ return CreateRawSignatureResponseFromJSONTyped(await response.json(), false)
185
+ } catch (error) {
186
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
187
+ }
188
+ }
189
+
190
+ /** {@inheritDoc IKmsRestClient.kmsIsValidRawSignature} */
191
+ private async kmsClientIsValidRawSignature(args: KmsClientIsValidRawSignatureArgs): Promise<VerifyRawSignatureResponse> {
192
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
193
+ const url = KmsRestClient.urlWithBase(`/signatures/raw/verify`, baseUrl)
194
+
195
+ const body = {
196
+ keyInfo: args.keyInfo,
197
+ signature: args.signature,
198
+ input: args.input,
199
+ } satisfies VerifyRawSignature
200
+ const response = await fetch(url, {
201
+ method: 'POST',
202
+ headers: await this.createHeaders({ 'Content-Type': 'application/json' }),
203
+ body: JSON.stringify(VerifyRawSignatureToJSONTyped(body)),
204
+ })
205
+ logger.debug(`verify raw signature response: ${response}`)
206
+
207
+ try {
208
+ return VerifyRawSignatureResponseFromJSONTyped(await response.json(), false)
209
+ } catch (error) {
210
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
211
+ }
212
+ }
213
+
214
+ /** {@inheritDoc IKmsRestClient.kmsGetKey} */
215
+ private async kmsClientGetKey(args: KmsClientGetKeyArgs): Promise<GetKeyResponse> {
216
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
217
+ const url = KmsRestClient.urlWithBase(`/keys/${args.aliasOrKid}`, baseUrl)
218
+
219
+ const response = await fetch(url, {
220
+ method: 'GET',
221
+ })
222
+ logger.debug(`get key response: ${response}`)
223
+
224
+ try {
225
+ return GetKeyResponseFromJSONTyped(await response.json(), false)
226
+ } catch (error) {
227
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
228
+ }
229
+ }
230
+
231
+ /** {@inheritDoc IKmsRestClient.kmsListKeys} */
232
+ private async kmsClientListKeys(args?: KmsClientListKeysArgs): Promise<ListKeysResponse> {
233
+ const baseUrl = this.assertedAgentBaseUrl(args?.baseUrl)
234
+ const url = this.addSearchParams(KmsRestClient.urlWithBase('/keys', baseUrl), { ...(args?.providerId && { providerId: args.providerId }) })
235
+ const response = await fetch(url, {
236
+ method: 'GET',
237
+ })
238
+ logger.debug(`list keys response: ${response}`)
239
+
240
+ try {
241
+ return ListKeysResponseFromJSONTyped(await response.json(), false)
242
+ } catch (error) {
243
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
244
+ }
245
+ }
246
+
247
+ /** {@inheritDoc IKmsRestClient.kmsStoreKey} */
248
+ private async kmsClientStoreKey(args: KmsClientStoreKeyArgs): Promise<StoreKeyResponse> {
249
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
250
+ const url = KmsRestClient.urlWithBase(`/keys`, baseUrl)
251
+
252
+ const body = {
253
+ keyInfo: args.keyInfo,
254
+ certChain: args.certChain,
255
+ } satisfies StoreKey
256
+ const response = await fetch(url, {
257
+ method: 'POST',
258
+ headers: await this.createHeaders({ 'Content-Type': 'application/json' }),
259
+ body: JSON.stringify(StoreKeyToJSONTyped(body)),
260
+ })
261
+ logger.debug(`store key response: ${response}`)
262
+
263
+ try {
264
+ return StoreKeyResponseFromJSONTyped(await response.json(), false)
265
+ } catch (error) {
266
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
267
+ }
268
+ }
269
+
270
+ /** {@inheritDoc IKmsRestClient.kmsGenerateKey} */
271
+ private async kmsClientGenerateKey(args: KmsClientGenerateKeyArgs): Promise<GenerateKeyResponse> {
272
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
273
+ const url = KmsRestClient.urlWithBase(`/keys/generate`, baseUrl)
274
+
275
+ const body = {
276
+ alg: args.alg,
277
+ keyOperations: args.keyOperations,
278
+ providerId: args.providerId,
279
+ use: args.use,
280
+ } satisfies GenerateKeyGlobal
281
+ const response = await fetch(url, {
282
+ method: 'POST',
283
+ headers: await this.createHeaders({ 'Content-Type': 'application/json' }),
284
+ body: JSON.stringify(GenerateKeyGlobalToJSONTyped(body)),
285
+ })
286
+ logger.debug(`generate key response: ${response}`)
287
+
288
+ try {
289
+ return GenerateKeyResponseFromJSONTyped(await response.json(), false)
290
+ } catch (error) {
291
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
292
+ }
293
+ }
294
+
295
+ /** {@inheritDoc IKmsRestClient.kmsDeleteKey} */
296
+ private async kmsClientDeleteKey(args: KmsClientDeleteKeyArgs): Promise<boolean> {
297
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
298
+ const url = KmsRestClient.urlWithBase(`/keys/${args.aliasOrKid}`, baseUrl)
299
+
300
+ await fetch(url, {
301
+ method: 'DELETE',
302
+ })
303
+
304
+ return true
305
+ }
306
+
307
+ /** {@inheritDoc IKmsRestClient.kmsGetKeyProvider} */
308
+ private async kmsClientGetKeyProvider(args: KmsClientGetKeyProviderArgs): Promise<KeyProviderResponse> {
309
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
310
+ const url = KmsRestClient.urlWithBase(`/providers/${args.providerId}`, baseUrl)
311
+
312
+ const response = await fetch(url, {
313
+ method: 'GET',
314
+ })
315
+ logger.debug(`get provider response: ${response}`)
316
+
317
+ try {
318
+ return KeyProviderResponseFromJSONTyped(await response.json(), false)
319
+ } catch (error) {
320
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
321
+ }
322
+ }
323
+
324
+ /** {@inheritDoc IKmsRestClient.kmsListKeyProviders} */
325
+ private async kmsClientListKeyProviders(args?: KmsClientListKeyProvidersArgs): Promise<ListKeyProvidersResponse> {
326
+ const baseUrl = this.assertedAgentBaseUrl(args?.baseUrl)
327
+ const url = KmsRestClient.urlWithBase('/providers', baseUrl)
328
+
329
+ const response = await fetch(url, {
330
+ method: 'GET',
331
+ })
332
+ logger.debug(`list providers response: ${response}`)
333
+
334
+ try {
335
+ return ListKeyProvidersResponseFromJSONTyped(await response.json(), false)
336
+ } catch (error) {
337
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
338
+ }
339
+ }
340
+
341
+ /** {@inheritDoc IKmsRestClient.kmsProviderListKeys} */
342
+ private async kmsClientProviderListKeys(args: KmsClientProviderListKeysArgs): Promise<ListKeysResponse> {
343
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
344
+ const url = KmsRestClient.urlWithBase(`/providers/${args.providerId}/keys`, baseUrl)
345
+
346
+ const response = await fetch(url, {
347
+ method: 'GET',
348
+ })
349
+ logger.debug(`list provider keys response: ${response}`)
350
+
351
+ try {
352
+ return ListKeysResponseFromJSONTyped(await response.json(), false)
353
+ } catch (error) {
354
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
355
+ }
356
+ }
357
+
358
+ /** {@inheritDoc IKmsRestClient.kmsProviderStoreKey} */
359
+ private async kmsClientProviderStoreKey(args: KmsClientProviderStoreKeyArgs): Promise<StoreKeyResponse> {
360
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
361
+ const url = KmsRestClient.urlWithBase(`/providers/${args.providerId}/keys`, baseUrl)
362
+
363
+ const body = {
364
+ keyInfo: args.keyInfo,
365
+ certChain: args.certChain,
366
+ } satisfies StoreKey
367
+ const response = await fetch(url, {
368
+ method: 'POST',
369
+ headers: await this.createHeaders({ 'Content-Type': 'application/json' }),
370
+ body: JSON.stringify(StoreKeyToJSONTyped(body)),
371
+ })
372
+ logger.debug(`provider store key response: ${response}`)
373
+
374
+ try {
375
+ return StoreKeyResponseFromJSONTyped(await response.json(), false)
376
+ } catch (error) {
377
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
378
+ }
379
+ }
380
+
381
+ /** {@inheritDoc IKmsRestClient.kmsProviderGenerateKey} */
382
+ private async kmsClientProviderGenerateKey(args: KmsClientProviderGenerateKeyArgs): Promise<GenerateKeyResponse> {
383
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
384
+ const url = KmsRestClient.urlWithBase(`/providers/${args.providerId}/keys/generate`, baseUrl)
385
+
386
+ const body = {
387
+ alg: args.alg,
388
+ keyOperations: args.keyOperations,
389
+ use: args.use,
390
+ } satisfies GenerateKey
391
+ const response = await fetch(url, {
392
+ method: 'POST',
393
+ headers: await this.createHeaders({ 'Content-Type': 'application/json' }),
394
+ body: JSON.stringify(GenerateKeyToJSONTyped(body)),
395
+ })
396
+ logger.debug(`provider generate key response: ${response}`)
397
+
398
+ try {
399
+ return GenerateKeyResponseFromJSONTyped(await response.json(), false)
400
+ } catch (error) {
401
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
402
+ }
403
+ }
404
+
405
+ /** {@inheritDoc IKmsRestClient.kmsProviderGetKey} */
406
+ private async kmsClientProviderGetKey(args: KmsClientProviderGetKeyArgs): Promise<GetKeyResponse> {
407
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
408
+ const url = KmsRestClient.urlWithBase(`/providers/${args.providerId}/keys/${args.aliasOrKid}`, baseUrl)
409
+
410
+ const response = await fetch(url, {
411
+ method: 'GET',
412
+ })
413
+ logger.debug(`get provider key response: ${response}`)
414
+
415
+ try {
416
+ return GetKeyResponseFromJSONTyped(await response.json(), false)
417
+ } catch (error) {
418
+ return Promise.reject(Error(`request to ${url} returned ${error}`))
419
+ }
420
+ }
421
+
422
+ /** {@inheritDoc IKmsRestClient.kmsProviderDeleteKey} */
423
+ private async kmsClientProviderDeleteKey(args: KmsClientProviderDeleteKeyArgs): Promise<boolean> {
424
+ const baseUrl = this.assertedAgentBaseUrl(args.baseUrl)
425
+ const url = KmsRestClient.urlWithBase(`providers/${args.providerId}/keys/${args.aliasOrKid}`, baseUrl)
426
+
427
+ await fetch(url, {
428
+ method: 'DELETE',
429
+ })
430
+
431
+ return true
432
+ }
433
+
434
+ private assertedAgentBaseUrl(baseUrl?: string): string {
435
+ if (baseUrl) {
436
+ return baseUrl
437
+ } else if (this.agentBaseUrl) {
438
+ return this.agentBaseUrl
439
+ }
440
+ throw new Error('No base url has been provided')
441
+ }
442
+
443
+ private async createHeaders(existing?: Record<string, any>): Promise<HeadersInit> {
444
+ const headers: HeadersInit = {
445
+ ...existing,
446
+ Accept: 'application/json',
447
+ }
448
+ if (this.authOpts?.enabled === true) {
449
+ if (!this.authOpts.bearerToken) {
450
+ throw Error(`Cannot have authentication enabled, whilst not enabling static bearer tokens at this point`)
451
+ }
452
+ headers.Authorization = `Bearer ${
453
+ typeof this.authOpts.bearerToken === 'string' ? this.authOpts.bearerToken : await this.authOpts.bearerToken()
454
+ }`
455
+ }
456
+ return headers
457
+ }
458
+
459
+ private addSearchParams(baseUrl: string, params: Record<string, string | number | boolean>): URL {
460
+ const url = new URL(baseUrl)
461
+
462
+ for (const [key, value] of Object.entries(params)) {
463
+ url.searchParams.set(key, String(value))
464
+ }
465
+
466
+ return url
467
+ }
468
+ }
package/src/index.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @public
3
+ */
4
+ import schema from '../plugin.schema.json'
5
+ export { schema }
6
+ export { KmsRestClient } from './agent/KmsRestClient'
7
+ export type * from './types/IKmsRestClient'
8
+ export * from './models'
@@ -0,0 +1,90 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * KMS REST Server API
5
+ * A REST API for managing cryptographic keys and performing signing and verification operations.
6
+ *
7
+ * The version of the OpenAPI document: 0.0.1
8
+ * Contact: support@sphereon.com
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import type { LookupMode } from './LookupMode'
16
+ import { LookupModeFromJSON, LookupModeToJSON } from './LookupMode'
17
+
18
+ /**
19
+ * Credentials obtained by assuming an IAM role.
20
+ * @export
21
+ * @interface AwsAssumeRoleCredentials
22
+ */
23
+ export interface AwsAssumeRoleCredentials {
24
+ /**
25
+ * The Amazon Resource Name (ARN) of the role to assume.
26
+ * @type {string}
27
+ * @memberof AwsAssumeRoleCredentials
28
+ */
29
+ roleArn: string
30
+ /**
31
+ * An identifier for the assumed role session. Use characters compatible with file systems.
32
+ * @type {string}
33
+ * @memberof AwsAssumeRoleCredentials
34
+ */
35
+ roleSessionName: string
36
+ /**
37
+ * An optional external ID that might be required by the role's trust policy.
38
+ * @type {string}
39
+ * @memberof AwsAssumeRoleCredentials
40
+ */
41
+ externalId?: string
42
+ /**
43
+ *
44
+ * @type {LookupMode}
45
+ * @memberof AwsAssumeRoleCredentials
46
+ */
47
+ lookupMode?: LookupMode
48
+ }
49
+
50
+ /**
51
+ * Check if a given object implements the AwsAssumeRoleCredentials interface.
52
+ */
53
+ export function instanceOfAwsAssumeRoleCredentials(value: object): value is AwsAssumeRoleCredentials {
54
+ if (!('roleArn' in value) || value['roleArn'] === undefined) return false
55
+ if (!('roleSessionName' in value) || value['roleSessionName'] === undefined) return false
56
+ return true
57
+ }
58
+
59
+ export function AwsAssumeRoleCredentialsFromJSON(json: any): AwsAssumeRoleCredentials {
60
+ return AwsAssumeRoleCredentialsFromJSONTyped(json, false)
61
+ }
62
+
63
+ export function AwsAssumeRoleCredentialsFromJSONTyped(json: any, ignoreDiscriminator: boolean): AwsAssumeRoleCredentials {
64
+ if (json == null) {
65
+ return json
66
+ }
67
+ return {
68
+ roleArn: json['roleArn'],
69
+ roleSessionName: json['roleSessionName'],
70
+ externalId: json['externalId'] == null ? undefined : json['externalId'],
71
+ lookupMode: json['lookupMode'] == null ? undefined : LookupModeFromJSON(json['lookupMode']),
72
+ }
73
+ }
74
+
75
+ export function AwsAssumeRoleCredentialsToJSON(json: any): AwsAssumeRoleCredentials {
76
+ return AwsAssumeRoleCredentialsToJSONTyped(json, false)
77
+ }
78
+
79
+ export function AwsAssumeRoleCredentialsToJSONTyped(value?: AwsAssumeRoleCredentials | null, ignoreDiscriminator: boolean = false): any {
80
+ if (value == null) {
81
+ return value
82
+ }
83
+
84
+ return {
85
+ roleArn: value['roleArn'],
86
+ roleSessionName: value['roleSessionName'],
87
+ externalId: value['externalId'],
88
+ lookupMode: LookupModeToJSON(value['lookupMode']),
89
+ }
90
+ }
@@ -0,0 +1,69 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * KMS REST Server API
5
+ * A REST API for managing cryptographic keys and performing signing and verification operations.
6
+ *
7
+ * The version of the OpenAPI document: 0.0.1
8
+ * Contact: support@sphereon.com
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ /**
16
+ * Optional advanced AWS SDK client settings.
17
+ * @export
18
+ * @interface AwsClientConfiguration
19
+ */
20
+ export interface AwsClientConfiguration {
21
+ /**
22
+ * Amount of time (in milliseconds) to wait when initially establishing a connection before giving up.
23
+ * @type {number}
24
+ * @memberof AwsClientConfiguration
25
+ */
26
+ connectionTimeoutInMillis?: number
27
+ /**
28
+ * Amount of time (in milliseconds) to wait for data to be transferred over an established, open connection before timing out.
29
+ * @type {number}
30
+ * @memberof AwsClientConfiguration
31
+ */
32
+ socketTimeoutInMillis?: number
33
+ }
34
+
35
+ /**
36
+ * Check if a given object implements the AwsClientConfiguration interface.
37
+ */
38
+ export function instanceOfAwsClientConfiguration(value: object): value is AwsClientConfiguration {
39
+ return true
40
+ }
41
+
42
+ export function AwsClientConfigurationFromJSON(json: any): AwsClientConfiguration {
43
+ return AwsClientConfigurationFromJSONTyped(json, false)
44
+ }
45
+
46
+ export function AwsClientConfigurationFromJSONTyped(json: any, ignoreDiscriminator: boolean): AwsClientConfiguration {
47
+ if (json == null) {
48
+ return json
49
+ }
50
+ return {
51
+ connectionTimeoutInMillis: json['connectionTimeoutInMillis'] == null ? undefined : json['connectionTimeoutInMillis'],
52
+ socketTimeoutInMillis: json['socketTimeoutInMillis'] == null ? undefined : json['socketTimeoutInMillis'],
53
+ }
54
+ }
55
+
56
+ export function AwsClientConfigurationToJSON(json: any): AwsClientConfiguration {
57
+ return AwsClientConfigurationToJSONTyped(json, false)
58
+ }
59
+
60
+ export function AwsClientConfigurationToJSONTyped(value?: AwsClientConfiguration | null, ignoreDiscriminator: boolean = false): any {
61
+ if (value == null) {
62
+ return value
63
+ }
64
+
65
+ return {
66
+ connectionTimeoutInMillis: value['connectionTimeoutInMillis'],
67
+ socketTimeoutInMillis: value['socketTimeoutInMillis'],
68
+ }
69
+ }