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

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