@interop/wallet-core 0.78.0 → 0.79.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.
Files changed (170) hide show
  1. package/README.md +16 -3
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +2 -2
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +1 -1
  5. package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
  6. package/dist/clientAnnex/establish.d.ts +2 -2
  7. package/dist/clientAnnex/establish.d.ts.map +1 -1
  8. package/dist/clientAnnex/forget.d.ts +1 -1
  9. package/dist/clientAnnex/forget.d.ts.map +1 -1
  10. package/dist/clientAnnex/heal.d.ts.map +1 -1
  11. package/dist/clientAnnex/heal.js +3 -1
  12. package/dist/clientAnnex/heal.js.map +1 -1
  13. package/dist/clientAnnex/ladder.d.ts +3 -98
  14. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  15. package/dist/clientAnnex/ladder.js +4 -140
  16. package/dist/clientAnnex/ladder.js.map +1 -1
  17. package/dist/clientAnnex/log.d.ts +26 -10
  18. package/dist/clientAnnex/log.d.ts.map +1 -1
  19. package/dist/clientAnnex/log.js +40 -17
  20. package/dist/clientAnnex/log.js.map +1 -1
  21. package/dist/clientAnnex/mend.d.ts +2 -2
  22. package/dist/clientAnnex/mend.d.ts.map +1 -1
  23. package/dist/clientAnnex/mend.js +1 -1
  24. package/dist/clientAnnex/mend.js.map +1 -1
  25. package/dist/clientAnnex/rosterDeliveredEpochs.d.ts +1 -1
  26. package/dist/clientAnnex/rosterDeliveredEpochs.d.ts.map +1 -1
  27. package/dist/clientAnnex/selfEnroll.d.ts +1 -1
  28. package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
  29. package/dist/clientAnnex/selfEnroll.js +2 -1
  30. package/dist/clientAnnex/selfEnroll.js.map +1 -1
  31. package/dist/clients/revocation.d.ts +1 -1
  32. package/dist/clients/revocation.d.ts.map +1 -1
  33. package/dist/clients/rosterPolicy.d.ts +1 -1
  34. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  35. package/dist/descriptors/logSource.d.ts +2 -1
  36. package/dist/descriptors/logSource.d.ts.map +1 -1
  37. package/dist/descriptors/logSource.js +1 -1
  38. package/dist/descriptors/logSource.js.map +1 -1
  39. package/dist/enrollment/enrollment.d.ts +2 -2
  40. package/dist/enrollment/enrollment.d.ts.map +1 -1
  41. package/dist/enrollment/enrollment.js +2 -1
  42. package/dist/enrollment/enrollment.js.map +1 -1
  43. package/dist/genesis/accountGenesis.d.ts +1 -1
  44. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  45. package/dist/genesis/accountGenesis.js +11 -5
  46. package/dist/genesis/accountGenesis.js.map +1 -1
  47. package/dist/keyring/fetch.d.ts +1 -1
  48. package/dist/keyring/fetch.d.ts.map +1 -1
  49. package/dist/keyring/fetch.js +1 -1
  50. package/dist/keyring/fetch.js.map +1 -1
  51. package/dist/keyring/index.d.ts +15 -8
  52. package/dist/keyring/index.d.ts.map +1 -1
  53. package/dist/keyring/index.js +11 -6
  54. package/dist/keyring/index.js.map +1 -1
  55. package/dist/keyring/kdf.d.ts +0 -69
  56. package/dist/keyring/kdf.d.ts.map +1 -1
  57. package/dist/keyring/kdf.js +7 -86
  58. package/dist/keyring/kdf.js.map +1 -1
  59. package/dist/keyring/record.d.ts +1 -200
  60. package/dist/keyring/record.d.ts.map +1 -1
  61. package/dist/keyring/record.js +5 -251
  62. package/dist/keyring/record.js.map +1 -1
  63. package/dist/keyring/recordEnvelope.d.ts +270 -0
  64. package/dist/keyring/recordEnvelope.d.ts.map +1 -0
  65. package/dist/keyring/recordEnvelope.js +282 -0
  66. package/dist/keyring/recordEnvelope.js.map +1 -0
  67. package/dist/keyring/unlockIdentity.d.ts +71 -0
  68. package/dist/keyring/unlockIdentity.d.ts.map +1 -0
  69. package/dist/keyring/unlockIdentity.js +96 -0
  70. package/dist/keyring/unlockIdentity.js.map +1 -0
  71. package/dist/keyring/unlockSpace.d.ts +12 -1
  72. package/dist/keyring/unlockSpace.d.ts.map +1 -1
  73. package/dist/keyring/unlockSpace.js +15 -2
  74. package/dist/keyring/unlockSpace.js.map +1 -1
  75. package/dist/keys/index.d.ts +6 -3
  76. package/dist/keys/index.d.ts.map +1 -1
  77. package/dist/keys/index.js +6 -3
  78. package/dist/keys/index.js.map +1 -1
  79. package/dist/keys/rosterLogStore.d.ts +1 -1
  80. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  81. package/dist/keys/rosterLogStore.js +1 -1
  82. package/dist/keys/rosterLogStore.js.map +1 -1
  83. package/dist/keys/rosterRecipientKid.d.ts +28 -0
  84. package/dist/keys/rosterRecipientKid.d.ts.map +1 -0
  85. package/dist/keys/rosterRecipientKid.js +27 -0
  86. package/dist/keys/rosterRecipientKid.js.map +1 -0
  87. package/dist/keys/spaceEpochs.d.ts +1 -1
  88. package/dist/keys/spaceEpochs.d.ts.map +1 -1
  89. package/dist/keys/spaceEpochs.js +2 -2
  90. package/dist/keys/spaceEpochs.js.map +1 -1
  91. package/dist/keys/userKey.d.ts +4 -46
  92. package/dist/keys/userKey.d.ts.map +1 -1
  93. package/dist/keys/userKey.js +8 -60
  94. package/dist/keys/userKey.js.map +1 -1
  95. package/dist/keys/userKeyCascade.d.ts +1 -33
  96. package/dist/keys/userKeyCascade.d.ts.map +1 -1
  97. package/dist/keys/userKeyCascade.js +2 -49
  98. package/dist/keys/userKeyCascade.js.map +1 -1
  99. package/dist/keys/userKeyGenerations.d.ts +47 -0
  100. package/dist/keys/userKeyGenerations.d.ts.map +1 -0
  101. package/dist/keys/userKeyGenerations.js +50 -0
  102. package/dist/keys/userKeyGenerations.js.map +1 -0
  103. package/dist/keys/userKeyRoster.d.ts +1 -19
  104. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  105. package/dist/keys/userKeyRoster.js +13 -19
  106. package/dist/keys/userKeyRoster.js.map +1 -1
  107. package/dist/keys/userKeyRosterCascade.d.ts +1 -1
  108. package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
  109. package/dist/keys/userKeySigning.d.ts +44 -0
  110. package/dist/keys/userKeySigning.d.ts.map +1 -0
  111. package/dist/keys/userKeySigning.js +65 -0
  112. package/dist/keys/userKeySigning.js.map +1 -0
  113. package/dist/recovery/recoveryCode.d.ts.map +1 -1
  114. package/dist/recovery/recoveryCode.js +3 -4
  115. package/dist/recovery/recoveryCode.js.map +1 -1
  116. package/dist/recovery/recoveryDelegation.d.ts +1 -1
  117. package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
  118. package/dist/space/collections.d.ts +1 -43
  119. package/dist/space/collections.d.ts.map +1 -1
  120. package/dist/space/collections.js +2 -34
  121. package/dist/space/collections.js.map +1 -1
  122. package/dist/space/systemCollections.d.ts +55 -0
  123. package/dist/space/systemCollections.d.ts.map +1 -0
  124. package/dist/space/systemCollections.js +46 -0
  125. package/dist/space/systemCollections.js.map +1 -0
  126. package/dist/sync/contactsConflict.d.ts +56 -10
  127. package/dist/sync/contactsConflict.d.ts.map +1 -1
  128. package/dist/sync/contactsConflict.js +82 -18
  129. package/dist/sync/contactsConflict.js.map +1 -1
  130. package/dist/sync/engine.d.ts +9 -3
  131. package/dist/sync/engine.d.ts.map +1 -1
  132. package/dist/sync/engine.js.map +1 -1
  133. package/dist/sync/pull.d.ts +25 -4
  134. package/dist/sync/pull.d.ts.map +1 -1
  135. package/dist/sync/pull.js +27 -3
  136. package/dist/sync/pull.js.map +1 -1
  137. package/dist/sync/remint.d.ts +10 -4
  138. package/dist/sync/remint.d.ts.map +1 -1
  139. package/dist/sync/remint.js +28 -6
  140. package/dist/sync/remint.js.map +1 -1
  141. package/dist/unlock/ladderDerivation.d.ts +98 -0
  142. package/dist/unlock/ladderDerivation.d.ts.map +1 -0
  143. package/dist/unlock/ladderDerivation.js +157 -0
  144. package/dist/unlock/ladderDerivation.js.map +1 -0
  145. package/dist/unlock/retire.d.ts +1 -1
  146. package/dist/unlock/retire.d.ts.map +1 -1
  147. package/dist/unlock/standingClient.js +1 -1
  148. package/dist/unlock/standingClient.js.map +1 -1
  149. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  150. package/dist/unlock/standingWebvh.js +3 -3
  151. package/dist/unlock/standingWebvh.js.map +1 -1
  152. package/dist/unlock/unlockRecord.d.ts +2 -1
  153. package/dist/unlock/unlockRecord.d.ts.map +1 -1
  154. package/dist/unlock/unlockRecord.js +11 -2
  155. package/dist/unlock/unlockRecord.js.map +1 -1
  156. package/dist/webvh/accountEntry.d.ts +2 -1
  157. package/dist/webvh/accountEntry.d.ts.map +1 -1
  158. package/dist/webvh/accountEntry.js.map +1 -1
  159. package/dist/webvh/didWebvh.d.ts +1 -11
  160. package/dist/webvh/didWebvh.d.ts.map +1 -1
  161. package/dist/webvh/didWebvh.js +5 -13
  162. package/dist/webvh/didWebvh.js.map +1 -1
  163. package/dist/webvh/updateKeyMultibase.d.ts +12 -0
  164. package/dist/webvh/updateKeyMultibase.d.ts.map +1 -0
  165. package/dist/webvh/updateKeyMultibase.js +23 -0
  166. package/dist/webvh/updateKeyMultibase.js.map +1 -0
  167. package/dist/webvh/wasIdStore.d.ts +5 -3
  168. package/dist/webvh/wasIdStore.d.ts.map +1 -1
  169. package/dist/webvh/wasIdStore.js.map +1 -1
  170. package/package.json +53 -11
@@ -31,7 +31,7 @@
31
31
  * current-epoch wrap) appends nothing, leaving the log's head carrying a
32
32
  * controller version before the membership change it should have sealed.
33
33
  */
34
- import { logGovernedDescriptorStore as wasLogGovernedDescriptorStore, EPOCH_CONFIGURATION_STATE_TYPE } from '@interop/was-client/edv';
34
+ import { logGovernedDescriptorStore as wasLogGovernedDescriptorStore, EPOCH_CONFIGURATION_STATE_TYPE } from '@interop/was-client/edv/core';
35
35
  import { controllerForLogClass } from '../resourceLog/index.js';
36
36
  export { EPOCH_CONFIGURATION_STATE_TYPE };
37
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"rosterLogStore.js","sourceRoot":"","sources":["../../src/keys/rosterLogStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EACL,0BAA0B,IAAI,6BAA6B,EAC3D,8BAA8B,EAE/B,MAAM,yBAAyB,CAAA;AAMhC,OAAO,EACL,qBAAqB,EAGtB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,8BAA8B,EAAE,CAAA;AA8BzC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAgC;IAEhC,MAAM,SAAS,GAAG,KAAmD,CAAA;IACrE,OAAO,CACL,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU;QACpC,OAAO,SAAS,CAAC,2BAA2B,KAAK,UAAU,CAC5D,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACzC,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,MAAM,EACN,QAAQ,EAQT;IACC,mEAAmE;IACnE,kBAAkB;IAClB,IAAI,wBAAwB,GAAsC,IAAI,CAAA;IAEtE;;;;;OAKG;IACH,KAAK,UAAU,iBAAiB;QAC9B,OAAO,qBAAqB,CAAC;YAC3B,UAAU,EAAE,MAAM,kBAAkB,EAAE;YACtC,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,kBAAkB;QAC/B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAA;QAC1C,IAAI,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACtC,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,MAAM,WAAW,GACf,wBAAwB,CAAC,UAAU,CACjC,wBAAwB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAC/C,CAAA;QACH,uEAAuE;QACvE,sEAAsE;QACtE,oDAAoD;QACpD,IACE,WAAW,KAAK,SAAS;YACzB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC1C,CAAC;YACD,OAAO,wBAAwB,CAAA;QACjC,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,6BAA6B,CAAC;QAC1C,GAAG;QACH,iBAAiB,EAAE,iBAAiB;QACpC,QAAQ;QACR,KAAK;QACL,MAAM;KACP,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,KAAK;QACR,2BAA2B,CAAC,EAAE,UAAU,EAAE;YACxC,wBAAwB,GAAG,UAAU,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"rosterLogStore.js","sourceRoot":"","sources":["../../src/keys/rosterLogStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EACL,0BAA0B,IAAI,6BAA6B,EAC3D,8BAA8B,EAE/B,MAAM,8BAA8B,CAAA;AAMrC,OAAO,EACL,qBAAqB,EAGtB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,8BAA8B,EAAE,CAAA;AA8BzC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAgC;IAEhC,MAAM,SAAS,GAAG,KAAmD,CAAA;IACrE,OAAO,CACL,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU;QACpC,OAAO,SAAS,CAAC,2BAA2B,KAAK,UAAU,CAC5D,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACzC,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,MAAM,EACN,QAAQ,EAQT;IACC,mEAAmE;IACnE,kBAAkB;IAClB,IAAI,wBAAwB,GAAsC,IAAI,CAAA;IAEtE;;;;;OAKG;IACH,KAAK,UAAU,iBAAiB;QAC9B,OAAO,qBAAqB,CAAC;YAC3B,UAAU,EAAE,MAAM,kBAAkB,EAAE;YACtC,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,kBAAkB;QAC/B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAA;QAC1C,IAAI,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACtC,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,MAAM,WAAW,GACf,wBAAwB,CAAC,UAAU,CACjC,wBAAwB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAC/C,CAAA;QACH,uEAAuE;QACvE,sEAAsE;QACtE,oDAAoD;QACpD,IACE,WAAW,KAAK,SAAS;YACzB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC1C,CAAC;YACD,OAAO,wBAAwB,CAAA;QACjC,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,6BAA6B,CAAC;QAC1C,GAAG;QACH,iBAAiB,EAAE,iBAAiB;QACpC,QAAQ;QACR,KAAK;QACL,MAAM;KACP,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,KAAK;QACR,2BAA2B,CAAC,EAAE,UAAU,EAAE;YACxC,wBAAwB,GAAG,UAAU,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * The roster recipient kid builder, in a leaf file with no imports: a caller
6
+ * that only derives a client identity (`unlock/standingClient.ts`) takes it
7
+ * from here without loading the roster store's did:webvh and resource-log
8
+ * graph.
9
+ */
10
+ /**
11
+ * A wallet client's roster kid: its key-agreement key's id exactly as
12
+ * `agentsFromSeed` derives it at the client's own logins
13
+ * (`did:key:<ed-multibase>#<x-multibase>`). One builder for the whole
14
+ * lifecycle -- the wrap the enrollment ceremony mints, the entry a roster read
15
+ * looks for, and the recipient a rotation retires are the same string by
16
+ * construction rather than by three copies agreeing.
17
+ *
18
+ * @param options {object}
19
+ * @param options.signingKeyMultibase {string} the client's Ed25519 signing
20
+ * key
21
+ * @param options.keyAgreementKeyMultibase {string} its X25519 twin
22
+ * @returns {string}
23
+ */
24
+ export declare function rosterRecipientKid({ signingKeyMultibase, keyAgreementKeyMultibase }: {
25
+ signingKeyMultibase: string;
26
+ keyAgreementKeyMultibase: string;
27
+ }): string;
28
+ //# sourceMappingURL=rosterRecipientKid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rosterRecipientKid.d.ts","sourceRoot":"","sources":["../../src/keys/rosterRecipientKid.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,mBAAmB,EACnB,wBAAwB,EACzB,EAAE;IACD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,wBAAwB,EAAE,MAAM,CAAA;CACjC,GAAG,MAAM,CAET"}
@@ -0,0 +1,27 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * The roster recipient kid builder, in a leaf file with no imports: a caller
6
+ * that only derives a client identity (`unlock/standingClient.ts`) takes it
7
+ * from here without loading the roster store's did:webvh and resource-log
8
+ * graph.
9
+ */
10
+ /**
11
+ * A wallet client's roster kid: its key-agreement key's id exactly as
12
+ * `agentsFromSeed` derives it at the client's own logins
13
+ * (`did:key:<ed-multibase>#<x-multibase>`). One builder for the whole
14
+ * lifecycle -- the wrap the enrollment ceremony mints, the entry a roster read
15
+ * looks for, and the recipient a rotation retires are the same string by
16
+ * construction rather than by three copies agreeing.
17
+ *
18
+ * @param options {object}
19
+ * @param options.signingKeyMultibase {string} the client's Ed25519 signing
20
+ * key
21
+ * @param options.keyAgreementKeyMultibase {string} its X25519 twin
22
+ * @returns {string}
23
+ */
24
+ export function rosterRecipientKid({ signingKeyMultibase, keyAgreementKeyMultibase }) {
25
+ return `did:key:${signingKeyMultibase}#${keyAgreementKeyMultibase}`;
26
+ }
27
+ //# sourceMappingURL=rosterRecipientKid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rosterRecipientKid.js","sourceRoot":"","sources":["../../src/keys/rosterRecipientKid.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,mBAAmB,EACnB,wBAAwB,EAIzB;IACC,OAAO,WAAW,mBAAmB,IAAI,wBAAwB,EAAE,CAAA;AACrE,CAAC"}
@@ -33,7 +33,7 @@
33
33
  * record.
34
34
  */
35
35
  import type { CollectionEncryption, WasClient } from '@interop/was-client';
36
- import { type EncryptionDescriptorStore, type RecipientPublicKey } from '@interop/was-client/edv';
36
+ import { type EncryptionDescriptorStore, type RecipientPublicKey } from '@interop/was-client/edv/core';
37
37
  import type { UserKey } from './userKey.js';
38
38
  /**
39
39
  * What the epoch[0] fan-out did, per collection id: the settled epoch-bearing
@@ -1 +1 @@
1
- {"version":3,"file":"spaceEpochs.d.ts","sourceRoot":"","sources":["../../src/keys/spaceEpochs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAA;AAMhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CACd,MAAM,EACN;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,oBAAoB,CAAA;KAAE,CACzD,CAAA;IACD,MAAM,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACvD;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,KAAK,EACL,UAAU,EACX,EAAE;IACD,KAAK,EAAE,yBAAyB,CAAA;IAChC,UAAU,EAAE,kBAAkB,EAAE,CAAA;CACjC,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAepE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,OAAO,EACR,EAAE;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,yBAAyB,CAAA;IAC7D,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA2CnC;AAwBD;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAA;gBAC7B,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAA;KAAE;CAUtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,aAAa,EACb,OAAO,EACP,QAAQ,EACR,aAAa,EACb,SAAS,EACV,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,yBAAyB,CAAA;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAwBtB"}
1
+ {"version":3,"file":"spaceEpochs.d.ts","sourceRoot":"","sources":["../../src/keys/spaceEpochs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAA;AAMrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CACd,MAAM,EACN;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,oBAAoB,CAAA;KAAE,CACzD,CAAA;IACD,MAAM,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACvD;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,KAAK,EACL,UAAU,EACX,EAAE;IACD,KAAK,EAAE,yBAAyB,CAAA;IAChC,UAAU,EAAE,kBAAkB,EAAE,CAAA;CACjC,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAepE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,OAAO,EACR,EAAE;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,yBAAyB,CAAA;IAC7D,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA2CnC;AAwBD;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAA;gBAC7B,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAA;KAAE;CAUtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,aAAa,EACb,OAAO,EACP,QAAQ,EACR,aAAa,EACb,SAAS,EACV,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,yBAAyB,CAAA;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAwBtB"}
@@ -1,8 +1,8 @@
1
- import { ensureFirstEpoch } from '@interop/was-client/edv';
1
+ import { ensureFirstEpoch } from '@interop/was-client/edv/core';
2
2
  import { isResourceLogRefusal } from '../resourceLog/errors.js';
3
3
  import { encryptedWalletCollectionIds } from '../space/collections.js';
4
4
  import { provisionWalletSpace } from '../space/provisioning.js';
5
- import { userKeyAsRecipient } from './userKeyCascade.js';
5
+ import { userKeyAsRecipient } from './userKeyGenerations.js';
6
6
  /**
7
7
  * Installs key epoch[0] on a collection together with its blinded-index HMAC
8
8
  * key, so an encrypted collection is indexable at birth: the HMAC key is minted
@@ -1 +1 @@
1
- {"version":3,"file":"spaceEpochs.js","sourceRoot":"","sources":["../../src/keys/spaceEpochs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spaceEpochs.js","sourceRoot":"","sources":["../../src/keys/spaceEpochs.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import type { IKeyAgreementKey, IKeyResolver } from '@interop/data-integrity-core';
2
- import type { RecordSigner } from '../keyring/record.js';
3
2
  /**
4
- * The HKDF salt for the user key's client-side expansions, and the one info
5
- * label under it. Both permanent: two wallet apps must expand the same user
6
- * key to byte-identical output, or a record one of them signs is a record the
7
- * other refuses.
3
+ * The HKDF salt for the user key's client-side expansions; the one info label
4
+ * under it lives with the signing half (`./userKeySigning.js`). Both
5
+ * permanent: two wallet apps must expand the same user key to byte-identical
6
+ * output, or a record one of them signs is a record the other refuses.
8
7
  */
9
8
  export declare const USER_KEY_SALT = "freewallet/keys/user-key/v1";
10
9
  /**
@@ -27,47 +26,6 @@ export interface UserKey {
27
26
  * @returns {Promise<UserKey>}
28
27
  */
29
28
  export declare function mintUserKey(): Promise<UserKey>;
30
- /**
31
- * Derives the 32-byte Ed25519 seed of the user key's signing half from the
32
- * key-agreement half's raw secret: HKDF-SHA256 under {@link USER_KEY_SALT},
33
- * info `signing`. Deterministic and wire-level -- the same user key always
34
- * yields the same signing key, which is what lets one holder sign a record
35
- * another holder verifies with nothing server-served in hand.
36
- *
37
- * @param options {object}
38
- * @param options.userKey {UserKey}
39
- * @returns {Uint8Array}
40
- */
41
- export declare function userKeySigningSeed({ userKey }: {
42
- userKey: UserKey;
43
- }): Uint8Array;
44
- /**
45
- * The user key's record signer: the keyring record's signing seam over the
46
- * derived Ed25519 half, for an app-side record sealed to the vault KAK
47
- * (`signRecordFrame`). Its `keyMultibase` is exactly what a reader's
48
- * allowlist holds, so a writer that already has the signer reads the multibase
49
- * off it rather than calling {@link userKeySigningKeyMultibase} as well.
50
- *
51
- * @param options {object}
52
- * @param options.userKey {UserKey}
53
- * @returns {Promise<RecordSigner>}
54
- */
55
- export declare function userKeyRecordSigner({ userKey }: {
56
- userKey: UserKey;
57
- }): Promise<RecordSigner>;
58
- /**
59
- * The public multibase of the user key's signing half: the one key a reader
60
- * accepts on a record sealed under this user key, handed to
61
- * `verifyRecordProof` as its allowlist. For a reader alone -- a writer takes
62
- * the same value off {@link userKeyRecordSigner}'s `keyMultibase`.
63
- *
64
- * @param options {object}
65
- * @param options.userKey {UserKey}
66
- * @returns {Promise<string>}
67
- */
68
- export declare function userKeySigningKeyMultibase({ userKey }: {
69
- userKey: UserKey;
70
- }): Promise<string>;
71
29
  /**
72
30
  * Reconstructs the user key's key-agreement key and its single-key resolver
73
31
  * from the stored material -- the vault-key pair a session supplies to the
@@ -1 +1 @@
1
- {"version":3,"file":"userKey.d.ts","sourceRoot":"","sources":["../../src/keys/userKey.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,8BAA8B,CAAA;AAIrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,gCAAgC,CAAA;AAQ1D;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,UAAU,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACR,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,UAAU,CASb;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,OAAO,EACR,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAAC,YAAY,CAAC,CAExB;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,OAAO,EACR,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG;IACnE,eAAe,EAAE,gBAAgB,CAAA;IACjC,WAAW,EAAE,YAAY,CAAA;CAC1B,CAQA"}
1
+ {"version":3,"file":"userKey.d.ts","sourceRoot":"","sources":["../../src/keys/userKey.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,8BAA8B,CAAA;AAIrC;;;;;GAKG;AACH,eAAO,MAAM,aAAa,gCAAgC,CAAA;AAE1D;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,UAAU,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG;IACnE,eAAe,EAAE,gBAAgB,CAAA;IACjC,WAAW,EAAE,YAAY,CAAA;CAC1B,CAQA"}
@@ -13,7 +13,7 @@
13
13
  * construction mints: a fresh X25519 pair whose did:key is the key's id and
14
14
  * whose raw 32-byte secret is what gets wrapped to recipients -- so the roster
15
15
  * machinery consumes the user key unchanged. The Ed25519 signing half DERIVES
16
- * from that same secret ({@link userKeySigningSeed}), so it needs no storage
16
+ * from that same secret (`userKeySigningSeed`), so it needs no storage
17
17
  * and no delivery channel of its own: every holder of the user key holds it,
18
18
  * an enrolled session, a transient one, and a session-less signup or recovery
19
19
  * writer alike, and a roster rotation that hands a client the fresh
@@ -23,28 +23,19 @@
23
23
  * KAK is not authenticated by being decryptable -- a storage host that knows
24
24
  * the epoch's public half can seal a body of its own that decrypts perfectly,
25
25
  * which is the property the keyring record's `proof` member exists to defeat.
26
- * So such a record carries the same proof, signed by {@link
27
- * userKeyRecordSigner} and verified against {@link
28
- * userKeySigningKeyMultibase} before it is decrypted.
26
+ * So such a record carries the same proof, signed by `userKeyRecordSigner`
27
+ * and verified against `userKeySigningKeyMultibase` before it is decrypted.
29
28
  */
30
- import { hkdf } from '@noble/hashes/hkdf.js';
31
- import { sha256 } from '@noble/hashes/sha2.js';
32
29
  import { X25519KeyAgreementKey2020 } from '@interop/x25519-key-agreement-key';
33
- import { epochKeyIdFor, mintEpoch } from '@interop/was-client/edv';
30
+ import { epochKeyIdFor, mintEpoch } from '@interop/was-client/edv/cipher';
34
31
  import { singleKeyResolver } from '@interop/was-client/identity';
35
- import { recordSignerFromSeed } from '../keyring/record.js';
36
32
  /**
37
- * The HKDF salt for the user key's client-side expansions, and the one info
38
- * label under it. Both permanent: two wallet apps must expand the same user
39
- * key to byte-identical output, or a record one of them signs is a record the
40
- * other refuses.
33
+ * The HKDF salt for the user key's client-side expansions; the one info label
34
+ * under it lives with the signing half (`./userKeySigning.js`). Both
35
+ * permanent: two wallet apps must expand the same user key to byte-identical
36
+ * output, or a record one of them signs is a record the other refuses.
41
37
  */
42
38
  export const USER_KEY_SALT = 'freewallet/keys/user-key/v1';
43
- const USER_KEY_SIGNING_INFO = 'signing';
44
- /**
45
- * The number of bytes the signing expansion produces (a 32-byte Ed25519 seed).
46
- */
47
- const USER_KEY_SIGNING_SEED_BYTES = 32;
48
39
  /**
49
40
  * Mints a fresh user key: the X25519 key-agreement pair via the was-client
50
41
  * epoch construction (its did:key is the key id, its raw secret is what wraps).
@@ -56,49 +47,6 @@ export async function mintUserKey() {
56
47
  const { epochId, secret } = await mintEpoch();
57
48
  return { id: epochId, secret };
58
49
  }
59
- /**
60
- * Derives the 32-byte Ed25519 seed of the user key's signing half from the
61
- * key-agreement half's raw secret: HKDF-SHA256 under {@link USER_KEY_SALT},
62
- * info `signing`. Deterministic and wire-level -- the same user key always
63
- * yields the same signing key, which is what lets one holder sign a record
64
- * another holder verifies with nothing server-served in hand.
65
- *
66
- * @param options {object}
67
- * @param options.userKey {UserKey}
68
- * @returns {Uint8Array}
69
- */
70
- export function userKeySigningSeed({ userKey }) {
71
- const encoder = new TextEncoder();
72
- return hkdf(sha256, userKey.secret, encoder.encode(USER_KEY_SALT), encoder.encode(USER_KEY_SIGNING_INFO), USER_KEY_SIGNING_SEED_BYTES);
73
- }
74
- /**
75
- * The user key's record signer: the keyring record's signing seam over the
76
- * derived Ed25519 half, for an app-side record sealed to the vault KAK
77
- * (`signRecordFrame`). Its `keyMultibase` is exactly what a reader's
78
- * allowlist holds, so a writer that already has the signer reads the multibase
79
- * off it rather than calling {@link userKeySigningKeyMultibase} as well.
80
- *
81
- * @param options {object}
82
- * @param options.userKey {UserKey}
83
- * @returns {Promise<RecordSigner>}
84
- */
85
- export async function userKeyRecordSigner({ userKey }) {
86
- return recordSignerFromSeed({ seed: userKeySigningSeed({ userKey }) });
87
- }
88
- /**
89
- * The public multibase of the user key's signing half: the one key a reader
90
- * accepts on a record sealed under this user key, handed to
91
- * `verifyRecordProof` as its allowlist. For a reader alone -- a writer takes
92
- * the same value off {@link userKeyRecordSigner}'s `keyMultibase`.
93
- *
94
- * @param options {object}
95
- * @param options.userKey {UserKey}
96
- * @returns {Promise<string>}
97
- */
98
- export async function userKeySigningKeyMultibase({ userKey }) {
99
- const { keyMultibase } = await userKeyRecordSigner({ userKey });
100
- return keyMultibase;
101
- }
102
50
  /**
103
51
  * Reconstructs the user key's key-agreement key and its single-key resolver
104
52
  * from the stored material -- the vault-key pair a session supplies to the
@@ -1 +1 @@
1
- {"version":3,"file":"userKey.js","sourceRoot":"","sources":["../../src/keys/userKey.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAK7E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG3D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,6BAA6B,CAAA;AAC1D,MAAM,qBAAqB,GAAG,SAAS,CAAA;AAEvC;;GAEG;AACH,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAetC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;IAC7C,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,EAGR;IACC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,OAAO,IAAI,CACT,MAAM,EACN,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAC7B,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,EACrC,2BAA2B,CAC5B,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EACxC,OAAO,EAGR;IACC,OAAO,oBAAoB,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,EAC/C,OAAO,EAGR;IACC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/D,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAwB;IAIhE,MAAM,eAAe,GAAG,yBAAyB,CAAC,aAAa,CAAC;QAC9D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;KAC9B,CAAqB,CAAA;IACtB,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,CAAA;IAC1D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA;AACzC,CAAC"}
1
+ {"version":3,"file":"userKey.js","sourceRoot":"","sources":["../../src/keys/userKey.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAK7E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,6BAA6B,CAAA;AAe1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;IAC7C,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAChC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAwB;IAIhE,MAAM,eAAe,GAAG,yBAAyB,CAAC,aAAa,CAAC;QAC9D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;KAC9B,CAAqB,CAAA;IACtB,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,CAAA;IAC1D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA;AACzC,CAAC"}
@@ -35,41 +35,9 @@
35
35
  */
36
36
  import type { IKeyAgreementKey } from '@interop/data-integrity-core';
37
37
  import type { CollectionEncryption } from '@interop/was-client';
38
- import { type EncryptionDescriptorStore, type RecipientPublicKey } from '@interop/was-client/edv';
38
+ import { type EncryptionDescriptorStore } from '@interop/was-client/edv/core';
39
39
  import type { WebvhResourceLogController } from '../resourceLog/index.js';
40
40
  import { type UserKey } from './userKey.js';
41
- /**
42
- * A user key presented as an epoch-roster recipient: the kid is the
43
- * self-describing `<did:key>#<fingerprint>` form every collection epoch names
44
- * the user under, and the public key is the did:key's own multibase.
45
- *
46
- * @param options {object}
47
- * @param options.userKey {UserKey}
48
- * @returns {RecipientPublicKey}
49
- */
50
- export declare function userKeyAsRecipient({ userKey }: {
51
- userKey: UserKey;
52
- }): RecipientPublicKey;
53
- /**
54
- * Recovers every user key generation from the roster descriptor: each roster
55
- * epoch is one generation (its id the generation's did:key, its wrapped secret
56
- * the generation's raw key), escrow-wrapped to every enrolled client -- so this
57
- * client's key-agreement key unwraps them all, in roster (chronological) order.
58
- * A generation whose wrap is missing or fails to unwrap is skipped rather than
59
- * fatal (the cascade then simply cannot recognize or escrow that generation;
60
- * the current epoch always unwraps or the roster read itself would have
61
- * refused).
62
- *
63
- * @param options {object}
64
- * @param options.descriptor {CollectionEncryption} the roster descriptor
65
- * @param options.clientKeyAgreementKey {IKeyAgreementKey} this client's own
66
- * (identity) key-agreement key
67
- * @returns {Promise<UserKey[]>} the generations, oldest first
68
- */
69
- export declare function unwrapUserKeyGenerations({ descriptor, clientKeyAgreementKey }: {
70
- descriptor: CollectionEncryption;
71
- clientKeyAgreementKey: IKeyAgreementKey;
72
- }): Promise<UserKey[]>;
73
41
  /**
74
42
  * What one collection's cascade step did: `noop` (already on the current user
75
43
  * key), `sealed` (already on the current user key, but the collection's
@@ -1 +1 @@
1
- {"version":3,"file":"userKeyCascade.d.ts","sourceRoot":"","sources":["../../src/keys/userKeyCascade.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAML,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAGzE,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACR,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,kBAAkB,CAKrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,UAAU,EACV,qBAAqB,EACtB,EAAE;IACD,UAAU,EAAE,oBAAoB,CAAA;IAChC,qBAAqB,EAAE,gBAAgB,CAAA;CACxC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAkBrB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,gCAAgC,GAC1C,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,+BAA+B,CAAC,EACpD,KAAK,EACL,OAAO,EACP,WAAW,EACZ,EAAE;IACD,KAAK,EAAE,yBAAyB,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAoG5C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAA;IAC1D,MAAM,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACxD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAsB,2BAA2B,CAAC,EAChD,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,OAAO,EACP,UAAU,EACX,EAAE;IACD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,yBAAyB,CAAA;IAC7D,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACxD,gBAAgB,EAAE,oBAAoB,CAAA;IACtC,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,0BAA0B,CAAA;CACxC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4BhC"}
1
+ {"version":3,"file":"userKeyCascade.d.ts","sourceRoot":"","sources":["../../src/keys/userKeyCascade.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAKL,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAGzE,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAM7D;;;;;;;GAOG;AACH,MAAM,MAAM,gCAAgC,GAC1C,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,+BAA+B,CAAC,EACpD,KAAK,EACL,OAAO,EACP,WAAW,EACZ,EAAE;IACD,KAAK,EAAE,yBAAyB,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAoG5C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAA;IAC1D,MAAM,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACxD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAsB,2BAA2B,CAAC,EAChD,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,OAAO,EACP,UAAU,EACX,EAAE;IACD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,yBAAyB,CAAA;IAC7D,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACxD,gBAAgB,EAAE,oBAAoB,CAAA;IACtC,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,0BAA0B,CAAA;CACxC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4BhC"}
@@ -1,55 +1,8 @@
1
- import { addRecipient, epochKeyIdFor, hasKeyEpochs, replaceRecipient, unwrapEpochSecret } from '@interop/was-client/edv';
1
+ import { addRecipient, epochKeyIdFor, hasKeyEpochs, replaceRecipient } from '@interop/was-client/edv/core';
2
2
  import { isSealableDescriptorStore } from './rosterLogStore.js';
3
3
  import { currentEpochOf } from './userKeyRoster.js';
4
4
  import { userKeyVaultKeys } from './userKey.js';
5
- /**
6
- * A user key presented as an epoch-roster recipient: the kid is the
7
- * self-describing `<did:key>#<fingerprint>` form every collection epoch names
8
- * the user under, and the public key is the did:key's own multibase.
9
- *
10
- * @param options {object}
11
- * @param options.userKey {UserKey}
12
- * @returns {RecipientPublicKey}
13
- */
14
- export function userKeyAsRecipient({ userKey }) {
15
- return {
16
- id: epochKeyIdFor(userKey.id),
17
- publicKeyMultibase: userKey.id.split(':')[2]
18
- };
19
- }
20
- /**
21
- * Recovers every user key generation from the roster descriptor: each roster
22
- * epoch is one generation (its id the generation's did:key, its wrapped secret
23
- * the generation's raw key), escrow-wrapped to every enrolled client -- so this
24
- * client's key-agreement key unwraps them all, in roster (chronological) order.
25
- * A generation whose wrap is missing or fails to unwrap is skipped rather than
26
- * fatal (the cascade then simply cannot recognize or escrow that generation;
27
- * the current epoch always unwraps or the roster read itself would have
28
- * refused).
29
- *
30
- * @param options {object}
31
- * @param options.descriptor {CollectionEncryption} the roster descriptor
32
- * @param options.clientKeyAgreementKey {IKeyAgreementKey} this client's own
33
- * (identity) key-agreement key
34
- * @returns {Promise<UserKey[]>} the generations, oldest first
35
- */
36
- export async function unwrapUserKeyGenerations({ descriptor, clientKeyAgreementKey }) {
37
- const generations = [];
38
- for (const epoch of descriptor.epochs ?? []) {
39
- const entry = epoch.recipients.find(recipient => recipient.header.kid === clientKeyAgreementKey.id);
40
- if (!entry) {
41
- continue;
42
- }
43
- const secret = await unwrapEpochSecret({
44
- entry,
45
- keyAgreementKey: clientKeyAgreementKey
46
- });
47
- if (secret) {
48
- generations.push({ id: epoch.id, secret });
49
- }
50
- }
51
- return generations;
52
- }
5
+ import { unwrapUserKeyGenerations, userKeyAsRecipient } from './userKeyGenerations.js';
53
6
  /**
54
7
  * Brings ONE encrypted collection's epoch roster onto the current user key --
55
8
  * the per-collection op of the revocation cascade and of the completion sweep:
@@ -1 +1 @@
1
- {"version":3,"file":"userKeyCascade.js","sourceRoot":"","sources":["../../src/keys/userKeyCascade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"userKeyCascade.js","sourceRoot":"","sources":["../../src/keys/userKeyCascade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * The pure readers over user key generations: a user key presented as an
6
+ * epoch-roster recipient, and the unwrap of every generation a roster
7
+ * descriptor carries. Both run offline over data already in hand, so this file
8
+ * imports the epoch primitives alone and stays clear of the rotation cascade's
9
+ * store and log graph.
10
+ */
11
+ import type { IKeyAgreementKey } from '@interop/data-integrity-core';
12
+ import type { CollectionEncryption } from '@interop/was-client';
13
+ import { type RecipientPublicKey } from '@interop/was-client/edv/cipher';
14
+ import type { UserKey } from './userKey.js';
15
+ /**
16
+ * A user key presented as an epoch-roster recipient: the kid is the
17
+ * self-describing `<did:key>#<fingerprint>` form every collection epoch names
18
+ * the user under, and the public key is the did:key's own multibase.
19
+ *
20
+ * @param options {object}
21
+ * @param options.userKey {UserKey}
22
+ * @returns {RecipientPublicKey}
23
+ */
24
+ export declare function userKeyAsRecipient({ userKey }: {
25
+ userKey: UserKey;
26
+ }): RecipientPublicKey;
27
+ /**
28
+ * Recovers every user key generation from the roster descriptor: each roster
29
+ * epoch is one generation (its id the generation's did:key, its wrapped secret
30
+ * the generation's raw key), escrow-wrapped to every enrolled client -- so this
31
+ * client's key-agreement key unwraps them all, in roster (chronological) order.
32
+ * A generation whose wrap is missing or fails to unwrap is skipped rather than
33
+ * fatal (the cascade then simply cannot recognize or escrow that generation;
34
+ * the current epoch always unwraps or the roster read itself would have
35
+ * refused).
36
+ *
37
+ * @param options {object}
38
+ * @param options.descriptor {CollectionEncryption} the roster descriptor
39
+ * @param options.clientKeyAgreementKey {IKeyAgreementKey} this client's own
40
+ * (identity) key-agreement key
41
+ * @returns {Promise<UserKey[]>} the generations, oldest first
42
+ */
43
+ export declare function unwrapUserKeyGenerations({ descriptor, clientKeyAgreementKey }: {
44
+ descriptor: CollectionEncryption;
45
+ clientKeyAgreementKey: IKeyAgreementKey;
46
+ }): Promise<UserKey[]>;
47
+ //# sourceMappingURL=userKeyGenerations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userKeyGenerations.d.ts","sourceRoot":"","sources":["../../src/keys/userKeyGenerations.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACR,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,kBAAkB,CAKrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,UAAU,EACV,qBAAqB,EACtB,EAAE;IACD,UAAU,EAAE,oBAAoB,CAAA;IAChC,qBAAqB,EAAE,gBAAgB,CAAA;CACxC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAkBrB"}
@@ -0,0 +1,50 @@
1
+ import { epochKeyIdFor, unwrapEpochSecret } from '@interop/was-client/edv/cipher';
2
+ /**
3
+ * A user key presented as an epoch-roster recipient: the kid is the
4
+ * self-describing `<did:key>#<fingerprint>` form every collection epoch names
5
+ * the user under, and the public key is the did:key's own multibase.
6
+ *
7
+ * @param options {object}
8
+ * @param options.userKey {UserKey}
9
+ * @returns {RecipientPublicKey}
10
+ */
11
+ export function userKeyAsRecipient({ userKey }) {
12
+ return {
13
+ id: epochKeyIdFor(userKey.id),
14
+ publicKeyMultibase: userKey.id.split(':')[2]
15
+ };
16
+ }
17
+ /**
18
+ * Recovers every user key generation from the roster descriptor: each roster
19
+ * epoch is one generation (its id the generation's did:key, its wrapped secret
20
+ * the generation's raw key), escrow-wrapped to every enrolled client -- so this
21
+ * client's key-agreement key unwraps them all, in roster (chronological) order.
22
+ * A generation whose wrap is missing or fails to unwrap is skipped rather than
23
+ * fatal (the cascade then simply cannot recognize or escrow that generation;
24
+ * the current epoch always unwraps or the roster read itself would have
25
+ * refused).
26
+ *
27
+ * @param options {object}
28
+ * @param options.descriptor {CollectionEncryption} the roster descriptor
29
+ * @param options.clientKeyAgreementKey {IKeyAgreementKey} this client's own
30
+ * (identity) key-agreement key
31
+ * @returns {Promise<UserKey[]>} the generations, oldest first
32
+ */
33
+ export async function unwrapUserKeyGenerations({ descriptor, clientKeyAgreementKey }) {
34
+ const generations = [];
35
+ for (const epoch of descriptor.epochs ?? []) {
36
+ const entry = epoch.recipients.find(recipient => recipient.header.kid === clientKeyAgreementKey.id);
37
+ if (!entry) {
38
+ continue;
39
+ }
40
+ const secret = await unwrapEpochSecret({
41
+ entry,
42
+ keyAgreementKey: clientKeyAgreementKey
43
+ });
44
+ if (secret) {
45
+ generations.push({ id: epoch.id, secret });
46
+ }
47
+ }
48
+ return generations;
49
+ }
50
+ //# sourceMappingURL=userKeyGenerations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userKeyGenerations.js","sourceRoot":"","sources":["../../src/keys/userKeyGenerations.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,aAAa,EACb,iBAAiB,EAElB,MAAM,gCAAgC,CAAA;AAGvC;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,EAGR;IACC,OAAO;QACL,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE;KAC9C,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAC7C,UAAU,EACV,qBAAqB,EAItB;IACC,MAAM,WAAW,GAAc,EAAE,CAAA;IACjC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CACjC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,qBAAqB,CAAC,EAAE,CAC/D,CAAA;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,KAAK;YACL,eAAe,EAAE,qBAAqB;SACvC,CAAC,CAAA;QACF,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -49,7 +49,7 @@
49
49
  */
50
50
  import type { IKeyAgreementKey } from '@interop/data-integrity-core';
51
51
  import type { CollectionEncryption, CollectionEncryptionEpoch } from '@interop/was-client';
52
- import { type EncryptionDescriptorStore, type RecipientPublicKey } from '@interop/was-client/edv';
52
+ import { type EncryptionDescriptorStore, type RecipientPublicKey } from '@interop/was-client/edv/core';
53
53
  import { type ResourceLogSigner } from '@interop/vh-resource-log';
54
54
  import type { KeyAgreementDocument } from '../resourceLog/document.js';
55
55
  import { type ICapabilityAgent } from '../webvh/zcap.js';
@@ -141,24 +141,6 @@ export declare class UserKeyRosterUnwrapError extends Error {
141
141
  export declare function userKeyRosterLogSigner({ keyAgent }: {
142
142
  keyAgent: ICapabilityAgent;
143
143
  }): ResourceLogSigner;
144
- /**
145
- * A wallet client's roster kid: its key-agreement key's id exactly as
146
- * `agentsFromSeed` derives it at the client's own logins
147
- * (`did:key:<ed-multibase>#<x-multibase>`). One builder for the whole
148
- * lifecycle -- the wrap the enrollment ceremony mints, the entry a roster read
149
- * looks for, and the recipient a rotation retires are the same string by
150
- * construction rather than by three copies agreeing.
151
- *
152
- * @param options {object}
153
- * @param options.signingKeyMultibase {string} the client's Ed25519 signing
154
- * key
155
- * @param options.keyAgreementKeyMultibase {string} its X25519 twin
156
- * @returns {string}
157
- */
158
- export declare function rosterRecipientKid({ signingKeyMultibase, keyAgreementKeyMultibase }: {
159
- signingKeyMultibase: string;
160
- keyAgreementKeyMultibase: string;
161
- }): string;
162
144
  /**
163
145
  * Builds the recipient resolver for roster rotations, backed by a locally
164
146
  * verified did:webvh document -- the enforcement point for "the roster
@@ -1 +1 @@
1
- {"version":3,"file":"userKeyRoster.d.ts","sourceRoot":"","sources":["../../src/keys/userKeyRoster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"userKeyRoster.d.ts","sourceRoot":"","sources":["../../src/keys/userKeyRoster.ts"],"names":[],"mappings":"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"}