@attestplane/attestplane 0.0.1 → 0.0.4-alpha

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 (106) hide show
  1. package/README.md +23 -9
  2. package/dist/adapter_conformance.d.ts +46 -0
  3. package/dist/adapter_conformance.d.ts.map +1 -0
  4. package/dist/adapter_conformance.js +160 -0
  5. package/dist/adapter_conformance.js.map +1 -0
  6. package/dist/adapters/langfuse.d.ts +51 -0
  7. package/dist/adapters/langfuse.d.ts.map +1 -0
  8. package/dist/adapters/langfuse.js +157 -0
  9. package/dist/adapters/langfuse.js.map +1 -0
  10. package/dist/adapters/langsmith.d.ts +53 -0
  11. package/dist/adapters/langsmith.d.ts.map +1 -0
  12. package/dist/adapters/langsmith.js +173 -0
  13. package/dist/adapters/langsmith.js.map +1 -0
  14. package/dist/adapters.d.ts +88 -0
  15. package/dist/adapters.d.ts.map +1 -0
  16. package/dist/adapters.js +109 -0
  17. package/dist/adapters.js.map +1 -0
  18. package/dist/anchoring.d.ts +119 -0
  19. package/dist/anchoring.d.ts.map +1 -0
  20. package/dist/anchoring.js +340 -0
  21. package/dist/anchoring.js.map +1 -0
  22. package/dist/canonical.d.ts +11 -2
  23. package/dist/canonical.d.ts.map +1 -1
  24. package/dist/canonical.js +44 -31
  25. package/dist/canonical.js.map +1 -1
  26. package/dist/canonical_text.d.ts +30 -0
  27. package/dist/canonical_text.d.ts.map +1 -0
  28. package/dist/canonical_text.js +100 -0
  29. package/dist/canonical_text.js.map +1 -0
  30. package/dist/der.d.ts +55 -0
  31. package/dist/der.d.ts.map +1 -0
  32. package/dist/der.js +200 -0
  33. package/dist/der.js.map +1 -0
  34. package/dist/event_payloads.d.ts +118 -0
  35. package/dist/event_payloads.d.ts.map +1 -0
  36. package/dist/event_payloads.js +348 -0
  37. package/dist/event_payloads.js.map +1 -0
  38. package/dist/event_types.d.ts +47 -0
  39. package/dist/event_types.d.ts.map +1 -0
  40. package/dist/event_types.js +63 -0
  41. package/dist/event_types.js.map +1 -0
  42. package/dist/hashchain.d.ts +1 -0
  43. package/dist/hashchain.d.ts.map +1 -1
  44. package/dist/hashchain.js +25 -1
  45. package/dist/hashchain.js.map +1 -1
  46. package/dist/index.d.ts +23 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +24 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/index_version.d.ts +9 -0
  51. package/dist/index_version.d.ts.map +1 -0
  52. package/dist/index_version.js +11 -0
  53. package/dist/index_version.js.map +1 -0
  54. package/dist/intoto.d.ts +48 -0
  55. package/dist/intoto.d.ts.map +1 -0
  56. package/dist/intoto.js +106 -0
  57. package/dist/intoto.js.map +1 -0
  58. package/dist/obligations.d.ts +41 -0
  59. package/dist/obligations.d.ts.map +1 -0
  60. package/dist/obligations.js +312 -0
  61. package/dist/obligations.js.map +1 -0
  62. package/dist/proof_bundle.d.ts +186 -0
  63. package/dist/proof_bundle.d.ts.map +1 -0
  64. package/dist/proof_bundle.js +299 -0
  65. package/dist/proof_bundle.js.map +1 -0
  66. package/dist/reason_codes.d.ts +38 -0
  67. package/dist/reason_codes.d.ts.map +1 -0
  68. package/dist/reason_codes.js +97 -0
  69. package/dist/reason_codes.js.map +1 -0
  70. package/dist/replay_verifier.d.ts +43 -0
  71. package/dist/replay_verifier.d.ts.map +1 -0
  72. package/dist/replay_verifier.js +98 -0
  73. package/dist/replay_verifier.js.map +1 -0
  74. package/dist/rfc3161.d.ts +52 -0
  75. package/dist/rfc3161.d.ts.map +1 -0
  76. package/dist/rfc3161.js +640 -0
  77. package/dist/rfc3161.js.map +1 -0
  78. package/dist/settlement_verifier.d.ts +34 -0
  79. package/dist/settlement_verifier.d.ts.map +1 -0
  80. package/dist/settlement_verifier.js +139 -0
  81. package/dist/settlement_verifier.js.map +1 -0
  82. package/dist/signing/base.d.ts +101 -0
  83. package/dist/signing/base.d.ts.map +1 -0
  84. package/dist/signing/base.js +144 -0
  85. package/dist/signing/base.js.map +1 -0
  86. package/dist/signing/providers.d.ts +113 -0
  87. package/dist/signing/providers.d.ts.map +1 -0
  88. package/dist/signing/providers.js +230 -0
  89. package/dist/signing/providers.js.map +1 -0
  90. package/dist/signing/signer.d.ts +66 -0
  91. package/dist/signing/signer.d.ts.map +1 -0
  92. package/dist/signing/signer.js +146 -0
  93. package/dist/signing/signer.js.map +1 -0
  94. package/dist/signing/trust_roots.d.ts +71 -0
  95. package/dist/signing/trust_roots.d.ts.map +1 -0
  96. package/dist/signing/trust_roots.js +267 -0
  97. package/dist/signing/trust_roots.js.map +1 -0
  98. package/dist/signing/verifier_ext.d.ts +77 -0
  99. package/dist/signing/verifier_ext.d.ts.map +1 -0
  100. package/dist/signing/verifier_ext.js +340 -0
  101. package/dist/signing/verifier_ext.js.map +1 -0
  102. package/dist/verifier.d.ts +39 -0
  103. package/dist/verifier.d.ts.map +1 -0
  104. package/dist/verifier.js +374 -0
  105. package/dist/verifier.js.map +1 -0
  106. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rfc3161.js","sourceRoot":"","sources":["../src/rfc3161.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Settlement-precondition verifier predicate — read-only walker, NEVER settles.
3
+ *
4
+ * ADR-0009 § B.3 + P2.3. Walks the chain for an ordered pair of
5
+ * observations: lease consumed → settlement requested (same lease &
6
+ * settlement IDs). Returns yes/no/reason. NEVER executes settlement.
7
+ *
8
+ * **Hard constraint** (per ADR-0009 § B.3 + invariant 7 + REDLINE C.3
9
+ * + C.8): no settlement execution, no budget allocation, no state
10
+ * mutation. Pure function.
11
+ */
12
+ export interface SettlementPreconditionClaim {
13
+ readonly claim_kind: 'settlement_precondition' | string;
14
+ readonly lease_id_hash: string;
15
+ readonly settlement_run_id: string;
16
+ readonly expected_settlement_amount_hash?: string;
17
+ readonly claim_observed_at?: string;
18
+ }
19
+ export interface SettlementVerificationResult {
20
+ readonly ok: boolean;
21
+ readonly reason: string | null;
22
+ readonly lease_consumed_seq: number | null;
23
+ readonly settlement_event_seq: number | null;
24
+ }
25
+ /** Minimal chain-event shape this verifier needs. */
26
+ export interface ChainEventForSettlement {
27
+ readonly seq: number;
28
+ readonly event_type: string;
29
+ readonly payload: Record<string, unknown>;
30
+ }
31
+ export declare function checkSettlementPrecondition(chainEvents: readonly ChainEventForSettlement[], claim: SettlementPreconditionClaim, options?: {
32
+ readonly verification_time?: Date;
33
+ }): SettlementVerificationResult;
34
+ //# sourceMappingURL=settlement_verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement_verifier.d.ts","sourceRoot":"","sources":["../src/settlement_verifier.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,yBAAyB,GAAG,MAAM,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED,qDAAqD;AACrD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAID,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,SAAS,uBAAuB,EAAE,EAC/C,KAAK,EAAE,2BAA2B,EAClC,OAAO,GAAE;IAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAA;CAAO,GAClD,4BAA4B,CAkI9B"}
@@ -0,0 +1,139 @@
1
+ // SPDX-FileCopyrightText: 2026 The Attestplane Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Settlement-precondition verifier predicate — read-only walker, NEVER settles.
5
+ *
6
+ * ADR-0009 § B.3 + P2.3. Walks the chain for an ordered pair of
7
+ * observations: lease consumed → settlement requested (same lease &
8
+ * settlement IDs). Returns yes/no/reason. NEVER executes settlement.
9
+ *
10
+ * **Hard constraint** (per ADR-0009 § B.3 + invariant 7 + REDLINE C.3
11
+ * + C.8): no settlement execution, no budget allocation, no state
12
+ * mutation. Pure function.
13
+ */
14
+ const HEX64 = /^[0-9a-f]{64}$/;
15
+ export function checkSettlementPrecondition(chainEvents, claim, options = {}) {
16
+ if (claim.claim_kind !== 'settlement_precondition') {
17
+ return {
18
+ ok: false,
19
+ reason: `claim_kind_unsupported: ${JSON.stringify(claim.claim_kind)}`,
20
+ lease_consumed_seq: null,
21
+ settlement_event_seq: null,
22
+ };
23
+ }
24
+ if (options.verification_time !== undefined &&
25
+ Number.isNaN(options.verification_time.getTime())) {
26
+ return {
27
+ ok: false,
28
+ reason: 'verification_time must be a valid Date',
29
+ lease_consumed_seq: null,
30
+ settlement_event_seq: null,
31
+ };
32
+ }
33
+ if (!Array.isArray(chainEvents)) {
34
+ return {
35
+ ok: false,
36
+ reason: `chain_events must be array, got ${typeof chainEvents}`,
37
+ lease_consumed_seq: null,
38
+ settlement_event_seq: null,
39
+ };
40
+ }
41
+ let leaseConsumedSeq = null;
42
+ let settlementEventSeq = null;
43
+ let settlementAmountHash = null;
44
+ for (const ev of chainEvents) {
45
+ if (ev === null || typeof ev !== 'object')
46
+ continue;
47
+ const seq = ev.seq;
48
+ if (typeof seq !== 'number' || !Number.isInteger(seq))
49
+ continue;
50
+ const payload = ev.payload;
51
+ if (payload === null || typeof payload !== 'object')
52
+ continue;
53
+ if (ev.event_type === 'lease_lifecycle_event') {
54
+ if (payload.lifecycle === 'consumed' &&
55
+ payload.lease_id_hash === claim.lease_id_hash) {
56
+ if (leaseConsumedSeq === null || seq < leaseConsumedSeq) {
57
+ leaseConsumedSeq = seq;
58
+ }
59
+ }
60
+ }
61
+ else if (ev.event_type === 'settlement_event') {
62
+ if (payload.settlement_run_id === claim.settlement_run_id) {
63
+ if (settlementEventSeq === null || seq < settlementEventSeq) {
64
+ settlementEventSeq = seq;
65
+ settlementAmountHash =
66
+ (typeof payload.amount_hash === 'string'
67
+ ? payload.amount_hash
68
+ : null) ?? null;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ if (leaseConsumedSeq === null) {
74
+ return {
75
+ ok: false,
76
+ reason: 'lease_consumed_not_observed',
77
+ lease_consumed_seq: null,
78
+ settlement_event_seq: settlementEventSeq,
79
+ };
80
+ }
81
+ if (settlementEventSeq === null) {
82
+ return {
83
+ ok: false,
84
+ reason: 'settlement_event_not_observed',
85
+ lease_consumed_seq: leaseConsumedSeq,
86
+ settlement_event_seq: null,
87
+ };
88
+ }
89
+ if (leaseConsumedSeq >= settlementEventSeq) {
90
+ return {
91
+ ok: false,
92
+ reason: `settlement_precedes_lease_consumed: lease consumed at seq=${leaseConsumedSeq}, settlement requested at seq=${settlementEventSeq}`,
93
+ lease_consumed_seq: leaseConsumedSeq,
94
+ settlement_event_seq: settlementEventSeq,
95
+ };
96
+ }
97
+ if (claim.expected_settlement_amount_hash !== undefined &&
98
+ !HEX64.test(claim.expected_settlement_amount_hash)) {
99
+ return {
100
+ ok: false,
101
+ reason: 'expected_settlement_amount_hash_malformed',
102
+ lease_consumed_seq: leaseConsumedSeq,
103
+ settlement_event_seq: settlementEventSeq,
104
+ };
105
+ }
106
+ if (claim.expected_settlement_amount_hash !== undefined) {
107
+ if (settlementAmountHash === null) {
108
+ return {
109
+ ok: false,
110
+ reason: 'amount_hash_missing',
111
+ lease_consumed_seq: leaseConsumedSeq,
112
+ settlement_event_seq: settlementEventSeq,
113
+ };
114
+ }
115
+ if (!HEX64.test(settlementAmountHash)) {
116
+ return {
117
+ ok: false,
118
+ reason: `amount_hash_malformed: settlement event reports ${JSON.stringify(settlementAmountHash)}`,
119
+ lease_consumed_seq: leaseConsumedSeq,
120
+ settlement_event_seq: settlementEventSeq,
121
+ };
122
+ }
123
+ if (settlementAmountHash !== claim.expected_settlement_amount_hash) {
124
+ return {
125
+ ok: false,
126
+ reason: `amount_hash_mismatch: claim expected ${claim.expected_settlement_amount_hash}, settlement event reports ${settlementAmountHash}`,
127
+ lease_consumed_seq: leaseConsumedSeq,
128
+ settlement_event_seq: settlementEventSeq,
129
+ };
130
+ }
131
+ }
132
+ return {
133
+ ok: true,
134
+ reason: null,
135
+ lease_consumed_seq: leaseConsumedSeq,
136
+ settlement_event_seq: settlementEventSeq,
137
+ };
138
+ }
139
+ //# sourceMappingURL=settlement_verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement_verifier.js","sourceRoot":"","sources":["../src/settlement_verifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Event-signing abstract types — TypeScript mirror of
3
+ * `sdk/python/src/attestplane/signing/base.py` per the T6 architect
4
+ * review (`docs/architecture/adr_0005_t6_review_20260517.md`).
5
+ *
6
+ * Hard-constraint preservation (architect plan hard constraint #1):
7
+ * v0.0.1-alpha `vectors.json` continues to verify byte-for-byte. No
8
+ * fields added to `AuditEvent` or `ChainedEvent`. `SignatureRecord`
9
+ * is a pure sidecar (option B3) mirroring `AnchorRecord`.
10
+ *
11
+ * Field naming: snake_case matches the existing TS pattern
12
+ * (`AnchorRecord.tsa_provider_id` etc.) — see decision 6 of the T6
13
+ * review. This makes JSON serialisation a direct field-by-field copy
14
+ * with no key remapping.
15
+ *
16
+ * Forbidden-verb gate (architect review § 1 D6 + ADR-0005 plan § 1 D):
17
+ * `KeyProvider` subclasses MUST NOT declare public methods named
18
+ * `revoke` / `rotate` / `delete` / `replace`. KeyProviders hold key
19
+ * *access*, not key *authority*; exposing those verbs invites callers
20
+ * to violate ADR-0004 § 1.
21
+ */
22
+ export declare const SIGNATURE_SCHEMA_VERSION: 1;
23
+ /** Frozen at 1 for v1. Independent of `chain.schema_version` and
24
+ * `anchor_schema_version`. */
25
+ export type SignatureMode = 'segment_head' | 'per_event';
26
+ export declare class SigningError extends Error {
27
+ constructor(message: string);
28
+ }
29
+ export declare class KeyProviderError extends SigningError {
30
+ constructor(message: string);
31
+ }
32
+ export declare class SignatureVerificationError extends SigningError {
33
+ constructor(message: string);
34
+ }
35
+ export declare class KeyBoundaryError extends TypeError {
36
+ constructor(message: string);
37
+ }
38
+ /** Identifies the v1 hex format: first 16 bytes of SHA-256(SPKI) → 32 hex chars. */
39
+ export declare function deriveKeyId(publicKeyDer: Uint8Array): string;
40
+ /**
41
+ * SignatureRecord — sidecar per architect plan § 1 B (option B3).
42
+ *
43
+ * Field names match Python's `SignatureRecord` exactly so JSON
44
+ * serialisation is a direct copy. Validated via
45
+ * {@link validateSignatureRecord}.
46
+ */
47
+ export interface SignatureRecord {
48
+ readonly signature_schema_version: number;
49
+ readonly signed_seq: number;
50
+ readonly signed_event_hash: Uint8Array;
51
+ readonly signature: Uint8Array;
52
+ readonly key_id: string;
53
+ readonly public_key_der: Uint8Array;
54
+ readonly signing_cert_chain: readonly Uint8Array[];
55
+ readonly signed_at: Date;
56
+ readonly signature_mode: SignatureMode;
57
+ readonly signed_payload: Uint8Array;
58
+ }
59
+ /**
60
+ * Throw `SigningError` if `record` violates the v1 invariants:
61
+ * schema_version=1, seq≥0, signed_event_hash 32 bytes, signature 64
62
+ * bytes (Ed25519), non-empty key_id / public_key_der / signed_payload,
63
+ * key_id derives correctly from public_key_der.
64
+ *
65
+ * Mirror of Python `SignatureRecord.__post_init__`.
66
+ */
67
+ export declare function validateSignatureRecord(record: SignatureRecord): void;
68
+ export interface SignaturePolicy {
69
+ readonly batch_size: number;
70
+ readonly max_idle_seconds: number;
71
+ readonly per_event: boolean;
72
+ }
73
+ export declare const DEFAULT_SIGNATURE_POLICY: SignaturePolicy;
74
+ export declare function makeSignaturePolicy(input?: Partial<SignaturePolicy>): SignaturePolicy;
75
+ import type { KeyObject } from 'node:crypto';
76
+ /**
77
+ * Bundles a signing key with optional Fulcio-cert chain hook
78
+ * (`signing_cert_chain` always empty in v1; ADR-0007 fills with
79
+ * short-lived OIDC certs).
80
+ */
81
+ export interface SigningMaterial {
82
+ readonly privateKey: KeyObject;
83
+ readonly publicKeyDer: Uint8Array;
84
+ readonly signingCertChain: readonly Uint8Array[];
85
+ readonly keyId: string;
86
+ }
87
+ /**
88
+ * Abstract base for any signing-key access strategy.
89
+ *
90
+ * Forbidden-verb gate is enforced at constructor time (TS analog of
91
+ * Python's `__init_subclass__`). Any subclass declaring public
92
+ * methods named in {revoke, rotate, delete, replace} fails at first
93
+ * `new` call.
94
+ */
95
+ export declare abstract class KeyProvider {
96
+ abstract readonly provider_id: string;
97
+ abstract readonly schema_version: number;
98
+ constructor();
99
+ abstract getSigningMaterial(): SigningMaterial;
100
+ }
101
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/signing/base.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,eAAO,MAAM,wBAAwB,EAAG,CAAU,CAAC;AACnD;+BAC+B;AAE/B,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;AAIzD,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,SAAS;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAID,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,YAAY,EAAE,UAAU,GAAG,MAAM,CAM5D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,UAAU,EAAE,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAyCrE;AAID,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,wBAAwB,EAAE,eAIrC,CAAC;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CASrF;AAID,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,UAAU,EAAE,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;GAOG;AACH,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;;IAoBzC,QAAQ,CAAC,kBAAkB,IAAI,eAAe;CAC/C"}
@@ -0,0 +1,144 @@
1
+ // SPDX-FileCopyrightText: 2026 The Attestplane Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Event-signing abstract types — TypeScript mirror of
5
+ * `sdk/python/src/attestplane/signing/base.py` per the T6 architect
6
+ * review (`docs/architecture/adr_0005_t6_review_20260517.md`).
7
+ *
8
+ * Hard-constraint preservation (architect plan hard constraint #1):
9
+ * v0.0.1-alpha `vectors.json` continues to verify byte-for-byte. No
10
+ * fields added to `AuditEvent` or `ChainedEvent`. `SignatureRecord`
11
+ * is a pure sidecar (option B3) mirroring `AnchorRecord`.
12
+ *
13
+ * Field naming: snake_case matches the existing TS pattern
14
+ * (`AnchorRecord.tsa_provider_id` etc.) — see decision 6 of the T6
15
+ * review. This makes JSON serialisation a direct field-by-field copy
16
+ * with no key remapping.
17
+ *
18
+ * Forbidden-verb gate (architect review § 1 D6 + ADR-0005 plan § 1 D):
19
+ * `KeyProvider` subclasses MUST NOT declare public methods named
20
+ * `revoke` / `rotate` / `delete` / `replace`. KeyProviders hold key
21
+ * *access*, not key *authority*; exposing those verbs invites callers
22
+ * to violate ADR-0004 § 1.
23
+ */
24
+ import { createHash } from 'node:crypto';
25
+ export const SIGNATURE_SCHEMA_VERSION = 1;
26
+ // ----- Error hierarchy -----
27
+ export class SigningError extends Error {
28
+ constructor(message) {
29
+ super(message);
30
+ this.name = 'SigningError';
31
+ }
32
+ }
33
+ export class KeyProviderError extends SigningError {
34
+ constructor(message) {
35
+ super(message);
36
+ this.name = 'KeyProviderError';
37
+ }
38
+ }
39
+ export class SignatureVerificationError extends SigningError {
40
+ constructor(message) {
41
+ super(message);
42
+ this.name = 'SignatureVerificationError';
43
+ }
44
+ }
45
+ export class KeyBoundaryError extends TypeError {
46
+ constructor(message) {
47
+ super(message);
48
+ this.name = 'KeyBoundaryError';
49
+ }
50
+ }
51
+ // ----- Data model -----
52
+ /** Identifies the v1 hex format: first 16 bytes of SHA-256(SPKI) → 32 hex chars. */
53
+ export function deriveKeyId(publicKeyDer) {
54
+ if (publicKeyDer.length === 0) {
55
+ throw new SigningError('deriveKeyId: publicKeyDer must be non-empty');
56
+ }
57
+ const hash = createHash('sha256').update(Buffer.from(publicKeyDer)).digest();
58
+ return hash.subarray(0, 16).toString('hex');
59
+ }
60
+ /**
61
+ * Throw `SigningError` if `record` violates the v1 invariants:
62
+ * schema_version=1, seq≥0, signed_event_hash 32 bytes, signature 64
63
+ * bytes (Ed25519), non-empty key_id / public_key_der / signed_payload,
64
+ * key_id derives correctly from public_key_der.
65
+ *
66
+ * Mirror of Python `SignatureRecord.__post_init__`.
67
+ */
68
+ export function validateSignatureRecord(record) {
69
+ if (record.signature_schema_version !== SIGNATURE_SCHEMA_VERSION) {
70
+ throw new SigningError(`SignatureRecord.signature_schema_version must be ${SIGNATURE_SCHEMA_VERSION}, ` +
71
+ `got ${record.signature_schema_version}`);
72
+ }
73
+ if (record.signed_seq < 0) {
74
+ throw new SigningError('SignatureRecord.signed_seq must be ≥ 0');
75
+ }
76
+ if (record.signed_event_hash.length !== 32) {
77
+ throw new SigningError(`SignatureRecord.signed_event_hash must be 32 bytes, got ${record.signed_event_hash.length}`);
78
+ }
79
+ if (record.signature.length !== 64) {
80
+ throw new SigningError(`SignatureRecord.signature must be 64 bytes (Ed25519), got ${record.signature.length}`);
81
+ }
82
+ if (!record.key_id) {
83
+ throw new SigningError('SignatureRecord.key_id must be non-empty');
84
+ }
85
+ if (record.public_key_der.length === 0) {
86
+ throw new SigningError('SignatureRecord.public_key_der must be non-empty');
87
+ }
88
+ if (record.signature_mode !== 'segment_head' && record.signature_mode !== 'per_event') {
89
+ throw new SigningError(`SignatureRecord.signature_mode must be 'segment_head' or 'per_event', got ${JSON.stringify(record.signature_mode)}`);
90
+ }
91
+ if (record.signed_payload.length === 0) {
92
+ throw new SigningError('SignatureRecord.signed_payload must be non-empty');
93
+ }
94
+ const derived = deriveKeyId(record.public_key_der);
95
+ if (record.key_id !== derived) {
96
+ throw new SigningError(`SignatureRecord.key_id=${JSON.stringify(record.key_id)} does not match ` +
97
+ `derived from public_key_der (${derived})`);
98
+ }
99
+ }
100
+ export const DEFAULT_SIGNATURE_POLICY = Object.freeze({
101
+ batch_size: 64,
102
+ max_idle_seconds: 60,
103
+ per_event: false,
104
+ });
105
+ export function makeSignaturePolicy(input) {
106
+ const merged = { ...DEFAULT_SIGNATURE_POLICY, ...input };
107
+ if (merged.batch_size < 1) {
108
+ throw new SigningError('SignaturePolicy.batch_size must be ≥ 1');
109
+ }
110
+ if (merged.max_idle_seconds < 1) {
111
+ throw new SigningError('SignaturePolicy.max_idle_seconds must be ≥ 1');
112
+ }
113
+ return Object.freeze({ ...merged });
114
+ }
115
+ // ----- KeyProvider abstract -----
116
+ const FORBIDDEN_KEY_PROVIDER_VERBS = new Set(['revoke', 'rotate', 'delete', 'replace']);
117
+ /**
118
+ * Abstract base for any signing-key access strategy.
119
+ *
120
+ * Forbidden-verb gate is enforced at constructor time (TS analog of
121
+ * Python's `__init_subclass__`). Any subclass declaring public
122
+ * methods named in {revoke, rotate, delete, replace} fails at first
123
+ * `new` call.
124
+ */
125
+ export class KeyProvider {
126
+ constructor() {
127
+ const proto = Object.getPrototypeOf(this);
128
+ const offenders = [];
129
+ for (const name of Object.getOwnPropertyNames(proto)) {
130
+ if (name === 'constructor')
131
+ continue;
132
+ if (name.startsWith('_'))
133
+ continue;
134
+ if (FORBIDDEN_KEY_PROVIDER_VERBS.has(name)) {
135
+ offenders.push(name);
136
+ }
137
+ }
138
+ if (offenders.length > 0) {
139
+ offenders.sort();
140
+ throw new KeyBoundaryError(`${this.constructor.name} declares forbidden mutating method(s) [${offenders.join(', ')}]; KeyProvider holds key access, not key authority. See ADR-0004 § 1 + adr_0005_signing_plan_20260517 § 1 D.`);
141
+ }
142
+ }
143
+ }
144
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/signing/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Concrete `KeyProvider` implementations — TypeScript mirror of
3
+ * `sdk/python/src/attestplane/signing/providers.py` (architect plan § 1 D
4
+ * + T6 review decision 4).
5
+ *
6
+ * Four providers:
7
+ *
8
+ * - `InMemoryKeyProvider` — tests / dev; optional 32-byte seed for
9
+ * deterministic keys.
10
+ * - `FileKeyProvider` — PKCS#8 PEM file on disk.
11
+ * - `EnvKeyProvider` — PKCS#8 PEM bytes from `process.env`.
12
+ * - `MultiSignerProvider` — plurality (any-of-n) composite per architect
13
+ * plan § 1 H. NOT a `KeyProvider` subclass: returns an array.
14
+ *
15
+ * Ed25519 recipe (load-bearing R1 risk mitigation):
16
+ *
17
+ * - **Seed → KeyObject**: PKCS#8 DER wrap path (RFC 8410). Node 22's
18
+ * JWK importer requires the public `x` alongside `d`, which would
19
+ * force us to recompute the point first — the PKCS#8 path wraps the
20
+ * raw 32-byte seed with a constant 16-byte prefix, byte-equal to the
21
+ * blob `cryptography`'s `Ed25519PrivateKey.from_private_bytes(seed)`
22
+ * produces when serialised. This deviates from the architect's
23
+ * initial JWK recipe per the T6 implementation revision dated
24
+ * 2026-05-17 (see `docs/architecture/adr_0005_t6_review_20260517.md`).
25
+ * - **SPKI DER export**: via the intermediate
26
+ * `createPublicKey(privateKey).export({format:'der', type:'spki'})` so
27
+ * the public-key bytes are byte-equal to Python's
28
+ * `Ed25519PrivateKey.public_key().public_bytes(DER, SubjectPublicKeyInfo)`.
29
+ */
30
+ import { type KeyObject } from 'node:crypto';
31
+ import { KeyProvider, type SigningMaterial } from './base.js';
32
+ export declare function seedToPrivateKey(seed: Uint8Array): KeyObject;
33
+ export declare function exportPublicKeyDer(privateKey: KeyObject): Uint8Array;
34
+ export interface InMemoryKeyProviderOptions {
35
+ readonly seed?: Uint8Array;
36
+ readonly provider_id?: string;
37
+ }
38
+ /**
39
+ * Holds an Ed25519 keypair in process memory.
40
+ *
41
+ * Suitable for tests, ephemeral substrates, and deployments where the
42
+ * key is generated at startup and never persisted.
43
+ *
44
+ * When `seed` is supplied, the same seed always produces the same
45
+ * Ed25519 key — required for conformance vectors. When `seed` is
46
+ * absent, a fresh random key is generated via Node `crypto`
47
+ * `generateKeyPairSync('ed25519')`.
48
+ */
49
+ export declare class InMemoryKeyProvider extends KeyProvider {
50
+ readonly provider_id: string;
51
+ readonly schema_version: 1;
52
+ private readonly _privateKey;
53
+ constructor(options?: InMemoryKeyProviderOptions);
54
+ getSigningMaterial(): SigningMaterial;
55
+ }
56
+ export interface FileKeyProviderOptions {
57
+ readonly passphrase?: Uint8Array;
58
+ readonly provider_id?: string;
59
+ }
60
+ /**
61
+ * Loads an Ed25519 private key from a PKCS#8 PEM file on disk.
62
+ *
63
+ * The file is read on EVERY `getSigningMaterial()` call; intentional
64
+ * design so file rotation (deployer replaces the file out-of-band) is
65
+ * picked up on the next signing call.
66
+ */
67
+ export declare class FileKeyProvider extends KeyProvider {
68
+ readonly provider_id: string;
69
+ readonly schema_version: 1;
70
+ private readonly _path;
71
+ private readonly _passphrase;
72
+ constructor(path: string, options?: FileKeyProviderOptions);
73
+ getSigningMaterial(): SigningMaterial;
74
+ }
75
+ export interface EnvKeyProviderOptions {
76
+ readonly passphrase?: Uint8Array;
77
+ readonly provider_id?: string;
78
+ }
79
+ /**
80
+ * Loads an Ed25519 private key from `process.env[envVar]`.
81
+ *
82
+ * The env var must contain a PEM-encoded PKCS#8 key (typical when a
83
+ * secret manager injects the key at runtime).
84
+ */
85
+ export declare class EnvKeyProvider extends KeyProvider {
86
+ readonly provider_id: string;
87
+ readonly schema_version: 1;
88
+ private readonly _envVar;
89
+ private readonly _passphrase;
90
+ constructor(envVar: string, options?: EnvKeyProviderOptions);
91
+ getSigningMaterial(): SigningMaterial;
92
+ }
93
+ /**
94
+ * Plurality (any-of-n) composite per architect plan § 1 H.
95
+ *
96
+ * Holds N `KeyProvider` instances and exposes their signing materials
97
+ * as a list. The `Signer` iterates and produces one `SignatureRecord`
98
+ * per provider per signed event.
99
+ *
100
+ * Intentionally NOT a `KeyProvider` subclass: a `KeyProvider` returns
101
+ * one `SigningMaterial`; this composite returns a list.
102
+ *
103
+ * Verification semantics: any valid signature from any trust-rooted
104
+ * `key_id` counts as "segment signed". Plurality, NOT k-of-n threshold
105
+ * (architect plan § 1 H — threshold explicitly out of scope).
106
+ */
107
+ export declare class MultiSignerProvider {
108
+ private readonly _providers;
109
+ constructor(providers: readonly KeyProvider[]);
110
+ get provider_ids(): readonly string[];
111
+ getSigningMaterials(): SigningMaterial[];
112
+ }
113
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/signing/providers.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EAGX,KAAK,eAAe,EAErB,MAAM,WAAW,CAAC;AAiBnB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAQ5D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAGpE;AAqCD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,IAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;gBAE5B,OAAO,GAAE,0BAA+B;IAepD,kBAAkB,IAAI,eAAe;CAGtC;AAID,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,IAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAErC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAW9D,kBAAkB,IAAI,eAAe;CActC;AAID,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,IAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAErC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;IAW/D,kBAAkB,IAAI,eAAe;CAetC;AAID;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAExC,SAAS,EAAE,SAAS,WAAW,EAAE;IAqB7C,IAAI,YAAY,IAAI,SAAS,MAAM,EAAE,CAEpC;IAED,mBAAmB,IAAI,eAAe,EAAE;CAGzC"}