burnledger 0.8.1 → 0.9.1
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/README.md +144 -2
- package/dist/cjs/anchor.d.ts +5 -3
- package/dist/cjs/anchor.d.ts.map +1 -1
- package/dist/cjs/anchor.js +10 -4
- package/dist/cjs/anchor.js.map +1 -1
- package/dist/cjs/client.d.ts +95 -0
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +175 -54
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/customer-keys.d.ts +73 -1
- package/dist/cjs/customer-keys.d.ts.map +1 -1
- package/dist/cjs/customer-keys.js +329 -3
- package/dist/cjs/customer-keys.js.map +1 -1
- package/dist/cjs/enclave-registration.d.ts +165 -0
- package/dist/cjs/enclave-registration.d.ts.map +1 -0
- package/dist/cjs/enclave-registration.js +287 -0
- package/dist/cjs/enclave-registration.js.map +1 -0
- package/dist/cjs/enclave-seal.d.ts +43 -0
- package/dist/cjs/enclave-seal.d.ts.map +1 -1
- package/dist/cjs/enclave-seal.js +62 -1
- package/dist/cjs/enclave-seal.js.map +1 -1
- package/dist/cjs/errors.d.ts +10 -0
- package/dist/cjs/errors.d.ts.map +1 -1
- package/dist/cjs/errors.js +11 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.browser.d.ts +7 -3
- package/dist/cjs/index.browser.d.ts.map +1 -1
- package/dist/cjs/index.browser.js +6 -3
- package/dist/cjs/index.browser.js.map +1 -1
- package/dist/cjs/index.d.ts +22 -10
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +75 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/key-group.d.ts +80 -0
- package/dist/cjs/key-group.d.ts.map +1 -0
- package/dist/cjs/key-group.js +136 -0
- package/dist/cjs/key-group.js.map +1 -0
- package/dist/cjs/models.d.ts +60 -0
- package/dist/cjs/models.d.ts.map +1 -1
- package/dist/cjs/models.js +63 -0
- package/dist/cjs/models.js.map +1 -1
- package/dist/cjs/node-runtime.d.ts +40 -0
- package/dist/cjs/node-runtime.d.ts.map +1 -0
- package/dist/cjs/node-runtime.js +42 -0
- package/dist/cjs/node-runtime.js.map +1 -0
- package/dist/cjs/status-document.d.ts +25 -0
- package/dist/cjs/status-document.d.ts.map +1 -0
- package/dist/cjs/status-document.js +62 -0
- package/dist/cjs/status-document.js.map +1 -0
- package/dist/cjs/verify.d.ts +108 -3
- package/dist/cjs/verify.d.ts.map +1 -1
- package/dist/cjs/verify.js +451 -171
- package/dist/cjs/verify.js.map +1 -1
- package/dist/cjs/web-verifier.d.ts +23 -3
- package/dist/cjs/web-verifier.d.ts.map +1 -1
- package/dist/cjs/web-verifier.js +31 -5
- package/dist/cjs/web-verifier.js.map +1 -1
- package/dist/cjs/webhooks.d.ts +9 -2
- package/dist/cjs/webhooks.d.ts.map +1 -1
- package/dist/cjs/webhooks.js +29 -11
- package/dist/cjs/webhooks.js.map +1 -1
- package/dist/esm/anchor.d.ts +5 -3
- package/dist/esm/anchor.d.ts.map +1 -1
- package/dist/esm/anchor.js +10 -4
- package/dist/esm/anchor.js.map +1 -1
- package/dist/esm/cli.d.ts +30 -17
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +142 -83
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/client.d.ts +95 -0
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +175 -21
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/customer-keys.d.ts +73 -1
- package/dist/esm/customer-keys.d.ts.map +1 -1
- package/dist/esm/customer-keys.js +323 -3
- package/dist/esm/customer-keys.js.map +1 -1
- package/dist/esm/enclave-registration.d.ts +165 -0
- package/dist/esm/enclave-registration.d.ts.map +1 -0
- package/dist/esm/enclave-registration.js +277 -0
- package/dist/esm/enclave-registration.js.map +1 -0
- package/dist/esm/enclave-seal.d.ts +43 -0
- package/dist/esm/enclave-seal.d.ts.map +1 -1
- package/dist/esm/enclave-seal.js +61 -1
- package/dist/esm/enclave-seal.js.map +1 -1
- package/dist/esm/errors.d.ts +10 -0
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +10 -0
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.browser.d.ts +7 -3
- package/dist/esm/index.browser.d.ts.map +1 -1
- package/dist/esm/index.browser.js +6 -3
- package/dist/esm/index.browser.js.map +1 -1
- package/dist/esm/index.d.ts +22 -10
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +30 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/key-group.d.ts +80 -0
- package/dist/esm/key-group.d.ts.map +1 -0
- package/dist/esm/key-group.js +130 -0
- package/dist/esm/key-group.js.map +1 -0
- package/dist/esm/models.d.ts +60 -0
- package/dist/esm/models.d.ts.map +1 -1
- package/dist/esm/models.js +59 -0
- package/dist/esm/models.js.map +1 -1
- package/dist/esm/node-runtime.d.ts +40 -0
- package/dist/esm/node-runtime.d.ts.map +1 -0
- package/dist/esm/node-runtime.js +38 -0
- package/dist/esm/node-runtime.js.map +1 -0
- package/dist/esm/status-document.d.ts +25 -0
- package/dist/esm/status-document.d.ts.map +1 -0
- package/dist/esm/status-document.js +59 -0
- package/dist/esm/status-document.js.map +1 -0
- package/dist/esm/verify.d.ts +108 -3
- package/dist/esm/verify.d.ts.map +1 -1
- package/dist/esm/verify.js +448 -171
- package/dist/esm/verify.js.map +1 -1
- package/dist/esm/web-verifier.d.ts +23 -3
- package/dist/esm/web-verifier.d.ts.map +1 -1
- package/dist/esm/web-verifier.js +27 -5
- package/dist/esm/web-verifier.js.map +1 -1
- package/dist/esm/webhooks.d.ts +9 -2
- package/dist/esm/webhooks.d.ts.map +1 -1
- package/dist/esm/webhooks.js +29 -11
- package/dist/esm/webhooks.js.map +1 -1
- package/package.json +1 -1
- package/src/anchor.ts +10 -4
- package/src/cli.ts +145 -78
- package/src/client.ts +241 -25
- package/src/customer-keys.ts +373 -3
- package/src/enclave-registration.ts +402 -0
- package/src/enclave-seal.ts +108 -1
- package/src/errors.ts +11 -0
- package/src/index.browser.ts +9 -3
- package/src/index.ts +48 -6
- package/src/key-group.ts +181 -0
- package/src/models.ts +131 -0
- package/src/node-runtime.ts +57 -0
- package/src/status-document.ts +59 -0
- package/src/verify.ts +565 -177
- package/src/web-verifier.ts +36 -3
- package/src/webhooks.ts +28 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASpE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASpE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtE,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC;;;+CAG+C;AAC/C,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EACtC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB"}
|
|
@@ -41,9 +41,12 @@ Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function (
|
|
|
41
41
|
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return verify_js_1.bytesToHex; } });
|
|
42
42
|
const crypto_browser_js_1 = require("./crypto-browser.js");
|
|
43
43
|
const verify_js_2 = require("./verify.js");
|
|
44
|
-
/** Verify all signatures on a deletion certificate offline.
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
/** Verify all signatures on a deletion certificate offline. Pass
|
|
45
|
+
* `{ requireAuthorization }` to refuse a record unless its systems are certified
|
|
46
|
+
* under a key id you name, by an enclave image that requires that key group's
|
|
47
|
+
* signature to register a system (ADR-025). */
|
|
48
|
+
function verifyCertificate(certificate, publicKeys, options) {
|
|
49
|
+
return (0, verify_js_2.verifyCertificate)(crypto_browser_js_1.browserCrypto, certificate, publicKeys, options);
|
|
47
50
|
}
|
|
48
51
|
/** Verify the transparency proof embedded in a certificate. */
|
|
49
52
|
function verifyTransparency(certificate, publicKeys) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;AAEH,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AAGnB,yCAWqB;AAVnB,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AACR,gHAAA,mBAAmB,OAAA;AACnB,0GAAA,aAAa,OAAA;AACb,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA;AACX,yGAAA,YAAY,OAAA;AACZ,8GAAA,iBAAiB,OAAA;AAGnB,qCAAsC;AAA7B,oGAAA,SAAS,OAAA;AA8BlB,2EAA2E;AAC3E,0EAA0E;AAC1E,yCAAkF;AAAzE,wGAAA,WAAW,OAAA;AAAE,qHAAA,wBAAwB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAE5D,iDAA4C;AAAnC,0GAAA,SAAS,OAAA;AAIlB,yCAAoE;AAA3D,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,uGAAA,UAAU,OAAA;AAE9C,2DAAoD;AACpD,2CAKqB;
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;AAEH,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AAGnB,yCAWqB;AAVnB,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AACR,gHAAA,mBAAmB,OAAA;AACnB,0GAAA,aAAa,OAAA;AACb,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA;AACX,yGAAA,YAAY,OAAA;AACZ,8GAAA,iBAAiB,OAAA;AAGnB,qCAAsC;AAA7B,oGAAA,SAAS,OAAA;AA8BlB,2EAA2E;AAC3E,0EAA0E;AAC1E,yCAAkF;AAAzE,wGAAA,WAAW,OAAA;AAAE,qHAAA,wBAAwB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAE5D,iDAA4C;AAAnC,0GAAA,SAAS,OAAA;AAIlB,yCAAoE;AAA3D,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,uGAAA,UAAU,OAAA;AAE9C,2DAAoD;AACpD,2CAKqB;AAQrB;;;+CAG+C;AAC/C,2BACE,WAAiB,EACjB,UAAsC,EACtC,OAAuB;IAEvB,OAAO,IAAA,6BAAkB,EAAC,iCAAa,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAED,+DAA+D;AAC/D,4BACE,WAAiB,EACjB,UAAsC;IAEtC,OAAO,IAAA,8BAAmB,EAAC,iCAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACrE,CAAC;AAED,uEAAuE;AACvE,0BACE,MAAc,EACd,IAAuB;IAEvB,OAAO,IAAA,4BAAiB,EAAC,iCAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,4EAA4E;AAC5E,2BACE,OAAe,EACf,OAAe,EACf,OAAmB,EACnB,OAAmB,EACnB,KAAmB;IAEnB,OAAO,IAAA,6BAAkB,EAAC,iCAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,CAAC"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
/** BurnLedger TypeScript SDK — public API (Node.js entry point). */
|
|
2
2
|
export { BurnLedger, MAX_BATCH_REVOKE } from "./client.js";
|
|
3
3
|
export type { BurnLedgerOptions } from "./client.js";
|
|
4
|
-
export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, CERTIFICATE_REVOKED, UNSUPPORTED_FORMAT_VERSION, } from "./errors.js";
|
|
4
|
+
export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, AUTHORIZATION_POLICY_FAILED, CERTIFICATE_REVOKED, UNSUPPORTED_FORMAT_VERSION, } from "./errors.js";
|
|
5
5
|
export { Transport } from "./http.js";
|
|
6
6
|
export type { TransportOptions } from "./http.js";
|
|
7
|
-
export type { PublicKeyOptions } from "./verify.js";
|
|
8
|
-
export type { ProofMode, AttestationStatus, CertificateStatus, TransparencyStatus, HealthStatus, TransportSecurity, ReadOnlyEnforcement, ConnectorType, HashScope, LogEntryType, VerificationResult, TransparencyResult, ApiKeyRole, System, SystemAttestation, Attestation, VerificationSystem, VerifyResult, CertificateResponse, RevocationStatus, Webhook, SignedTreeHead, LogEntry, InclusionProof, ConsistencyProof, BatchAttestationResponse, BatchAttestationError, BatchRevokeResponse, BatchRevokeError, MonthlyCount, CertificateStats, WebhookRotateResponse, WebhookDelivery, ApiKeyListItem, ApiKeyResponse, PlanUsage, Profile, SystemHealth, } from "./models.js";
|
|
7
|
+
export type { AuthorizationPolicy, PublicKeyOptions, VerifyOptions } from "./verify.js";
|
|
8
|
+
export type { ProofMode, AttestationStatus, CertificateStatus, TransparencyStatus, HealthStatus, TransportSecurity, ReadOnlyEnforcement, ConnectorType, HashScope, LogEntryType, VerificationResult, TransparencyResult, ApiKeyRole, System, SystemAttestation, Attestation, VerificationSystem, VerifyResult, CertificateResponse, RevocationStatus, Webhook, SignedTreeHead, LogEntry, InclusionProof, ConsistencyProof, BatchAttestationResponse, BatchAttestationError, BatchRevokeResponse, BatchRevokeError, MonthlyCount, CertificateStats, WebhookRotateResponse, WebhookDelivery, ApiKeyListItem, ApiKeyResponse, PlanUsage, Profile, SystemHealth, KeyEnrollmentStatement, TeamAuthorizationCertificate, SystemRegistrationCertificate, KeyEnrollmentResult, } from "./models.js";
|
|
9
9
|
export { parseSystem, parseCertificateResponse, parseWebhook } from "./models.js";
|
|
10
10
|
export { Paginator } from "./pagination.js";
|
|
11
11
|
export type { CryptoOps } from "./crypto.js";
|
|
12
12
|
export type { PublicKeyInfo } from "./verify.js";
|
|
13
13
|
export { issuanceBytes, hexToBytes, bytesToHex } from "./verify.js";
|
|
14
|
-
import type { PublicKeyInfo, PublicKeyOptions } from "./verify.js";
|
|
14
|
+
import type { PublicKeyInfo, PublicKeyOptions, VerifyOptions } from "./verify.js";
|
|
15
15
|
import type { VerificationResult, TransparencyResult } from "./models.js";
|
|
16
16
|
type Cert = Record<string, unknown>;
|
|
17
|
-
/** Verify all signatures on a deletion certificate offline.
|
|
18
|
-
|
|
17
|
+
/** Verify all signatures on a deletion certificate offline. Pass
|
|
18
|
+
* `{ requireAuthorization }` to refuse a record unless its systems are certified
|
|
19
|
+
* under a key id you name, by an enclave image that requires that key group's
|
|
20
|
+
* signature to register a system (ADR-025). */
|
|
21
|
+
export declare function verifyCertificate(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>, options?: VerifyOptions): Promise<VerificationResult>;
|
|
19
22
|
/**
|
|
20
23
|
* Verify a certificate and, separately, what a signed statement says about its
|
|
21
24
|
* revocation. Returns "VALID_REVOCATION_UNKNOWN" when no fresh statement is
|
|
22
25
|
* supplied — never "VALID", because "not revoked" is not something an offline
|
|
23
26
|
* check can establish on its own.
|
|
24
27
|
*/
|
|
25
|
-
export declare function verifyCertificateWithStatus(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>, status?: Record<string, unknown> | null, now?: Date): Promise<string>;
|
|
28
|
+
export declare function verifyCertificateWithStatus(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>, status?: Record<string, unknown> | null, now?: Date, options?: VerifyOptions): Promise<string>;
|
|
26
29
|
/** Verify the transparency proof embedded in a certificate. */
|
|
27
30
|
export declare function verifyTransparency(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>): Promise<TransparencyResult>;
|
|
28
31
|
/** Construct a PublicKeyInfo from a hex-encoded Ed25519 public key.
|
|
@@ -46,8 +49,17 @@ export { verifyWebhookSignature, isTimestampFresh } from "./webhooks.js";
|
|
|
46
49
|
* expose, and sealing a datastore credential is not something a browser should
|
|
47
50
|
* be doing.
|
|
48
51
|
*/
|
|
49
|
-
export { EnclaveAttestationError, ENVELOPE_MAGIC, HEADER_SIZE, NITRO_ROOT_G1_PEM, sealConnectionConfig, sealToKey, verifyEnclaveConfigSealKey, } from "./enclave-seal.js";
|
|
50
|
-
export type { SealOptions } from "./enclave-seal.js";
|
|
51
|
-
export { CUSTOMER_KEY_ID_PREFIX, InvalidKeyGroupError, MAX_CUSTOMER_KEY_GROUP_MEMBERS, PAYLOAD_TYPE_KEY_ROTATION_REQUEST, buildKeyRotationRequestPayload, customerKeyId, memberFingerprint, memberFingerprints, validateKeyGroup, } from "./customer-keys.js";
|
|
52
|
+
export { EnclaveAttestationError, ENVELOPE_MAGIC, HEADER_SIZE, IDENTITY_NONCE_SIZE, NITRO_ROOT_G1_PEM, sealConnectionConfig, sealToKey, verifyEnclaveConfigSealKey, verifyEnclaveIdentity, } from "./enclave-seal.js";
|
|
53
|
+
export type { EnclaveIdentity, IdentityOptions, SealOptions } from "./enclave-seal.js";
|
|
54
|
+
export { CUSTOMER_KEY_ID_PREFIX, InvalidKeyGroupError, MAX_CUSTOMER_KEY_GROUP_MEMBERS, PAYLOAD_TYPE_KEY_ENROLLMENT_REQUEST, PAYLOAD_TYPE_KEY_ROTATION_REQUEST, PAYLOAD_TYPE_SYSTEM_REGISTRATION_REQUEST, buildKeyEnrollmentRequestPayload, buildKeyRotationRequestPayload, buildSystemRegistrationRequestPayload, customerKeyId, memberFingerprint, memberFingerprints, validateKeyGroup, verifyKeyEnrollmentStatement, verifySystemRegistration, verifyTeamAuthorization, } from "./customer-keys.js";
|
|
52
55
|
export type { CustomerKeyGroup } from "./customer-keys.js";
|
|
56
|
+
/**
|
|
57
|
+
* Customer key group members as signers (ADR-025). Node only. The SDK never
|
|
58
|
+
* holds a private key: every signature comes from a KeyGroupSigner, and
|
|
59
|
+
* InMemorySigner is the convenience for keys kept on this machine. Read the
|
|
60
|
+
* custody note in key-group.ts before generating a group.
|
|
61
|
+
*/
|
|
62
|
+
export { InMemorySigner, generateKeyGroup, signWithGroup } from "./key-group.js";
|
|
63
|
+
export type { GeneratedKeyGroup, KeyGroupSigner } from "./key-group.js";
|
|
64
|
+
export type { EnclavePinOptions, RegisteredSystem } from "./enclave-registration.js";
|
|
53
65
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,12 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/** BurnLedger TypeScript SDK — public API (Node.js entry point). */
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
3
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.validateKeyGroup = exports.memberFingerprints = exports.memberFingerprint = exports.customerKeyId = exports.buildKeyRotationRequestPayload = exports.PAYLOAD_TYPE_KEY_ROTATION_REQUEST = exports.MAX_CUSTOMER_KEY_GROUP_MEMBERS = exports.InvalidKeyGroupError = exports.CUSTOMER_KEY_ID_PREFIX = exports.verifyEnclaveConfigSealKey = exports.sealToKey = exports.sealConnectionConfig = exports.NITRO_ROOT_G1_PEM = exports.HEADER_SIZE = exports.ENVELOPE_MAGIC = exports.EnclaveAttestationError = exports.isTimestampFresh = exports.verifyWebhookSignature = exports.bytesToHex = exports.hexToBytes = exports.issuanceBytes = exports.Paginator = exports.parseWebhook = exports.parseCertificateResponse = exports.parseSystem = exports.Transport = exports.UNSUPPORTED_FORMAT_VERSION = exports.CERTIFICATE_REVOKED = exports.VerificationError = exports.TimeoutError = exports.ServerError = exports.RateLimitError = exports.ValidationError = exports.ConflictError = exports.NotFoundError = exports.AuthenticationError = exports.ApiError = exports.BurnLedgerError = exports.MAX_BATCH_REVOKE = exports.BurnLedger = void 0;
|
|
37
|
+
exports.verifyTeamAuthorization = exports.verifySystemRegistration = exports.verifyKeyEnrollmentStatement = exports.validateKeyGroup = exports.memberFingerprints = exports.memberFingerprint = exports.customerKeyId = exports.buildSystemRegistrationRequestPayload = exports.buildKeyRotationRequestPayload = exports.buildKeyEnrollmentRequestPayload = exports.PAYLOAD_TYPE_SYSTEM_REGISTRATION_REQUEST = exports.PAYLOAD_TYPE_KEY_ROTATION_REQUEST = exports.PAYLOAD_TYPE_KEY_ENROLLMENT_REQUEST = exports.MAX_CUSTOMER_KEY_GROUP_MEMBERS = exports.InvalidKeyGroupError = exports.CUSTOMER_KEY_ID_PREFIX = exports.verifyEnclaveIdentity = exports.verifyEnclaveConfigSealKey = exports.sealToKey = exports.sealConnectionConfig = exports.NITRO_ROOT_G1_PEM = exports.IDENTITY_NONCE_SIZE = exports.HEADER_SIZE = exports.ENVELOPE_MAGIC = exports.EnclaveAttestationError = exports.isTimestampFresh = exports.verifyWebhookSignature = exports.bytesToHex = exports.hexToBytes = exports.issuanceBytes = exports.Paginator = exports.parseWebhook = exports.parseCertificateResponse = exports.parseSystem = exports.Transport = exports.UNSUPPORTED_FORMAT_VERSION = exports.CERTIFICATE_REVOKED = exports.AUTHORIZATION_POLICY_FAILED = exports.VerificationError = exports.TimeoutError = exports.ServerError = exports.RateLimitError = exports.ValidationError = exports.ConflictError = exports.NotFoundError = exports.AuthenticationError = exports.ApiError = exports.BurnLedgerError = exports.MAX_BATCH_REVOKE = exports.BurnLedger = void 0;
|
|
38
|
+
exports.signWithGroup = exports.generateKeyGroup = exports.InMemorySigner = void 0;
|
|
5
39
|
exports.verifyCertificate = verifyCertificate;
|
|
6
40
|
exports.verifyCertificateWithStatus = verifyCertificateWithStatus;
|
|
7
41
|
exports.verifyTransparency = verifyTransparency;
|
|
8
42
|
exports.publicKeyFromHex = publicKeyFromHex;
|
|
9
43
|
exports.verifyConsistency = verifyConsistency;
|
|
44
|
+
// Wire the Node-only client capabilities (enrolment, registration, savePdf). The
|
|
45
|
+
// browser entry never does this, so those modules — and node:crypto/node:fs with
|
|
46
|
+
// them — stay out of any browser bundle. See node-runtime.ts.
|
|
47
|
+
const node_runtime_js_1 = require("./node-runtime.js");
|
|
48
|
+
(0, node_runtime_js_1.setNodeRuntimeLoader)(async () => {
|
|
49
|
+
const [registration, seal, fs] = await Promise.all([
|
|
50
|
+
Promise.resolve().then(() => __importStar(require("./enclave-registration.js"))),
|
|
51
|
+
Promise.resolve().then(() => __importStar(require("./enclave-seal.js"))),
|
|
52
|
+
Promise.resolve().then(() => __importStar(require("node:fs/promises"))),
|
|
53
|
+
]);
|
|
54
|
+
return { registration, seal, writeFile: (path, data) => fs.writeFile(path, data) };
|
|
55
|
+
});
|
|
10
56
|
var client_js_1 = require("./client.js");
|
|
11
57
|
Object.defineProperty(exports, "BurnLedger", { enumerable: true, get: function () { return client_js_1.BurnLedger; } });
|
|
12
58
|
Object.defineProperty(exports, "MAX_BATCH_REVOKE", { enumerable: true, get: function () { return client_js_1.MAX_BATCH_REVOKE; } });
|
|
@@ -21,6 +67,7 @@ Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: functi
|
|
|
21
67
|
Object.defineProperty(exports, "ServerError", { enumerable: true, get: function () { return errors_js_1.ServerError; } });
|
|
22
68
|
Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return errors_js_1.TimeoutError; } });
|
|
23
69
|
Object.defineProperty(exports, "VerificationError", { enumerable: true, get: function () { return errors_js_1.VerificationError; } });
|
|
70
|
+
Object.defineProperty(exports, "AUTHORIZATION_POLICY_FAILED", { enumerable: true, get: function () { return errors_js_1.AUTHORIZATION_POLICY_FAILED; } });
|
|
24
71
|
Object.defineProperty(exports, "CERTIFICATE_REVOKED", { enumerable: true, get: function () { return errors_js_1.CERTIFICATE_REVOKED; } });
|
|
25
72
|
Object.defineProperty(exports, "UNSUPPORTED_FORMAT_VERSION", { enumerable: true, get: function () { return errors_js_1.UNSUPPORTED_FORMAT_VERSION; } });
|
|
26
73
|
var http_js_1 = require("./http.js");
|
|
@@ -39,9 +86,12 @@ Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function (
|
|
|
39
86
|
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return verify_js_1.bytesToHex; } });
|
|
40
87
|
const crypto_node_js_1 = require("./crypto-node.js");
|
|
41
88
|
const verify_js_2 = require("./verify.js");
|
|
42
|
-
/** Verify all signatures on a deletion certificate offline.
|
|
43
|
-
|
|
44
|
-
|
|
89
|
+
/** Verify all signatures on a deletion certificate offline. Pass
|
|
90
|
+
* `{ requireAuthorization }` to refuse a record unless its systems are certified
|
|
91
|
+
* under a key id you name, by an enclave image that requires that key group's
|
|
92
|
+
* signature to register a system (ADR-025). */
|
|
93
|
+
function verifyCertificate(certificate, publicKeys, options) {
|
|
94
|
+
return (0, verify_js_2.verifyCertificate)(crypto_node_js_1.nodeCrypto, certificate, publicKeys, options);
|
|
45
95
|
}
|
|
46
96
|
/**
|
|
47
97
|
* Verify a certificate and, separately, what a signed statement says about its
|
|
@@ -49,8 +99,8 @@ function verifyCertificate(certificate, publicKeys) {
|
|
|
49
99
|
* supplied — never "VALID", because "not revoked" is not something an offline
|
|
50
100
|
* check can establish on its own.
|
|
51
101
|
*/
|
|
52
|
-
function verifyCertificateWithStatus(certificate, publicKeys, status, now) {
|
|
53
|
-
return (0, verify_js_2.verifyCertificateWithStatus)(crypto_node_js_1.nodeCrypto, certificate, publicKeys, status, now);
|
|
102
|
+
function verifyCertificateWithStatus(certificate, publicKeys, status, now, options) {
|
|
103
|
+
return (0, verify_js_2.verifyCertificateWithStatus)(crypto_node_js_1.nodeCrypto, certificate, publicKeys, status, now, options);
|
|
54
104
|
}
|
|
55
105
|
/** Verify the transparency proof embedded in a certificate. */
|
|
56
106
|
function verifyTransparency(certificate, publicKeys) {
|
|
@@ -87,18 +137,37 @@ var enclave_seal_js_1 = require("./enclave-seal.js");
|
|
|
87
137
|
Object.defineProperty(exports, "EnclaveAttestationError", { enumerable: true, get: function () { return enclave_seal_js_1.EnclaveAttestationError; } });
|
|
88
138
|
Object.defineProperty(exports, "ENVELOPE_MAGIC", { enumerable: true, get: function () { return enclave_seal_js_1.ENVELOPE_MAGIC; } });
|
|
89
139
|
Object.defineProperty(exports, "HEADER_SIZE", { enumerable: true, get: function () { return enclave_seal_js_1.HEADER_SIZE; } });
|
|
140
|
+
Object.defineProperty(exports, "IDENTITY_NONCE_SIZE", { enumerable: true, get: function () { return enclave_seal_js_1.IDENTITY_NONCE_SIZE; } });
|
|
90
141
|
Object.defineProperty(exports, "NITRO_ROOT_G1_PEM", { enumerable: true, get: function () { return enclave_seal_js_1.NITRO_ROOT_G1_PEM; } });
|
|
91
142
|
Object.defineProperty(exports, "sealConnectionConfig", { enumerable: true, get: function () { return enclave_seal_js_1.sealConnectionConfig; } });
|
|
92
143
|
Object.defineProperty(exports, "sealToKey", { enumerable: true, get: function () { return enclave_seal_js_1.sealToKey; } });
|
|
93
144
|
Object.defineProperty(exports, "verifyEnclaveConfigSealKey", { enumerable: true, get: function () { return enclave_seal_js_1.verifyEnclaveConfigSealKey; } });
|
|
145
|
+
Object.defineProperty(exports, "verifyEnclaveIdentity", { enumerable: true, get: function () { return enclave_seal_js_1.verifyEnclaveIdentity; } });
|
|
94
146
|
var customer_keys_js_1 = require("./customer-keys.js");
|
|
95
147
|
Object.defineProperty(exports, "CUSTOMER_KEY_ID_PREFIX", { enumerable: true, get: function () { return customer_keys_js_1.CUSTOMER_KEY_ID_PREFIX; } });
|
|
96
148
|
Object.defineProperty(exports, "InvalidKeyGroupError", { enumerable: true, get: function () { return customer_keys_js_1.InvalidKeyGroupError; } });
|
|
97
149
|
Object.defineProperty(exports, "MAX_CUSTOMER_KEY_GROUP_MEMBERS", { enumerable: true, get: function () { return customer_keys_js_1.MAX_CUSTOMER_KEY_GROUP_MEMBERS; } });
|
|
150
|
+
Object.defineProperty(exports, "PAYLOAD_TYPE_KEY_ENROLLMENT_REQUEST", { enumerable: true, get: function () { return customer_keys_js_1.PAYLOAD_TYPE_KEY_ENROLLMENT_REQUEST; } });
|
|
98
151
|
Object.defineProperty(exports, "PAYLOAD_TYPE_KEY_ROTATION_REQUEST", { enumerable: true, get: function () { return customer_keys_js_1.PAYLOAD_TYPE_KEY_ROTATION_REQUEST; } });
|
|
152
|
+
Object.defineProperty(exports, "PAYLOAD_TYPE_SYSTEM_REGISTRATION_REQUEST", { enumerable: true, get: function () { return customer_keys_js_1.PAYLOAD_TYPE_SYSTEM_REGISTRATION_REQUEST; } });
|
|
153
|
+
Object.defineProperty(exports, "buildKeyEnrollmentRequestPayload", { enumerable: true, get: function () { return customer_keys_js_1.buildKeyEnrollmentRequestPayload; } });
|
|
99
154
|
Object.defineProperty(exports, "buildKeyRotationRequestPayload", { enumerable: true, get: function () { return customer_keys_js_1.buildKeyRotationRequestPayload; } });
|
|
155
|
+
Object.defineProperty(exports, "buildSystemRegistrationRequestPayload", { enumerable: true, get: function () { return customer_keys_js_1.buildSystemRegistrationRequestPayload; } });
|
|
100
156
|
Object.defineProperty(exports, "customerKeyId", { enumerable: true, get: function () { return customer_keys_js_1.customerKeyId; } });
|
|
101
157
|
Object.defineProperty(exports, "memberFingerprint", { enumerable: true, get: function () { return customer_keys_js_1.memberFingerprint; } });
|
|
102
158
|
Object.defineProperty(exports, "memberFingerprints", { enumerable: true, get: function () { return customer_keys_js_1.memberFingerprints; } });
|
|
103
159
|
Object.defineProperty(exports, "validateKeyGroup", { enumerable: true, get: function () { return customer_keys_js_1.validateKeyGroup; } });
|
|
160
|
+
Object.defineProperty(exports, "verifyKeyEnrollmentStatement", { enumerable: true, get: function () { return customer_keys_js_1.verifyKeyEnrollmentStatement; } });
|
|
161
|
+
Object.defineProperty(exports, "verifySystemRegistration", { enumerable: true, get: function () { return customer_keys_js_1.verifySystemRegistration; } });
|
|
162
|
+
Object.defineProperty(exports, "verifyTeamAuthorization", { enumerable: true, get: function () { return customer_keys_js_1.verifyTeamAuthorization; } });
|
|
163
|
+
/**
|
|
164
|
+
* Customer key group members as signers (ADR-025). Node only. The SDK never
|
|
165
|
+
* holds a private key: every signature comes from a KeyGroupSigner, and
|
|
166
|
+
* InMemorySigner is the convenience for keys kept on this machine. Read the
|
|
167
|
+
* custody note in key-group.ts before generating a group.
|
|
168
|
+
*/
|
|
169
|
+
var key_group_js_1 = require("./key-group.js");
|
|
170
|
+
Object.defineProperty(exports, "InMemorySigner", { enumerable: true, get: function () { return key_group_js_1.InMemorySigner; } });
|
|
171
|
+
Object.defineProperty(exports, "generateKeyGroup", { enumerable: true, get: function () { return key_group_js_1.generateKeyGroup; } });
|
|
172
|
+
Object.defineProperty(exports, "signWithGroup", { enumerable: true, get: function () { return key_group_js_1.signWithGroup; } });
|
|
104
173
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,oEAAoE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The members of a customer key group as signers (ADR-025 §2–3).
|
|
3
|
+
*
|
|
4
|
+
* Node only, like enclave-seal.ts: ADR-025 §2 makes a client the customer runs
|
|
5
|
+
* locally the only place enrolment can happen, because whoever serves a page
|
|
6
|
+
* controls the check the page would make.
|
|
7
|
+
*
|
|
8
|
+
* WHY A SIGNER AND NOT A PRIVATE KEY. Everything in this SDK that needs a
|
|
9
|
+
* member's signature takes a {@link KeyGroupSigner} — a public key and a
|
|
10
|
+
* function that signs bytes. The SDK never needs, holds or transmits a private
|
|
11
|
+
* key, so a member can live in an HSM, a cloud KMS, a hardware token or another
|
|
12
|
+
* process, and the SDK's only job is to hand it the exact canonical bytes and
|
|
13
|
+
* check what comes back. {@link InMemorySigner} is the convenience for tests and
|
|
14
|
+
* for customers who keep keys on the machine running the SDK.
|
|
15
|
+
*
|
|
16
|
+
* CUSTODY, stated plainly because nothing recovers from getting it wrong. The
|
|
17
|
+
* private halves are the customer's alone; BurnLedger never sees them and cannot
|
|
18
|
+
* reissue them. Lose enough members that the group can no longer meet its
|
|
19
|
+
* threshold and it can neither sign a registration nor authorise its own
|
|
20
|
+
* rotation — and an operator who could re-enrol on the customer's behalf is an
|
|
21
|
+
* operator who could mint, so there is no recovery path (ADR-025 §3 "Key loss").
|
|
22
|
+
* The only way back is to enrol a NEW group and re-register every system, and
|
|
23
|
+
* records issued before and after will name different `customer_key_id`s,
|
|
24
|
+
* visibly. Hedge before it happens: enrol more members than the threshold and
|
|
25
|
+
* keep at least one offline (the simplest is two members, threshold one).
|
|
26
|
+
*/
|
|
27
|
+
import { type CustomerKeyGroup } from "./customer-keys.js";
|
|
28
|
+
/** One member of a key group, able to sign. */
|
|
29
|
+
export interface KeyGroupSigner {
|
|
30
|
+
/** The member's raw 32-byte Ed25519 public key. */
|
|
31
|
+
readonly publicKey: Uint8Array;
|
|
32
|
+
/** Sign exactly `payload` with the member's Ed25519 key; return the 64-byte signature. */
|
|
33
|
+
sign(payload: Uint8Array): Promise<Uint8Array>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A member whose private key is held in this process.
|
|
37
|
+
*
|
|
38
|
+
* Convenient, and exactly as safe as the memory and disk of the machine running
|
|
39
|
+
* it. `exportSeed()` is the one way the key leaves: store the seed as you would
|
|
40
|
+
* any credential that cannot be reissued.
|
|
41
|
+
*/
|
|
42
|
+
export declare class InMemorySigner implements KeyGroupSigner {
|
|
43
|
+
#private;
|
|
44
|
+
readonly publicKey: Uint8Array;
|
|
45
|
+
private constructor();
|
|
46
|
+
/** A fresh member, from the operating system's CSPRNG. */
|
|
47
|
+
static generate(): InMemorySigner;
|
|
48
|
+
/** The member a 32-byte seed (as returned by `exportSeed`) describes. */
|
|
49
|
+
static fromSeed(seed: Uint8Array): InMemorySigner;
|
|
50
|
+
/** The 32-byte seed. Whoever holds it IS this member. */
|
|
51
|
+
exportSeed(): Uint8Array;
|
|
52
|
+
sign(payload: Uint8Array): Promise<Uint8Array>;
|
|
53
|
+
}
|
|
54
|
+
/** A freshly generated group and the signers that hold its members. */
|
|
55
|
+
export interface GeneratedKeyGroup {
|
|
56
|
+
readonly group: CustomerKeyGroup;
|
|
57
|
+
readonly signers: readonly InMemorySigner[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Generate `members` Ed25519 keys and the group requiring `threshold` of them.
|
|
61
|
+
*
|
|
62
|
+
* The private halves are returned to the caller and go nowhere else. Read the
|
|
63
|
+
* custody note at the top of this module before choosing `members` and
|
|
64
|
+
* `threshold`: a group whose members fall below its threshold is unrecoverable.
|
|
65
|
+
*/
|
|
66
|
+
export declare function generateKeyGroup(opts: {
|
|
67
|
+
members: number;
|
|
68
|
+
threshold: number;
|
|
69
|
+
}): Promise<GeneratedKeyGroup>;
|
|
70
|
+
/**
|
|
71
|
+
* Collect member signatures over `payload`, keyed by member fingerprint — the
|
|
72
|
+
* wire form every ADR-025 request carries.
|
|
73
|
+
*
|
|
74
|
+
* Refuses before anything is sent, with a reason, where the enclave would refuse
|
|
75
|
+
* after with a bare 401: a signer that is not a member of `group`, the same
|
|
76
|
+
* member twice, a signature that does not verify under the signer's own public
|
|
77
|
+
* key, or fewer distinct members than `required`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function signWithGroup(payload: Uint8Array, group: CustomerKeyGroup, signers: readonly KeyGroupSigner[], required: number): Promise<Record<string, string>>;
|
|
80
|
+
//# sourceMappingURL=key-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-group.d.ts","sourceRoot":"","sources":["../../src/key-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAUH,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,0FAA0F;IAC1F,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAChD;AAMD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,cAAc;;IACnD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAG/B,OAAO,eAIN;IAED,0DAA0D;IAC1D,MAAM,CAAC,QAAQ,IAAI,cAAc,CAEhC;IAED,yEAAyE;IACzE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAWhD;IAED,yDAAyD;IACzD,UAAU,IAAI,UAAU,CAGvB;IAEK,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAEnD;CACF;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAW7B;AAMD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgCjC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The members of a customer key group as signers (ADR-025 §2–3).
|
|
4
|
+
*
|
|
5
|
+
* Node only, like enclave-seal.ts: ADR-025 §2 makes a client the customer runs
|
|
6
|
+
* locally the only place enrolment can happen, because whoever serves a page
|
|
7
|
+
* controls the check the page would make.
|
|
8
|
+
*
|
|
9
|
+
* WHY A SIGNER AND NOT A PRIVATE KEY. Everything in this SDK that needs a
|
|
10
|
+
* member's signature takes a {@link KeyGroupSigner} — a public key and a
|
|
11
|
+
* function that signs bytes. The SDK never needs, holds or transmits a private
|
|
12
|
+
* key, so a member can live in an HSM, a cloud KMS, a hardware token or another
|
|
13
|
+
* process, and the SDK's only job is to hand it the exact canonical bytes and
|
|
14
|
+
* check what comes back. {@link InMemorySigner} is the convenience for tests and
|
|
15
|
+
* for customers who keep keys on the machine running the SDK.
|
|
16
|
+
*
|
|
17
|
+
* CUSTODY, stated plainly because nothing recovers from getting it wrong. The
|
|
18
|
+
* private halves are the customer's alone; BurnLedger never sees them and cannot
|
|
19
|
+
* reissue them. Lose enough members that the group can no longer meet its
|
|
20
|
+
* threshold and it can neither sign a registration nor authorise its own
|
|
21
|
+
* rotation — and an operator who could re-enrol on the customer's behalf is an
|
|
22
|
+
* operator who could mint, so there is no recovery path (ADR-025 §3 "Key loss").
|
|
23
|
+
* The only way back is to enrol a NEW group and re-register every system, and
|
|
24
|
+
* records issued before and after will name different `customer_key_id`s,
|
|
25
|
+
* visibly. Hedge before it happens: enrol more members than the threshold and
|
|
26
|
+
* keep at least one offline (the simplest is two members, threshold one).
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.InMemorySigner = void 0;
|
|
30
|
+
exports.generateKeyGroup = generateKeyGroup;
|
|
31
|
+
exports.signWithGroup = signWithGroup;
|
|
32
|
+
const node_crypto_1 = require("node:crypto");
|
|
33
|
+
const crypto_node_js_1 = require("./crypto-node.js");
|
|
34
|
+
const customer_keys_js_1 = require("./customer-keys.js");
|
|
35
|
+
// RFC 8410: an Ed25519 private key as PKCS#8 is this fixed prefix and the seed.
|
|
36
|
+
const PKCS8_ED25519_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
|
|
37
|
+
const SEED_SIZE = 32;
|
|
38
|
+
/**
|
|
39
|
+
* A member whose private key is held in this process.
|
|
40
|
+
*
|
|
41
|
+
* Convenient, and exactly as safe as the memory and disk of the machine running
|
|
42
|
+
* it. `exportSeed()` is the one way the key leaves: store the seed as you would
|
|
43
|
+
* any credential that cannot be reissued.
|
|
44
|
+
*/
|
|
45
|
+
class InMemorySigner {
|
|
46
|
+
publicKey;
|
|
47
|
+
#privateKey;
|
|
48
|
+
constructor(privateKey) {
|
|
49
|
+
this.#privateKey = privateKey;
|
|
50
|
+
const spki = (0, node_crypto_1.createPublicKey)(privateKey).export({ format: "der", type: "spki" });
|
|
51
|
+
this.publicKey = new Uint8Array(spki.subarray(spki.length - 32));
|
|
52
|
+
}
|
|
53
|
+
/** A fresh member, from the operating system's CSPRNG. */
|
|
54
|
+
static generate() {
|
|
55
|
+
return new InMemorySigner((0, node_crypto_1.generateKeyPairSync)("ed25519").privateKey);
|
|
56
|
+
}
|
|
57
|
+
/** The member a 32-byte seed (as returned by `exportSeed`) describes. */
|
|
58
|
+
static fromSeed(seed) {
|
|
59
|
+
if (!(seed instanceof Uint8Array) || seed.length !== SEED_SIZE) {
|
|
60
|
+
throw new Error(`an Ed25519 seed is ${SEED_SIZE} bytes`);
|
|
61
|
+
}
|
|
62
|
+
return new InMemorySigner((0, node_crypto_1.createPrivateKey)({
|
|
63
|
+
key: Buffer.concat([PKCS8_ED25519_PREFIX, Buffer.from(seed)]),
|
|
64
|
+
format: "der",
|
|
65
|
+
type: "pkcs8",
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
/** The 32-byte seed. Whoever holds it IS this member. */
|
|
69
|
+
exportSeed() {
|
|
70
|
+
const der = this.#privateKey.export({ format: "der", type: "pkcs8" });
|
|
71
|
+
return new Uint8Array(der.subarray(der.length - SEED_SIZE));
|
|
72
|
+
}
|
|
73
|
+
async sign(payload) {
|
|
74
|
+
return new Uint8Array((0, node_crypto_1.sign)(null, payload, this.#privateKey));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.InMemorySigner = InMemorySigner;
|
|
78
|
+
/**
|
|
79
|
+
* Generate `members` Ed25519 keys and the group requiring `threshold` of them.
|
|
80
|
+
*
|
|
81
|
+
* The private halves are returned to the caller and go nowhere else. Read the
|
|
82
|
+
* custody note at the top of this module before choosing `members` and
|
|
83
|
+
* `threshold`: a group whose members fall below its threshold is unrecoverable.
|
|
84
|
+
*/
|
|
85
|
+
async function generateKeyGroup(opts) {
|
|
86
|
+
if (!Number.isInteger(opts.members) || opts.members < 1) {
|
|
87
|
+
throw new customer_keys_js_1.InvalidKeyGroupError(`a key group needs at least one member, got ${opts.members}`);
|
|
88
|
+
}
|
|
89
|
+
const signers = Array.from({ length: opts.members }, () => InMemorySigner.generate());
|
|
90
|
+
const group = {
|
|
91
|
+
threshold: opts.threshold,
|
|
92
|
+
members: signers.map((s) => s.publicKey),
|
|
93
|
+
};
|
|
94
|
+
await (0, customer_keys_js_1.validateKeyGroup)(crypto_node_js_1.nodeCrypto, group);
|
|
95
|
+
return { group, signers };
|
|
96
|
+
}
|
|
97
|
+
function toHex(bytes) {
|
|
98
|
+
return Buffer.from(bytes).toString("hex");
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Collect member signatures over `payload`, keyed by member fingerprint — the
|
|
102
|
+
* wire form every ADR-025 request carries.
|
|
103
|
+
*
|
|
104
|
+
* Refuses before anything is sent, with a reason, where the enclave would refuse
|
|
105
|
+
* after with a bare 401: a signer that is not a member of `group`, the same
|
|
106
|
+
* member twice, a signature that does not verify under the signer's own public
|
|
107
|
+
* key, or fewer distinct members than `required`.
|
|
108
|
+
*/
|
|
109
|
+
async function signWithGroup(payload, group, signers, required) {
|
|
110
|
+
const members = new Set();
|
|
111
|
+
for (const member of group.members)
|
|
112
|
+
members.add(await (0, customer_keys_js_1.memberFingerprint)(crypto_node_js_1.nodeCrypto, member));
|
|
113
|
+
const signatures = {};
|
|
114
|
+
for (const signer of signers) {
|
|
115
|
+
const fingerprint = await (0, customer_keys_js_1.memberFingerprint)(crypto_node_js_1.nodeCrypto, signer.publicKey);
|
|
116
|
+
if (!members.has(fingerprint)) {
|
|
117
|
+
throw new customer_keys_js_1.InvalidKeyGroupError(`signer ${fingerprint} is not a member of this key group`);
|
|
118
|
+
}
|
|
119
|
+
if (fingerprint in signatures) {
|
|
120
|
+
throw new customer_keys_js_1.InvalidKeyGroupError(`member ${fingerprint} is listed twice among the signers`);
|
|
121
|
+
}
|
|
122
|
+
const signature = await signer.sign(payload);
|
|
123
|
+
if (!(signature instanceof Uint8Array) ||
|
|
124
|
+
signature.length !== 64 ||
|
|
125
|
+
!(await crypto_node_js_1.nodeCrypto.ed25519Verify(signer.publicKey, payload, signature))) {
|
|
126
|
+
throw new Error(`the signer for member ${fingerprint} returned a signature that does not verify over the request`);
|
|
127
|
+
}
|
|
128
|
+
signatures[fingerprint] = toHex(signature);
|
|
129
|
+
}
|
|
130
|
+
const count = Object.keys(signatures).length;
|
|
131
|
+
if (count < required) {
|
|
132
|
+
throw new customer_keys_js_1.InvalidKeyGroupError(`this request needs signatures from ${required} distinct members, got ${count}`);
|
|
133
|
+
}
|
|
134
|
+
return signatures;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=key-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-group.js","sourceRoot":"","sources":["../../src/key-group.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/models.d.ts
CHANGED
|
@@ -101,6 +101,17 @@ export interface CertificateResponse {
|
|
|
101
101
|
* it can be handed straight to verifyCertificateWithStatus().
|
|
102
102
|
*/
|
|
103
103
|
readonly statusStatement: Record<string, unknown> | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* Base64 AWS Nitro NSM attestation document produced while this record was
|
|
106
|
+
* signed, exactly as the server sent it. Its PCRs identify the enclave image
|
|
107
|
+
* that held the signing key and its user_data binds this record's canonical
|
|
108
|
+
* payload. Carried so it can be archived beside the record; this SDK does NOT
|
|
109
|
+
* verify it (that needs COSE ES384 and an x509 chain to the Nitro root, which
|
|
110
|
+
* only the Go verifier implements). undefined for records issued before it
|
|
111
|
+
* was recorded and for dev-mode issuance; absence is not a verification
|
|
112
|
+
* result.
|
|
113
|
+
*/
|
|
114
|
+
readonly nsmAttestation: string | undefined;
|
|
104
115
|
}
|
|
105
116
|
export interface RevocationStatus {
|
|
106
117
|
readonly certificateId: string;
|
|
@@ -260,5 +271,54 @@ export declare function parseApiKeyListItem(d: Raw): ApiKeyListItem;
|
|
|
260
271
|
export declare function parseApiKeyResponse(d: Raw): ApiKeyResponse;
|
|
261
272
|
export declare function parseProfile(d: Raw): Profile;
|
|
262
273
|
export declare function parseSystemHealth(d: Raw): SystemHealth;
|
|
274
|
+
/** The enclave's statement of which key group it was told to trust for a team
|
|
275
|
+
* (core.KeyEnrollmentStatement). Trust on first use: compare `customerKeyId` —
|
|
276
|
+
* a hash over the members and threshold — against the group you hold. The SDK's
|
|
277
|
+
* enrol and rotate calls do, after verifying the enclave's signature. */
|
|
278
|
+
export interface KeyEnrollmentStatement {
|
|
279
|
+
readonly assertedTeamId: string;
|
|
280
|
+
readonly customerKeyId: string;
|
|
281
|
+
readonly threshold: number;
|
|
282
|
+
readonly members: readonly Uint8Array[];
|
|
283
|
+
readonly enrolledAt: Date;
|
|
284
|
+
readonly enclavePcr0: string;
|
|
285
|
+
readonly signature: Uint8Array;
|
|
286
|
+
}
|
|
287
|
+
/** The bounded authority that makes an enrolled group usable
|
|
288
|
+
* (core.TeamAuthorizationCertificate). It expires rather than being revoked;
|
|
289
|
+
* renew it by enrolling the same group again before `notAfter`. */
|
|
290
|
+
export interface TeamAuthorizationCertificate {
|
|
291
|
+
readonly assertedTeamId: string;
|
|
292
|
+
readonly customerKeyId: string;
|
|
293
|
+
readonly notBefore: Date;
|
|
294
|
+
readonly notAfter: Date;
|
|
295
|
+
/** The key this one replaced; undefined on a first enrolment. */
|
|
296
|
+
readonly prevKeyId: string | undefined;
|
|
297
|
+
readonly signature: Uint8Array;
|
|
298
|
+
}
|
|
299
|
+
/** Binds one system to the config and query it may be measured with, under a
|
|
300
|
+
* customer key (core.SystemRegistrationCertificate). No expiry: it states a
|
|
301
|
+
* fact about bytes. */
|
|
302
|
+
export interface SystemRegistrationCertificate {
|
|
303
|
+
readonly systemId: string;
|
|
304
|
+
/** SHA-256 of the exact config plaintext submitted for the system. */
|
|
305
|
+
readonly configDigest: Uint8Array;
|
|
306
|
+
/** HashQuery over the NORMALIZED subject query — not the raw-template hash
|
|
307
|
+
* the registration request signs. */
|
|
308
|
+
readonly queryTemplateHash: Uint8Array;
|
|
309
|
+
readonly connectorType: string;
|
|
310
|
+
readonly customerKeyId: string;
|
|
311
|
+
readonly registeredAt: Date;
|
|
312
|
+
readonly signature: Uint8Array;
|
|
313
|
+
}
|
|
314
|
+
/** What enrolling or rotating a key group returns. */
|
|
315
|
+
export interface KeyEnrollmentResult {
|
|
316
|
+
readonly enrollment: KeyEnrollmentStatement;
|
|
317
|
+
readonly authorization: TeamAuthorizationCertificate;
|
|
318
|
+
}
|
|
319
|
+
export declare function parseKeyEnrollmentStatement(d: Raw): KeyEnrollmentStatement;
|
|
320
|
+
export declare function parseTeamAuthorizationCertificate(d: Raw): TeamAuthorizationCertificate;
|
|
321
|
+
export declare function parseSystemRegistrationCertificate(d: Raw): SystemRegistrationCertificate;
|
|
322
|
+
export declare function parseKeyEnrollmentResult(d: Raw): KeyEnrollmentResult;
|
|
263
323
|
export {};
|
|
264
324
|
//# sourceMappingURL=models.d.ts.map
|
package/dist/cjs/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC3C,MAAM,MAAM,iBAAiB,GACzB,sBAAsB,GACtB,qBAAqB,GACrB,WAAW,CAAC;AAChB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AACrD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAC/D;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,WAAW,GACX,WAAW,GACX,UAAU,CAAC;AACf;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,2BAA2B,GAC3B,mBAAmB,GACnB,uBAAuB,CAAC;AAK5B,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,OAAO,GACP,WAAW,GACX,QAAQ,GACR,UAAU,GACV,UAAU,GACV,WAAW,GACX,YAAY,GACZ,SAAS,GACT,OAAO,GACP,OAAO,GACP,WAAW,GACX,OAAO,GACP,WAAW,GACX,eAAe,GACf,IAAI,GACJ,UAAU,GACV,KAAK,GACL,UAAU,GACV,YAAY,CAAC;AACjB,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAC7C,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;AAExD,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAAC;AAErD,iDAAiD;AACjD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,SAAS,GAAG,eAAe,CAAC;AAM1E,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,IAAI,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
|