@plane31/blind-relay 0.1.3 → 0.3.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/README.md +1 -1
- package/dist/adapters/index.d.ts +4 -3
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +2 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/audience.d.ts +1 -1
- package/dist/audience.d.ts.map +1 -1
- package/dist/audience.js +7 -6
- package/dist/audience.js.map +1 -1
- package/dist/client.d.ts +159 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1112 -102
- package/dist/client.js.map +1 -1
- package/dist/codec.d.ts +25 -1
- package/dist/codec.d.ts.map +1 -1
- package/dist/codec.js +44 -0
- package/dist/codec.js.map +1 -1
- package/dist/crypto/noble.d.ts.map +1 -1
- package/dist/crypto/noble.js +19 -1
- package/dist/crypto/noble.js.map +1 -1
- package/dist/crypto.d.ts +1 -1
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts +9 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -1
- package/dist/errors.js.map +1 -1
- package/dist/identity.d.ts +8 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +7 -3
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/policy.d.ts +13 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +12 -1
- package/dist/policy.js.map +1 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +2 -0
- package/dist/rows.js.map +1 -1
- package/dist/store.d.ts +116 -3
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +2 -0
- package/dist/store.js.map +1 -1
- package/dist/succession.d.ts +108 -0
- package/dist/succession.d.ts.map +1 -0
- package/dist/succession.js +205 -0
- package/dist/succession.js.map +1 -0
- package/dist/testing/clock.d.ts.map +1 -1
- package/dist/testing/clock.js +1 -0
- package/dist/testing/clock.js.map +1 -1
- package/dist/testing/fakeHost.d.ts +60 -1
- package/dist/testing/fakeHost.d.ts.map +1 -1
- package/dist/testing/fakeHost.js +201 -31
- package/dist/testing/fakeHost.js.map +1 -1
- package/dist/testing/faults.d.ts +7 -3
- package/dist/testing/faults.d.ts.map +1 -1
- package/dist/testing/faults.js +27 -3
- package/dist/testing/faults.js.map +1 -1
- package/dist/transactions.d.ts +6 -0
- package/dist/transactions.d.ts.map +1 -1
- package/dist/transactions.js +11 -5
- package/dist/transactions.js.map +1 -1
- package/dist/transport.d.ts +66 -2
- package/dist/transport.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapters/index.ts +14 -0
- package/src/audience.ts +7 -6
- package/src/client.ts +1165 -108
- package/src/codec.ts +64 -1
- package/src/crypto/noble.ts +18 -1
- package/src/crypto.ts +1 -0
- package/src/errors.ts +13 -1
- package/src/identity.ts +13 -3
- package/src/index.ts +10 -3
- package/src/policy.ts +23 -1
- package/src/rows.ts +2 -0
- package/src/store.ts +113 -3
- package/src/succession.ts +270 -0
- package/src/testing/clock.ts +1 -0
- package/src/testing/fakeHost.ts +204 -28
- package/src/testing/faults.ts +32 -7
- package/src/transactions.ts +13 -6
- package/src/transport.ts +69 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The Kavach v1 protocol in pure TypeScript: end-to-end encrypted, relayed, durable records between a person's devices and the devices of the people they share with, for circles of up to 100 accounts, through a server that stores only what it cannot open and deletes each record once every reader has it. The package is product-agnostic: a product declares its record kinds and keeps its payload codecs in its own profile. The specification is `spec/Kavach-v1.md` in the repository; `spec/Profile-template.md` lists what a product decides.
|
|
4
4
|
|
|
5
|
-
Status: protocol revision
|
|
5
|
+
Status: protocol revision 9, package 0.x. The primitives are audited libraries; the composition is not yet independently reviewed, and nothing here is production-ready. The API may change between 0.x minor versions; the protocol revision is tracked separately in the specification.
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
pnpm add @plane31/blind-relay
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
export { Reader, Writer, compareBytes, concat, equalBytes, fromHex, toHex, u16, u32, u64 } from "../bytes.js";
|
|
11
11
|
export { bodyHash, identityId, randomBytes, ready, recordId, signingKeypairFromSeed, streamId, type SigningKeypair } from "../crypto.js";
|
|
12
12
|
export { KavachError, isKavachError, type ErrorCode } from "../errors.js";
|
|
13
|
-
export { DocumentType, buildResetKeyList, buildResetReceipt, expectType, parseDocument, parseVaultHeader, verifyDocument, type AccountDevice, type AccountResetReceipt, type CircleSnapshot, type EncryptedRecord, type EpochManifest, type Parsed, type ResetKeyEntry, type ResetKeyList, type SignedDocument, type VaultHeader } from "../codec.js";
|
|
14
|
-
export { MemorySecretStore, MemoryStore, invokeSync, type ActivationRow, type CertificateRow, type CircleRow, type ClockRow, type EpochRow, type EpochStatus, type HistoryRow, type NewestRow, type MemoryStoreOptions, type MetaRow, type OutboxRow, type OutboxStatus, type EnqueueKeyRow, type HistoryIndexRow, type KeyRange, inKeyRange, type PendingResetRow, type PinRow, type QuarantineRow, type ReaderEpochRow, type ResetListRow, type ResetReceiptRow, type RevisionRow, type SecretName, type SecretStore, type SelfRow, type Store, type StoreState, type StreamRow, type SubscriptionRow, type TableName, type Tables, type Tx, type UnresolvedRow, type VaultRow } from "../store.js";
|
|
15
|
-
export type { AppendOutcome, AppendStatus, Directory, EpochBundle, JoinRequest, MutationOutcome, MutationStatus, ReadRecordsResult, Relay, ResolvedAccount, Transport } from "../transport.js";
|
|
13
|
+
export { DocumentType, buildResetKeyList, buildResetReceipt, buildSuccession, expectType, parseDocument, parseVaultHeader, verifyDocument, type AccountDevice, type AccountResetReceipt, type AccountSuccession, type CircleSnapshot, type EncryptedRecord, type EpochManifest, type Parsed, type ResetKeyEntry, type ResetKeyList, type SignedDocument, type VaultHeader } from "../codec.js";
|
|
14
|
+
export { MemorySecretStore, MemoryStore, invokeSync, type ActivationRow, type CertificateRow, type CircleRow, type ClockRow, type EpochRow, type EpochStatus, type HistoryRow, type NewestRow, type MemoryStoreOptions, type MetaRow, type OutboxRow, type OutboxStatus, type EnqueueKeyRow, type HistoryIndexRow, type SuccessionRow, type IdentityRow, type KeyChangeRow, type ReplacementRow, type PreferenceRow, type ChainProgressRow, type KeyRange, inKeyRange, type PendingResetRow, type PinRow, type QuarantineRow, type ReaderEpochRow, type ResetListRow, type ResetReceiptRow, type RevisionRow, type SecretName, type SecretStore, type SelfRow, type Store, type StoreState, type StreamRow, type SubscriptionRow, type TableName, type Tables, type Tx, type UnresolvedRow, type VaultRow } from "../store.js";
|
|
15
|
+
export type { AppendOutcome, AppendStatus, CircleListing, CirclePage, Directory, EpochBundle, JoinRequest, MutationOutcome, MutationStatus, PreferenceOutcome, ReadRecordsResult, Relay, ResolvedAccount, SuccessionLink, SuccessionPage, Transport } from "../transport.js";
|
|
16
16
|
export type { BackupState, ProviderLoadResult, ProviderSaveResult, ProviderStatus, ProviderStatusResult, RecoveryProvider } from "../vault.js";
|
|
17
17
|
export { openStore, t1Activate, t1Header, t1Secrets, t3ApplyChange, type ChangeResult, type OpenedState } from "../transactions.js";
|
|
18
|
+
export { SECRET_NAMES } from "../store.js";
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG9G,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzI,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,EAAE,EACP,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,eAAe,EACf,SAAS,EACV,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/I,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG9G,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzI,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,EAAE,EACP,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,SAAS,EACV,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/I,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -14,9 +14,10 @@ export { bodyHash, identityId, randomBytes, ready, recordId, signingKeypairFromS
|
|
|
14
14
|
// Errors -------------------------------------------------------------------------------------------
|
|
15
15
|
export { KavachError, isKavachError } from "../errors.js";
|
|
16
16
|
// Signed documents, as a host or transport sees them ----------------------------------------------
|
|
17
|
-
export { DocumentType, buildResetKeyList, buildResetReceipt, expectType, parseDocument, parseVaultHeader, verifyDocument } from "../codec.js";
|
|
17
|
+
export { DocumentType, buildResetKeyList, buildResetReceipt, buildSuccession, expectType, parseDocument, parseVaultHeader, verifyDocument } from "../codec.js";
|
|
18
18
|
// Store --------------------------------------------------------------------------------------------
|
|
19
19
|
export { MemorySecretStore, MemoryStore, invokeSync, inKeyRange } from "../store.js";
|
|
20
20
|
// The transactions an adapter test drives against a store -----------------------------------------
|
|
21
21
|
export { openStore, t1Activate, t1Header, t1Secrets, t3ApplyChange } from "../transactions.js";
|
|
22
|
+
export { SECRET_NAMES } from "../store.js";
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qGAAqG;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE9G,oGAAoG;AACpG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAuB,MAAM,cAAc,CAAC;AAEzI,qGAAqG;AACrG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAkB,MAAM,cAAc,CAAC;AAE1E,oGAAoG;AACpG,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qGAAqG;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE9G,oGAAoG;AACpG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAuB,MAAM,cAAc,CAAC;AAEzI,qGAAqG;AACrG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAkB,MAAM,cAAc,CAAC;AAE1E,oGAAoG;AACpG,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EAYf,MAAM,aAAa,CAAC;AAErB,qGAAqG;AACrG,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,UAAU,EAsBV,UAAU,EAoBX,MAAM,aAAa,CAAC;AAyBrB,oGAAoG;AACpG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAuC,MAAM,oBAAoB,CAAC;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/audience.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface ResolvedAudience {
|
|
|
14
14
|
/** A digest-friendly description of the exact certificate-bound audience. */
|
|
15
15
|
readonly key: string;
|
|
16
16
|
}
|
|
17
|
-
export declare function isEligible(circle: CircleState,
|
|
17
|
+
export declare function isEligible(circle: CircleState, selfAccountId: Uint8Array): boolean;
|
|
18
18
|
/**
|
|
19
19
|
* Self plus every member of every eligible circle, each at its current certificate. Anything
|
|
20
20
|
* missing is `METADATA_REQUIRED`; more than 100 distinct accounts is `RECIPIENT_LIMIT`. The
|
package/dist/audience.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IACxC,4BAA4B;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"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"}
|
package/dist/audience.js
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
import { compareBytes, equalBytes, toHex } from "./bytes.js";
|
|
5
5
|
import { KavachError } from "./errors.js";
|
|
6
6
|
export const MAX_AUDIENCE = 100;
|
|
7
|
-
export function isEligible(circle,
|
|
7
|
+
export function isEligible(circle, selfAccountId) {
|
|
8
8
|
return (circle.status === "member" &&
|
|
9
9
|
circle.enabled &&
|
|
10
10
|
circle.revision > 0n &&
|
|
11
|
-
circle.members.some((m) => equalBytes(m,
|
|
11
|
+
circle.members.some((m) => equalBytes(m, selfAccountId)));
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Self plus every member of every eligible circle, each at its current certificate. Anything
|
|
@@ -17,12 +17,13 @@ export function isEligible(circle, selfIdentityId) {
|
|
|
17
17
|
*/
|
|
18
18
|
export function resolveAudience(self, circles, pins, retired = new Set()) {
|
|
19
19
|
const stage = "resolveAudience";
|
|
20
|
+
// Members are account ids; `pins` is keyed by account id and names each account's current device.
|
|
20
21
|
const wanted = new Map();
|
|
21
|
-
wanted.set(toHex(self.
|
|
22
|
+
wanted.set(toHex(self.accountId), self.accountId);
|
|
22
23
|
for (const c of circles) {
|
|
23
|
-
if (!isEligible(c, self.
|
|
24
|
+
if (!isEligible(c, self.accountId))
|
|
24
25
|
continue;
|
|
25
|
-
// An
|
|
26
|
+
// An account retired by a validated reset receipt is no longer a recipient.
|
|
26
27
|
for (const m of c.members)
|
|
27
28
|
if (!retired.has(toHex(m)))
|
|
28
29
|
wanted.set(toHex(m), m);
|
|
@@ -31,7 +32,7 @@ export function resolveAudience(self, circles, pins, retired = new Set()) {
|
|
|
31
32
|
throw new KavachError("RECIPIENT_LIMIT", stage, `${wanted.size} accounts`);
|
|
32
33
|
const rows = [];
|
|
33
34
|
for (const [hex, iid] of wanted) {
|
|
34
|
-
const pin = hex === toHex(self.
|
|
35
|
+
const pin = hex === toHex(self.accountId) ? self : pins.get(hex);
|
|
35
36
|
if (!pin)
|
|
36
37
|
throw new KavachError("METADATA_REQUIRED", stage, "no certificate for a member");
|
|
37
38
|
rows.push({ identityId: iid, certificateHash: pin.certificateHash, boxKey: pin.boxKey });
|
package/dist/audience.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audience.js","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAiBhC,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"audience.js","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -9,18 +9,24 @@ export interface EnqueueResult {
|
|
|
9
9
|
readonly recordId: Uint8Array;
|
|
10
10
|
readonly duplicate: boolean;
|
|
11
11
|
}
|
|
12
|
+
import { type ReplacementModel } from "./policy.js";
|
|
12
13
|
import { type ResetTrustConfig } from "./reset.js";
|
|
13
14
|
import type { SecretStore, Store } from "./store.js";
|
|
14
|
-
import type { Transport } from "./transport.js";
|
|
15
|
+
import type { ResolvedAccount, Transport } from "./transport.js";
|
|
15
16
|
import { type ProviderStatusResult, type RecoveryProvider } from "./vault.js";
|
|
16
17
|
/** The types of the client's queries and of `receive`, defined with the inbox. */
|
|
17
18
|
export type { HistoryEntry, HistoryPage, HistoryQuery, Newest, ReceiveResult } from "./inbox.js";
|
|
18
|
-
export type ClientStatus = "fresh" | "ready" | "locked" | "accountRecoveryRequired" | "activationPending" | "retired" | "paused" | "quarantined";
|
|
19
|
+
export type ClientStatus = "fresh" | "replacementPrepared" | "ready" | "locked" | "accountRecoveryRequired" | "activationPending" | "retired" | "paused" | "quarantined";
|
|
19
20
|
export type PauseReason = "sync" | "rotation" | "metadata" | "limit";
|
|
21
|
+
/** The account id a directory answer names: the root of its succession chain, else the identity of its key. */
|
|
22
|
+
export declare function resolvedAccountId(r: ResolvedAccount): Uint8Array;
|
|
20
23
|
export interface ClientState {
|
|
21
24
|
readonly status: ClientStatus;
|
|
22
25
|
readonly paused: PauseReason | undefined;
|
|
26
|
+
/** The account id: what circles, manifests and records name. Constant across successions. */
|
|
23
27
|
readonly identityId: Uint8Array | undefined;
|
|
28
|
+
/** The identity of the current account key; equal to `identityId` until a succession. */
|
|
29
|
+
readonly keyIdentityId: Uint8Array | undefined;
|
|
24
30
|
readonly certificateHash: Uint8Array | undefined;
|
|
25
31
|
readonly generation: bigint | undefined;
|
|
26
32
|
readonly outbox: number;
|
|
@@ -31,6 +37,21 @@ export interface ClientState {
|
|
|
31
37
|
/** Diagnostics: where the protocol stands on this device. Never a secret or a plaintext. */
|
|
32
38
|
export interface Inspection {
|
|
33
39
|
readonly identityId: Uint8Array | undefined;
|
|
40
|
+
readonly keyIdentityId: Uint8Array | undefined;
|
|
41
|
+
/** The replacement models the profile enables; never a runtime choice. */
|
|
42
|
+
readonly replacementModel: ReplacementModel;
|
|
43
|
+
/** A prepared account-recovery proposal on this device, until it commits or is definitively conflicted. */
|
|
44
|
+
readonly replacement: {
|
|
45
|
+
readonly successionId: Uint8Array;
|
|
46
|
+
readonly expectedGeneration: bigint;
|
|
47
|
+
readonly stale: boolean;
|
|
48
|
+
readonly conflictGeneration: bigint | undefined;
|
|
49
|
+
} | undefined;
|
|
50
|
+
/** Discovery after account recovery: where it stands. */
|
|
51
|
+
readonly bootstrap: {
|
|
52
|
+
readonly cursor: string | undefined;
|
|
53
|
+
readonly complete: boolean;
|
|
54
|
+
} | undefined;
|
|
34
55
|
readonly certificateHash: Uint8Array | undefined;
|
|
35
56
|
readonly generation: bigint | undefined;
|
|
36
57
|
readonly desiredRevision: bigint;
|
|
@@ -110,7 +131,8 @@ export type ClientEvent = {
|
|
|
110
131
|
export interface OpenOptions {
|
|
111
132
|
readonly accountName: string;
|
|
112
133
|
readonly retentionPolicy: unknown;
|
|
113
|
-
|
|
134
|
+
/** The platform's synced secret store for the recovery key. Required when the profile enables identity continuity; a recovery-only profile may omit it, and then has no vault backup and no recovery code. */
|
|
135
|
+
readonly recoveryProvider?: RecoveryProvider;
|
|
114
136
|
readonly resetTrust: ResetTrustConfig;
|
|
115
137
|
readonly secretStore: SecretStore;
|
|
116
138
|
readonly store: Store;
|
|
@@ -132,6 +154,46 @@ export interface Client {
|
|
|
132
154
|
identityId: Uint8Array;
|
|
133
155
|
generation: bigint;
|
|
134
156
|
}>;
|
|
157
|
+
/**
|
|
158
|
+
* Account recovery (amendment A1), on a fresh device with no secret from the old one: prepare
|
|
159
|
+
* a replacement under fresh keys and return the proposal the product takes to the host's fresh
|
|
160
|
+
* authentication. A second call returns the same pending proposal. The remote account is untouched.
|
|
161
|
+
*/
|
|
162
|
+
prepareReplacement(): Promise<ReplacementProposal>;
|
|
163
|
+
/**
|
|
164
|
+
* Commit the prepared replacement with the host's authorization. `SUCCESSION_PENDING` means the
|
|
165
|
+
* outcome is unknown and the same call is to be made again; `REPLACEMENT_CONFLICT` means the
|
|
166
|
+
* account moved and the next `prepareReplacement()` starts over; `AUTHORIZATION_REQUIRED` means
|
|
167
|
+
* the host refused the authorization.
|
|
168
|
+
*/
|
|
169
|
+
completeReplacement(input: {
|
|
170
|
+
successionId: Uint8Array;
|
|
171
|
+
authorization: Uint8Array;
|
|
172
|
+
}): Promise<{
|
|
173
|
+
identityId: Uint8Array;
|
|
174
|
+
generation: bigint;
|
|
175
|
+
}>;
|
|
176
|
+
/** The key changes this device accepted for its contacts, newest first, bounded. */
|
|
177
|
+
keyChanges(options?: {
|
|
178
|
+
accountId?: Uint8Array;
|
|
179
|
+
limit?: number;
|
|
180
|
+
}): Promise<KeyChangeEntry[]>;
|
|
181
|
+
/**
|
|
182
|
+
* Account recovery as one call over `prepareReplacement` and `completeReplacement`, with the
|
|
183
|
+
* protocol's retry rules: an earlier proposal is settled through the chain first; the same
|
|
184
|
+
* proposal is kept through an unknown outcome and a refused authorization; a new proposal is
|
|
185
|
+
* made only after a definitive conflict, and then only by the next call. The product supplies
|
|
186
|
+
* `authorize`, which obtains the host's token for a proposal after its own fresh sign-in, or
|
|
187
|
+
* answers `"reauthenticate"` when it cannot. Attempts are bounded; `pending` means call again.
|
|
188
|
+
*/
|
|
189
|
+
replaceDevice(options: ReplaceDeviceOptions): Promise<ReplaceDeviceResult>;
|
|
190
|
+
/**
|
|
191
|
+
* Synchronise in rounds until nothing is left that this device can do now: the relay has no
|
|
192
|
+
* more records within the budget, bootstrap is complete, or progress needs someone else (an
|
|
193
|
+
* authorization, another person, metadata the host does not serve). Bounded by rounds and by
|
|
194
|
+
* time; the result says why it stopped and what remains.
|
|
195
|
+
*/
|
|
196
|
+
syncUntilDrained(options?: DrainOptions): Promise<DrainReport>;
|
|
135
197
|
/** A durable outbound record of a declared kind; the payload is the product's bytes, never read by the SDK. */
|
|
136
198
|
enqueue(kind: RecordKind, payload: Uint8Array, options?: EnqueueOptions): Promise<EnqueueResult>;
|
|
137
199
|
/** One synchronisation; `options.catchUp` bounds how much of a backlog this call reads (`SyncReport.inbox.hasMore` says when to call again). */
|
|
@@ -170,8 +232,73 @@ export interface Client {
|
|
|
170
232
|
}): Promise<{
|
|
171
233
|
identityId: Uint8Array;
|
|
172
234
|
}>;
|
|
235
|
+
/**
|
|
236
|
+
* Stop: no new operation is accepted (`CLOSED`), the operations in flight finish their current
|
|
237
|
+
* transaction and a running sync stops at its next phase boundary, then listeners are cleared
|
|
238
|
+
* so nothing is emitted afterwards. Closes nothing it did not open: the store and the secret
|
|
239
|
+
* store are the caller's. Idempotent.
|
|
240
|
+
*/
|
|
173
241
|
close(): Promise<void>;
|
|
174
242
|
}
|
|
243
|
+
export interface ReplaceDeviceOptions {
|
|
244
|
+
/** Obtain the host's authorization for this proposal after the product's fresh sign-in, or say that a sign-in is needed first. */
|
|
245
|
+
readonly authorize: (proposal: ReplacementProposal) => Promise<Uint8Array | "reauthenticate">;
|
|
246
|
+
/** Commit attempts per call, over unknown outcomes and refused authorizations. Default 3. */
|
|
247
|
+
readonly maxAttempts?: number;
|
|
248
|
+
}
|
|
249
|
+
export type ReplaceDeviceResult = {
|
|
250
|
+
readonly status: "activated";
|
|
251
|
+
readonly identityId: Uint8Array;
|
|
252
|
+
readonly generation: bigint;
|
|
253
|
+
}
|
|
254
|
+
/** The outcome is still unknown or the attempts are spent: the proposal is kept; call again. */
|
|
255
|
+
| {
|
|
256
|
+
readonly status: "pending";
|
|
257
|
+
readonly proposal: ReplacementProposal;
|
|
258
|
+
}
|
|
259
|
+
/** The account moved under the proposal, which is discarded; the next call prepares a new one after a fresh sign-in. */
|
|
260
|
+
| {
|
|
261
|
+
readonly status: "conflict";
|
|
262
|
+
readonly currentGeneration: bigint | undefined;
|
|
263
|
+
}
|
|
264
|
+
/** The product's `authorize` asked for a fresh sign-in; the proposal is kept for the next call. */
|
|
265
|
+
| {
|
|
266
|
+
readonly status: "reauthenticate";
|
|
267
|
+
readonly proposal: ReplacementProposal;
|
|
268
|
+
};
|
|
269
|
+
export interface DrainOptions {
|
|
270
|
+
readonly catchUp?: SyncOptions["catchUp"];
|
|
271
|
+
/** Rounds at most. Default 10. */
|
|
272
|
+
readonly maxRounds?: number;
|
|
273
|
+
/** A soft bound in milliseconds across every round: no round starts past it and each round's reading budget is the time left, but a transport call already in flight ends on its own timeout. Default 30,000. */
|
|
274
|
+
readonly maxMs?: number;
|
|
275
|
+
}
|
|
276
|
+
export type DrainStop =
|
|
277
|
+
/** Nothing is left that this device can do now. */
|
|
278
|
+
"drained" | "maxRounds" | "maxMs"
|
|
279
|
+
/** A round changed nothing and reported the same errors as the one before. */
|
|
280
|
+
| "noProgress"
|
|
281
|
+
/** Progress needs metadata the host does not serve yet (a chain, a certificate, the key list). */
|
|
282
|
+
| "metadata"
|
|
283
|
+
/** Progress needs an authorization or a sign-in (a prepared replacement, an account to recover). */
|
|
284
|
+
| "authentication"
|
|
285
|
+
/** Nothing more is reported, but a round could not read its inbox fully (discovery or a stream failed), so emptiness is not established. */
|
|
286
|
+
| "incomplete" | "closed";
|
|
287
|
+
/** The merged report of every round, with why the loop stopped and what remains. */
|
|
288
|
+
export interface DrainReport extends SyncReport {
|
|
289
|
+
readonly rounds: number;
|
|
290
|
+
readonly stoppedBecause: DrainStop;
|
|
291
|
+
readonly remaining: {
|
|
292
|
+
/** The relay still holds records this device has not read; `"unknown"` when the last round could not read its inbox fully. */
|
|
293
|
+
readonly inboxHasMore: boolean | "unknown";
|
|
294
|
+
/** Bootstrap after account recovery has circles left to adopt. */
|
|
295
|
+
readonly bootstrapIncomplete: boolean;
|
|
296
|
+
/** Contacts whose succession chain this device has verified only partly; the next rounds continue them. */
|
|
297
|
+
readonly chainsIncomplete: number;
|
|
298
|
+
/** Authors whose current epoch has not reached this device: nothing to do but wait for them. */
|
|
299
|
+
readonly waitingFor: number;
|
|
300
|
+
};
|
|
301
|
+
}
|
|
175
302
|
export interface SyncOptions {
|
|
176
303
|
/**
|
|
177
304
|
* The inbox budget of this sync, shared by every stream: at most this many records
|
|
@@ -195,6 +322,7 @@ export interface SyncReport {
|
|
|
195
322
|
rotations: number;
|
|
196
323
|
quarantined: number;
|
|
197
324
|
resets: number;
|
|
325
|
+
successions: number;
|
|
198
326
|
};
|
|
199
327
|
epoch: "unchanged" | "prepared" | "paused" | "pending";
|
|
200
328
|
outbox: {
|
|
@@ -214,8 +342,34 @@ export interface SyncReport {
|
|
|
214
342
|
hasMore: boolean;
|
|
215
343
|
};
|
|
216
344
|
purged: number;
|
|
345
|
+
/** Present while account recovery discovers circles through the host: pinned, pending and failed on this sync. */
|
|
346
|
+
bootstrap?: {
|
|
347
|
+
circles: number;
|
|
348
|
+
pending: number;
|
|
349
|
+
failed: number;
|
|
350
|
+
};
|
|
217
351
|
errors: SyncError[];
|
|
218
352
|
}
|
|
353
|
+
/** What `prepareReplacement()` returns: everything the product hands to the host for authorization. All public. */
|
|
354
|
+
export interface ReplacementProposal {
|
|
355
|
+
readonly successionId: Uint8Array;
|
|
356
|
+
readonly accountName: string;
|
|
357
|
+
readonly accountId: Uint8Array;
|
|
358
|
+
readonly expectedCertificateHash: Uint8Array;
|
|
359
|
+
readonly expectedGeneration: bigint;
|
|
360
|
+
readonly certificate: Uint8Array;
|
|
361
|
+
}
|
|
362
|
+
/** One accepted key change of a contact: a verified succession or a validated reset. */
|
|
363
|
+
export interface KeyChangeEntry {
|
|
364
|
+
readonly accountId: Uint8Array;
|
|
365
|
+
readonly accountName: string;
|
|
366
|
+
readonly previousIdentityId: Uint8Array;
|
|
367
|
+
readonly newIdentityId: Uint8Array;
|
|
368
|
+
readonly generation: bigint;
|
|
369
|
+
readonly reason: "succession" | "reset";
|
|
370
|
+
readonly successionId: Uint8Array | undefined;
|
|
371
|
+
readonly acceptedAt: bigint;
|
|
372
|
+
}
|
|
219
373
|
/** One failure a sync worked around: which step, the protocol code and stage, and whether the same step may succeed later unchanged. */
|
|
220
374
|
export interface SyncError {
|
|
221
375
|
readonly operation: string;
|
|
@@ -229,6 +383,8 @@ export interface SyncError {
|
|
|
229
383
|
*/
|
|
230
384
|
readonly streamId?: Uint8Array;
|
|
231
385
|
readonly authorIdentityId?: Uint8Array;
|
|
386
|
+
/** On a `bootstrap` entry: the circle that could not be adopted on this sync; it is retried by the next. */
|
|
387
|
+
readonly circleId?: Uint8Array;
|
|
232
388
|
}
|
|
233
389
|
export declare function open(options: OpenOptions): Promise<Client>;
|
|
234
390
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|