@opendatalabs/personal-server-ts-core 1.9.0 → 1.10.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/dist/derivatives/compute.d.ts.map +1 -1
- package/dist/derivatives/compute.js +10 -3
- package/dist/derivatives/compute.js.map +1 -1
- package/dist/derivatives/e2ee/aad.d.ts +22 -0
- package/dist/derivatives/e2ee/aad.d.ts.map +1 -0
- package/dist/derivatives/e2ee/aad.js +32 -0
- package/dist/derivatives/e2ee/aad.js.map +1 -0
- package/dist/derivatives/e2ee/attestation.d.ts +122 -0
- package/dist/derivatives/e2ee/attestation.d.ts.map +1 -0
- package/dist/derivatives/e2ee/attestation.js +217 -0
- package/dist/derivatives/e2ee/attestation.js.map +1 -0
- package/dist/derivatives/e2ee/index.d.ts +6 -0
- package/dist/derivatives/e2ee/index.d.ts.map +1 -0
- package/dist/derivatives/e2ee/index.js +6 -0
- package/dist/derivatives/e2ee/index.js.map +1 -0
- package/dist/derivatives/e2ee/jcs.d.ts +17 -0
- package/dist/derivatives/e2ee/jcs.d.ts.map +1 -0
- package/dist/derivatives/e2ee/jcs.js +55 -0
- package/dist/derivatives/e2ee/jcs.js.map +1 -0
- package/dist/derivatives/e2ee/phala.d.ts +55 -0
- package/dist/derivatives/e2ee/phala.d.ts.map +1 -0
- package/dist/derivatives/e2ee/phala.js +167 -0
- package/dist/derivatives/e2ee/phala.js.map +1 -0
- package/dist/derivatives/e2ee/suite.d.ts +56 -0
- package/dist/derivatives/e2ee/suite.d.ts.map +1 -0
- package/dist/derivatives/e2ee/suite.js +164 -0
- package/dist/derivatives/e2ee/suite.js.map +1 -0
- package/dist/derivatives/index.d.ts +2 -1
- package/dist/derivatives/index.d.ts.map +1 -1
- package/dist/derivatives/index.js +1 -0
- package/dist/derivatives/index.js.map +1 -1
- package/dist/derivatives/inference.d.ts +48 -16
- package/dist/derivatives/inference.d.ts.map +1 -1
- package/dist/derivatives/inference.js +132 -68
- package/dist/derivatives/inference.js.map +1 -1
- package/dist/schemas/server-config.d.ts +2 -0
- package/dist/schemas/server-config.d.ts.map +1 -1
- package/dist/schemas/server-config.js +5 -0
- package/dist/schemas/server-config.js.map +1 -1
- package/dist/test-utils/e2ee-fixtures.d.ts +94 -0
- package/dist/test-utils/e2ee-fixtures.d.ts.map +1 -0
- package/dist/test-utils/e2ee-fixtures.js +116 -0
- package/dist/test-utils/e2ee-fixtures.js.map +1 -0
- package/dist/test-utils/e2ee-gateway.d.ts +61 -0
- package/dist/test-utils/e2ee-gateway.d.ts.map +1 -0
- package/dist/test-utils/e2ee-gateway.js +248 -0
- package/dist/test-utils/e2ee-gateway.js.map +1 -0
- package/dist/test-utils/index.d.ts +2 -0
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +2 -0
- package/dist/test-utils/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/derivatives/compute.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAO/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,yDAAyD;IACzD,WAAW,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzC,gEAAgE;IAChE,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,KAAK,IAAI,CAAC;IACX,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,oBAAoB,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,kBAAkB,GAAG,qBAAqB,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/derivatives/compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,17 @@ import { verifyDataWritePolicy, } from "../policy/data-write.js";
|
|
|
15
15
|
import { InferenceRequestError } from "./inference.js";
|
|
16
16
|
import { buildQuestionMessages, parseAnswer, trimSourceData, } from "./prompt.js";
|
|
17
17
|
const DEFAULT_RETRY_DELAYS_MS = [1_000, 4_000];
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Transient: no response, rate limited or a provider-side failure. An
|
|
20
|
+
* explicit `retryable` hint (E2EE key verification or decryption failures
|
|
21
|
+
* are permanent) wins over the status rule.
|
|
22
|
+
*/
|
|
19
23
|
function isRetryableInferenceError(err) {
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
if (!(err instanceof InferenceRequestError))
|
|
25
|
+
return false;
|
|
26
|
+
if (err.retryable !== undefined)
|
|
27
|
+
return err.retryable;
|
|
28
|
+
return err.status === null || err.status === 429 || err.status >= 500;
|
|
22
29
|
}
|
|
23
30
|
/**
|
|
24
31
|
* Run `attempt` up to `delays.length + 1` times while `retryable(err)`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../src/derivatives/compute.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../src/derivatives/compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E2EE v2 associated data (spec section 6): RFC 8785 JCS bytes binding every
|
|
3
|
+
* ciphertext to its field path and request context. Byte-exact examples are
|
|
4
|
+
* pinned by the spec test vectors in aad.test.ts.
|
|
5
|
+
*/
|
|
6
|
+
export declare const E2EE_REQUEST_AAD_PURPOSE = "aci.e2ee.request.v2";
|
|
7
|
+
export declare const E2EE_RESPONSE_AAD_PURPOSE = "aci.e2ee.response.v2";
|
|
8
|
+
export interface E2eeRequestContext {
|
|
9
|
+
/** The selected service key's `algo`. */
|
|
10
|
+
algo: string;
|
|
11
|
+
/** The request's top-level `model`, byte-exact. */
|
|
12
|
+
model: string;
|
|
13
|
+
/** `X-E2EE-Nonce`, 64 hex characters. */
|
|
14
|
+
nonce: string;
|
|
15
|
+
/** `X-E2EE-Timestamp`, Unix seconds. */
|
|
16
|
+
ts: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function requestFieldAad(context: E2eeRequestContext, field: string): Uint8Array;
|
|
19
|
+
export declare function responseFieldAad(context: E2eeRequestContext, field: string,
|
|
20
|
+
/** The clear response `id`, or "" when the response has none. */
|
|
21
|
+
id: string): Uint8Array;
|
|
22
|
+
//# sourceMappingURL=aad.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aad.d.ts","sourceRoot":"","sources":["../../../src/derivatives/e2ee/aad.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,MAAM,GACZ,UAAU,CASZ;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,MAAM;AACb,iEAAiE;AACjE,EAAE,EAAE,MAAM,GACT,UAAU,CAUZ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E2EE v2 associated data (spec section 6): RFC 8785 JCS bytes binding every
|
|
3
|
+
* ciphertext to its field path and request context. Byte-exact examples are
|
|
4
|
+
* pinned by the spec test vectors in aad.test.ts.
|
|
5
|
+
*/
|
|
6
|
+
import { canonicalJsonBytes } from "./jcs.js";
|
|
7
|
+
export const E2EE_REQUEST_AAD_PURPOSE = "aci.e2ee.request.v2";
|
|
8
|
+
export const E2EE_RESPONSE_AAD_PURPOSE = "aci.e2ee.response.v2";
|
|
9
|
+
export function requestFieldAad(context, field) {
|
|
10
|
+
return canonicalJsonBytes({
|
|
11
|
+
purpose: E2EE_REQUEST_AAD_PURPOSE,
|
|
12
|
+
algo: context.algo,
|
|
13
|
+
model: context.model,
|
|
14
|
+
field,
|
|
15
|
+
nonce: context.nonce,
|
|
16
|
+
ts: context.ts,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function responseFieldAad(context, field,
|
|
20
|
+
/** The clear response `id`, or "" when the response has none. */
|
|
21
|
+
id) {
|
|
22
|
+
return canonicalJsonBytes({
|
|
23
|
+
purpose: E2EE_RESPONSE_AAD_PURPOSE,
|
|
24
|
+
algo: context.algo,
|
|
25
|
+
model: context.model,
|
|
26
|
+
id,
|
|
27
|
+
field,
|
|
28
|
+
nonce: context.nonce,
|
|
29
|
+
ts: context.ts,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=aad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aad.js","sourceRoot":"","sources":["../../../src/derivatives/e2ee/aad.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAahE,MAAM,UAAU,eAAe,CAC7B,OAA2B,EAC3B,KAAa;IAEb,OAAO,kBAAkB,CAAC;QACxB,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,EAAE,EAAE,OAAO,CAAC,EAAE;KACf,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAA2B,EAC3B,KAAa;AACb,iEAAiE;AACjE,EAAU;IAEV,OAAO,kBAAkB,CAAC;QACxB,OAAO,EAAE,yBAAyB;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,EAAE;QACF,KAAK;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,EAAE,EAAE,OAAO,CAAC,EAAE;KACf,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attested key fetch for E2EE v2: GET `/aci/attestation?nonce=<64 hex>` on
|
|
3
|
+
* the inference base URL (the Vana relay in production, which must pass the
|
|
4
|
+
* route through unchanged), verify the ACI binding chain structurally, and
|
|
5
|
+
* select the X25519 E2EE key from the quote-bound keyset.
|
|
6
|
+
*
|
|
7
|
+
* What is verified here (ACI spec sections 3.1, 3.2, 4, 9.1):
|
|
8
|
+
* - api_version aci/1, tee_type tdx, service advertises E2EE version 2
|
|
9
|
+
* - sha256(JCS(workload_keyset)) equals workload_keyset_digest
|
|
10
|
+
* - sha256 of the section 3.2 statement built from that digest and OUR
|
|
11
|
+
* nonce equals attestation.report_data (freshness + keyset binding)
|
|
12
|
+
* - the TDX evidence's quote_report_data carries report_data zero-padded
|
|
13
|
+
* - now < not_after, and not_after is not implausibly far away
|
|
14
|
+
* - the selected key has the X25519 suite algo and a 32-byte public key
|
|
15
|
+
*
|
|
16
|
+
* What is NOT verified here: the hardware quote itself (DCAP/TDX signature
|
|
17
|
+
* chain to the Intel root, RTMR replay, compose-hash provenance). That is
|
|
18
|
+
* the `verifyEvidence` hook: the Node server can plug in a DCAP verifier
|
|
19
|
+
* (e.g. @phala/aci-verifier); without it the key is trusted on the TLS
|
|
20
|
+
* origin of the report plus the structural chain above.
|
|
21
|
+
* TODO(e2ee-quote-verification): wire a DCAP quote verifier in the server.
|
|
22
|
+
*/
|
|
23
|
+
export declare const ACI_API_VERSION = "aci/1";
|
|
24
|
+
export declare const ACI_REPORT_DATA_PURPOSE = "aci.report_data.v1";
|
|
25
|
+
export declare const E2EE_VERSION = "2";
|
|
26
|
+
/** The relay-independent origin of the Phala gateway, used as a fallback. */
|
|
27
|
+
export declare const PHALA_GATEWAY_BASE_URL = "https://inference.phala.com/v1";
|
|
28
|
+
export interface AciKeysetEntry {
|
|
29
|
+
key_id: string;
|
|
30
|
+
algo: string;
|
|
31
|
+
public_key: string;
|
|
32
|
+
}
|
|
33
|
+
export interface AciWorkloadKeyset {
|
|
34
|
+
subject: string | null;
|
|
35
|
+
not_after: number;
|
|
36
|
+
receipt_signing_keys: AciKeysetEntry[];
|
|
37
|
+
e2ee_public_keys: AciKeysetEntry[];
|
|
38
|
+
tls_public_keys: Array<{
|
|
39
|
+
spki_sha256: string;
|
|
40
|
+
domain?: string;
|
|
41
|
+
}>;
|
|
42
|
+
[key: string]: unknown;
|
|
43
|
+
}
|
|
44
|
+
export interface AciAttestationReport {
|
|
45
|
+
api_version: string;
|
|
46
|
+
workload_keyset_digest: string;
|
|
47
|
+
attestation: {
|
|
48
|
+
tee_type: string;
|
|
49
|
+
workload_keyset: AciWorkloadKeyset;
|
|
50
|
+
report_data: string;
|
|
51
|
+
source_provenance?: Record<string, unknown> | null;
|
|
52
|
+
evidence?: Record<string, unknown>;
|
|
53
|
+
[key: string]: unknown;
|
|
54
|
+
};
|
|
55
|
+
service_capabilities?: {
|
|
56
|
+
supported_e2ee_versions?: string[];
|
|
57
|
+
serving?: string;
|
|
58
|
+
[key: string]: unknown;
|
|
59
|
+
};
|
|
60
|
+
[key: string]: unknown;
|
|
61
|
+
}
|
|
62
|
+
export interface GatewayE2eeKey {
|
|
63
|
+
algo: string;
|
|
64
|
+
keyId: string;
|
|
65
|
+
/** Raw 32-byte X25519 key the request fields are encrypted to. */
|
|
66
|
+
publicKey: Uint8Array;
|
|
67
|
+
/** The keyset entry's `public_key` verbatim: the `X-Model-Pub-Key` value. */
|
|
68
|
+
publicKeyHex: string;
|
|
69
|
+
/** `workload_keyset_digest` of the verified report (the pin). */
|
|
70
|
+
keysetDigest: string;
|
|
71
|
+
notAfter: number;
|
|
72
|
+
/** Where the report was fetched from. */
|
|
73
|
+
source: string;
|
|
74
|
+
report: AciAttestationReport;
|
|
75
|
+
}
|
|
76
|
+
export type E2eeAttestationErrorCode = "fetch_failed" | "malformed_report" | "keyset_digest_mismatch" | "report_data_mismatch" | "keyset_expired" | "e2ee_unsupported" | "no_e2ee_key" | "evidence_rejected";
|
|
77
|
+
/** Carries no request data; safe to log and to surface as a compute error. */
|
|
78
|
+
export declare class E2eeAttestationError extends Error {
|
|
79
|
+
readonly code: E2eeAttestationErrorCode;
|
|
80
|
+
constructor(code: E2eeAttestationErrorCode, message: string);
|
|
81
|
+
}
|
|
82
|
+
export interface FetchGatewayE2eeKeyOptions {
|
|
83
|
+
/** Chat completions base, e.g. `https://relay.example/v1`. */
|
|
84
|
+
baseUrl: string;
|
|
85
|
+
fetch?: typeof fetch;
|
|
86
|
+
/** Milliseconds since epoch (default Date.now). */
|
|
87
|
+
clock?: () => number;
|
|
88
|
+
/** Nonce source; tests pin it. */
|
|
89
|
+
random?: (length: number) => Uint8Array;
|
|
90
|
+
/** Require this `key_id` in addition to the algo (default: algo only). */
|
|
91
|
+
expectedKeyId?: string;
|
|
92
|
+
/** Hardware evidence verification hook (see the module comment). */
|
|
93
|
+
verifyEvidence?: (report: AciAttestationReport) => Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* When the base URL answers 404/405 for the attestation route (a relay
|
|
96
|
+
* without the passthrough yet) the report is fetched from here instead;
|
|
97
|
+
* `null` disables the fallback. Default: the Phala gateway origin.
|
|
98
|
+
*/
|
|
99
|
+
fallbackBaseUrl?: string | null;
|
|
100
|
+
timeoutMs?: number;
|
|
101
|
+
}
|
|
102
|
+
/** ACI section 3.1: `"sha256:" || hex(sha256(JCS(workload_keyset)))`. */
|
|
103
|
+
export declare function workloadKeysetDigest(keyset: AciWorkloadKeyset): Promise<string>;
|
|
104
|
+
/** ACI section 3.2: the statement bytes are fixed; no JSON escaping needed. */
|
|
105
|
+
export declare function reportDataFor(keysetDigest: string, nonce: string | null): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Structural verification of a report against the nonce it was requested
|
|
108
|
+
* with (ACI section 9.1 steps 2 and 3, plus the E2EE v2 capability). Throws
|
|
109
|
+
* E2eeAttestationError; returns the verified keyset digest.
|
|
110
|
+
*/
|
|
111
|
+
export declare function verifyAciReportBinding(report: AciAttestationReport, nonce: string, nowSeconds: number): Promise<string>;
|
|
112
|
+
/** The X25519 suite entry (spec section 7: clients select keys by algo). */
|
|
113
|
+
export declare function selectX25519Key(keyset: AciWorkloadKeyset, expectedKeyId?: string): {
|
|
114
|
+
entry: AciKeysetEntry;
|
|
115
|
+
publicKey: Uint8Array;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Fetch, verify and select the gateway's E2EE key. Fail closed: any
|
|
119
|
+
* verification failure throws and no key is returned.
|
|
120
|
+
*/
|
|
121
|
+
export declare function fetchGatewayE2eeKey(options: FetchGatewayE2eeKeyOptions): Promise<GatewayE2eeKey>;
|
|
122
|
+
//# sourceMappingURL=attestation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/derivatives/e2ee/attestation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attested key fetch for E2EE v2: GET `/aci/attestation?nonce=<64 hex>` on
|
|
3
|
+
* the inference base URL (the Vana relay in production, which must pass the
|
|
4
|
+
* route through unchanged), verify the ACI binding chain structurally, and
|
|
5
|
+
* select the X25519 E2EE key from the quote-bound keyset.
|
|
6
|
+
*
|
|
7
|
+
* What is verified here (ACI spec sections 3.1, 3.2, 4, 9.1):
|
|
8
|
+
* - api_version aci/1, tee_type tdx, service advertises E2EE version 2
|
|
9
|
+
* - sha256(JCS(workload_keyset)) equals workload_keyset_digest
|
|
10
|
+
* - sha256 of the section 3.2 statement built from that digest and OUR
|
|
11
|
+
* nonce equals attestation.report_data (freshness + keyset binding)
|
|
12
|
+
* - the TDX evidence's quote_report_data carries report_data zero-padded
|
|
13
|
+
* - now < not_after, and not_after is not implausibly far away
|
|
14
|
+
* - the selected key has the X25519 suite algo and a 32-byte public key
|
|
15
|
+
*
|
|
16
|
+
* What is NOT verified here: the hardware quote itself (DCAP/TDX signature
|
|
17
|
+
* chain to the Intel root, RTMR replay, compose-hash provenance). That is
|
|
18
|
+
* the `verifyEvidence` hook: the Node server can plug in a DCAP verifier
|
|
19
|
+
* (e.g. @phala/aci-verifier); without it the key is trusted on the TLS
|
|
20
|
+
* origin of the report plus the structural chain above.
|
|
21
|
+
* TODO(e2ee-quote-verification): wire a DCAP quote verifier in the server.
|
|
22
|
+
*/
|
|
23
|
+
import { canonicalJsonBytes } from "./jcs.js";
|
|
24
|
+
import { E2EE_ALGO_X25519, bytesToHex, parseX25519PublicKey, randomBytes, } from "./suite.js";
|
|
25
|
+
export const ACI_API_VERSION = "aci/1";
|
|
26
|
+
export const ACI_REPORT_DATA_PURPOSE = "aci.report_data.v1";
|
|
27
|
+
export const E2EE_VERSION = "2";
|
|
28
|
+
/** The relay-independent origin of the Phala gateway, used as a fallback. */
|
|
29
|
+
export const PHALA_GATEWAY_BASE_URL = "https://inference.phala.com/v1";
|
|
30
|
+
const MAX_KEYSET_LIFETIME_S = 400 * 24 * 3600;
|
|
31
|
+
const DEFAULT_FETCH_TIMEOUT_MS = 15_000;
|
|
32
|
+
/** Carries no request data; safe to log and to surface as a compute error. */
|
|
33
|
+
export class E2eeAttestationError extends Error {
|
|
34
|
+
code;
|
|
35
|
+
constructor(code, message) {
|
|
36
|
+
super(message);
|
|
37
|
+
this.code = code;
|
|
38
|
+
this.name = "E2eeAttestationError";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function isRecord(value) {
|
|
42
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
43
|
+
}
|
|
44
|
+
async function sha256Hex(bytes) {
|
|
45
|
+
const buffer = new ArrayBuffer(bytes.byteLength);
|
|
46
|
+
new Uint8Array(buffer).set(bytes);
|
|
47
|
+
const digest = await globalThis.crypto.subtle.digest("SHA-256", buffer);
|
|
48
|
+
return bytesToHex(new Uint8Array(digest));
|
|
49
|
+
}
|
|
50
|
+
/** ACI section 3.1: `"sha256:" || hex(sha256(JCS(workload_keyset)))`. */
|
|
51
|
+
export async function workloadKeysetDigest(keyset) {
|
|
52
|
+
return `sha256:${await sha256Hex(canonicalJsonBytes(keyset))}`;
|
|
53
|
+
}
|
|
54
|
+
/** ACI section 3.2: the statement bytes are fixed; no JSON escaping needed. */
|
|
55
|
+
export async function reportDataFor(keysetDigest, nonce) {
|
|
56
|
+
const nonceJson = nonce === null ? "null" : `"${nonce}"`;
|
|
57
|
+
const statement = `{"keyset_digest":"${keysetDigest}","nonce":${nonceJson},"purpose":"${ACI_REPORT_DATA_PURPOSE}"}`;
|
|
58
|
+
return sha256Hex(new TextEncoder().encode(statement));
|
|
59
|
+
}
|
|
60
|
+
function parseReport(body) {
|
|
61
|
+
if (!isRecord(body) ||
|
|
62
|
+
typeof body.api_version !== "string" ||
|
|
63
|
+
typeof body.workload_keyset_digest !== "string" ||
|
|
64
|
+
!isRecord(body.attestation) ||
|
|
65
|
+
typeof body.attestation.tee_type !== "string" ||
|
|
66
|
+
typeof body.attestation.report_data !== "string" ||
|
|
67
|
+
!isRecord(body.attestation.workload_keyset)) {
|
|
68
|
+
throw new E2eeAttestationError("malformed_report", "attestation report is missing required fields");
|
|
69
|
+
}
|
|
70
|
+
const keyset = body.attestation.workload_keyset;
|
|
71
|
+
if (typeof keyset.not_after !== "number" ||
|
|
72
|
+
!Array.isArray(keyset.e2ee_public_keys)) {
|
|
73
|
+
throw new E2eeAttestationError("malformed_report", "workload keyset is missing not_after or e2ee_public_keys");
|
|
74
|
+
}
|
|
75
|
+
return body;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Structural verification of a report against the nonce it was requested
|
|
79
|
+
* with (ACI section 9.1 steps 2 and 3, plus the E2EE v2 capability). Throws
|
|
80
|
+
* E2eeAttestationError; returns the verified keyset digest.
|
|
81
|
+
*/
|
|
82
|
+
export async function verifyAciReportBinding(report, nonce, nowSeconds) {
|
|
83
|
+
if (report.api_version !== ACI_API_VERSION) {
|
|
84
|
+
throw new E2eeAttestationError("malformed_report", `unsupported attestation api_version ${report.api_version}`);
|
|
85
|
+
}
|
|
86
|
+
if (report.attestation.tee_type !== "tdx") {
|
|
87
|
+
throw new E2eeAttestationError("malformed_report", `unsupported tee_type ${report.attestation.tee_type}`);
|
|
88
|
+
}
|
|
89
|
+
const versions = report.service_capabilities?.supported_e2ee_versions;
|
|
90
|
+
if (!Array.isArray(versions) || !versions.includes(E2EE_VERSION)) {
|
|
91
|
+
throw new E2eeAttestationError("e2ee_unsupported", "service does not advertise E2EE version 2");
|
|
92
|
+
}
|
|
93
|
+
const keyset = report.attestation.workload_keyset;
|
|
94
|
+
const digest = await workloadKeysetDigest(keyset);
|
|
95
|
+
if (digest !== report.workload_keyset_digest) {
|
|
96
|
+
throw new E2eeAttestationError("keyset_digest_mismatch", "workload_keyset_digest does not match the embedded keyset");
|
|
97
|
+
}
|
|
98
|
+
const expectedReportData = await reportDataFor(digest, nonce);
|
|
99
|
+
const reportData = report.attestation.report_data.toLowerCase();
|
|
100
|
+
if (reportData !== expectedReportData) {
|
|
101
|
+
throw new E2eeAttestationError("report_data_mismatch", "report_data does not bind the keyset digest and our nonce");
|
|
102
|
+
}
|
|
103
|
+
const quoteReportData = report.attestation.evidence?.quote_report_data;
|
|
104
|
+
if (typeof quoteReportData === "string") {
|
|
105
|
+
const slot = quoteReportData.toLowerCase();
|
|
106
|
+
if (slot.length !== 128 ||
|
|
107
|
+
!slot.startsWith(reportData) ||
|
|
108
|
+
!/^0+$/.test(slot.slice(64))) {
|
|
109
|
+
throw new E2eeAttestationError("report_data_mismatch", "quote report-data slot does not carry report_data zero-padded");
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (!(nowSeconds < keyset.not_after)) {
|
|
113
|
+
throw new E2eeAttestationError("keyset_expired", "workload keyset has expired");
|
|
114
|
+
}
|
|
115
|
+
if (keyset.not_after - nowSeconds > MAX_KEYSET_LIFETIME_S) {
|
|
116
|
+
throw new E2eeAttestationError("keyset_expired", "workload keyset not_after is implausibly far in the future");
|
|
117
|
+
}
|
|
118
|
+
return digest;
|
|
119
|
+
}
|
|
120
|
+
/** The X25519 suite entry (spec section 7: clients select keys by algo). */
|
|
121
|
+
export function selectX25519Key(keyset, expectedKeyId) {
|
|
122
|
+
for (const entry of keyset.e2ee_public_keys) {
|
|
123
|
+
if (!isRecord(entry) || entry.algo !== E2EE_ALGO_X25519)
|
|
124
|
+
continue;
|
|
125
|
+
if (typeof entry.public_key !== "string")
|
|
126
|
+
continue;
|
|
127
|
+
if (expectedKeyId !== undefined && entry.key_id !== expectedKeyId) {
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
let publicKey;
|
|
131
|
+
try {
|
|
132
|
+
publicKey = parseX25519PublicKey(entry.public_key);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
throw new E2eeAttestationError("no_e2ee_key", "the X25519 E2EE key in the keyset is malformed");
|
|
136
|
+
}
|
|
137
|
+
return { entry, publicKey };
|
|
138
|
+
}
|
|
139
|
+
throw new E2eeAttestationError("no_e2ee_key", expectedKeyId
|
|
140
|
+
? `keyset has no ${E2EE_ALGO_X25519} key with key_id ${expectedKeyId}`
|
|
141
|
+
: `keyset has no ${E2EE_ALGO_X25519} key`);
|
|
142
|
+
}
|
|
143
|
+
function attestationUrl(baseUrl, nonce) {
|
|
144
|
+
return `${baseUrl.replace(/\/+$/, "")}/aci/attestation?nonce=${nonce}`;
|
|
145
|
+
}
|
|
146
|
+
async function fetchReport(doFetch, url, timeoutMs) {
|
|
147
|
+
let response;
|
|
148
|
+
try {
|
|
149
|
+
response = await doFetch(url, {
|
|
150
|
+
method: "GET",
|
|
151
|
+
headers: { Accept: "application/json" },
|
|
152
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
const name = err instanceof Error ? err.name : "Error";
|
|
157
|
+
throw new E2eeAttestationError("fetch_failed", `attestation fetch failed before a response (${name})`);
|
|
158
|
+
}
|
|
159
|
+
if (!response.ok) {
|
|
160
|
+
return { status: response.status, body: null };
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
return { status: response.status, body: await response.json() };
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
throw new E2eeAttestationError("malformed_report", "attestation response was not JSON");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Fetch, verify and select the gateway's E2EE key. Fail closed: any
|
|
171
|
+
* verification failure throws and no key is returned.
|
|
172
|
+
*/
|
|
173
|
+
export async function fetchGatewayE2eeKey(options) {
|
|
174
|
+
const doFetch = options.fetch ?? fetch;
|
|
175
|
+
const clock = options.clock ?? Date.now;
|
|
176
|
+
const random = options.random ?? randomBytes;
|
|
177
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
|
|
178
|
+
const nonce = bytesToHex(random(32));
|
|
179
|
+
const fallback = options.fallbackBaseUrl === undefined
|
|
180
|
+
? PHALA_GATEWAY_BASE_URL
|
|
181
|
+
: options.fallbackBaseUrl;
|
|
182
|
+
let source = options.baseUrl;
|
|
183
|
+
let fetched = await fetchReport(doFetch, attestationUrl(source, nonce), timeoutMs);
|
|
184
|
+
if ((fetched.status === 404 || fetched.status === 405) &&
|
|
185
|
+
fallback !== null &&
|
|
186
|
+
fallback.replace(/\/+$/, "") !== source.replace(/\/+$/, "")) {
|
|
187
|
+
source = fallback;
|
|
188
|
+
fetched = await fetchReport(doFetch, attestationUrl(source, nonce), timeoutMs);
|
|
189
|
+
}
|
|
190
|
+
if (fetched.body === null) {
|
|
191
|
+
throw new E2eeAttestationError("fetch_failed", `attestation fetch failed with status ${fetched.status}`);
|
|
192
|
+
}
|
|
193
|
+
const report = parseReport(fetched.body);
|
|
194
|
+
const nowSeconds = Math.floor(clock() / 1000);
|
|
195
|
+
const keysetDigest = await verifyAciReportBinding(report, nonce, nowSeconds);
|
|
196
|
+
const { entry, publicKey } = selectX25519Key(report.attestation.workload_keyset, options.expectedKeyId);
|
|
197
|
+
if (options.verifyEvidence) {
|
|
198
|
+
try {
|
|
199
|
+
await options.verifyEvidence(report);
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
203
|
+
throw new E2eeAttestationError("evidence_rejected", `attestation evidence rejected: ${reason}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
algo: entry.algo,
|
|
208
|
+
keyId: entry.key_id,
|
|
209
|
+
publicKey,
|
|
210
|
+
publicKeyHex: entry.public_key,
|
|
211
|
+
keysetDigest,
|
|
212
|
+
notAfter: report.attestation.workload_keyset.not_after,
|
|
213
|
+
source,
|
|
214
|
+
report,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=attestation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../../src/derivatives/e2ee/attestation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,oBAAoB,EACpB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAChC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAEvE,MAAM,qBAAqB,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9C,MAAM,wBAAwB,GAAG,MAAM,CAAC;AA6DxC,8EAA8E;AAC9E,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAE3B;IADlB,YACkB,IAA8B,EAC9C,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAA0B;QAI9C,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAuBD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAiB;IACxC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAyB;IAEzB,OAAO,UAAU,MAAM,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAAoB,EACpB,KAAoB;IAEpB,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;IACzD,MAAM,SAAS,GAAG,qBAAqB,YAAY,aAAa,SAAS,eAAe,uBAAuB,IAAI,CAAC;IACpH,OAAO,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,IACE,CAAC,QAAQ,CAAC,IAAI,CAAC;QACf,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QACpC,OAAO,IAAI,CAAC,sBAAsB,KAAK,QAAQ;QAC/C,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,QAAQ;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,KAAK,QAAQ;QAChD,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAC3C,CAAC;QACD,MAAM,IAAI,oBAAoB,CAC5B,kBAAkB,EAClB,+CAA+C,CAChD,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;IAChD,IACE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EACvC,CAAC;QACD,MAAM,IAAI,oBAAoB,CAC5B,kBAAkB,EAClB,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,IAAuC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA4B,EAC5B,KAAa,EACb,UAAkB;IAElB,IAAI,MAAM,CAAC,WAAW,KAAK,eAAe,EAAE,CAAC;QAC3C,MAAM,IAAI,oBAAoB,CAC5B,kBAAkB,EAClB,uCAAuC,MAAM,CAAC,WAAW,EAAE,CAC5D,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC1C,MAAM,IAAI,oBAAoB,CAC5B,kBAAkB,EAClB,wBAAwB,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CACtD,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,oBAAoB,CAC5B,kBAAkB,EAClB,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAC7C,MAAM,IAAI,oBAAoB,CAC5B,wBAAwB,EACxB,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAChE,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,EACtB,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACvE,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAC3C,IACE,IAAI,CAAC,MAAM,KAAK,GAAG;YACnB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAC5B,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAC5B,CAAC;YACD,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,EACtB,+DAA+D,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,oBAAoB,CAC5B,gBAAgB,EAChB,6BAA6B,CAC9B,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,GAAG,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC1D,MAAM,IAAI,oBAAoB,CAC5B,gBAAgB,EAChB,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAC7B,MAAyB,EACzB,aAAsB;IAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAAE,SAAS;QAClE,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;YAAE,SAAS;QACnD,IAAI,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAClE,SAAS;QACX,CAAC;QACD,IAAI,SAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,oBAAoB,CAC5B,aAAa,EACb,gDAAgD,CACjD,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,oBAAoB,CAC5B,aAAa,EACb,aAAa;QACX,CAAC,CAAC,iBAAiB,gBAAgB,oBAAoB,aAAa,EAAE;QACtE,CAAC,CAAC,iBAAiB,gBAAgB,MAAM,CAC5C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,KAAa;IACpD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,0BAA0B,KAAK,EAAE,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAqB,EACrB,GAAW,EACX,SAAiB;IAEjB,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACvD,MAAM,IAAI,oBAAoB,CAC5B,cAAc,EACd,+CAA+C,IAAI,GAAG,CACvD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,oBAAoB,CAC5B,kBAAkB,EAClB,mCAAmC,CACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAmC;IAEnC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,wBAAwB,CAAC;IAChE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,QAAQ,GACZ,OAAO,CAAC,eAAe,KAAK,SAAS;QACnC,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IAE9B,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAC7B,IAAI,OAAO,GAAG,MAAM,WAAW,CAC7B,OAAO,EACP,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B,SAAS,CACV,CAAC;IACF,IACE,CAAC,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC;QAClD,QAAQ,KAAK,IAAI;QACjB,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAC3D,CAAC;QACD,MAAM,GAAG,QAAQ,CAAC;QAClB,OAAO,GAAG,MAAM,WAAW,CACzB,OAAO,EACP,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,oBAAoB,CAC5B,cAAc,EACd,wCAAwC,OAAO,CAAC,MAAM,EAAE,CACzD,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,eAAe,CAC1C,MAAM,CAAC,WAAW,CAAC,eAAe,EAClC,OAAO,CAAC,aAAa,CACtB,CAAC;IACF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,IAAI,oBAAoB,CAC5B,mBAAmB,EACnB,kCAAkC,MAAM,EAAE,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,SAAS;QACT,YAAY,EAAE,KAAK,CAAC,UAAU;QAC9B,YAAY;QACZ,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS;QACtD,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { canonicalJsonBytes, canonicalizeJson } from "./jcs.js";
|
|
2
|
+
export { E2EE_REQUEST_AAD_PURPOSE, E2EE_RESPONSE_AAD_PURPOSE, requestFieldAad, responseFieldAad, type E2eeRequestContext, } from "./aad.js";
|
|
3
|
+
export { E2EE_ALGO_X25519, E2EE_HKDF_INFO_X25519, E2eeCipherError, bytesToHex, decryptField, encryptField, generateX25519KeyPair, hexToBytes, importX25519PrivateKey, parseX25519PublicKey, randomBytes, type DecryptFieldInput, type E2eeKeyPair, type EncryptFieldInput, } from "./suite.js";
|
|
4
|
+
export { ACI_API_VERSION, ACI_REPORT_DATA_PURPOSE, E2EE_VERSION, E2eeAttestationError, PHALA_GATEWAY_BASE_URL, fetchGatewayE2eeKey, reportDataFor, selectX25519Key, verifyAciReportBinding, workloadKeysetDigest, type AciAttestationReport, type AciKeysetEntry, type AciWorkloadKeyset, type E2eeAttestationErrorCode, type FetchGatewayE2eeKeyOptions, type GatewayE2eeKey, } from "./attestation.js";
|
|
5
|
+
export { ACI_HEADER_KEYSET_DIGEST, DEFAULT_E2EE_KEY_TTL_MS, E2EE_HEADER_CLIENT_PUB_KEY, E2EE_HEADER_MODEL_PUB_KEY, E2EE_HEADER_NONCE, E2EE_HEADER_TIMESTAMP, E2EE_HEADER_VERSION, createPhalaE2eeEncryption, type PhalaE2eeEncryption, type PhalaE2eeEncryptionOptions, } from "./phala.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/derivatives/e2ee/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,GAChC,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { canonicalJsonBytes, canonicalizeJson } from "./jcs.js";
|
|
2
|
+
export { E2EE_REQUEST_AAD_PURPOSE, E2EE_RESPONSE_AAD_PURPOSE, requestFieldAad, responseFieldAad, } from "./aad.js";
|
|
3
|
+
export { E2EE_ALGO_X25519, E2EE_HKDF_INFO_X25519, E2eeCipherError, bytesToHex, decryptField, encryptField, generateX25519KeyPair, hexToBytes, importX25519PrivateKey, parseX25519PublicKey, randomBytes, } from "./suite.js";
|
|
4
|
+
export { ACI_API_VERSION, ACI_REPORT_DATA_PURPOSE, E2EE_VERSION, E2eeAttestationError, PHALA_GATEWAY_BASE_URL, fetchGatewayE2eeKey, reportDataFor, selectX25519Key, verifyAciReportBinding, workloadKeysetDigest, } from "./attestation.js";
|
|
5
|
+
export { ACI_HEADER_KEYSET_DIGEST, DEFAULT_E2EE_KEY_TTL_MS, E2EE_HEADER_CLIENT_PUB_KEY, E2EE_HEADER_MODEL_PUB_KEY, E2EE_HEADER_NONCE, E2EE_HEADER_TIMESTAMP, E2EE_HEADER_VERSION, createPhalaE2eeEncryption, } from "./phala.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/derivatives/e2ee/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,GAEjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,GAIZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GAOrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,GAG1B,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 8785 JSON Canonicalization Scheme (JCS), the subset the E2EE v2 and
|
|
3
|
+
* ACI protocols need: object members sorted by UTF-16 code units, no
|
|
4
|
+
* whitespace, ES number-to-string serialization, JSON.stringify string
|
|
5
|
+
* escaping (which is the RFC 8785 escaping: the two-character forms for
|
|
6
|
+
* control characters that have them, `\u00xx` lowercase otherwise, no
|
|
7
|
+
* escaping of non-ASCII).
|
|
8
|
+
*
|
|
9
|
+
* Only JSON data is accepted: `undefined`, functions, symbols, bigints and
|
|
10
|
+
* non-finite numbers throw instead of being silently dropped, since a
|
|
11
|
+
* canonical form that differs from the peer's would only show up as an
|
|
12
|
+
* AEAD failure.
|
|
13
|
+
*/
|
|
14
|
+
export declare function canonicalizeJson(value: unknown): string;
|
|
15
|
+
/** UTF-8 bytes of the canonical form. */
|
|
16
|
+
export declare function canonicalJsonBytes(value: unknown): Uint8Array;
|
|
17
|
+
//# sourceMappingURL=jcs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jcs.d.ts","sourceRoot":"","sources":["../../../src/derivatives/e2ee/jcs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkCvD;AAID,yCAAyC;AACzC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAE7D"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 8785 JSON Canonicalization Scheme (JCS), the subset the E2EE v2 and
|
|
3
|
+
* ACI protocols need: object members sorted by UTF-16 code units, no
|
|
4
|
+
* whitespace, ES number-to-string serialization, JSON.stringify string
|
|
5
|
+
* escaping (which is the RFC 8785 escaping: the two-character forms for
|
|
6
|
+
* control characters that have them, `\u00xx` lowercase otherwise, no
|
|
7
|
+
* escaping of non-ASCII).
|
|
8
|
+
*
|
|
9
|
+
* Only JSON data is accepted: `undefined`, functions, symbols, bigints and
|
|
10
|
+
* non-finite numbers throw instead of being silently dropped, since a
|
|
11
|
+
* canonical form that differs from the peer's would only show up as an
|
|
12
|
+
* AEAD failure.
|
|
13
|
+
*/
|
|
14
|
+
export function canonicalizeJson(value) {
|
|
15
|
+
if (value === null)
|
|
16
|
+
return "null";
|
|
17
|
+
switch (typeof value) {
|
|
18
|
+
case "boolean":
|
|
19
|
+
return value ? "true" : "false";
|
|
20
|
+
case "number":
|
|
21
|
+
if (!Number.isFinite(value)) {
|
|
22
|
+
throw new TypeError("JCS: non-finite number");
|
|
23
|
+
}
|
|
24
|
+
// ES Number::toString, which JSON.stringify uses; -0 serializes as 0.
|
|
25
|
+
return JSON.stringify(value);
|
|
26
|
+
case "string":
|
|
27
|
+
return JSON.stringify(value);
|
|
28
|
+
case "object": {
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
return `[${value.map((item) => canonicalizeJson(item)).join(",")}]`;
|
|
31
|
+
}
|
|
32
|
+
const record = value;
|
|
33
|
+
// Array.prototype.sort with no comparator orders by UTF-16 code units,
|
|
34
|
+
// which is exactly the RFC 8785 member ordering.
|
|
35
|
+
const keys = Object.keys(record).sort();
|
|
36
|
+
const members = [];
|
|
37
|
+
for (const key of keys) {
|
|
38
|
+
const member = record[key];
|
|
39
|
+
if (member === undefined) {
|
|
40
|
+
throw new TypeError(`JCS: undefined member "${key}"`);
|
|
41
|
+
}
|
|
42
|
+
members.push(`${JSON.stringify(key)}:${canonicalizeJson(member)}`);
|
|
43
|
+
}
|
|
44
|
+
return `{${members.join(",")}}`;
|
|
45
|
+
}
|
|
46
|
+
default:
|
|
47
|
+
throw new TypeError(`JCS: unsupported value of type ${typeof value}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const encoder = new TextEncoder();
|
|
51
|
+
/** UTF-8 bytes of the canonical form. */
|
|
52
|
+
export function canonicalJsonBytes(value) {
|
|
53
|
+
return encoder.encode(canonicalizeJson(value));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=jcs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jcs.js","sourceRoot":"","sources":["../../../src/derivatives/e2ee/jcs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;YAChD,CAAC;YACD,sEAAsE;YACtE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACtE,CAAC;YACD,MAAM,MAAM,GAAG,KAAgC,CAAC;YAChD,uEAAuE;YACvE,iDAAiD;YACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,IAAI,SAAS,CAAC,0BAA0B,GAAG,GAAG,CAAC,CAAC;gBACxD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAClC,CAAC;QACD;YACE,MAAM,IAAI,SAAS,CAAC,kCAAkC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,yCAAyC;AACzC,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC"}
|