@agenticprimitives/key-custody 1.0.0-alpha.10 → 1.0.0-alpha.12
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/bin/ap-provision-gcp.mjs +25 -7
- package/dist/account.d.ts +1 -1
- package/dist/account.d.ts.map +1 -1
- package/dist/derive-subject.d.ts +1 -1
- package/dist/derive-subject.d.ts.map +1 -1
- package/dist/derive-subject.js +1 -1
- package/dist/derive-subject.js.map +1 -1
- package/dist/factories.d.ts +27 -1
- package/dist/factories.d.ts.map +1 -1
- package/dist/factories.js +26 -3
- package/dist/factories.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -11
- package/dist/index.js.map +1 -1
- package/dist/kms/provision-gcp.d.ts +53 -20
- package/dist/kms/provision-gcp.d.ts.map +1 -1
- package/dist/kms/provision-gcp.js +157 -35
- package/dist/kms/provision-gcp.js.map +1 -1
- package/dist/kms-viem-account.d.ts +1 -1
- package/dist/kms-viem-account.d.ts.map +1 -1
- package/dist/providers/aws.d.ts +1 -1
- package/dist/providers/aws.d.ts.map +1 -1
- package/dist/providers/gcp.d.ts +18 -2
- package/dist/providers/gcp.d.ts.map +1 -1
- package/dist/providers/gcp.js +53 -11
- package/dist/providers/gcp.js.map +1 -1
- package/dist/providers/local.d.ts +1 -1
- package/dist/providers/local.d.ts.map +1 -1
- package/dist/providers/local.js +1 -1
- package/dist/providers/local.js.map +1 -1
- package/dist/relay-only.d.ts +1 -1
- package/dist/relay-only.d.ts.map +1 -1
- package/dist/relay-only.js +1 -1
- package/dist/relay-only.js.map +1 -1
- package/dist/relayer-account.d.ts +1 -1
- package/dist/relayer-account.d.ts.map +1 -1
- package/dist/relayer-account.js +1 -1
- package/dist/relayer-account.js.map +1 -1
- package/package.json +4 -4
package/bin/ap-provision-gcp.mjs
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// ap-provision-gcp — provision GCP Cloud KMS
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
2
|
+
// ap-provision-gcp — provision GCP Cloud KMS keys for a set of identities, grant the
|
|
3
|
+
// runtime service account a per-key IAM role, and print the identity → key map (+
|
|
4
|
+
// derived EVM addresses for signing keys) (spec 276 KCS-D3). Thin Node wrapper over
|
|
5
|
+
// @agenticprimitives/key-custody/provision-gcp.
|
|
6
6
|
//
|
|
7
|
+
// # secp256k1 signing keys (default):
|
|
7
8
|
// ap-provision-gcp \
|
|
8
9
|
// --project my-proj --location us-east1 --keyring my-ring \
|
|
9
10
|
// --service-account runtime@my-proj.iam.gserviceaccount.com \
|
|
10
11
|
// --identities signer-a,signer-b [--protection HSM] [--dry-run]
|
|
11
12
|
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
13
|
+
// # symmetric per-person vault KEKs (spec 278) — identities are person SA addresses:
|
|
14
|
+
// ap-provision-gcp --purpose encrypt-decrypt \
|
|
15
|
+
// --project my-proj --location us-east1 --keyring vault-keks \
|
|
16
|
+
// --service-account demo-mcp-runtime@my-proj.iam.gserviceaccount.com \
|
|
17
|
+
// --identities 0xPersonSA1,0xPersonSA2
|
|
18
|
+
//
|
|
19
|
+
// --purpose encrypt-decrypt mints GOOGLE_SYMMETRIC_ENCRYPTION KEKs + grants the runtime SA
|
|
20
|
+
// roles/cloudkms.cryptoKeyEncrypterDecrypter per key; the printed keyMap entry (the version-less
|
|
21
|
+
// cryptoKey resource) is the `kmsKeyRef` the spec-278 VaultKeyBinding carries. --iam-role
|
|
22
|
+
// overrides the granted role. --dry-run prints the gcloud steps without executing. Requires
|
|
23
|
+
// `gcloud` on PATH (authenticated) for a real run.
|
|
14
24
|
import { execFileSync } from 'node:child_process';
|
|
15
25
|
import { planGcpProvision, executeGcpProvision } from '../dist/kms/provision-gcp.js';
|
|
16
26
|
|
|
@@ -35,7 +45,13 @@ const required = ['project', 'location', 'keyring', 'service-account', 'identiti
|
|
|
35
45
|
const missing = required.filter((k) => !args[k]);
|
|
36
46
|
if (missing.length) {
|
|
37
47
|
console.error(`ap-provision-gcp: missing required flag(s): ${missing.map((m) => '--' + m).join(', ')}`);
|
|
38
|
-
console.error('Usage: ap-provision-gcp --project <p> --location <l> --keyring <r> --service-account <email> --identities a,b[,c] [--protection HSM|SOFTWARE] [--dry-run]');
|
|
48
|
+
console.error('Usage: ap-provision-gcp --project <p> --location <l> --keyring <r> --service-account <email> --identities a,b[,c] [--purpose asymmetric-signing|encrypt-decrypt] [--iam-role <role>] [--protection HSM|SOFTWARE] [--dry-run]');
|
|
49
|
+
process.exit(2);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const purpose = args.purpose ?? 'asymmetric-signing';
|
|
53
|
+
if (!['asymmetric-signing', 'encrypt-decrypt'].includes(purpose)) {
|
|
54
|
+
console.error(`ap-provision-gcp: --purpose must be 'asymmetric-signing' or 'encrypt-decrypt' (got '${purpose}')`);
|
|
39
55
|
process.exit(2);
|
|
40
56
|
}
|
|
41
57
|
|
|
@@ -46,6 +62,8 @@ const plan = {
|
|
|
46
62
|
identities: String(args.identities).split(',').map((s) => s.trim()).filter(Boolean),
|
|
47
63
|
runtimeServiceAccount: args['service-account'],
|
|
48
64
|
protectionLevel: args.protection ?? 'HSM',
|
|
65
|
+
purpose,
|
|
66
|
+
...(args['iam-role'] ? { iamRole: args['iam-role'] } : {}),
|
|
49
67
|
};
|
|
50
68
|
|
|
51
69
|
if (args['dry-run']) {
|
package/dist/account.d.ts
CHANGED
package/dist/account.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyC,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyC,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IACvD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,aAAa,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAClB;AAWD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;CAAE,GAC9F,OAAO,CAAC,cAAc,CAAC,CA0CzB"}
|
package/dist/derive-subject.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Hex } from 'viem';
|
|
2
|
-
import type { BuildOpts, KmsAccountBackend } from './types';
|
|
2
|
+
import type { BuildOpts, KmsAccountBackend } from './types.js';
|
|
3
3
|
/** The Google (OIDC) subject a custodian key is bound to. */
|
|
4
4
|
export interface SubjectId {
|
|
5
5
|
/** OIDC issuer, e.g. `https://accounts.google.com`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-subject.d.ts","sourceRoot":"","sources":["../src/derive-subject.ts"],"names":[],"mappings":"AA8BA,OAAO,EAA0B,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAc,MAAM,
|
|
1
|
+
{"version":3,"file":"derive-subject.d.ts","sourceRoot":"","sources":["../src/derive-subject.ts"],"names":[],"mappings":"AA8BA,OAAO,EAA0B,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAc,MAAM,YAAY,CAAC;AAM3E,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,OAAO,EAAE,SAAS,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAUlE;AAkBD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,GAAG,CAetF;AAoCD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,CAa9E"}
|
package/dist/derive-subject.js
CHANGED
|
@@ -28,7 +28,7 @@ import { hkdf } from '@noble/hashes/hkdf.js';
|
|
|
28
28
|
import { sha256 } from '@noble/hashes/sha2.js';
|
|
29
29
|
import { secp256k1 } from '@noble/curves/secp256k1.js';
|
|
30
30
|
import { hexToBytes, bytesToHex } from 'viem';
|
|
31
|
-
import { LocalSecp256k1Signer } from './providers/local';
|
|
31
|
+
import { LocalSecp256k1Signer } from './providers/local.js';
|
|
32
32
|
const DERIVE_INFO_PREFIX = 'kms-custodian:v1';
|
|
33
33
|
const SECP256K1_N = secp256k1.Point.Fn.ORDER;
|
|
34
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-subject.js","sourceRoot":"","sources":["../src/derive-subject.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,iDAAiD;AACjD,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,4DAA4D;AAC5D,EAAE;AACF,4CAA4C;AAC5C,oEAAoE;AACpE,2FAA2F;AAC3F,4FAA4F;AAC5F,8EAA8E;AAC9E,wDAAwD;AACxD,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,uEAAuE;AACvE,sEAAsE;AAEtE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAY,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"derive-subject.js","sourceRoot":"","sources":["../src/derive-subject.ts"],"names":[],"mappings":"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"}
|
package/dist/factories.d.ts
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AuditSink } from '@agenticprimitives/audit';
|
|
2
|
+
import type { A2AKeyProvider, BuildOpts, KmsAccountBackend } from './types.js';
|
|
2
3
|
export declare function buildKeyProvider(opts: BuildOpts): A2AKeyProvider;
|
|
4
|
+
/**
|
|
5
|
+
* Per-person vault KEK selection (spec 278 P3 / VKB-D1, VKB-D2). Returns the
|
|
6
|
+
* envelope provider a vault host should use to wrap/unwrap a SPECIFIC person's
|
|
7
|
+
* vault objects.
|
|
8
|
+
*
|
|
9
|
+
* Fail-closed by design: a person-owned vault MUST resolve to a per-person KEK
|
|
10
|
+
* (`kmsKeyRef`, from that person's `VaultKeyBinding` — provisioned via spec 276
|
|
11
|
+
* `provision-gcp`). There is NO global key for person data. The local-aes path
|
|
12
|
+
* is permitted ONLY for anonymous/seeded test fixtures and ONLY when the caller
|
|
13
|
+
* explicitly opts in (`allowFixtureKey: true`) — never for a real person vault.
|
|
14
|
+
* With neither a `kmsKeyRef` nor an explicit fixture allowance, this THROWS.
|
|
15
|
+
*/
|
|
16
|
+
export interface SelectVaultKeyProviderOpts {
|
|
17
|
+
/** The person's KEK resource name (from their VaultKeyBinding). Selects a per-person GCP KEK. */
|
|
18
|
+
kmsKeyRef?: string;
|
|
19
|
+
/** Service-account JSON for the GCP KEK (required with `kmsKeyRef`). */
|
|
20
|
+
serviceAccountJson?: string;
|
|
21
|
+
/** Audit sink → envelope wrap/unwrap emit `key-custody.envelope.*`. */
|
|
22
|
+
auditSink?: AuditSink;
|
|
23
|
+
/** Set ONLY for anonymous/seeded fixtures; uses local-aes. Never for a real person vault. */
|
|
24
|
+
allowFixtureKey?: boolean;
|
|
25
|
+
/** Fixture master key (local-aes) — used only when `allowFixtureKey` is true. */
|
|
26
|
+
fixtureKeyHex?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function selectVaultKeyProvider(opts: SelectVaultKeyProviderOpts): A2AKeyProvider;
|
|
3
29
|
export declare function buildSignerBackend(opts: BuildOpts): KmsAccountBackend;
|
|
4
30
|
/**
|
|
5
31
|
* @deprecated Renamed in H7-B.1 to make the lie loud. Use
|
package/dist/factories.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAc,MAAM,
|
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAc,MAAM,YAAY,CAAC;AAyD3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc,CAehE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,0BAA0B;IACzC,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,6FAA6F;IAC7F,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,cAAc,CAqBvF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,CAgBrE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAU7F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GACd,iBAAiB,CAyBnB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAMlF"}
|
package/dist/factories.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { LocalAesProvider, LocalSecp256k1Signer } from './providers/local';
|
|
2
|
-
import { AwsKmsProvider, AwsKmsSigner } from './providers/aws';
|
|
3
|
-
import { GcpKmsProvider, GcpKmsSigner } from './providers/gcp';
|
|
1
|
+
import { LocalAesProvider, LocalSecp256k1Signer } from './providers/local.js';
|
|
2
|
+
import { AwsKmsProvider, AwsKmsSigner } from './providers/aws.js';
|
|
3
|
+
import { GcpKmsProvider, GcpKmsSigner } from './providers/gcp.js';
|
|
4
4
|
/**
|
|
5
5
|
* Resolve effective environment for production-default gates (audit H1).
|
|
6
6
|
* 1. Explicit `opts.environment` wins.
|
|
@@ -65,9 +65,32 @@ export function buildKeyProvider(opts) {
|
|
|
65
65
|
return new GcpKmsProvider({
|
|
66
66
|
cryptoKeyName: opts.config?.cryptoKeyName,
|
|
67
67
|
serviceAccountJson: opts.config?.serviceAccountJson,
|
|
68
|
+
// spec 278 P0/P3: thread the audit sink so envelope wrap/unwrap emit
|
|
69
|
+
// `key-custody.envelope.{wrap,unwrap}` on the production path.
|
|
70
|
+
auditSink: opts.auditSink,
|
|
68
71
|
});
|
|
69
72
|
}
|
|
70
73
|
}
|
|
74
|
+
export function selectVaultKeyProvider(opts) {
|
|
75
|
+
if (opts.kmsKeyRef) {
|
|
76
|
+
if (!opts.serviceAccountJson) {
|
|
77
|
+
throw new Error('[key-custody] selectVaultKeyProvider: serviceAccountJson is required with a kmsKeyRef (per-person KEK).');
|
|
78
|
+
}
|
|
79
|
+
return new GcpKmsProvider({
|
|
80
|
+
cryptoKeyName: opts.kmsKeyRef,
|
|
81
|
+
serviceAccountJson: opts.serviceAccountJson,
|
|
82
|
+
auditSink: opts.auditSink,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (opts.allowFixtureKey) {
|
|
86
|
+
// Anonymous / seeded fixtures only (spec 278 VKB-D1 exception). LocalAesProvider
|
|
87
|
+
// keeps its own production guard; this path is testnet/fixture-grade by contract.
|
|
88
|
+
return new LocalAesProvider({ sessionSecretHex: opts.fixtureKeyHex });
|
|
89
|
+
}
|
|
90
|
+
throw new Error('[key-custody] selectVaultKeyProvider: a person-owned vault requires a per-person `kmsKeyRef` ' +
|
|
91
|
+
'(from the VaultKeyBinding). No global key is permitted for person data (spec 278 VKB-D1). ' +
|
|
92
|
+
'For anonymous/seeded fixtures only, pass `allowFixtureKey: true`.');
|
|
93
|
+
}
|
|
71
94
|
export function buildSignerBackend(opts) {
|
|
72
95
|
switch (backendOrEnv(opts)) {
|
|
73
96
|
case 'local-aes':
|
package/dist/factories.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { Address, Hex } from '@agenticprimitives/types';
|
|
2
2
|
export type { Address, Hex };
|
|
3
|
-
export type { A2AKeyProvider, KmsAccountBackend, BuildOpts, KmsBackend, Secret } from './types';
|
|
4
|
-
export { loadSecret, loadSecretFromEnv, unwrapSecret, isSecret } from './types';
|
|
5
|
-
export { buildKeyProvider, buildSignerBackend, buildToolExecutorBackendNoIsolation, buildMacProvider, } from './factories';
|
|
6
|
-
export { deriveSubjectSigner, subjectCanonicalMessage, type SubjectId, type DeriveSubjectOpts, } from './derive-subject';
|
|
7
|
-
export { getRelayOnlySigner } from './relay-only';
|
|
8
|
-
export { createKmsAccount } from './account';
|
|
9
|
-
export { createKmsViemAccount } from './kms-viem-account';
|
|
10
|
-
export { createRelayerAccount, type CreateRelayerAccountOpts, } from './relayer-account';
|
|
11
|
-
export { createSpendCappedAccount, SpendCapExceededError, type CreateSpendCappedAccountOpts, } from './spend-capped-account';
|
|
12
|
-
export { canonicalContextBytes } from './aad';
|
|
13
|
-
export { LocalAesProvider, LocalSecp256k1Signer } from './providers/local';
|
|
14
|
-
export { GcpKmsProvider, GcpKmsSigner } from './providers/gcp';
|
|
3
|
+
export type { A2AKeyProvider, KmsAccountBackend, BuildOpts, KmsBackend, Secret } from './types.js';
|
|
4
|
+
export { loadSecret, loadSecretFromEnv, unwrapSecret, isSecret } from './types.js';
|
|
5
|
+
export { buildKeyProvider, buildSignerBackend, buildToolExecutorBackendNoIsolation, buildMacProvider, selectVaultKeyProvider, type SelectVaultKeyProviderOpts, } from './factories.js';
|
|
6
|
+
export { deriveSubjectSigner, subjectCanonicalMessage, type SubjectId, type DeriveSubjectOpts, } from './derive-subject.js';
|
|
7
|
+
export { getRelayOnlySigner } from './relay-only.js';
|
|
8
|
+
export { createKmsAccount } from './account.js';
|
|
9
|
+
export { createKmsViemAccount } from './kms-viem-account.js';
|
|
10
|
+
export { createRelayerAccount, type CreateRelayerAccountOpts, } from './relayer-account.js';
|
|
11
|
+
export { createSpendCappedAccount, SpendCapExceededError, type CreateSpendCappedAccountOpts, } from './spend-capped-account.js';
|
|
12
|
+
export { canonicalContextBytes } from './aad.js';
|
|
13
|
+
export { LocalAesProvider, LocalSecp256k1Signer } from './providers/local.js';
|
|
14
|
+
export { GcpKmsProvider, GcpKmsSigner } from './providers/gcp.js';
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE7D,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE7D,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnF,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAWlB,mCAAmC,EACnC,gBAAgB,EAEhB,sBAAsB,EACtB,KAAK,0BAA0B,GAChC,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,SAAS,EACd,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAU9E,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @agenticprimitives/key-custody — public API
|
|
2
2
|
//
|
|
3
3
|
// See ../../specs/203-key-custody.md for the full contract.
|
|
4
|
-
export { loadSecret, loadSecretFromEnv, unwrapSecret, isSecret } from './types';
|
|
4
|
+
export { loadSecret, loadSecretFromEnv, unwrapSecret, isSecret } from './types.js';
|
|
5
5
|
export { buildKeyProvider, buildSignerBackend,
|
|
6
6
|
// R11.3 / PKG-KEY-CUSTODY-001 follow-up — `buildToolExecutorBackend`
|
|
7
7
|
// is NOT re-exported here. Its v0 implementation is the always-throwing
|
|
@@ -13,19 +13,21 @@ export { buildKeyProvider, buildSignerBackend,
|
|
|
13
13
|
// either implements HKDF per-tool isolation or graduates
|
|
14
14
|
// `buildToolExecutorBackendNoIsolation` to the canonical name. Until
|
|
15
15
|
// then, the public surface is the explicit-name one only.
|
|
16
|
-
buildToolExecutorBackendNoIsolation, buildMacProvider,
|
|
16
|
+
buildToolExecutorBackendNoIsolation, buildMacProvider,
|
|
17
|
+
// spec 278 P3 — per-person vault KEK selection (fail-closed; no global key for person data).
|
|
18
|
+
selectVaultKeyProvider, } from './factories.js';
|
|
17
19
|
// `deriveSubjectPrivateKeyHex` is intentionally NOT re-exported here — it returns
|
|
18
20
|
// a per-subject raw private key (security-sensitive). It stays exported from
|
|
19
21
|
// `./derive-subject` for in-package unit tests but is not part of the public API.
|
|
20
22
|
// See `capability.manifest.json:publicExports` (audit row ARCH-006 / PKG-KEY-CUSTODY-002 closure).
|
|
21
|
-
export { deriveSubjectSigner, subjectCanonicalMessage, } from './derive-subject';
|
|
22
|
-
export { getRelayOnlySigner } from './relay-only';
|
|
23
|
-
export { createKmsAccount } from './account';
|
|
24
|
-
export { createKmsViemAccount } from './kms-viem-account';
|
|
25
|
-
export { createRelayerAccount, } from './relayer-account';
|
|
26
|
-
export { createSpendCappedAccount, SpendCapExceededError, } from './spend-capped-account';
|
|
27
|
-
export { canonicalContextBytes } from './aad';
|
|
28
|
-
export { LocalAesProvider, LocalSecp256k1Signer } from './providers/local';
|
|
23
|
+
export { deriveSubjectSigner, subjectCanonicalMessage, } from './derive-subject.js';
|
|
24
|
+
export { getRelayOnlySigner } from './relay-only.js';
|
|
25
|
+
export { createKmsAccount } from './account.js';
|
|
26
|
+
export { createKmsViemAccount } from './kms-viem-account.js';
|
|
27
|
+
export { createRelayerAccount, } from './relayer-account.js';
|
|
28
|
+
export { createSpendCappedAccount, SpendCapExceededError, } from './spend-capped-account.js';
|
|
29
|
+
export { canonicalContextBytes } from './aad.js';
|
|
30
|
+
export { LocalAesProvider, LocalSecp256k1Signer } from './providers/local.js';
|
|
29
31
|
// R11.3 — `AwsKmsProvider` / `AwsKmsSigner` are NOT re-exported here.
|
|
30
32
|
// Their current implementations throw a `not yet implemented in v0;
|
|
31
33
|
// use LocalAesProvider for the demo` message at construction time. A
|
|
@@ -35,5 +37,5 @@ export { LocalAesProvider, LocalSecp256k1Signer } from './providers/local';
|
|
|
35
37
|
// factory throws a clear error when selected. v1 is GCP-only +
|
|
36
38
|
// local-aes (dev). When AWS lands, re-add the export alongside the
|
|
37
39
|
// LocalAes + Gcp providers.
|
|
38
|
-
export { GcpKmsProvider, GcpKmsSigner } from './providers/gcp';
|
|
40
|
+
export { GcpKmsProvider, GcpKmsSigner } from './providers/gcp.js';
|
|
39
41
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,4DAA4D;AAM5D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,4DAA4D;AAM5D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnF,OAAO,EACL,gBAAgB,EAChB,kBAAkB;AAClB,qEAAqE;AACrE,wEAAwE;AACxE,iDAAiD;AACjD,6DAA6D;AAC7D,wEAAwE;AACxE,qEAAqE;AACrE,oEAAoE;AACpE,yDAAyD;AACzD,qEAAqE;AACrE,0DAA0D;AAC1D,mCAAmC,EACnC,gBAAgB;AAChB,6FAA6F;AAC7F,sBAAsB,GAEvB,MAAM,gBAAgB,CAAC;AACxB,kFAAkF;AAClF,6EAA6E;AAC7E,kFAAkF;AAClF,mGAAmG;AACnG,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,oBAAoB,GAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,sEAAsE;AACtE,oEAAoE;AACpE,qEAAqE;AACrE,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,+DAA+D;AAC/D,mEAAmE;AACnE,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,56 +1,89 @@
|
|
|
1
1
|
import { type Hex } from './secp256k1-core.js';
|
|
2
|
+
/** Key purpose. `asymmetric-signing` = secp256k1 EVM signer (default). `encrypt-decrypt` =
|
|
3
|
+
* symmetric KEK for envelope wrapping (spec 277/278 per-person vault key). */
|
|
4
|
+
export type KeyPurpose = 'asymmetric-signing' | 'encrypt-decrypt';
|
|
2
5
|
export interface ProvisionPlan {
|
|
3
6
|
project: string;
|
|
4
7
|
location: string;
|
|
5
8
|
keyRing: string;
|
|
6
|
-
/**
|
|
9
|
+
/** Signing/KEK identity labels — arbitrary (dotted agent names ok); sanitized to key ids (B2). */
|
|
7
10
|
identities: string[];
|
|
8
|
-
/** Service-account email to grant
|
|
11
|
+
/** Service-account email to grant the per-key IAM role. */
|
|
9
12
|
runtimeServiceAccount: string;
|
|
10
|
-
/** secp256k1
|
|
13
|
+
/** secp256k1 requires HSM; SOFTWARE is rejected by GCP for that curve. Default HSM. */
|
|
11
14
|
protectionLevel?: 'HSM' | 'SOFTWARE';
|
|
15
|
+
/** Default `asymmetric-signing`. `encrypt-decrypt` mints a symmetric KEK (spec 278 vault key). */
|
|
16
|
+
purpose?: KeyPurpose;
|
|
17
|
+
/** Per-key IAM role (B3). Default: `roles/cloudkms.signerVerifier` for signing,
|
|
18
|
+
* `roles/cloudkms.cryptoKeyEncrypterDecrypter` for encrypt-decrypt. */
|
|
19
|
+
iamRole?: string;
|
|
12
20
|
}
|
|
13
21
|
export type StepKind = 'create-keyring' | 'create-key' | 'grant-iam';
|
|
14
|
-
|
|
22
|
+
/** REST-executor parameters carried alongside the gcloud `argv` so both executors work. */
|
|
23
|
+
export interface ProvisionStepRest {
|
|
24
|
+
project: string;
|
|
25
|
+
location: string;
|
|
26
|
+
keyRing: string;
|
|
27
|
+
keyId?: string;
|
|
28
|
+
purpose?: KeyPurpose;
|
|
29
|
+
protectionLevel?: 'HSM' | 'SOFTWARE';
|
|
30
|
+
role?: string;
|
|
31
|
+
member?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ProvisionStep {
|
|
15
34
|
id: string;
|
|
16
35
|
kind: StepKind;
|
|
17
36
|
description: string;
|
|
18
37
|
/** argv for `gcloud` (no shell string — avoids injection). */
|
|
19
38
|
argv: string[];
|
|
20
|
-
/**
|
|
39
|
+
/** The ORIGINAL identity label (create-key / grant-iam). */
|
|
21
40
|
identity?: string;
|
|
41
|
+
/** The sanitized GCP key id used in the resource name. */
|
|
42
|
+
keyId?: string;
|
|
22
43
|
/** The key resource this step targets (create-key / grant-iam). */
|
|
23
44
|
cryptoKeyName?: string;
|
|
45
|
+
/** Structured params the REST executor uses (the gcloud executor uses `argv`). */
|
|
46
|
+
rest: ProvisionStepRest;
|
|
24
47
|
}
|
|
48
|
+
/** @deprecated name — kept for back-compat; use `ProvisionStep`. */
|
|
49
|
+
export type GcloudStep = ProvisionStep;
|
|
25
50
|
export interface StepExecutor {
|
|
26
|
-
/** Run a planned step. Return `{ alreadyExists: true }`
|
|
27
|
-
|
|
28
|
-
run(step: GcloudStep): Promise<{
|
|
51
|
+
/** Run a planned step. Return `{ alreadyExists: true }` for an idempotent skip; throw on real failure. */
|
|
52
|
+
run(step: ProvisionStep): Promise<{
|
|
29
53
|
stdout: string;
|
|
30
54
|
alreadyExists?: boolean;
|
|
31
55
|
}>;
|
|
32
|
-
/** Fetch a key version's SPKI PEM (
|
|
56
|
+
/** Fetch a key version's SPKI PEM (asymmetric keys only — for address verification). */
|
|
33
57
|
getPublicKeyPem(cryptoKeyVersionName: string): Promise<string>;
|
|
34
58
|
}
|
|
35
59
|
export interface ProvisionResult {
|
|
36
|
-
/** identity →
|
|
60
|
+
/** identity (ORIGINAL label) → key resource: `…/cryptoKeyVersions/1` for signing keys,
|
|
61
|
+
* the version-less `…/cryptoKeys/<id>` for encrypt-decrypt KEKs (what the provider wants). */
|
|
37
62
|
keyMap: Record<string, string>;
|
|
38
|
-
/** identity → derived EVM address (
|
|
63
|
+
/** identity → derived EVM address (signing keys only; verify BEFORE wiring env). */
|
|
39
64
|
addresses: Record<string, Hex>;
|
|
40
65
|
granted: Array<{
|
|
41
66
|
key: string;
|
|
42
67
|
member: string;
|
|
43
|
-
role:
|
|
68
|
+
role: string;
|
|
44
69
|
}>;
|
|
45
|
-
/** Step ids
|
|
70
|
+
/** Step ids skipped because the resource already existed (idempotent re-run). */
|
|
46
71
|
alreadyExisted: string[];
|
|
47
72
|
}
|
|
48
|
-
/**
|
|
49
|
-
export declare function
|
|
50
|
-
/**
|
|
51
|
-
export declare function
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
|
|
73
|
+
/** Sanitize an arbitrary identity label to a GCP cryptoKey id ([a-zA-Z0-9_-], ≤63) (B2). */
|
|
74
|
+
export declare function sanitizeKeyId(identity: string): string;
|
|
75
|
+
/** First key version GCP creates (asymmetric keys — the version is what you sign with). */
|
|
76
|
+
export declare function keyVersionName(plan: ProvisionPlan, keyId: string): string;
|
|
77
|
+
/** Emit the ordered steps for a provisioning plan. Pure — no execution. */
|
|
78
|
+
export declare function planGcpProvision(plan: ProvisionPlan): ProvisionStep[];
|
|
79
|
+
/** Execute a provisioning plan through an injected executor. Idempotent: steps whose resource
|
|
80
|
+
* already exists are skipped + reported. For asymmetric keys, fetches each key's public key and
|
|
81
|
+
* derives its EVM address (verify before wiring); encrypt-decrypt KEKs have no public key, so the
|
|
82
|
+
* keyMap points at the version-less cryptoKey resource and no address is derived. */
|
|
55
83
|
export declare function executeGcpProvision(plan: ProvisionPlan, exec: StepExecutor): Promise<ProvisionResult>;
|
|
84
|
+
/** Build a Cloud KMS REST StepExecutor from a service-account JSON (single-line or base64 — B4).
|
|
85
|
+
* Zero gcloud dependency; SA-JWT → KMS REST. Idempotent (409 ALREADY_EXISTS → skip). */
|
|
86
|
+
export declare function createGcpRestStepExecutor(opts: {
|
|
87
|
+
serviceAccountJson: string | object;
|
|
88
|
+
}): StepExecutor;
|
|
56
89
|
//# sourceMappingURL=provision-gcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision-gcp.d.ts","sourceRoot":"","sources":["../../src/kms/provision-gcp.ts"],"names":[],"mappings":"AAaA,OAAO,EAAsB,KAAK,GAAG,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"provision-gcp.d.ts","sourceRoot":"","sources":["../../src/kms/provision-gcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,47 @@
|
|
|
1
|
-
// GCP Cloud KMS provisioning helper (spec 276 KCS-D3).
|
|
2
|
-
// G-PR-6 operator runbook into a reusable, peer-dependency-free primitive.
|
|
1
|
+
// GCP Cloud KMS provisioning helper (spec 276 KCS-D3 + upstream backlog B1/B2/B3).
|
|
3
2
|
//
|
|
4
|
-
// PURE PLANNING + INJECTED EXECUTION: `planGcpProvision` emits the
|
|
5
|
-
// `executeGcpProvision` runs them through a
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
// supplies a Node child_process
|
|
3
|
+
// PURE PLANNING + INJECTED EXECUTION: `planGcpProvision` emits the ordered steps;
|
|
4
|
+
// `executeGcpProvision` runs them through a `StepExecutor`. Two executors ship:
|
|
5
|
+
// - `createGcpRestStepExecutor` — gcloud-FREE: SA-JWT → Cloud KMS REST (B1).
|
|
6
|
+
// Works on Workers (no gRPC SDK); a "drop the SA key and run" path.
|
|
7
|
+
// - the CLI (`bin/ap-provision-gcp.mjs`) supplies a Node child_process gcloud runner.
|
|
9
8
|
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
9
|
+
// B2: `identities` are arbitrary labels (dotted agent names ok); each is sanitized to a
|
|
10
|
+
// GCP key id internally, and the result maps are keyed by the ORIGINAL label.
|
|
11
|
+
// B3: the granted IAM role is configurable (default derives from the key purpose).
|
|
12
|
+
// Per-key (not per-keyring) IAM enforces master-key separation (CLAUDE.md invariant).
|
|
13
13
|
import { addressFromSpkiPem } from './secp256k1-core.js';
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
import { fetchAccessToken, callKms } from './gcp-transport.js';
|
|
15
|
+
import { parseServiceAccountJson } from './key-map.js';
|
|
16
|
+
/** Sanitize an arbitrary identity label to a GCP cryptoKey id ([a-zA-Z0-9_-], ≤63) (B2). */
|
|
17
|
+
export function sanitizeKeyId(identity) {
|
|
18
|
+
// Trim leading/trailing '-' with linear string ops — NOT a regex. The `/^-+|-+$/g`
|
|
19
|
+
// alternation is ReDoS-prone (polynomial on a long run of '-'); a scan is O(n).
|
|
20
|
+
const collapsed = identity.replace(/[^a-zA-Z0-9_-]/g, '-');
|
|
21
|
+
let start = 0;
|
|
22
|
+
let end = collapsed.length;
|
|
23
|
+
while (start < end && collapsed[start] === '-')
|
|
24
|
+
start++;
|
|
25
|
+
while (end > start && collapsed[end - 1] === '-')
|
|
26
|
+
end--;
|
|
27
|
+
const id = collapsed.slice(start, end).slice(0, 63);
|
|
28
|
+
if (!id)
|
|
29
|
+
throw new Error(`sanitizeKeyId: identity "${identity}" sanitizes to an empty key id`);
|
|
30
|
+
return id;
|
|
16
31
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return `${keyResourceName(plan, identity)}/cryptoKeyVersions/1`;
|
|
32
|
+
function keyResourceName(plan, keyId) {
|
|
33
|
+
return `projects/${plan.project}/locations/${plan.location}/keyRings/${plan.keyRing}/cryptoKeys/${keyId}`;
|
|
20
34
|
}
|
|
21
|
-
/**
|
|
35
|
+
/** First key version GCP creates (asymmetric keys — the version is what you sign with). */
|
|
36
|
+
export function keyVersionName(plan, keyId) {
|
|
37
|
+
return `${keyResourceName(plan, keyId)}/cryptoKeyVersions/1`;
|
|
38
|
+
}
|
|
39
|
+
function defaultRole(purpose) {
|
|
40
|
+
return purpose === 'encrypt-decrypt'
|
|
41
|
+
? 'roles/cloudkms.cryptoKeyEncrypterDecrypter'
|
|
42
|
+
: 'roles/cloudkms.signerVerifier';
|
|
43
|
+
}
|
|
44
|
+
/** Emit the ordered steps for a provisioning plan. Pure — no execution. */
|
|
22
45
|
export function planGcpProvision(plan) {
|
|
23
46
|
if (!plan.project || !plan.location || !plan.keyRing) {
|
|
24
47
|
throw new Error('planGcpProvision: project, location, and keyRing are required');
|
|
@@ -31,58 +54,80 @@ export function planGcpProvision(plan) {
|
|
|
31
54
|
const dupes = plan.identities.filter((id, i) => plan.identities.indexOf(id) !== i);
|
|
32
55
|
if (dupes.length)
|
|
33
56
|
throw new Error(`planGcpProvision: duplicate identities: ${[...new Set(dupes)].join(', ')}`);
|
|
57
|
+
const purpose = plan.purpose ?? 'asymmetric-signing';
|
|
34
58
|
const protection = (plan.protectionLevel ?? 'HSM').toLowerCase();
|
|
59
|
+
const role = plan.iamRole ?? defaultRole(purpose);
|
|
60
|
+
const gcloudPurpose = purpose === 'encrypt-decrypt' ? 'encryption' : 'asymmetric-signing';
|
|
61
|
+
const gcloudAlgo = purpose === 'encrypt-decrypt' ? 'google-symmetric-encryption' : 'ec-sign-secp256k1-sha256';
|
|
62
|
+
// B2: map ORIGINAL identity → sanitized keyId; reject collisions (two labels → one key id).
|
|
63
|
+
const keyIdByIdentity = new Map();
|
|
64
|
+
const seen = new Map();
|
|
65
|
+
for (const identity of plan.identities) {
|
|
66
|
+
const keyId = sanitizeKeyId(identity);
|
|
67
|
+
const prior = seen.get(keyId);
|
|
68
|
+
if (prior && prior !== identity) {
|
|
69
|
+
throw new Error(`planGcpProvision: identities "${prior}" and "${identity}" both sanitize to key id "${keyId}"`);
|
|
70
|
+
}
|
|
71
|
+
seen.set(keyId, identity);
|
|
72
|
+
keyIdByIdentity.set(identity, keyId);
|
|
73
|
+
}
|
|
35
74
|
const steps = [
|
|
36
75
|
{
|
|
37
76
|
id: 'keyring',
|
|
38
77
|
kind: 'create-keyring',
|
|
39
78
|
description: `Create key ring ${plan.keyRing} in ${plan.location}`,
|
|
40
79
|
argv: ['kms', 'keyrings', 'create', plan.keyRing, '--location', plan.location, '--project', plan.project],
|
|
80
|
+
rest: { project: plan.project, location: plan.location, keyRing: plan.keyRing },
|
|
41
81
|
},
|
|
42
82
|
];
|
|
43
83
|
for (const identity of plan.identities) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
const cryptoKeyName = keyResourceName(plan, identity);
|
|
84
|
+
const keyId = keyIdByIdentity.get(identity);
|
|
85
|
+
const cryptoKeyName = keyResourceName(plan, keyId);
|
|
48
86
|
steps.push({
|
|
49
87
|
id: `key:${identity}`,
|
|
50
88
|
kind: 'create-key',
|
|
51
89
|
identity,
|
|
90
|
+
keyId,
|
|
52
91
|
cryptoKeyName,
|
|
53
|
-
description: `Create
|
|
92
|
+
description: `Create ${protection.toUpperCase()} ${purpose} key ${keyId} (for "${identity}")`,
|
|
54
93
|
argv: [
|
|
55
|
-
'kms', 'keys', 'create',
|
|
94
|
+
'kms', 'keys', 'create', keyId,
|
|
56
95
|
'--keyring', plan.keyRing,
|
|
57
96
|
'--location', plan.location,
|
|
58
97
|
'--project', plan.project,
|
|
59
|
-
'--purpose',
|
|
60
|
-
'--default-algorithm',
|
|
98
|
+
'--purpose', gcloudPurpose,
|
|
99
|
+
'--default-algorithm', gcloudAlgo,
|
|
61
100
|
'--protection-level', protection,
|
|
62
101
|
],
|
|
102
|
+
rest: { project: plan.project, location: plan.location, keyRing: plan.keyRing, keyId, purpose, protectionLevel: plan.protectionLevel ?? 'HSM' },
|
|
63
103
|
});
|
|
64
104
|
steps.push({
|
|
65
105
|
id: `iam:${identity}`,
|
|
66
106
|
kind: 'grant-iam',
|
|
67
107
|
identity,
|
|
108
|
+
keyId,
|
|
68
109
|
cryptoKeyName,
|
|
69
|
-
description: `Grant
|
|
110
|
+
description: `Grant ${role} on ${keyId} to ${plan.runtimeServiceAccount}`,
|
|
70
111
|
argv: [
|
|
71
|
-
'kms', 'keys', 'add-iam-policy-binding',
|
|
112
|
+
'kms', 'keys', 'add-iam-policy-binding', keyId,
|
|
72
113
|
'--keyring', plan.keyRing,
|
|
73
114
|
'--location', plan.location,
|
|
74
115
|
'--project', plan.project,
|
|
75
116
|
'--member', `serviceAccount:${plan.runtimeServiceAccount}`,
|
|
76
|
-
'--role',
|
|
117
|
+
'--role', role,
|
|
77
118
|
],
|
|
119
|
+
rest: { project: plan.project, location: plan.location, keyRing: plan.keyRing, keyId, role, member: plan.runtimeServiceAccount },
|
|
78
120
|
});
|
|
79
121
|
}
|
|
80
122
|
return steps;
|
|
81
123
|
}
|
|
82
|
-
/** Execute a provisioning plan through an injected executor. Idempotent: steps whose
|
|
83
|
-
*
|
|
84
|
-
*
|
|
124
|
+
/** Execute a provisioning plan through an injected executor. Idempotent: steps whose resource
|
|
125
|
+
* already exists are skipped + reported. For asymmetric keys, fetches each key's public key and
|
|
126
|
+
* derives its EVM address (verify before wiring); encrypt-decrypt KEKs have no public key, so the
|
|
127
|
+
* keyMap points at the version-less cryptoKey resource and no address is derived. */
|
|
85
128
|
export async function executeGcpProvision(plan, exec) {
|
|
129
|
+
const purpose = plan.purpose ?? 'asymmetric-signing';
|
|
130
|
+
const role = plan.iamRole ?? defaultRole(purpose);
|
|
86
131
|
const steps = planGcpProvision(plan);
|
|
87
132
|
const alreadyExisted = [];
|
|
88
133
|
const granted = [];
|
|
@@ -91,17 +136,94 @@ export async function executeGcpProvision(plan, exec) {
|
|
|
91
136
|
if (r.alreadyExists)
|
|
92
137
|
alreadyExisted.push(step.id);
|
|
93
138
|
if (step.kind === 'grant-iam' && step.cryptoKeyName) {
|
|
94
|
-
granted.push({ key: step.cryptoKeyName, member: `serviceAccount:${plan.runtimeServiceAccount}`, role
|
|
139
|
+
granted.push({ key: step.cryptoKeyName, member: `serviceAccount:${plan.runtimeServiceAccount}`, role });
|
|
95
140
|
}
|
|
96
141
|
}
|
|
97
142
|
const keyMap = {};
|
|
98
143
|
const addresses = {};
|
|
99
144
|
for (const identity of plan.identities) {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
145
|
+
const keyId = sanitizeKeyId(identity);
|
|
146
|
+
if (purpose === 'encrypt-decrypt') {
|
|
147
|
+
// The envelope provider's `kmsKeyRef` is the version-less cryptoKey resource.
|
|
148
|
+
keyMap[identity] = keyResourceName(plan, keyId);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
const versionName = keyVersionName(plan, keyId);
|
|
152
|
+
keyMap[identity] = versionName;
|
|
153
|
+
addresses[identity] = addressFromSpkiPem(await exec.getPublicKeyPem(versionName));
|
|
154
|
+
}
|
|
104
155
|
}
|
|
105
156
|
return { keyMap, addresses, granted, alreadyExisted };
|
|
106
157
|
}
|
|
158
|
+
// ─── B1: gcloud-free REST StepExecutor ─────────────────────────────────────
|
|
159
|
+
const GCP_PURPOSE = { 'asymmetric-signing': 'ASYMMETRIC_SIGN', 'encrypt-decrypt': 'ENCRYPT_DECRYPT' };
|
|
160
|
+
const GCP_ALGORITHM = { 'asymmetric-signing': 'EC_SIGN_SECP256K1_SHA256', 'encrypt-decrypt': 'GOOGLE_SYMMETRIC_ENCRYPTION' };
|
|
161
|
+
/** Build a Cloud KMS REST StepExecutor from a service-account JSON (single-line or base64 — B4).
|
|
162
|
+
* Zero gcloud dependency; SA-JWT → KMS REST. Idempotent (409 ALREADY_EXISTS → skip). */
|
|
163
|
+
export function createGcpRestStepExecutor(opts) {
|
|
164
|
+
const sa = parseServiceAccountJson(opts.serviceAccountJson);
|
|
165
|
+
let cached;
|
|
166
|
+
async function token() {
|
|
167
|
+
const now = Math.floor(Date.now() / 1000);
|
|
168
|
+
if (!cached || cached.expiresAt <= now)
|
|
169
|
+
cached = await fetchAccessToken(sa);
|
|
170
|
+
return cached.accessToken;
|
|
171
|
+
}
|
|
172
|
+
const isConflict = (e) => e instanceof Error && /HTTP 409|ALREADY_EXISTS/i.test(e.message);
|
|
173
|
+
return {
|
|
174
|
+
async run(step) {
|
|
175
|
+
const t = await token();
|
|
176
|
+
const r = step.rest;
|
|
177
|
+
const loc = `projects/${r.project}/locations/${r.location}`;
|
|
178
|
+
if (step.kind === 'create-keyring') {
|
|
179
|
+
try {
|
|
180
|
+
await callKms(t, `${loc}/keyRings?keyRingId=${encodeURIComponent(r.keyRing)}`, { method: 'POST', body: {} });
|
|
181
|
+
return { stdout: 'keyring created' };
|
|
182
|
+
}
|
|
183
|
+
catch (e) {
|
|
184
|
+
if (isConflict(e))
|
|
185
|
+
return { stdout: 'keyring exists', alreadyExists: true };
|
|
186
|
+
throw e;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (step.kind === 'create-key') {
|
|
190
|
+
const purpose = r.purpose ?? 'asymmetric-signing';
|
|
191
|
+
try {
|
|
192
|
+
await callKms(t, `${loc}/keyRings/${encodeURIComponent(r.keyRing)}/cryptoKeys?cryptoKeyId=${encodeURIComponent(r.keyId)}`, {
|
|
193
|
+
method: 'POST',
|
|
194
|
+
body: {
|
|
195
|
+
purpose: GCP_PURPOSE[purpose],
|
|
196
|
+
versionTemplate: { algorithm: GCP_ALGORITHM[purpose], protectionLevel: (r.protectionLevel ?? 'HSM') },
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
return { stdout: 'key created' };
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
if (isConflict(e))
|
|
203
|
+
return { stdout: 'key exists', alreadyExists: true };
|
|
204
|
+
throw e;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// grant-iam: read-modify-write the key's IAM policy (idempotent; member added once).
|
|
208
|
+
const keyPath = `${loc}/keyRings/${encodeURIComponent(r.keyRing)}/cryptoKeys/${encodeURIComponent(r.keyId)}`;
|
|
209
|
+
const policy = await callKms(t, `${keyPath}:getIamPolicy`, { method: 'GET' });
|
|
210
|
+
const member = `serviceAccount:${r.member}`;
|
|
211
|
+
const bindings = policy.bindings ?? [];
|
|
212
|
+
let binding = bindings.find((b) => b.role === r.role);
|
|
213
|
+
if (!binding) {
|
|
214
|
+
binding = { role: r.role, members: [] };
|
|
215
|
+
bindings.push(binding);
|
|
216
|
+
}
|
|
217
|
+
if (binding.members.includes(member))
|
|
218
|
+
return { stdout: 'iam binding already present', alreadyExists: true };
|
|
219
|
+
binding.members.push(member);
|
|
220
|
+
await callKms(t, `${keyPath}:setIamPolicy`, { method: 'POST', body: { policy: { ...policy, bindings } } });
|
|
221
|
+
return { stdout: 'iam granted' };
|
|
222
|
+
},
|
|
223
|
+
async getPublicKeyPem(cryptoKeyVersionName) {
|
|
224
|
+
const res = await callKms(await token(), `${cryptoKeyVersionName}/publicKey`, { method: 'GET' });
|
|
225
|
+
return res.pem;
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
107
229
|
//# sourceMappingURL=provision-gcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision-gcp.js","sourceRoot":"","sources":["../../src/kms/provision-gcp.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"provision-gcp.js","sourceRoot":"","sources":["../../src/kms/provision-gcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type LocalAccount } from 'viem';
|
|
2
|
-
import type { KmsAccountBackend } from './types';
|
|
2
|
+
import type { KmsAccountBackend } from './types.js';
|
|
3
3
|
export declare function createKmsViemAccount(backend: KmsAccountBackend): Promise<LocalAccount>;
|
|
4
4
|
//# sourceMappingURL=kms-viem-account.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kms-viem-account.d.ts","sourceRoot":"","sources":["../src/kms-viem-account.ts"],"names":[],"mappings":"AAqBA,OAAO,EASL,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"kms-viem-account.d.ts","sourceRoot":"","sources":["../src/kms-viem-account.ts"],"names":[],"mappings":"AAqBA,OAAO,EASL,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA0BpD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAwC5F"}
|
package/dist/providers/aws.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { A2AKeyProvider, KmsAccountBackend } from '../types';
|
|
1
|
+
import type { A2AKeyProvider, KmsAccountBackend } from '../types.js';
|
|
2
2
|
import type { Address } from '@agenticprimitives/types';
|
|
3
3
|
export declare const AWS_KMS_NOT_IMPLEMENTED: string;
|
|
4
4
|
export declare class AwsKmsProvider implements A2AKeyProvider {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../src/providers/aws.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../src/providers/aws.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,uBAAuB,QAEyE,CAAC;AAE9G,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,UAAU,6BAA6B;;IAG1C,sBAAsB,IAAI,OAAO,CAAC,KAAK,CAAC;IACxC,qBAAqB,IAAI,OAAO,CAAC,KAAK,CAAC;CAC9C;AAED,qBAAa,YAAa,YAAW,iBAAiB;IACpD,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;;IAGjC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;IAC/B,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAC3C"}
|
package/dist/providers/gcp.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from 'viem';
|
|
2
2
|
import { type AuditSink } from '@agenticprimitives/audit';
|
|
3
|
-
import type { A2AKeyProvider, KmsAccountBackend } from '../types';
|
|
3
|
+
import type { A2AKeyProvider, KmsAccountBackend } from '../types.js';
|
|
4
4
|
export { base64UrlEncode, pemToDer, parseDerEcdsa, normalizeLowS, bigIntTo32Bytes, parseSpkiUncompressedSecp256k1PubKey, publicKeyToAddress, findRecoveryByte, } from '../kms/secp256k1-core.js';
|
|
5
5
|
export { signJwt, fetchAccessToken } from '../kms/gcp-transport.js';
|
|
6
6
|
export interface GcpKmsSignerOpts {
|
|
@@ -47,14 +47,30 @@ export interface GcpKmsProviderOpts {
|
|
|
47
47
|
cryptoKeyName: string;
|
|
48
48
|
/** Raw JSON string of the service-account key file. */
|
|
49
49
|
serviceAccountJson: string;
|
|
50
|
+
/**
|
|
51
|
+
* Optional audit sink (spec 278 P0). When set, each envelope op emits a
|
|
52
|
+
* `key-custody.envelope.{wrap,unwrap}` row carrying refs/hashes ONLY
|
|
53
|
+
* (`keyId`, `keyVersion`, `aadHash`) — never the data key or plaintext.
|
|
54
|
+
* Fail-soft: an audit failure never breaks the crypto op.
|
|
55
|
+
*/
|
|
56
|
+
auditSink?: AuditSink;
|
|
50
57
|
}
|
|
51
58
|
export declare class GcpKmsProvider implements A2AKeyProvider {
|
|
52
59
|
/** Only used when the GCP encrypt response doesn't carry a `name` (test fixtures). */
|
|
53
60
|
readonly keyVersion = "gcp-kms:unknown";
|
|
54
61
|
private readonly keyName;
|
|
55
62
|
private readonly serviceAccount;
|
|
63
|
+
private readonly auditSink?;
|
|
56
64
|
private cachedToken?;
|
|
57
|
-
constructor(opts?: Partial<GcpKmsProviderOpts>
|
|
65
|
+
constructor(opts?: Partial<GcpKmsProviderOpts> & {
|
|
66
|
+
auditSink?: AuditSink;
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Emit an envelope-op audit row (spec 278 P0). Refs/hashes ONLY — the AAD is
|
|
70
|
+
* hashed (never logged raw, since it can carry owner/resource identifiers),
|
|
71
|
+
* and the data key / plaintext never appear. Fail-soft.
|
|
72
|
+
*/
|
|
73
|
+
private emitEnvelopeAudit;
|
|
58
74
|
private getAccessToken;
|
|
59
75
|
generateSessionDataKey(input: {
|
|
60
76
|
aadContext: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/providers/gcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/providers/gcp.ts"],"names":[],"mappings":"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"}
|
package/dist/providers/gcp.js
CHANGED
|
@@ -8,14 +8,20 @@
|
|
|
8
8
|
// the optional audit sink (`key-custody.sign`). One implementation, two
|
|
9
9
|
// surfaces — no second KMS path.
|
|
10
10
|
//
|
|
11
|
-
// GcpKmsProvider (envelope encryption via GCP KMS Encrypt/Decrypt)
|
|
12
|
-
//
|
|
13
|
-
//
|
|
11
|
+
// GcpKmsProvider (envelope encryption via GCP KMS Encrypt/Decrypt) is
|
|
12
|
+
// IMPLEMENTED: it wraps/unwraps a per-row 32-byte data key with Cloud KMS
|
|
13
|
+
// :encrypt/:decrypt under the AAD-bound EncryptionContext, and (spec 278 P0)
|
|
14
|
+
// emits a `key-custody.envelope.{wrap,unwrap}` audit row per op (refs/hashes
|
|
15
|
+
// only). It uses a DIFFERENT symmetric KMS key from the signer (master-key
|
|
16
|
+
// separation). Residual per-person-KEK selection + person-SA AAD binding is
|
|
17
|
+
// spec 278 (per-person vault key binding), not a crypto gap.
|
|
14
18
|
import { keccak_256 } from '@noble/hashes/sha3.js';
|
|
19
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
15
20
|
import { buildEvent } from '@agenticprimitives/audit';
|
|
16
|
-
import { canonicalContextBytes } from '../aad';
|
|
21
|
+
import { canonicalContextBytes } from '../aad.js';
|
|
17
22
|
import { bytesToHex, base64Decode, base64Encode, pemToDer, bigIntTo32Bytes, parseDerEcdsa, normalizeLowS, parseSpkiUncompressedSecp256k1PubKey, publicKeyToAddress, findRecoveryByte, } from '../kms/secp256k1-core.js';
|
|
18
23
|
import { fetchAccessToken, callKms, createGcpKmsTransport, } from '../kms/gcp-transport.js';
|
|
24
|
+
import { parseServiceAccountJson } from '../kms/key-map.js';
|
|
19
25
|
// Re-export the consumer-safe helpers under their established names so existing
|
|
20
26
|
// importers (unit tests + any downstream) keep resolving them from this module.
|
|
21
27
|
// New code should prefer the `@agenticprimitives/key-custody/kms-core` subpath.
|
|
@@ -41,12 +47,15 @@ export class GcpKmsSigner {
|
|
|
41
47
|
if (!jsonStr) {
|
|
42
48
|
throw new Error('GcpKmsSigner: GCP_SERVICE_ACCOUNT_JSON (service-account JSON string) is required.');
|
|
43
49
|
}
|
|
50
|
+
// Backlog B4: accept the SAME formats parseServiceAccountJson does (single-line JSON OR
|
|
51
|
+
// base64-encoded JSON) so one secret value satisfies both the kms-core validator and this
|
|
52
|
+
// backend — base64 dodges the literal-newline paste hazard (B5).
|
|
44
53
|
let parsed;
|
|
45
54
|
try {
|
|
46
|
-
parsed =
|
|
55
|
+
parsed = parseServiceAccountJson(jsonStr);
|
|
47
56
|
}
|
|
48
|
-
catch {
|
|
49
|
-
throw new Error(
|
|
57
|
+
catch (e) {
|
|
58
|
+
throw new Error(`GcpKmsSigner: GCP_SERVICE_ACCOUNT_JSON invalid — ${e instanceof Error ? e.message : String(e)}`);
|
|
50
59
|
}
|
|
51
60
|
if (!parsed.client_email || !parsed.private_key) {
|
|
52
61
|
throw new Error('GcpKmsSigner: service-account JSON missing client_email or private_key.');
|
|
@@ -127,6 +136,7 @@ export class GcpKmsProvider {
|
|
|
127
136
|
keyVersion = 'gcp-kms:unknown';
|
|
128
137
|
keyName;
|
|
129
138
|
serviceAccount;
|
|
139
|
+
auditSink;
|
|
130
140
|
cachedToken;
|
|
131
141
|
constructor(opts) {
|
|
132
142
|
const keyName = opts?.cryptoKeyName ?? process.env.GCP_KMS_ENCRYPT_KEY_NAME;
|
|
@@ -137,18 +147,47 @@ export class GcpKmsProvider {
|
|
|
137
147
|
if (!jsonStr) {
|
|
138
148
|
throw new Error('GcpKmsProvider: GCP_SERVICE_ACCOUNT_JSON (service-account JSON string) is required.');
|
|
139
149
|
}
|
|
150
|
+
// Backlog B4: accept single-line JSON OR base64-encoded JSON (parseServiceAccountJson), so the
|
|
151
|
+
// SAME GCP_SERVICE_ACCOUNT_JSON secret satisfies the signer, this envelope provider, and the
|
|
152
|
+
// kms-core validator — base64 dodges the literal-newline paste hazard (B5).
|
|
140
153
|
let parsed;
|
|
141
154
|
try {
|
|
142
|
-
parsed =
|
|
155
|
+
parsed = parseServiceAccountJson(jsonStr);
|
|
143
156
|
}
|
|
144
|
-
catch {
|
|
145
|
-
throw new Error(
|
|
157
|
+
catch (e) {
|
|
158
|
+
throw new Error(`GcpKmsProvider: GCP_SERVICE_ACCOUNT_JSON invalid — ${e instanceof Error ? e.message : String(e)}`);
|
|
146
159
|
}
|
|
147
160
|
if (!parsed.client_email || !parsed.private_key) {
|
|
148
161
|
throw new Error('GcpKmsProvider: service-account JSON missing client_email or private_key.');
|
|
149
162
|
}
|
|
150
163
|
this.keyName = keyName;
|
|
151
164
|
this.serviceAccount = parsed;
|
|
165
|
+
this.auditSink = opts?.auditSink;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Emit an envelope-op audit row (spec 278 P0). Refs/hashes ONLY — the AAD is
|
|
169
|
+
* hashed (never logged raw, since it can carry owner/resource identifiers),
|
|
170
|
+
* and the data key / plaintext never appear. Fail-soft.
|
|
171
|
+
*/
|
|
172
|
+
async emitEnvelopeAudit(action, aadBytes, keyVersion) {
|
|
173
|
+
if (!this.auditSink)
|
|
174
|
+
return;
|
|
175
|
+
try {
|
|
176
|
+
await this.auditSink.write(buildEvent({
|
|
177
|
+
action,
|
|
178
|
+
outcome: 'success',
|
|
179
|
+
actor: { type: 'system', id: 'gcp-kms-provider' },
|
|
180
|
+
subject: { type: 'vault-data-key', id: keyVersion },
|
|
181
|
+
context: {
|
|
182
|
+
keyId: this.keyName,
|
|
183
|
+
keyVersion,
|
|
184
|
+
aadHash: bytesToHex(sha256(aadBytes)),
|
|
185
|
+
},
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
/* fail-soft — an audit failure must not break the crypto op */
|
|
190
|
+
}
|
|
152
191
|
}
|
|
153
192
|
async getAccessToken() {
|
|
154
193
|
const now = Math.floor(Date.now() / 1000);
|
|
@@ -172,6 +211,7 @@ export class GcpKmsProvider {
|
|
|
172
211
|
});
|
|
173
212
|
const encryptedDataKey = base64Decode(res.ciphertext);
|
|
174
213
|
const keyVersion = parseCryptoKeyVersion(res.name) ?? this.keyVersion;
|
|
214
|
+
await this.emitEnvelopeAudit('key-custody.envelope.wrap', aadBytes, keyVersion);
|
|
175
215
|
return { plaintextDataKey, encryptedDataKey, keyId: this.keyName, keyVersion };
|
|
176
216
|
}
|
|
177
217
|
async decryptSessionDataKey(input) {
|
|
@@ -191,7 +231,9 @@ export class GcpKmsProvider {
|
|
|
191
231
|
additionalAuthenticatedData: base64Encode(aadBytes),
|
|
192
232
|
},
|
|
193
233
|
});
|
|
194
|
-
|
|
234
|
+
const plaintextDataKey = base64Decode(res.plaintext);
|
|
235
|
+
await this.emitEnvelopeAudit('key-custody.envelope.unwrap', aadBytes, input.keyVersion);
|
|
236
|
+
return plaintextDataKey;
|
|
195
237
|
}
|
|
196
238
|
}
|
|
197
239
|
//# sourceMappingURL=gcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcp.js","sourceRoot":"","sources":["../../src/providers/gcp.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,8EAA8E;AAC9E,wEAAwE;AACxE,6EAA6E;AAC7E,wEAAwE;AACxE,iCAAiC;AACjC,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E
|
|
1
|
+
{"version":3,"file":"gcp.js","sourceRoot":"","sources":["../../src/providers/gcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { hexToBytes, bytesToHex, toHex, type Address, type Hex } from 'viem';
|
|
2
|
-
import type { A2AKeyProvider, KmsAccountBackend } from '../types';
|
|
2
|
+
import type { A2AKeyProvider, KmsAccountBackend } from '../types.js';
|
|
3
3
|
import { type AuditSink } from '@agenticprimitives/audit';
|
|
4
4
|
export declare class LocalAesProvider implements A2AKeyProvider {
|
|
5
5
|
readonly keyVersion = "local-v1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAiHtE,qBAAa,gBAAiB,YAAW,cAAc;IACrD,QAAQ,CAAC,UAAU,cAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAExB,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE;IAe1C,sBAAsB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;;;;;;IAiBpE,qBAAqB,CAAC,KAAK,EAAE;QACjC,gBAAgB,EAAE,UAAU,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB;IAmBK,WAAW,CAAC,KAAK,EAAE;QAAE,gBAAgB,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;;;;CAW7F;AAED,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAY;gBAE3B,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE;IAQ9D,aAAa,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,UAAU,CAAC;QACnB,YAAY,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3E;;;;;IA2DK,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C,yEAAyE;IACzE,UAAU,IAAI,OAAO;CAGtB;AAaD,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/providers/local.js
CHANGED
|
@@ -18,7 +18,7 @@ import { hkdf } from '@noble/hashes/hkdf.js';
|
|
|
18
18
|
import { secp256k1 } from '@noble/curves/secp256k1.js';
|
|
19
19
|
import { keccak_256 } from '@noble/hashes/sha3.js';
|
|
20
20
|
import { hexToBytes, bytesToHex, toHex } from 'viem';
|
|
21
|
-
import { canonicalContextBytes } from '../aad';
|
|
21
|
+
import { canonicalContextBytes } from '../aad.js';
|
|
22
22
|
import { buildEvent } from '@agenticprimitives/audit';
|
|
23
23
|
const HKDF_INFO = 'agenticprimitives/local-aes:v1';
|
|
24
24
|
const SALT_BYTES = 16;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,8EAA8E;AAC9E,EAAE;AACF,oBAAoB;AACpB,gFAAgF;AAChF,uEAAuE;AACvE,8EAA8E;AAC9E,6EAA6E;AAC7E,2CAA2C;AAC3C,EAAE;AACF,wBAAwB;AACxB,uEAAuE;AACvE,2EAA2E;AAE3E,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAA0B,MAAM,MAAM,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"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"}
|
package/dist/relay-only.d.ts
CHANGED
package/dist/relay-only.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-only.d.ts","sourceRoot":"","sources":["../src/relay-only.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relay-only.d.ts","sourceRoot":"","sources":["../src/relay-only.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,CAerE"}
|
package/dist/relay-only.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// getRelayOnlySigner — wraps a KmsAccountBackend so any sign call throws.
|
|
2
2
|
// Used in Phase B to guarantee the master signer can only broadcast, never
|
|
3
3
|
// sign on the user's authority.
|
|
4
|
-
import { buildSignerBackend } from './factories';
|
|
4
|
+
import { buildSignerBackend } from './factories.js';
|
|
5
5
|
export function getRelayOnlySigner(opts) {
|
|
6
6
|
const inner = buildSignerBackend(opts);
|
|
7
7
|
return {
|
package/dist/relay-only.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-only.js","sourceRoot":"","sources":["../src/relay-only.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,gCAAgC;AAGhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relay-only.js","sourceRoot":"","sources":["../src/relay-only.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,gCAAgC;AAGhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,UAAU,kBAAkB,CAAC,IAAe;IAChD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO;QACL,sEAAsE;QACtE,2CAA2C;QAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,CAAC,gBAAgB;YACpB,OAAO,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,aAAa;YACjB,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type LocalAccount } from 'viem';
|
|
2
2
|
import { type AuditSink } from '@agenticprimitives/audit';
|
|
3
|
-
import type { KmsAccountBackend } from './types';
|
|
3
|
+
import type { KmsAccountBackend } from './types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Caller-supplied options for `createRelayerAccount`.
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relayer-account.d.ts","sourceRoot":"","sources":["../src/relayer-account.ts"],"names":[],"mappings":"AA2CA,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AACd,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relayer-account.d.ts","sourceRoot":"","sources":["../src/relayer-account.ts"],"names":[],"mappings":"AA2CA,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AACd,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AA6CD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,YAAY,CAAC,CAgDvB"}
|
package/dist/relayer-account.js
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
// `composeFailHardSinks` from @agenticprimitives/audit.
|
|
43
43
|
import { hashMessage, hashTypedData, keccak256, serializeTransaction, } from 'viem';
|
|
44
44
|
import { buildEvent } from '@agenticprimitives/audit';
|
|
45
|
-
import { createKmsViemAccount } from './kms-viem-account';
|
|
45
|
+
import { createKmsViemAccount } from './kms-viem-account.js';
|
|
46
46
|
function digestFingerprint(digest) {
|
|
47
47
|
// 18 chars = 9 bytes of the keccak hash. Enough to disambiguate in
|
|
48
48
|
// logs; far too short to be a preimage. Same redaction shape used by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relayer-account.js","sourceRoot":"","sources":["../src/relayer-account.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,oDAAoD;AACpD,EAAE;AACF,8DAA8D;AAC9D,EAAE;AACF,sDAAsD;AACtD,EAAE;AACF,mEAAmE;AACnE,yEAAyE;AACzE,wEAAwE;AACxE,sEAAsE;AACtE,oEAAoE;AACpE,wEAAwE;AACxE,mBAAmB;AACnB,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,mEAAmE;AACnE,EAAE;AACF,0DAA0D;AAC1D,qEAAqE;AACrE,sEAAsE;AACtE,4EAA4E;AAC5E,uDAAuD;AACvD,EAAE;AACF,wCAAwC;AACxC,uCAAuC;AACvC,6CAA6C;AAC7C,0DAA0D;AAC1D,aAAa;AACb,+CAA+C;AAC/C,sCAAsC;AACtC,+DAA+D;AAC/D,2DAA2D;AAC3D,yDAAyD;AACzD,qEAAqE;AACrE,6DAA6D;AAC7D,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,yDAAyD;AACzD,wDAAwD;AAExD,OAAO,EACL,WAAW,EACX,aAAa,EACb,SAAS,EACT,oBAAoB,GAIrB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,UAAU,EAAkB,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relayer-account.js","sourceRoot":"","sources":["../src/relayer-account.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agenticprimitives/key-custody",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.12",
|
|
4
4
|
"description": "Pluggable envelope encryption + signers + HMAC providers (local-AES / AWS KMS / GCP KMS). Pure crypto primitives; no session lifecycle (that's in delegation).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
78
|
"viem": "^2.52.2",
|
|
79
|
-
"@agenticprimitives/audit": "1.0.0-alpha.
|
|
80
|
-
"@agenticprimitives/
|
|
81
|
-
"@agenticprimitives/
|
|
79
|
+
"@agenticprimitives/audit": "1.0.0-alpha.12",
|
|
80
|
+
"@agenticprimitives/connect-auth": "1.0.0-alpha.12",
|
|
81
|
+
"@agenticprimitives/types": "1.0.0-alpha.12"
|
|
82
82
|
},
|
|
83
83
|
"peerDependenciesMeta": {
|
|
84
84
|
"@agenticprimitives/audit": {
|