run402 4.24.1 → 4.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.mjs +6 -6
- package/git-remote-run402.mjs +328 -0
- package/lib/command-manifest.mjs +13 -1
- package/lib/credentials.mjs +4 -0
- package/lib/deploy-v2.mjs +78 -1
- package/lib/doctor.mjs +80 -1
- package/lib/domains.mjs +0 -14
- package/lib/gitvault.mjs +582 -0
- package/lib/init.mjs +153 -5
- package/lib/org-context.mjs +44 -1
- package/lib/pay.test.mjs +0 -4
- package/package.json +8 -2
- package/sdk/dist/index.d.ts +20 -3
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +22 -3
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/namespaces/admin.d.ts +0 -5
- package/sdk/dist/namespaces/admin.d.ts.map +1 -1
- package/sdk/dist/namespaces/admin.js +0 -9
- package/sdk/dist/namespaces/admin.js.map +1 -1
- package/sdk/dist/namespaces/assets.d.ts +1 -20
- package/sdk/dist/namespaces/assets.d.ts.map +1 -1
- package/sdk/dist/namespaces/assets.js +0 -27
- package/sdk/dist/namespaces/assets.js.map +1 -1
- package/sdk/dist/namespaces/domains.d.ts +0 -19
- package/sdk/dist/namespaces/domains.d.ts.map +1 -1
- package/sdk/dist/namespaces/domains.js +0 -19
- package/sdk/dist/namespaces/domains.js.map +1 -1
- package/sdk/dist/namespaces/gitvault.crypto.d.ts +319 -0
- package/sdk/dist/namespaces/gitvault.crypto.d.ts.map +1 -0
- package/sdk/dist/namespaces/gitvault.crypto.js +690 -0
- package/sdk/dist/namespaces/gitvault.crypto.js.map +1 -0
- package/sdk/dist/namespaces/gitvault.d.ts +521 -0
- package/sdk/dist/namespaces/gitvault.d.ts.map +1 -0
- package/sdk/dist/namespaces/gitvault.js +786 -0
- package/sdk/dist/namespaces/gitvault.js.map +1 -0
- package/sdk/dist/namespaces/gitvault.types.d.ts +481 -0
- package/sdk/dist/namespaces/gitvault.types.d.ts.map +1 -0
- package/sdk/dist/namespaces/gitvault.types.js +19 -0
- package/sdk/dist/namespaces/gitvault.types.js.map +1 -0
- package/sdk/dist/namespaces/org.d.ts +1 -3
- package/sdk/dist/namespaces/org.d.ts.map +1 -1
- package/sdk/dist/namespaces/org.js +6 -10
- package/sdk/dist/namespaces/org.js.map +1 -1
- package/sdk/dist/namespaces/pay.d.ts +0 -8
- package/sdk/dist/namespaces/pay.d.ts.map +1 -1
- package/sdk/dist/namespaces/pay.js.map +1 -1
- package/sdk/dist/namespaces/projects.d.ts +2 -2
- package/sdk/dist/namespaces/projects.d.ts.map +1 -1
- package/sdk/dist/namespaces/projects.js +4 -12
- package/sdk/dist/namespaces/projects.js.map +1 -1
- package/sdk/dist/namespaces/secrets.d.ts +0 -2
- package/sdk/dist/namespaces/secrets.d.ts.map +1 -1
- package/sdk/dist/namespaces/secrets.js +3 -10
- package/sdk/dist/namespaces/secrets.js.map +1 -1
- package/sdk/dist/namespaces/subdomains.d.ts +0 -2
- package/sdk/dist/namespaces/subdomains.d.ts.map +1 -1
- package/sdk/dist/namespaces/subdomains.js +5 -16
- package/sdk/dist/namespaces/subdomains.js.map +1 -1
- package/sdk/dist/namespaces/transfers.d.ts +0 -2
- package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
- package/sdk/dist/namespaces/transfers.js +8 -10
- package/sdk/dist/namespaces/transfers.js.map +1 -1
- package/sdk/dist/namespaces/wallets.d.ts +0 -12
- package/sdk/dist/namespaces/wallets.d.ts.map +1 -1
- package/sdk/dist/namespaces/wallets.js +0 -14
- package/sdk/dist/namespaces/wallets.js.map +1 -1
- package/sdk/dist/node/gitvault-creation-journal.d.ts +222 -0
- package/sdk/dist/node/gitvault-creation-journal.d.ts.map +1 -0
- package/sdk/dist/node/gitvault-creation-journal.js +365 -0
- package/sdk/dist/node/gitvault-creation-journal.js.map +1 -0
- package/sdk/dist/node/gitvault-deploy.d.ts +211 -0
- package/sdk/dist/node/gitvault-deploy.d.ts.map +1 -0
- package/sdk/dist/node/gitvault-deploy.js +292 -0
- package/sdk/dist/node/gitvault-deploy.js.map +1 -0
- package/sdk/dist/node/gitvault-keystore.d.ts +207 -0
- package/sdk/dist/node/gitvault-keystore.d.ts.map +1 -0
- package/sdk/dist/node/gitvault-keystore.js +529 -0
- package/sdk/dist/node/gitvault-keystore.js.map +1 -0
- package/sdk/dist/node/gitvault-prune.d.ts +341 -0
- package/sdk/dist/node/gitvault-prune.d.ts.map +1 -0
- package/sdk/dist/node/gitvault-prune.js +410 -0
- package/sdk/dist/node/gitvault-prune.js.map +1 -0
- package/sdk/dist/node/gitvault-publication.d.ts +730 -0
- package/sdk/dist/node/gitvault-publication.d.ts.map +1 -0
- package/sdk/dist/node/gitvault-publication.js +1475 -0
- package/sdk/dist/node/gitvault-publication.js.map +1 -0
- package/sdk/dist/node/gitvault-snapshot.d.ts +227 -0
- package/sdk/dist/node/gitvault-snapshot.d.ts.map +1 -0
- package/sdk/dist/node/gitvault-snapshot.js +556 -0
- package/sdk/dist/node/gitvault-snapshot.js.map +1 -0
- package/sdk/dist/node/index.d.ts +11 -0
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +9 -0
- package/sdk/dist/node/index.js.map +1 -1
- package/sdk/dist/node/paid-fetch.d.ts.map +1 -1
- package/sdk/dist/node/paid-fetch.js +0 -4
- package/sdk/dist/node/paid-fetch.js.map +1 -1
- package/sdk/dist/node/sites-node.d.ts +1 -8
- package/sdk/dist/node/sites-node.d.ts.map +1 -1
- package/sdk/dist/node/sites-node.js +1 -7
- package/sdk/dist/node/sites-node.js.map +1 -1
- package/sdk/dist/scoped.d.ts +4 -35
- package/sdk/dist/scoped.d.ts.map +1 -1
- package/sdk/dist/scoped.js +9 -74
- package/sdk/dist/scoped.js.map +1 -1
- package/lib/sender-domain.mjs +0 -36
- package/sdk/dist/deprecate.d.ts +0 -23
- package/sdk/dist/deprecate.d.ts.map +0 -1
- package/sdk/dist/deprecate.js +0 -42
- package/sdk/dist/deprecate.js.map +0 -1
- package/sdk/dist/namespaces/sender-domain.d.ts +0 -47
- package/sdk/dist/namespaces/sender-domain.d.ts.map +0 -1
- package/sdk/dist/namespaces/sender-domain.js +0 -45
- package/sdk/dist/namespaces/sender-domain.js.map +0 -1
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gitvault — `r402s/v0` crypto core (protocol rev 40, §1 + §2; task 5.1).
|
|
3
|
+
*
|
|
4
|
+
* Pure, isomorphic (WebCrypto + noble + `@hpke/core`), no I/O. Everything
|
|
5
|
+
* byte-level the protocol pins lives here ONCE and is replayed against the
|
|
6
|
+
* frozen vector set (`gitvault.crypto.test.ts`):
|
|
7
|
+
*
|
|
8
|
+
* - JCS (RFC 8785) for the no-JSON-numbers profile + the strict-parse profile
|
|
9
|
+
* - the two hash rules: stored bytes (JCS INCLUDING `signature`) and the
|
|
10
|
+
* signature preimage `"r402s/v0/" + object_kind + "\n" + JCS(object minus signature)`
|
|
11
|
+
* - Ed25519 strict RFC 8032 — noble with `zip215: false` pinned; a
|
|
12
|
+
* ZIP215-only signature is REJECTED (vector `zip215-002`)
|
|
13
|
+
* - `lp` / `lp_opt` length prefixes + the open-id / open-binding preimages
|
|
14
|
+
* - HKDF-SHA-256 `k_obj` / `K_digest` derivations and HMAC keyed commitments
|
|
15
|
+
* - the XChaCha20-Poly1305 frame (`"R402S0"` ‖ suite byte ‖ 24-byte nonce ‖ ct‖tag)
|
|
16
|
+
* with its seven-member JCS AAD
|
|
17
|
+
* - the `key_envelope` HPKE seal/open (Base mode, DHKEM(X25519,HKDF-SHA256) /
|
|
18
|
+
* HKDF-SHA256 / ChaCha20-Poly1305) with the EXACT D188 `info` / AAD bytes
|
|
19
|
+
* - genesis key-binding + recovery-receipt checks
|
|
20
|
+
*
|
|
21
|
+
* Design rules carried from the protocol: HPKE is a NAMED implementation
|
|
22
|
+
* (`@hpke/core` + `@hpke/chacha20poly1305`), never assembled from primitives
|
|
23
|
+
* (D38); an envelope's signature is verified BEFORE any open; plain hashes of
|
|
24
|
+
* plaintext content never leave the client (every server-comparable digest is
|
|
25
|
+
* keyed); object ids are single-use key labels — callers MUST NOT re-encrypt
|
|
26
|
+
* under an id (retries read-and-compare).
|
|
27
|
+
*/
|
|
28
|
+
import { bytesToHex, hexToBytes } from "@noble/hashes/utils.js";
|
|
29
|
+
import { CipherSuite } from "@hpke/core";
|
|
30
|
+
import type { GitvaultAllocation, GitvaultDigestLabel, GitvaultEncryptedObjectKind, GitvaultEncryptionKeypair, GitvaultEnvelopeAad, GitvaultFrameAad, GitvaultKeyEnvelope, GitvaultKeyEnvelopeReceipt, GitvaultObjectKind, GitvaultRecoveryReceipt, GitvaultSealedFrame, GitvaultSealedKeyEnvelope, GitvaultSignedObject, GitvaultSigningKeypair, GitvaultStrictParseReason, GitvaultVaultGenesis } from "./gitvault.types.js";
|
|
31
|
+
/** Wire format tag (retained by decision D181 across the product rename). */
|
|
32
|
+
export declare const GITVAULT_FORMAT: "r402s/v0";
|
|
33
|
+
/** The one V0 cryptographic suite. */
|
|
34
|
+
export declare const GITVAULT_SUITE: "r402s-1";
|
|
35
|
+
/** Frame magic, bytes 0–5 of every encrypted object. */
|
|
36
|
+
export declare const GITVAULT_FRAME_MAGIC: "R402S0";
|
|
37
|
+
/** Frame suite byte (byte 6) and its two-char AAD spelling. */
|
|
38
|
+
export declare const GITVAULT_FRAME_SUITE_BYTE: 1;
|
|
39
|
+
export declare const GITVAULT_FRAME_SUITE_ID: "01";
|
|
40
|
+
/** Protocol §2: max plaintext per encrypted object (256 MiB). */
|
|
41
|
+
export declare const GITVAULT_MAX_PLAINTEXT_BYTES: number;
|
|
42
|
+
/** The genesis generation / epoch constants (schema consts). */
|
|
43
|
+
export declare const GITVAULT_GENESIS_GENERATION: "0000000000000000";
|
|
44
|
+
export declare const GITVAULT_GENESIS_EPOCH: "0000000000000001";
|
|
45
|
+
/** HPKE `info` label for `key_envelope` (D188). */
|
|
46
|
+
export declare const GITVAULT_ENVELOPE_INFO_LABEL: "r402s/v0/envelope";
|
|
47
|
+
/**
|
|
48
|
+
* The V0-A terminal-loss sentence — protocol §0 / client-surface spec. Doctor
|
|
49
|
+
* and status surfaces MUST state it verbatim while V0-A is current. Do not
|
|
50
|
+
* paraphrase; the wording is a reviewed product commitment.
|
|
51
|
+
*/
|
|
52
|
+
export declare const GITVAULT_TERMINAL_LOSS_STATEMENT: "whole-machine or whole-keystore loss is terminal for vault history until human envelopes ship";
|
|
53
|
+
/** Protocol §0 sentence in full, as `doctor`/`status` print it. */
|
|
54
|
+
export declare const GITVAULT_TERMINAL_LOSS_DOCTOR_TEXT: string;
|
|
55
|
+
export declare const GITVAULT_HEX16_RE: RegExp;
|
|
56
|
+
export declare const GITVAULT_HEX32_RE: RegExp;
|
|
57
|
+
export declare const GITVAULT_SHA256_RE: RegExp;
|
|
58
|
+
export declare const GITVAULT_OID40_RE: RegExp;
|
|
59
|
+
export declare const GITVAULT_VK_RE: RegExp;
|
|
60
|
+
export declare const GITVAULT_EK_RE: RegExp;
|
|
61
|
+
export declare const GITVAULT_SRC_RE: RegExp;
|
|
62
|
+
export declare const GITVAULT_SERVICE_KEY_ID_RE: RegExp;
|
|
63
|
+
export declare const GITVAULT_SIZE_BYTES_RE: RegExp;
|
|
64
|
+
/** 32 bytes base64url: 43 chars, final char in the 16-value padding class. */
|
|
65
|
+
export declare const GITVAULT_B64U_32_RE: RegExp;
|
|
66
|
+
/** 64 bytes base64url: 86 chars, final char ∈ {A,Q,g,w}. */
|
|
67
|
+
export declare const GITVAULT_B64U_64_RE: RegExp;
|
|
68
|
+
/** The HPKE-sealed K_repo: 48 bytes = exactly 64 base64url chars. */
|
|
69
|
+
export declare const GITVAULT_HPKE_CT_RE: RegExp;
|
|
70
|
+
export declare const GITVAULT_TIMESTAMP_RE: RegExp;
|
|
71
|
+
/** Canonical base64url (no padding, length mod 4 ≠ 1, zero trailing bits): decode→encode round-trips. */
|
|
72
|
+
export declare function isCanonicalBase64url(value: string): boolean;
|
|
73
|
+
/** Decode canonical base64url or throw (`GITVAULT_NONCANONICAL_BASE64URL`). */
|
|
74
|
+
export declare function fromBase64url(value: string, field?: string): Uint8Array;
|
|
75
|
+
export declare function toBase64url(bytes: Uint8Array): string;
|
|
76
|
+
/** RFC 3339 UTC ms `Z` with semantic calendar validation (D187: `2026-02-31` and a non-leap Feb 29 are rejects). */
|
|
77
|
+
export declare function isValidGitvaultTimestamp(value: string): boolean;
|
|
78
|
+
/** Format a Date as the protocol timestamp grammar (RFC 3339 UTC, milliseconds, `Z`). */
|
|
79
|
+
export declare function formatGitvaultTimestamp(date?: Date): string;
|
|
80
|
+
/** `lp(x)` = 4-byte big-endian UTF-8 byte length ‖ UTF-8 bytes (protocol §1). */
|
|
81
|
+
export declare function lp(value: string): Uint8Array;
|
|
82
|
+
/** `lp_opt(null)` = `0x00`; `lp_opt(x)` = `0x01` ‖ `lp(x)`. */
|
|
83
|
+
export declare function lpOpt(value: string | null): Uint8Array;
|
|
84
|
+
export declare function sha256Hex(bytes: Uint8Array): string;
|
|
85
|
+
/** CSPRNG bytes from the platform WebCrypto (protocol §2: all keys/nonces/ephemerals from the OS CSPRNG). */
|
|
86
|
+
export declare function randomBytes(length: number): Uint8Array;
|
|
87
|
+
/** A fresh `<prefix>_<32 lowercase hex>` id (protocol §1: ids are CSPRNG). */
|
|
88
|
+
export declare function newGitvaultId(prefix: string): string;
|
|
89
|
+
/** A fresh 32-lowercase-hex scalar (client_creation_id, capture_id, …). */
|
|
90
|
+
export declare function newHex32(): string;
|
|
91
|
+
/** RFC 8785 canonical JSON (no-numbers profile) as UTF-8 bytes. */
|
|
92
|
+
export declare function jcs(value: unknown): Uint8Array;
|
|
93
|
+
/** RFC 8785 canonical JSON as a string. */
|
|
94
|
+
export declare function jcsString(value: unknown): string;
|
|
95
|
+
/**
|
|
96
|
+
* The §1 strict-parse profile: reject ANY JSON number, duplicate members,
|
|
97
|
+
* invalid JSON, and any text that is not byte-for-byte the JCS of its value
|
|
98
|
+
* (member order, whitespace, escapes). Schema-awareness (unknown members,
|
|
99
|
+
* hex case, scalar lengths) is the caller's job.
|
|
100
|
+
*/
|
|
101
|
+
export declare function parseGitvaultStrict(text: string): unknown;
|
|
102
|
+
/** Classify a strict-parse failure (for vector replay + diagnostics). */
|
|
103
|
+
export declare function gitvaultStrictParseReason(error: unknown): GitvaultStrictParseReason | null;
|
|
104
|
+
/** Stored bytes of a signed object = JCS of the COMPLETE object including `signature`. */
|
|
105
|
+
export declare function storedBytes(object: GitvaultSignedObject): Uint8Array;
|
|
106
|
+
/** SHA-256 over stored bytes — what every `*_sha256` naming a signed object means. */
|
|
107
|
+
export declare function storedBytesSha256(object: GitvaultSignedObject): string;
|
|
108
|
+
/** Signature preimage = `"r402s/v0/" + object_kind + "\n" + JCS(object without its single top-level signature)`. */
|
|
109
|
+
export declare function signaturePreimage(objectKind: GitvaultObjectKind, objectWithoutSignature: Record<string, unknown>): Uint8Array;
|
|
110
|
+
export declare function ed25519PublicKey(seed: Uint8Array): Uint8Array;
|
|
111
|
+
export declare function ed25519Sign(message: Uint8Array, seed: Uint8Array): Uint8Array;
|
|
112
|
+
/**
|
|
113
|
+
* Strict RFC 8032 verification: `zip215: false` is PINNED. Non-canonical R or A
|
|
114
|
+
* encodings, non-canonical S, and wrong-length inputs are all `false` — never
|
|
115
|
+
* an exception a caller could mistake for a transport error.
|
|
116
|
+
*/
|
|
117
|
+
export declare function ed25519VerifyStrict(signature: Uint8Array, message: Uint8Array, publicKey: Uint8Array): boolean;
|
|
118
|
+
/** Sign an object under its `object_kind` domain; returns the complete signed object. */
|
|
119
|
+
export declare function signGitvaultObject<T extends {
|
|
120
|
+
object_kind: GitvaultObjectKind;
|
|
121
|
+
}>(objectWithoutSignature: T & {
|
|
122
|
+
signature?: never;
|
|
123
|
+
}, seed: Uint8Array): T & {
|
|
124
|
+
signature: string;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Verify a signed object against a raw public key. Exact scalar lengths are
|
|
128
|
+
* checked FIRST (an 85-char signature or a 42-char key is a schema reject,
|
|
129
|
+
* never a decode-time surprise), then strict Ed25519 under the object's domain.
|
|
130
|
+
*/
|
|
131
|
+
export declare function verifyGitvaultObject(object: GitvaultSignedObject, publicKey: Uint8Array | string): boolean;
|
|
132
|
+
/** Verify or throw `GITVAULT_SIGNATURE_INVALID`. */
|
|
133
|
+
export declare function assertGitvaultSignature(object: GitvaultSignedObject, publicKey: Uint8Array | string, context?: string): void;
|
|
134
|
+
/** First 16 bytes of SHA-256(raw pubkey), lowercase hex (32 chars). */
|
|
135
|
+
export declare function keyFingerprintHex(rawPublicKey: Uint8Array): string;
|
|
136
|
+
/** `vk_` fingerprint of a raw Ed25519 public key. */
|
|
137
|
+
export declare function vkFingerprint(rawPublicKey: Uint8Array): string;
|
|
138
|
+
/** `ek_` fingerprint of a raw X25519 public key. */
|
|
139
|
+
export declare function ekFingerprint(rawPublicKey: Uint8Array): string;
|
|
140
|
+
export declare function generateSigningKeypair(seed?: Uint8Array): GitvaultSigningKeypair;
|
|
141
|
+
export declare function generateEncryptionKeypair(privateKey?: Uint8Array): GitvaultEncryptionKeypair;
|
|
142
|
+
/** `k_obj` info = lp("r402s/v0") ‖ lp(suite) ‖ lp(repo_id) ‖ lp(epoch) ‖ lp(object_kind) ‖ lp(object_id) ‖ lp("L=32"). */
|
|
143
|
+
export declare function objectKeyInfo(repoId: string, epoch: string, objectKind: GitvaultEncryptedObjectKind, objectId: string): Uint8Array;
|
|
144
|
+
/** `k_obj = HKDF-SHA-256(ikm=K_repo, salt=∅, info, L=32)`. */
|
|
145
|
+
export declare function deriveObjectKey(kRepo: Uint8Array, repoId: string, epoch: string, objectKind: GitvaultEncryptedObjectKind, objectId: string): Uint8Array;
|
|
146
|
+
/** `K_digest` info = lp("r402s/v0") ‖ lp("r402s-1") ‖ lp(repo_id) ‖ lp(epoch) ‖ lp("digest") ‖ lp(label) ‖ lp("L=32"). */
|
|
147
|
+
export declare function digestKeyInfo(repoId: string, epoch: string, label: GitvaultDigestLabel): Uint8Array;
|
|
148
|
+
export declare function deriveDigestKey(kRepo: Uint8Array, repoId: string, epoch: string, label: GitvaultDigestLabel): Uint8Array;
|
|
149
|
+
/** Commitment = HMAC-SHA-256(K_digest(label), JCS(content)), lowercase hex. */
|
|
150
|
+
export declare function keyedCommitment(kDigest: Uint8Array, content: unknown): string;
|
|
151
|
+
/** The `"objectset"` content shape: `{oids:[sorted unique lowercase 40-hex]}`. */
|
|
152
|
+
export declare function objectsetContent(oids: Iterable<string>): {
|
|
153
|
+
oids: string[];
|
|
154
|
+
};
|
|
155
|
+
/** True iff an `objectset` content is already in canonical (sorted-unique) order. */
|
|
156
|
+
export declare function isCanonicalObjectset(content: {
|
|
157
|
+
oids: string[];
|
|
158
|
+
}): boolean;
|
|
159
|
+
/** The `"snapshot_oid"` content shape. */
|
|
160
|
+
export declare function snapshotOidContent(oid: string): {
|
|
161
|
+
oid: string;
|
|
162
|
+
format: "sha1";
|
|
163
|
+
};
|
|
164
|
+
/** `"r402s/v0/open-id" ‖ lp(org_id) ‖ lp(repo_id) ‖ lp(client_open_id)`. */
|
|
165
|
+
export declare function openIdPreimage(orgId: string, repoId: string, clientOpenId: string): Uint8Array;
|
|
166
|
+
/** `"r402s/v0/open-binding" ‖ lp(client_open_id) ‖ lp(base_head_sha256) ‖ lp_opt(prior) ‖ lp(requested_r2_cap_size_bytes)`. */
|
|
167
|
+
export declare function openBindingPreimage(clientOpenId: string, baseHeadSha256: string, priorCheckpointClaimSetSha256: string | null, requestedR2CapSizeBytes: string): Uint8Array;
|
|
168
|
+
/** The seven-member frame AAD, as the object JCS serializes. */
|
|
169
|
+
export declare function frameAad(repoId: string, objectKind: GitvaultEncryptedObjectKind, objectId: string, epoch: string): GitvaultFrameAad;
|
|
170
|
+
export interface GitvaultSealFrameInput {
|
|
171
|
+
/** The per-object key — derive with {@link deriveObjectKey}. */
|
|
172
|
+
k_obj: Uint8Array;
|
|
173
|
+
repo_id: string;
|
|
174
|
+
object_kind: GitvaultEncryptedObjectKind;
|
|
175
|
+
object_id: string;
|
|
176
|
+
epoch: string;
|
|
177
|
+
plaintext: Uint8Array;
|
|
178
|
+
/** 24-byte nonce; CSPRNG when omitted. Vectors inject it for determinism. */
|
|
179
|
+
nonce?: Uint8Array;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Seal a plaintext into the §2 frame: `"R402S0"` ‖ `0x01` ‖ nonce(24) ‖ ct‖tag.
|
|
183
|
+
* `ciphertext_sha256` covers the COMPLETE frame. Callers own the single-use
|
|
184
|
+
* rule: one object id, one seal — never re-encrypt under an id.
|
|
185
|
+
*/
|
|
186
|
+
export declare function sealFrame(input: GitvaultSealFrameInput): GitvaultSealedFrame;
|
|
187
|
+
export interface GitvaultOpenFrameInput {
|
|
188
|
+
k_obj: Uint8Array;
|
|
189
|
+
repo_id: string;
|
|
190
|
+
object_kind: GitvaultEncryptedObjectKind;
|
|
191
|
+
object_id: string;
|
|
192
|
+
epoch: string;
|
|
193
|
+
frame: Uint8Array;
|
|
194
|
+
/** When given, the frame's SHA-256 must equal the receipt BEFORE any decryption (the header is authenticated twice: by the receipt and by the AAD). */
|
|
195
|
+
expected_ciphertext_sha256?: string;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Open a §2 frame: header checked (magic, suite byte, length), receipt
|
|
199
|
+
* compared when supplied, then the AEAD opened under the seven-member AAD.
|
|
200
|
+
* No unverified streaming release — the whole plaintext or nothing.
|
|
201
|
+
*/
|
|
202
|
+
export declare function openFrame(input: GitvaultOpenFrameInput): Uint8Array;
|
|
203
|
+
/**
|
|
204
|
+
* The AEAD half of {@link openFrame} with the AAD supplied verbatim — the
|
|
205
|
+
* vector replay uses it to prove every one of the seven AAD members is
|
|
206
|
+
* authenticated (including the constant `suite`/`magic`/`suite_id` members
|
|
207
|
+
* that {@link openFrame}'s typed input cannot vary). Header already checked.
|
|
208
|
+
*/
|
|
209
|
+
export declare function openFrameWithAad(kObj: Uint8Array, frame: Uint8Array, aad: Uint8Array, objectId?: string): Uint8Array;
|
|
210
|
+
/** The one `r402s-1` HPKE suite: Base mode, DHKEM(X25519,HKDF-SHA256) 0x0020 / HKDF-SHA256 0x0001 / ChaCha20-Poly1305 0x0003. */
|
|
211
|
+
export declare function gitvaultHpkeSuite(): CipherSuite;
|
|
212
|
+
/** HPKE `info` (D188): lp("r402s/v0/envelope") ‖ lp("r402s-1") ‖ lp(lowerhex(SHA-256(recipient raw X25519 pubkey))) ‖ lp(created_by). */
|
|
213
|
+
export declare function envelopeInfo(recipientPublicKeyRaw: Uint8Array, createdBy: string): Uint8Array;
|
|
214
|
+
/** HPKE AAD (D188): JCS of exactly `{repo_id, epoch, recipient_kind:"principal", recipient_fingerprint}`. */
|
|
215
|
+
export declare function envelopeAad(repoId: string, epoch: string, recipientFingerprint: string): GitvaultEnvelopeAad;
|
|
216
|
+
export interface GitvaultHpkeSealInput {
|
|
217
|
+
recipient_public_key: Uint8Array;
|
|
218
|
+
info: Uint8Array;
|
|
219
|
+
aad: Uint8Array;
|
|
220
|
+
plaintext: Uint8Array;
|
|
221
|
+
/** RFC 9180 §7.1.3 `DeriveKeyPair(ikmE)` injection — TEST/vector determinism only; production seals use the OS CSPRNG. */
|
|
222
|
+
ikm_e?: Uint8Array;
|
|
223
|
+
}
|
|
224
|
+
/** Single-shot HPKE seal (Base mode) returning `{enc, ct}`. */
|
|
225
|
+
export declare function hpkeSeal(input: GitvaultHpkeSealInput): Promise<{
|
|
226
|
+
enc: Uint8Array;
|
|
227
|
+
ct: Uint8Array;
|
|
228
|
+
}>;
|
|
229
|
+
export interface GitvaultHpkeOpenInput {
|
|
230
|
+
recipient_private_key: Uint8Array;
|
|
231
|
+
enc: Uint8Array;
|
|
232
|
+
info: Uint8Array;
|
|
233
|
+
aad: Uint8Array;
|
|
234
|
+
ct: Uint8Array;
|
|
235
|
+
}
|
|
236
|
+
/** Single-shot HPKE open; any failure is `GITVAULT_HPKE_OPEN_FAILED` (never garbage plaintext). */
|
|
237
|
+
export declare function hpkeOpen(input: GitvaultHpkeOpenInput): Promise<Uint8Array>;
|
|
238
|
+
export interface GitvaultSealKeyEnvelopeInput {
|
|
239
|
+
/** The raw 32-byte K_repo — the ENTIRE plaintext. */
|
|
240
|
+
k_repo: Uint8Array;
|
|
241
|
+
repo_id: string;
|
|
242
|
+
epoch: string;
|
|
243
|
+
/** The recipient's raw X25519 public key. */
|
|
244
|
+
recipient_public_key: Uint8Array;
|
|
245
|
+
/** The creator's signing keypair; its `vk_` fingerprint becomes `created_by`. */
|
|
246
|
+
signer: GitvaultSigningKeypair;
|
|
247
|
+
created_at: string;
|
|
248
|
+
/** Vector determinism only. */
|
|
249
|
+
ikm_e?: Uint8Array;
|
|
250
|
+
}
|
|
251
|
+
/** Seal + sign a `key_envelope` for one principal; returns the object with its stored-bytes identity + genesis receipt. */
|
|
252
|
+
export declare function sealKeyEnvelope(input: GitvaultSealKeyEnvelopeInput): Promise<GitvaultSealedKeyEnvelope>;
|
|
253
|
+
export interface GitvaultOpenKeyEnvelopeInput {
|
|
254
|
+
envelope: GitvaultKeyEnvelope;
|
|
255
|
+
/** The recipient's raw X25519 keypair (the public half feeds `info`; the fingerprint must match the path identity). */
|
|
256
|
+
recipient: GitvaultEncryptionKeypair;
|
|
257
|
+
/** The creator's raw Ed25519 public key — the envelope signature is verified BEFORE any open. */
|
|
258
|
+
signer_public_key: Uint8Array | string;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Open a `key_envelope`: exact-scalar checks → signature (strict, domain
|
|
262
|
+
* `key_envelope`) → path identity (recipient fingerprint = ours) → HPKE open
|
|
263
|
+
* with the D188 info/AAD. Returns the raw 32-byte K_repo.
|
|
264
|
+
*/
|
|
265
|
+
export declare function openKeyEnvelope(input: GitvaultOpenKeyEnvelopeInput): Promise<Uint8Array>;
|
|
266
|
+
export interface GitvaultBuildGenesisInput {
|
|
267
|
+
repo_id: string;
|
|
268
|
+
org_id: string;
|
|
269
|
+
project_id: string;
|
|
270
|
+
allocation_nonce: string;
|
|
271
|
+
creator_signing: GitvaultSigningKeypair;
|
|
272
|
+
creator_encryption_public_key: Uint8Array;
|
|
273
|
+
envelope_receipt: GitvaultKeyEnvelopeReceipt;
|
|
274
|
+
created_at: string;
|
|
275
|
+
}
|
|
276
|
+
/** Build + sign a `vault_genesis` (generation 0, epoch 1, the creator's single envelope). */
|
|
277
|
+
export declare function buildVaultGenesis(input: GitvaultBuildGenesisInput): GitvaultVaultGenesis;
|
|
278
|
+
/** A named genesis key-binding failure (semantic constraints `genesis-key-bindings` / `envelope-receipt-binding`). */
|
|
279
|
+
export type GitvaultGenesisBindingProblem = "envelope_count" | "envelope_epoch" | "envelope_recipient_fingerprint" | "writer_key_id" | "stored_envelope_hash" | "stored_envelope_size" | "stored_envelope_repo_id" | "stored_envelope_epoch" | "stored_envelope_recipient_fingerprint" | "stored_envelope_created_by";
|
|
280
|
+
/**
|
|
281
|
+
* The genesis key bindings (round-10 A6): exactly one envelope at epoch 1 whose
|
|
282
|
+
* `recipient_fingerprint` is the creator's `ek_`; `writer_key_id` is the
|
|
283
|
+
* creator's `vk_`; and, when the stored envelope is supplied, the receipt's
|
|
284
|
+
* hash/size name its stored bytes and its path identity + `created_by` equal
|
|
285
|
+
* the genesis values. Schema-valid-but-protocol-invalid objects surface here.
|
|
286
|
+
*/
|
|
287
|
+
export declare function checkGenesisKeyBindings(genesis: GitvaultVaultGenesis, storedEnvelope?: GitvaultKeyEnvelope): GitvaultGenesisBindingProblem[];
|
|
288
|
+
export interface GitvaultBuildRecoveryReceiptInput {
|
|
289
|
+
repo_id: string;
|
|
290
|
+
org_id: string;
|
|
291
|
+
project_id: string;
|
|
292
|
+
genesis_sha256: string;
|
|
293
|
+
creator_signing: GitvaultSigningKeypair;
|
|
294
|
+
creator_encryption_public_key: Uint8Array;
|
|
295
|
+
}
|
|
296
|
+
/** Build + sign the creator's `recovery_receipt` (emitted at ACTIVE; integrity data, not a secret). */
|
|
297
|
+
export declare function buildRecoveryReceipt(input: GitvaultBuildRecoveryReceiptInput): GitvaultRecoveryReceipt;
|
|
298
|
+
export type GitvaultRecoveryReceiptProblem = "signature" | "genesis_sha256" | "repo_id" | "org_id" | "project_id" | "creator_signing_fingerprint" | "creator_encryption_fingerprint";
|
|
299
|
+
/**
|
|
300
|
+
* Check a recovery receipt against a genesis it claims to pin: the receipt's
|
|
301
|
+
* signature (under the genesis's creator key), the genesis stored-bytes hash,
|
|
302
|
+
* and every identity field. A substituted, internally consistent vault fails
|
|
303
|
+
* on `genesis_sha256` — exactly the fabricated-vault scenario.
|
|
304
|
+
*/
|
|
305
|
+
export declare function checkRecoveryReceipt(receipt: GitvaultRecoveryReceipt, genesis: GitvaultVaultGenesis): GitvaultRecoveryReceiptProblem[];
|
|
306
|
+
/**
|
|
307
|
+
* Field-level checks on an `allocation` for THIS creation attempt (the
|
|
308
|
+
* control-plane signature itself is verified through the service-key registry,
|
|
309
|
+
* which task 5.4 wires; pass `service_public_key` once it is pinned).
|
|
310
|
+
*/
|
|
311
|
+
export declare function checkAllocation(allocation: GitvaultAllocation, expected: {
|
|
312
|
+
client_creation_id: string;
|
|
313
|
+
creator_signing_fingerprint: string;
|
|
314
|
+
creator_encryption_fingerprint: string;
|
|
315
|
+
org_id: string;
|
|
316
|
+
project_id: string;
|
|
317
|
+
}, servicePublicKey?: Uint8Array | string): string[];
|
|
318
|
+
export { bytesToHex, hexToBytes };
|
|
319
|
+
//# sourceMappingURL=gitvault.crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitvault.crypto.d.ts","sourceRoot":"","sources":["../../src/namespaces/gitvault.crypto.ts"],"names":[],"mappings":"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"}
|