@ajna-inc/vaults 0.1.0 → 0.1.2

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 (208) hide show
  1. package/build/VaultsApi.d.ts +363 -0
  2. package/build/VaultsApi.js +450 -248
  3. package/build/VaultsApi.js.map +1 -0
  4. package/build/VaultsEvents.d.ts +227 -0
  5. package/build/VaultsEvents.js +8 -0
  6. package/build/VaultsEvents.js.map +1 -0
  7. package/build/VaultsModule.d.ts +64 -0
  8. package/build/VaultsModule.js +43 -18
  9. package/build/VaultsModule.js.map +1 -0
  10. package/build/crypto/wasm/VaultCrypto.d.ts +19 -0
  11. package/build/crypto/wasm/VaultCrypto.js +29 -42
  12. package/build/crypto/wasm/VaultCrypto.js.map +1 -0
  13. package/build/errors/BadSuiteError.d.ts +8 -0
  14. package/build/errors/BadSuiteError.js +8 -25
  15. package/build/errors/BadSuiteError.js.map +1 -0
  16. package/build/errors/DecryptAeadError.d.ts +8 -0
  17. package/build/errors/DecryptAeadError.js +8 -25
  18. package/build/errors/DecryptAeadError.js.map +1 -0
  19. package/build/errors/DecryptKemError.d.ts +8 -0
  20. package/build/errors/DecryptKemError.js +8 -25
  21. package/build/errors/DecryptKemError.js.map +1 -0
  22. package/build/errors/PolicyError.d.ts +8 -0
  23. package/build/errors/PolicyError.js +8 -25
  24. package/build/errors/PolicyError.js.map +1 -0
  25. package/build/errors/VaultError.d.ts +52 -0
  26. package/build/errors/VaultError.js +19 -30
  27. package/build/errors/VaultError.js.map +1 -0
  28. package/build/errors/index.d.ts +5 -0
  29. package/build/errors/index.js +1 -0
  30. package/build/errors/index.js.map +1 -0
  31. package/build/handlers/CreateVaultHandler.d.ts +18 -0
  32. package/build/handlers/CreateVaultHandler.js +75 -0
  33. package/build/handlers/CreateVaultHandler.js.map +1 -0
  34. package/build/handlers/DeleteVaultHandler.d.ts +17 -0
  35. package/build/handlers/DeleteVaultHandler.js +48 -0
  36. package/build/handlers/DeleteVaultHandler.js.map +1 -0
  37. package/build/handlers/DenyAccessHandler.d.ts +15 -0
  38. package/build/handlers/DenyAccessHandler.js +39 -0
  39. package/build/handlers/DenyAccessHandler.js.map +1 -0
  40. package/build/handlers/DenyShareHandler.d.ts +17 -0
  41. package/build/handlers/DenyShareHandler.js +49 -0
  42. package/build/handlers/DenyShareHandler.js.map +1 -0
  43. package/build/handlers/GrantAccessHandler.d.ts +17 -0
  44. package/build/handlers/GrantAccessHandler.js +59 -0
  45. package/build/handlers/GrantAccessHandler.js.map +1 -0
  46. package/build/handlers/ProvideShareHandler.d.ts +17 -0
  47. package/build/handlers/ProvideShareHandler.js +77 -0
  48. package/build/handlers/ProvideShareHandler.js.map +1 -0
  49. package/build/handlers/RequestAccessHandler.d.ts +18 -0
  50. package/build/handlers/RequestAccessHandler.js +60 -0
  51. package/build/handlers/RequestAccessHandler.js.map +1 -0
  52. package/build/handlers/RequestShareHandler.d.ts +19 -0
  53. package/build/handlers/RequestShareHandler.js +70 -0
  54. package/build/handlers/RequestShareHandler.js.map +1 -0
  55. package/build/handlers/RequestStorageHandler.d.ts +53 -0
  56. package/build/handlers/RequestStorageHandler.js +158 -0
  57. package/build/handlers/RequestStorageHandler.js.map +1 -0
  58. package/build/handlers/RetrieveVaultHandler.d.ts +18 -0
  59. package/build/handlers/RetrieveVaultHandler.js +65 -0
  60. package/build/handlers/RetrieveVaultHandler.js.map +1 -0
  61. package/build/handlers/StoreVaultHandler.d.ts +17 -0
  62. package/build/handlers/StoreVaultHandler.js +77 -0
  63. package/build/handlers/StoreVaultHandler.js.map +1 -0
  64. package/build/handlers/UpdateVaultHandler.d.ts +18 -0
  65. package/build/handlers/UpdateVaultHandler.js +77 -0
  66. package/build/handlers/UpdateVaultHandler.js.map +1 -0
  67. package/build/handlers/VaultCreatedAckHandler.d.ts +15 -0
  68. package/build/handlers/VaultCreatedAckHandler.js +39 -0
  69. package/build/handlers/VaultCreatedAckHandler.js.map +1 -0
  70. package/build/handlers/VaultDataHandler.d.ts +19 -0
  71. package/build/handlers/VaultDataHandler.js +68 -0
  72. package/build/handlers/VaultDataHandler.js.map +1 -0
  73. package/build/handlers/VaultProblemReportHandler.d.ts +17 -0
  74. package/build/handlers/VaultProblemReportHandler.js +40 -0
  75. package/build/handlers/VaultProblemReportHandler.js.map +1 -0
  76. package/build/handlers/VaultReferenceHandler.d.ts +33 -0
  77. package/build/handlers/VaultReferenceHandler.js +169 -0
  78. package/build/handlers/VaultReferenceHandler.js.map +1 -0
  79. package/build/handlers/VaultStoredAckHandler.d.ts +15 -0
  80. package/build/handlers/VaultStoredAckHandler.js +38 -0
  81. package/build/handlers/VaultStoredAckHandler.js.map +1 -0
  82. package/build/handlers/index.d.ts +17 -0
  83. package/build/handlers/index.js +44 -0
  84. package/build/handlers/index.js.map +1 -0
  85. package/build/index.d.ts +42 -0
  86. package/build/index.js +13 -1
  87. package/build/index.js.map +1 -0
  88. package/build/messages/CreateVaultMessage.d.ts +39 -0
  89. package/build/messages/CreateVaultMessage.js +65 -115
  90. package/build/messages/CreateVaultMessage.js.map +1 -0
  91. package/build/messages/DeleteVaultMessage.d.ts +22 -0
  92. package/build/messages/DeleteVaultMessage.js +51 -103
  93. package/build/messages/DeleteVaultMessage.js.map +1 -0
  94. package/build/messages/DenyAccessMessage.d.ts +22 -0
  95. package/build/messages/DenyAccessMessage.js +50 -103
  96. package/build/messages/DenyAccessMessage.js.map +1 -0
  97. package/build/messages/DenyShareMessage.d.ts +24 -0
  98. package/build/messages/DenyShareMessage.js +56 -109
  99. package/build/messages/DenyShareMessage.js.map +1 -0
  100. package/build/messages/GrantAccessMessage.d.ts +32 -0
  101. package/build/messages/GrantAccessMessage.js +63 -115
  102. package/build/messages/GrantAccessMessage.js.map +1 -0
  103. package/build/messages/ProvideShareMessage.d.ts +26 -0
  104. package/build/messages/ProvideShareMessage.js +62 -115
  105. package/build/messages/ProvideShareMessage.js.map +1 -0
  106. package/build/messages/ProvideStorageMessage.d.ts +90 -0
  107. package/build/messages/ProvideStorageMessage.js +193 -0
  108. package/build/messages/ProvideStorageMessage.js.map +1 -0
  109. package/build/messages/RequestAccessMessage.d.ts +30 -0
  110. package/build/messages/RequestAccessMessage.js +57 -109
  111. package/build/messages/RequestAccessMessage.js.map +1 -0
  112. package/build/messages/RequestShareMessage.d.ts +24 -0
  113. package/build/messages/RequestShareMessage.js +56 -109
  114. package/build/messages/RequestShareMessage.js.map +1 -0
  115. package/build/messages/RequestStorageMessage.d.ts +50 -0
  116. package/build/messages/RequestStorageMessage.js +98 -0
  117. package/build/messages/RequestStorageMessage.js.map +1 -0
  118. package/build/messages/RetrieveVaultMessage.d.ts +20 -0
  119. package/build/messages/RetrieveVaultMessage.js +44 -97
  120. package/build/messages/RetrieveVaultMessage.js.map +1 -0
  121. package/build/messages/StoreVaultMessage.d.ts +23 -0
  122. package/build/messages/StoreVaultMessage.js +51 -103
  123. package/build/messages/StoreVaultMessage.js.map +1 -0
  124. package/build/messages/UpdateVaultMessage.d.ts +25 -0
  125. package/build/messages/UpdateVaultMessage.js +58 -109
  126. package/build/messages/UpdateVaultMessage.js.map +1 -0
  127. package/build/messages/VaultCreatedAckMessage.d.ts +20 -0
  128. package/build/messages/VaultCreatedAckMessage.js +44 -97
  129. package/build/messages/VaultCreatedAckMessage.js.map +1 -0
  130. package/build/messages/VaultDataMessage.d.ts +34 -0
  131. package/build/messages/VaultDataMessage.js +59 -110
  132. package/build/messages/VaultDataMessage.js.map +1 -0
  133. package/build/messages/VaultProblemReportMessage.d.ts +35 -0
  134. package/build/messages/VaultProblemReportMessage.js +56 -102
  135. package/build/messages/VaultProblemReportMessage.js.map +1 -0
  136. package/build/messages/VaultReferenceMessage.d.ts +66 -0
  137. package/build/messages/VaultReferenceMessage.js +138 -0
  138. package/build/messages/VaultReferenceMessage.js.map +1 -0
  139. package/build/messages/VaultStoredAckMessage.d.ts +33 -0
  140. package/build/messages/VaultStoredAckMessage.js +51 -104
  141. package/build/messages/VaultStoredAckMessage.js.map +1 -0
  142. package/build/messages/index.d.ts +18 -0
  143. package/build/messages/index.js +6 -1
  144. package/build/messages/index.js.map +1 -0
  145. package/build/models/ThresholdSession.d.ts +37 -0
  146. package/build/models/ThresholdSession.js +1 -0
  147. package/build/models/ThresholdSession.js.map +1 -0
  148. package/build/models/VaultDocument.d.ts +22 -0
  149. package/build/models/VaultDocument.js +1 -0
  150. package/build/models/VaultDocument.js.map +1 -0
  151. package/build/models/VaultHeader.d.ts +92 -0
  152. package/build/models/VaultHeader.js +4 -6
  153. package/build/models/VaultHeader.js.map +1 -0
  154. package/build/models/VaultPolicy.d.ts +24 -0
  155. package/build/models/VaultPolicy.js +1 -0
  156. package/build/models/VaultPolicy.js.map +1 -0
  157. package/build/models/index.d.ts +4 -0
  158. package/build/models/index.js +1 -0
  159. package/build/models/index.js.map +1 -0
  160. package/build/repository/KemKeypairRecord.d.ts +37 -0
  161. package/build/repository/KemKeypairRecord.js +35 -0
  162. package/build/repository/KemKeypairRecord.js.map +1 -0
  163. package/build/repository/KemKeypairRepository.d.ts +18 -0
  164. package/build/repository/KemKeypairRepository.js +50 -0
  165. package/build/repository/KemKeypairRepository.js.map +1 -0
  166. package/build/repository/ThresholdSessionRecord.d.ts +93 -0
  167. package/build/repository/ThresholdSessionRecord.js +58 -92
  168. package/build/repository/ThresholdSessionRecord.js.map +1 -0
  169. package/build/repository/ThresholdSessionRepository.d.ts +35 -0
  170. package/build/repository/ThresholdSessionRepository.js +72 -208
  171. package/build/repository/ThresholdSessionRepository.js.map +1 -0
  172. package/build/repository/VaultRecord.d.ts +105 -0
  173. package/build/repository/VaultRecord.js +94 -115
  174. package/build/repository/VaultRecord.js.map +1 -0
  175. package/build/repository/VaultRepository.d.ts +35 -0
  176. package/build/repository/VaultRepository.js +66 -192
  177. package/build/repository/VaultRepository.js.map +1 -0
  178. package/build/repository/index.d.ts +9 -0
  179. package/build/repository/index.js +7 -1
  180. package/build/repository/index.js.map +1 -0
  181. package/build/services/HPKEService.d.ts +67 -0
  182. package/build/services/HPKEService.js +106 -0
  183. package/build/services/HPKEService.js.map +1 -0
  184. package/build/services/KemKeyExchangeService.d.ts +207 -0
  185. package/build/services/KemKeyExchangeService.js +323 -0
  186. package/build/services/KemKeyExchangeService.js.map +1 -0
  187. package/build/services/VaultEncryptionService.d.ts +120 -0
  188. package/build/services/VaultEncryptionService.js +469 -588
  189. package/build/services/VaultEncryptionService.js.map +1 -0
  190. package/build/services/VaultService.d.ts +127 -0
  191. package/build/services/VaultService.js +224 -376
  192. package/build/services/VaultService.js.map +1 -0
  193. package/build/services/VaultSigningService.d.ts +216 -0
  194. package/build/services/VaultSigningService.js +498 -0
  195. package/build/services/VaultSigningService.js.map +1 -0
  196. package/build/services/index.d.ts +9 -0
  197. package/build/services/index.js +10 -1
  198. package/build/services/index.js.map +1 -0
  199. package/build/storage/VaultStorageConfig.d.ts +97 -0
  200. package/build/storage/VaultStorageConfig.js +22 -0
  201. package/build/storage/VaultStorageConfig.js.map +1 -0
  202. package/build/storage/VaultStorageService.d.ts +118 -0
  203. package/build/storage/VaultStorageService.js +381 -0
  204. package/build/storage/VaultStorageService.js.map +1 -0
  205. package/build/storage/index.d.ts +2 -0
  206. package/build/storage/index.js +21 -0
  207. package/build/storage/index.js.map +1 -0
  208. package/package.json +5 -2
@@ -0,0 +1,216 @@
1
+ import type { AgentContext } from '@credo-ts/core';
2
+ import type { VaultHeader } from '../models';
3
+ import type { VaultStorageReference } from '../repository/VaultRecord';
4
+ import { ConnectionRepository, EventEmitter, MessageSender } from '@credo-ts/core';
5
+ import type { Logger } from '@credo-ts/core';
6
+ import { VaultEncryptionService } from './VaultEncryptionService';
7
+ import { KemKeyExchangeService } from './KemKeyExchangeService';
8
+ import { VaultStorageService } from '../storage/VaultStorageService';
9
+ import { VaultRepository } from '../repository/VaultRepository';
10
+ import { VaultRecord } from '../repository/VaultRecord';
11
+ import { StoreVaultMessage, VaultDataMessage } from '../messages';
12
+ export interface CreateSigningVaultOptions {
13
+ /** Document to encrypt for signing */
14
+ document: Uint8Array;
15
+ /** Connection ID of the signer */
16
+ signerConnectionId: string;
17
+ /** Document type hint */
18
+ documentType: 'pdf' | 'json' | 'xml' | 'other';
19
+ /** Optional vault ID */
20
+ vaultId?: string;
21
+ /** Optional metadata */
22
+ metadata?: {
23
+ description?: string;
24
+ filename?: string;
25
+ tags?: string[];
26
+ };
27
+ /** Force use of external storage even for small files */
28
+ forceExternalStorage?: boolean;
29
+ /** Custom inline threshold (bytes) - files larger than this use external storage */
30
+ inlineThreshold?: number;
31
+ }
32
+ export interface SigningVaultResult {
33
+ vaultId: string;
34
+ docId: string;
35
+ /** The vault record for local storage */
36
+ record: VaultRecord;
37
+ /** Storage reference if using external storage */
38
+ storageReference?: VaultStorageReference;
39
+ /** Whether external storage was used */
40
+ usedExternalStorage: boolean;
41
+ }
42
+ export interface OpenSigningVaultResult {
43
+ /** Decrypted document */
44
+ document: Uint8Array;
45
+ /** Vault metadata */
46
+ header: VaultHeader;
47
+ /** Document type if present */
48
+ documentType?: string;
49
+ }
50
+ export interface ReturnSignedDocumentOptions {
51
+ /** Signed document bytes */
52
+ signedDocument: Uint8Array;
53
+ /** Original vault ID this is a response to */
54
+ originalVaultId: string;
55
+ /** Connection ID of the vault owner */
56
+ ownerConnectionId: string;
57
+ /** Document type */
58
+ documentType: 'pdf' | 'json' | 'xml' | 'other';
59
+ /** Optional metadata */
60
+ metadata?: {
61
+ signatureType?: string;
62
+ signedAt?: string;
63
+ [key: string]: unknown;
64
+ };
65
+ }
66
+ /**
67
+ * Vault Signing Service
68
+ *
69
+ * Orchestrates vault operations for document signing workflows:
70
+ * - Create vaults encrypted to signer's ML-KEM key
71
+ * - Open vaults received for signing
72
+ * - Return signed documents via encrypted vault
73
+ *
74
+ * Flow:
75
+ * 1. Alice creates signing vault encrypted to Bob's ML-KEM key
76
+ * 2. Alice sends vault reference to Bob
77
+ * 3. Bob retrieves and decrypts vault
78
+ * 4. Bob signs document
79
+ * 5. Bob creates response vault encrypted to Alice's ML-KEM key
80
+ * 6. Bob sends signed document back to Alice
81
+ */
82
+ export declare class VaultSigningService {
83
+ private encryptionService;
84
+ private kemKeyExchangeService;
85
+ private vaultRepository;
86
+ private connectionRepository;
87
+ private eventEmitter;
88
+ private messageSender;
89
+ private logger;
90
+ private storageService?;
91
+ constructor(logger: Logger, encryptionService: VaultEncryptionService, kemKeyExchangeService: KemKeyExchangeService, vaultRepository: VaultRepository, connectionRepository: ConnectionRepository, eventEmitter: EventEmitter, messageSender: MessageSender);
92
+ /**
93
+ * Set the storage service for large file support
94
+ */
95
+ setStorageService(storageService: VaultStorageService): void;
96
+ /**
97
+ * Check if external storage is available
98
+ */
99
+ hasExternalStorage(): boolean;
100
+ /**
101
+ * Create a vault encrypted to a signer's ML-KEM public key
102
+ *
103
+ * @param agentContext - Agent context
104
+ * @param options - Creation options
105
+ * @returns Created vault identifiers
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const { vaultId } = await vaultSigningService.createSigningVault(agentContext, {
110
+ * document: pdfBytes,
111
+ * signerConnectionId: bobConnectionId,
112
+ * documentType: 'pdf',
113
+ * metadata: { description: 'Contract for signing' }
114
+ * })
115
+ * ```
116
+ */
117
+ createSigningVault(agentContext: AgentContext, options: CreateSigningVaultOptions): Promise<SigningVaultResult>;
118
+ /**
119
+ * Open (decrypt) a vault received for signing
120
+ *
121
+ * Uses the agent's own ML-KEM secret key to decrypt
122
+ *
123
+ * @param agentContext - Agent context
124
+ * @param vaultData - Received vault data message or vault record
125
+ * @param secretKey - ML-KEM secret key to decrypt with
126
+ * @param kid - Key identifier
127
+ * @returns Decrypted document and metadata
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const { document, header } = await vaultSigningService.openSigningVault(
132
+ * agentContext,
133
+ * vaultData,
134
+ * myKemKeypair.secretKey,
135
+ * myKemKeypair.kid
136
+ * )
137
+ * // Now sign the document
138
+ * const signedPdf = await signPdf(document)
139
+ * ```
140
+ */
141
+ openSigningVault(agentContext: AgentContext, vaultData: VaultDataMessage | VaultRecord, secretKey: Uint8Array, kid: string): Promise<OpenSigningVaultResult>;
142
+ /**
143
+ * Share a signing vault with a connection
144
+ *
145
+ * Sends the vault data to the specified connection
146
+ *
147
+ * @param agentContext - Agent context
148
+ * @param vaultId - Vault to share
149
+ * @param connectionId - Connection to send to
150
+ */
151
+ shareSigningVault(agentContext: AgentContext, vaultId: string, connectionId: string, options?: {
152
+ /** Include pre-signed download URL for recipient */
153
+ includeDownloadUrl?: boolean;
154
+ /** Download URL expiration in seconds */
155
+ downloadUrlExpiry?: number;
156
+ }): Promise<void>;
157
+ /**
158
+ * Return a signed document to the original vault owner
159
+ *
160
+ * Creates a new vault with the signed document encrypted to the owner's ML-KEM key
161
+ *
162
+ * @param agentContext - Agent context
163
+ * @param options - Return options
164
+ * @returns New vault containing signed document
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * await vaultSigningService.returnSignedDocument(agentContext, {
169
+ * signedDocument: signedPdfBytes,
170
+ * originalVaultId: receivedVaultId,
171
+ * ownerConnectionId: aliceConnectionId,
172
+ * documentType: 'pdf',
173
+ * metadata: { signatureType: 'pades-b-lta' }
174
+ * })
175
+ * ```
176
+ */
177
+ returnSignedDocument(agentContext: AgentContext, options: ReturnSignedDocumentOptions): Promise<SigningVaultResult>;
178
+ /**
179
+ * Store a received signing vault locally
180
+ *
181
+ * Called when receiving a vault for signing from another agent
182
+ *
183
+ * @param agentContext - Agent context
184
+ * @param message - Received vault message
185
+ * @param senderConnectionId - Connection that sent the vault
186
+ * @returns Stored vault record
187
+ */
188
+ storeReceivedSigningVault(agentContext: AgentContext, message: StoreVaultMessage | VaultDataMessage, senderConnectionId: string): Promise<VaultRecord>;
189
+ /**
190
+ * Resolve the decryption key for a vault
191
+ *
192
+ * Implements the unified KEM key resolution strategy:
193
+ * 1. Extract recipient kids from vault header
194
+ * 2. Search local KEM keypairs for a matching kid (works for both received and owned vaults)
195
+ * 3. Fall back to connection-based lookup via signerConnectionId metadata
196
+ *
197
+ * @param agentContext - Agent context
198
+ * @param vaultId - Vault to find decryption key for
199
+ * @returns Secret key, kid, and connectionId; or null if no matching key found
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const key = await vaultSigningService.resolveVaultDecryptionKey(agentContext, vaultId)
204
+ * if (key) {
205
+ * const { document } = await vaultSigningService.openSigningVault(
206
+ * agentContext, vaultRecord, key.secretKey, key.kid
207
+ * )
208
+ * }
209
+ * ```
210
+ */
211
+ resolveVaultDecryptionKey(agentContext: AgentContext, vaultId: string): Promise<{
212
+ secretKey: Uint8Array;
213
+ kid: string;
214
+ connectionId: string;
215
+ } | null>;
216
+ }