@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.
- package/build/VaultsApi.d.ts +363 -0
- package/build/VaultsApi.js +450 -248
- package/build/VaultsApi.js.map +1 -0
- package/build/VaultsEvents.d.ts +227 -0
- package/build/VaultsEvents.js +8 -0
- package/build/VaultsEvents.js.map +1 -0
- package/build/VaultsModule.d.ts +64 -0
- package/build/VaultsModule.js +43 -18
- package/build/VaultsModule.js.map +1 -0
- package/build/crypto/wasm/VaultCrypto.d.ts +19 -0
- package/build/crypto/wasm/VaultCrypto.js +29 -42
- package/build/crypto/wasm/VaultCrypto.js.map +1 -0
- package/build/errors/BadSuiteError.d.ts +8 -0
- package/build/errors/BadSuiteError.js +8 -25
- package/build/errors/BadSuiteError.js.map +1 -0
- package/build/errors/DecryptAeadError.d.ts +8 -0
- package/build/errors/DecryptAeadError.js +8 -25
- package/build/errors/DecryptAeadError.js.map +1 -0
- package/build/errors/DecryptKemError.d.ts +8 -0
- package/build/errors/DecryptKemError.js +8 -25
- package/build/errors/DecryptKemError.js.map +1 -0
- package/build/errors/PolicyError.d.ts +8 -0
- package/build/errors/PolicyError.js +8 -25
- package/build/errors/PolicyError.js.map +1 -0
- package/build/errors/VaultError.d.ts +52 -0
- package/build/errors/VaultError.js +19 -30
- package/build/errors/VaultError.js.map +1 -0
- package/build/errors/index.d.ts +5 -0
- package/build/errors/index.js +1 -0
- package/build/errors/index.js.map +1 -0
- package/build/handlers/CreateVaultHandler.d.ts +18 -0
- package/build/handlers/CreateVaultHandler.js +75 -0
- package/build/handlers/CreateVaultHandler.js.map +1 -0
- package/build/handlers/DeleteVaultHandler.d.ts +17 -0
- package/build/handlers/DeleteVaultHandler.js +48 -0
- package/build/handlers/DeleteVaultHandler.js.map +1 -0
- package/build/handlers/DenyAccessHandler.d.ts +15 -0
- package/build/handlers/DenyAccessHandler.js +39 -0
- package/build/handlers/DenyAccessHandler.js.map +1 -0
- package/build/handlers/DenyShareHandler.d.ts +17 -0
- package/build/handlers/DenyShareHandler.js +49 -0
- package/build/handlers/DenyShareHandler.js.map +1 -0
- package/build/handlers/GrantAccessHandler.d.ts +17 -0
- package/build/handlers/GrantAccessHandler.js +59 -0
- package/build/handlers/GrantAccessHandler.js.map +1 -0
- package/build/handlers/ProvideShareHandler.d.ts +17 -0
- package/build/handlers/ProvideShareHandler.js +77 -0
- package/build/handlers/ProvideShareHandler.js.map +1 -0
- package/build/handlers/RequestAccessHandler.d.ts +18 -0
- package/build/handlers/RequestAccessHandler.js +60 -0
- package/build/handlers/RequestAccessHandler.js.map +1 -0
- package/build/handlers/RequestShareHandler.d.ts +19 -0
- package/build/handlers/RequestShareHandler.js +70 -0
- package/build/handlers/RequestShareHandler.js.map +1 -0
- package/build/handlers/RequestStorageHandler.d.ts +53 -0
- package/build/handlers/RequestStorageHandler.js +158 -0
- package/build/handlers/RequestStorageHandler.js.map +1 -0
- package/build/handlers/RetrieveVaultHandler.d.ts +18 -0
- package/build/handlers/RetrieveVaultHandler.js +65 -0
- package/build/handlers/RetrieveVaultHandler.js.map +1 -0
- package/build/handlers/StoreVaultHandler.d.ts +17 -0
- package/build/handlers/StoreVaultHandler.js +77 -0
- package/build/handlers/StoreVaultHandler.js.map +1 -0
- package/build/handlers/UpdateVaultHandler.d.ts +18 -0
- package/build/handlers/UpdateVaultHandler.js +77 -0
- package/build/handlers/UpdateVaultHandler.js.map +1 -0
- package/build/handlers/VaultCreatedAckHandler.d.ts +15 -0
- package/build/handlers/VaultCreatedAckHandler.js +39 -0
- package/build/handlers/VaultCreatedAckHandler.js.map +1 -0
- package/build/handlers/VaultDataHandler.d.ts +19 -0
- package/build/handlers/VaultDataHandler.js +68 -0
- package/build/handlers/VaultDataHandler.js.map +1 -0
- package/build/handlers/VaultProblemReportHandler.d.ts +17 -0
- package/build/handlers/VaultProblemReportHandler.js +40 -0
- package/build/handlers/VaultProblemReportHandler.js.map +1 -0
- package/build/handlers/VaultReferenceHandler.d.ts +33 -0
- package/build/handlers/VaultReferenceHandler.js +169 -0
- package/build/handlers/VaultReferenceHandler.js.map +1 -0
- package/build/handlers/VaultStoredAckHandler.d.ts +15 -0
- package/build/handlers/VaultStoredAckHandler.js +38 -0
- package/build/handlers/VaultStoredAckHandler.js.map +1 -0
- package/build/handlers/index.d.ts +17 -0
- package/build/handlers/index.js +44 -0
- package/build/handlers/index.js.map +1 -0
- package/build/index.d.ts +42 -0
- package/build/index.js +13 -1
- package/build/index.js.map +1 -0
- package/build/messages/CreateVaultMessage.d.ts +39 -0
- package/build/messages/CreateVaultMessage.js +65 -115
- package/build/messages/CreateVaultMessage.js.map +1 -0
- package/build/messages/DeleteVaultMessage.d.ts +22 -0
- package/build/messages/DeleteVaultMessage.js +51 -103
- package/build/messages/DeleteVaultMessage.js.map +1 -0
- package/build/messages/DenyAccessMessage.d.ts +22 -0
- package/build/messages/DenyAccessMessage.js +50 -103
- package/build/messages/DenyAccessMessage.js.map +1 -0
- package/build/messages/DenyShareMessage.d.ts +24 -0
- package/build/messages/DenyShareMessage.js +56 -109
- package/build/messages/DenyShareMessage.js.map +1 -0
- package/build/messages/GrantAccessMessage.d.ts +32 -0
- package/build/messages/GrantAccessMessage.js +63 -115
- package/build/messages/GrantAccessMessage.js.map +1 -0
- package/build/messages/ProvideShareMessage.d.ts +26 -0
- package/build/messages/ProvideShareMessage.js +62 -115
- package/build/messages/ProvideShareMessage.js.map +1 -0
- package/build/messages/ProvideStorageMessage.d.ts +90 -0
- package/build/messages/ProvideStorageMessage.js +193 -0
- package/build/messages/ProvideStorageMessage.js.map +1 -0
- package/build/messages/RequestAccessMessage.d.ts +30 -0
- package/build/messages/RequestAccessMessage.js +57 -109
- package/build/messages/RequestAccessMessage.js.map +1 -0
- package/build/messages/RequestShareMessage.d.ts +24 -0
- package/build/messages/RequestShareMessage.js +56 -109
- package/build/messages/RequestShareMessage.js.map +1 -0
- package/build/messages/RequestStorageMessage.d.ts +50 -0
- package/build/messages/RequestStorageMessage.js +98 -0
- package/build/messages/RequestStorageMessage.js.map +1 -0
- package/build/messages/RetrieveVaultMessage.d.ts +20 -0
- package/build/messages/RetrieveVaultMessage.js +44 -97
- package/build/messages/RetrieveVaultMessage.js.map +1 -0
- package/build/messages/StoreVaultMessage.d.ts +23 -0
- package/build/messages/StoreVaultMessage.js +51 -103
- package/build/messages/StoreVaultMessage.js.map +1 -0
- package/build/messages/UpdateVaultMessage.d.ts +25 -0
- package/build/messages/UpdateVaultMessage.js +58 -109
- package/build/messages/UpdateVaultMessage.js.map +1 -0
- package/build/messages/VaultCreatedAckMessage.d.ts +20 -0
- package/build/messages/VaultCreatedAckMessage.js +44 -97
- package/build/messages/VaultCreatedAckMessage.js.map +1 -0
- package/build/messages/VaultDataMessage.d.ts +34 -0
- package/build/messages/VaultDataMessage.js +59 -110
- package/build/messages/VaultDataMessage.js.map +1 -0
- package/build/messages/VaultProblemReportMessage.d.ts +35 -0
- package/build/messages/VaultProblemReportMessage.js +56 -102
- package/build/messages/VaultProblemReportMessage.js.map +1 -0
- package/build/messages/VaultReferenceMessage.d.ts +66 -0
- package/build/messages/VaultReferenceMessage.js +138 -0
- package/build/messages/VaultReferenceMessage.js.map +1 -0
- package/build/messages/VaultStoredAckMessage.d.ts +33 -0
- package/build/messages/VaultStoredAckMessage.js +51 -104
- package/build/messages/VaultStoredAckMessage.js.map +1 -0
- package/build/messages/index.d.ts +18 -0
- package/build/messages/index.js +6 -1
- package/build/messages/index.js.map +1 -0
- package/build/models/ThresholdSession.d.ts +37 -0
- package/build/models/ThresholdSession.js +1 -0
- package/build/models/ThresholdSession.js.map +1 -0
- package/build/models/VaultDocument.d.ts +22 -0
- package/build/models/VaultDocument.js +1 -0
- package/build/models/VaultDocument.js.map +1 -0
- package/build/models/VaultHeader.d.ts +92 -0
- package/build/models/VaultHeader.js +4 -6
- package/build/models/VaultHeader.js.map +1 -0
- package/build/models/VaultPolicy.d.ts +24 -0
- package/build/models/VaultPolicy.js +1 -0
- package/build/models/VaultPolicy.js.map +1 -0
- package/build/models/index.d.ts +4 -0
- package/build/models/index.js +1 -0
- package/build/models/index.js.map +1 -0
- package/build/repository/KemKeypairRecord.d.ts +37 -0
- package/build/repository/KemKeypairRecord.js +35 -0
- package/build/repository/KemKeypairRecord.js.map +1 -0
- package/build/repository/KemKeypairRepository.d.ts +18 -0
- package/build/repository/KemKeypairRepository.js +50 -0
- package/build/repository/KemKeypairRepository.js.map +1 -0
- package/build/repository/ThresholdSessionRecord.d.ts +93 -0
- package/build/repository/ThresholdSessionRecord.js +58 -92
- package/build/repository/ThresholdSessionRecord.js.map +1 -0
- package/build/repository/ThresholdSessionRepository.d.ts +35 -0
- package/build/repository/ThresholdSessionRepository.js +72 -208
- package/build/repository/ThresholdSessionRepository.js.map +1 -0
- package/build/repository/VaultRecord.d.ts +105 -0
- package/build/repository/VaultRecord.js +94 -115
- package/build/repository/VaultRecord.js.map +1 -0
- package/build/repository/VaultRepository.d.ts +35 -0
- package/build/repository/VaultRepository.js +66 -192
- package/build/repository/VaultRepository.js.map +1 -0
- package/build/repository/index.d.ts +9 -0
- package/build/repository/index.js +7 -1
- package/build/repository/index.js.map +1 -0
- package/build/services/HPKEService.d.ts +67 -0
- package/build/services/HPKEService.js +106 -0
- package/build/services/HPKEService.js.map +1 -0
- package/build/services/KemKeyExchangeService.d.ts +207 -0
- package/build/services/KemKeyExchangeService.js +323 -0
- package/build/services/KemKeyExchangeService.js.map +1 -0
- package/build/services/VaultEncryptionService.d.ts +120 -0
- package/build/services/VaultEncryptionService.js +469 -588
- package/build/services/VaultEncryptionService.js.map +1 -0
- package/build/services/VaultService.d.ts +127 -0
- package/build/services/VaultService.js +224 -376
- package/build/services/VaultService.js.map +1 -0
- package/build/services/VaultSigningService.d.ts +216 -0
- package/build/services/VaultSigningService.js +498 -0
- package/build/services/VaultSigningService.js.map +1 -0
- package/build/services/index.d.ts +9 -0
- package/build/services/index.js +10 -1
- package/build/services/index.js.map +1 -0
- package/build/storage/VaultStorageConfig.d.ts +97 -0
- package/build/storage/VaultStorageConfig.js +22 -0
- package/build/storage/VaultStorageConfig.js.map +1 -0
- package/build/storage/VaultStorageService.d.ts +118 -0
- package/build/storage/VaultStorageService.js +381 -0
- package/build/storage/VaultStorageService.js.map +1 -0
- package/build/storage/index.d.ts +2 -0
- package/build/storage/index.js +21 -0
- package/build/storage/index.js.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Handler for store-vault messages
|
|
4
|
+
*
|
|
5
|
+
* Receives and stores a vault sent from a peer.
|
|
6
|
+
* Used when receiving a signing vault or shared vault.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StoreVaultHandler = void 0;
|
|
10
|
+
const core_1 = require("@credo-ts/core");
|
|
11
|
+
const messages_1 = require("../messages");
|
|
12
|
+
const VaultRecord_1 = require("../repository/VaultRecord");
|
|
13
|
+
const VaultsEvents_1 = require("../VaultsEvents");
|
|
14
|
+
class StoreVaultHandler {
|
|
15
|
+
constructor(vaultRepository, eventEmitter) {
|
|
16
|
+
this.supportedMessages = [messages_1.StoreVaultMessage];
|
|
17
|
+
this.vaultRepository = vaultRepository;
|
|
18
|
+
this.eventEmitter = eventEmitter;
|
|
19
|
+
}
|
|
20
|
+
async handle(messageContext) {
|
|
21
|
+
const { agentContext, connection, message } = messageContext;
|
|
22
|
+
// Check if vault already exists
|
|
23
|
+
const existing = await this.vaultRepository.findByVaultId(agentContext, message.vaultId);
|
|
24
|
+
if (existing) {
|
|
25
|
+
// Update existing vault
|
|
26
|
+
existing.header = message.header;
|
|
27
|
+
existing.ciphertext = message.ciphertext;
|
|
28
|
+
existing.updatedAt = new Date();
|
|
29
|
+
// Track sender in metadata
|
|
30
|
+
existing.header.metadata = {
|
|
31
|
+
...existing.header.metadata,
|
|
32
|
+
lastReceivedFrom: connection?.id,
|
|
33
|
+
lastReceivedAt: new Date().toISOString(),
|
|
34
|
+
};
|
|
35
|
+
await this.vaultRepository.update(agentContext, existing);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Create new vault record
|
|
39
|
+
const record = new VaultRecord_1.VaultRecord({
|
|
40
|
+
vaultId: message.vaultId,
|
|
41
|
+
docId: message.docId,
|
|
42
|
+
header: message.header,
|
|
43
|
+
ciphertext: message.ciphertext,
|
|
44
|
+
ownerDid: agentContext.contextCorrelationId,
|
|
45
|
+
});
|
|
46
|
+
// Track sender in metadata
|
|
47
|
+
record.header.metadata = {
|
|
48
|
+
...record.header.metadata,
|
|
49
|
+
receivedFrom: connection?.id,
|
|
50
|
+
receivedAt: new Date().toISOString(),
|
|
51
|
+
};
|
|
52
|
+
await this.vaultRepository.save(agentContext, record);
|
|
53
|
+
}
|
|
54
|
+
// Emit event
|
|
55
|
+
this.eventEmitter.emit(agentContext, {
|
|
56
|
+
type: VaultsEvents_1.VaultEventTypes.VaultShared,
|
|
57
|
+
payload: {
|
|
58
|
+
vaultId: message.vaultId,
|
|
59
|
+
docId: message.docId,
|
|
60
|
+
sharedBy: connection?.id,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
// Return acknowledgment
|
|
64
|
+
const ackMessage = new messages_1.VaultStoredAckMessage({
|
|
65
|
+
threadId: message.id,
|
|
66
|
+
vaultId: message.vaultId,
|
|
67
|
+
docId: message.docId,
|
|
68
|
+
storageLocation: 'local',
|
|
69
|
+
storageMetadata: {
|
|
70
|
+
timestamp: new Date().toISOString(),
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
return new core_1.OutboundMessageContext(ackMessage, { agentContext, connection });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.StoreVaultHandler = StoreVaultHandler;
|
|
77
|
+
//# sourceMappingURL=StoreVaultHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreVaultHandler.js","sourceRoot":"","sources":["../../src/handlers/StoreVaultHandler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,yCAAqE;AAErE,0CAAsE;AAEtE,2DAAuD;AACvD,kDAAiD;AAEjD,MAAa,iBAAiB;IAK5B,YAAmB,eAAgC,EAAE,YAA0B;QAFxE,sBAAiB,GAAG,CAAC,4BAAiB,CAAC,CAAA;QAG5C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,cAA+D;QACjF,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,cAAc,CAAA;QAE5D,gCAAgC;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAExF,IAAI,QAAQ,EAAE,CAAC;YACb,wBAAwB;YACxB,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAChC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;YACxC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;YAE/B,2BAA2B;YAC3B,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG;gBACzB,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ;gBAC3B,gBAAgB,EAAE,UAAU,EAAE,EAAE;gBAChC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACzC,CAAA;YAED,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC3D,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,MAAM,MAAM,GAAG,IAAI,yBAAW,CAAC;gBAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,YAAY,CAAC,oBAAoB;aAC5C,CAAC,CAAA;YAEF,2BAA2B;YAC3B,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG;gBACvB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;gBACzB,YAAY,EAAE,UAAU,EAAE,EAAE;gBAC5B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC,CAAA;YAED,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACvD,CAAC;QAED,aAAa;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,EAAE,8BAAe,CAAC,WAAW;YACjC,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,UAAU,EAAE,EAAE;aACzB;SACF,CAAC,CAAA;QAEF,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,gCAAqB,CAAC;YAC3C,QAAQ,EAAE,OAAO,CAAC,EAAE;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE;gBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC,CAAA;QAEF,OAAO,IAAI,6BAAsB,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAA;IAC7E,CAAC;CACF;AAzED,8CAyEC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for update-vault messages
|
|
3
|
+
*
|
|
4
|
+
* Receives vault update notifications (re-encryption, policy changes).
|
|
5
|
+
*/
|
|
6
|
+
import type { MessageHandler, MessageHandlerInboundMessage, Logger } from '@credo-ts/core';
|
|
7
|
+
import { EventEmitter, OutboundMessageContext } from '@credo-ts/core';
|
|
8
|
+
import { UpdateVaultMessage } from '../messages';
|
|
9
|
+
import { VaultRepository } from '../repository/VaultRepository';
|
|
10
|
+
import { VaultProblemReportMessage } from '../messages/VaultProblemReportMessage';
|
|
11
|
+
export declare class UpdateVaultHandler implements MessageHandler {
|
|
12
|
+
private logger;
|
|
13
|
+
private vaultRepository;
|
|
14
|
+
private eventEmitter;
|
|
15
|
+
supportedMessages: (typeof UpdateVaultMessage)[];
|
|
16
|
+
constructor(logger: Logger, vaultRepository: VaultRepository, eventEmitter: EventEmitter);
|
|
17
|
+
handle(messageContext: MessageHandlerInboundMessage<UpdateVaultHandler>): Promise<OutboundMessageContext<VaultProblemReportMessage> | undefined>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Handler for update-vault messages
|
|
4
|
+
*
|
|
5
|
+
* Receives vault update notifications (re-encryption, policy changes).
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.UpdateVaultHandler = void 0;
|
|
9
|
+
const core_1 = require("@credo-ts/core");
|
|
10
|
+
const messages_1 = require("../messages");
|
|
11
|
+
const VaultsEvents_1 = require("../VaultsEvents");
|
|
12
|
+
const VaultProblemReportMessage_1 = require("../messages/VaultProblemReportMessage");
|
|
13
|
+
class UpdateVaultHandler {
|
|
14
|
+
constructor(logger, vaultRepository, eventEmitter) {
|
|
15
|
+
this.supportedMessages = [messages_1.UpdateVaultMessage];
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.vaultRepository = vaultRepository;
|
|
18
|
+
this.eventEmitter = eventEmitter;
|
|
19
|
+
}
|
|
20
|
+
async handle(messageContext) {
|
|
21
|
+
const { agentContext, connection, message } = messageContext;
|
|
22
|
+
this.logger.debug(`Received update-vault for ${message.vaultId}`, {
|
|
23
|
+
vaultId: message.vaultId,
|
|
24
|
+
docId: message.docId,
|
|
25
|
+
newEpoch: message.newHeader.epoch,
|
|
26
|
+
reason: message.reason,
|
|
27
|
+
connectionId: connection?.id,
|
|
28
|
+
});
|
|
29
|
+
// Find existing vault
|
|
30
|
+
const existing = await this.vaultRepository.findByVaultId(agentContext, message.vaultId);
|
|
31
|
+
if (!existing) {
|
|
32
|
+
this.logger.warn(`Cannot update vault ${message.vaultId}: not found`);
|
|
33
|
+
const errorMessage = new VaultProblemReportMessage_1.VaultProblemReportMessage({
|
|
34
|
+
vaultId: message.vaultId,
|
|
35
|
+
errorCode: VaultProblemReportMessage_1.VaultErrorCodes.NOT_FOUND,
|
|
36
|
+
description: `Vault not found: ${message.vaultId}`,
|
|
37
|
+
});
|
|
38
|
+
return new core_1.OutboundMessageContext(errorMessage, { agentContext, connection });
|
|
39
|
+
}
|
|
40
|
+
// Verify epoch is increasing (prevent rollback attacks)
|
|
41
|
+
if (message.newHeader.epoch <= existing.header.epoch) {
|
|
42
|
+
this.logger.warn(`Rejecting update: epoch ${message.newHeader.epoch} <= ${existing.header.epoch}`);
|
|
43
|
+
const errorMessage = new VaultProblemReportMessage_1.VaultProblemReportMessage({
|
|
44
|
+
vaultId: message.vaultId,
|
|
45
|
+
errorCode: VaultProblemReportMessage_1.VaultErrorCodes.REPLAY,
|
|
46
|
+
description: `Invalid epoch: ${message.newHeader.epoch} must be greater than ${existing.header.epoch}`,
|
|
47
|
+
});
|
|
48
|
+
return new core_1.OutboundMessageContext(errorMessage, { agentContext, connection });
|
|
49
|
+
}
|
|
50
|
+
// Update vault
|
|
51
|
+
existing.header = message.newHeader;
|
|
52
|
+
existing.ciphertext = message.newCiphertext;
|
|
53
|
+
existing.updatedAt = new Date();
|
|
54
|
+
// Track update metadata
|
|
55
|
+
existing.header.metadata = {
|
|
56
|
+
...existing.header.metadata,
|
|
57
|
+
updatedBy: connection?.id,
|
|
58
|
+
updatedAt: new Date().toISOString(),
|
|
59
|
+
updateReason: message.reason,
|
|
60
|
+
};
|
|
61
|
+
await this.vaultRepository.update(agentContext, existing);
|
|
62
|
+
// Emit event
|
|
63
|
+
this.eventEmitter.emit(agentContext, {
|
|
64
|
+
type: VaultsEvents_1.VaultEventTypes.VaultUpdated,
|
|
65
|
+
payload: {
|
|
66
|
+
vaultId: message.vaultId,
|
|
67
|
+
docId: message.docId,
|
|
68
|
+
epoch: message.newHeader.epoch,
|
|
69
|
+
updatedBy: connection?.id,
|
|
70
|
+
reason: message.reason,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
this.logger.info(`Vault ${message.vaultId} updated to epoch ${message.newHeader.epoch}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.UpdateVaultHandler = UpdateVaultHandler;
|
|
77
|
+
//# sourceMappingURL=UpdateVaultHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateVaultHandler.js","sourceRoot":"","sources":["../../src/handlers/UpdateVaultHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for vault-created-ack messages
|
|
3
|
+
*
|
|
4
|
+
* Receives acknowledgment of vault creation notification.
|
|
5
|
+
*/
|
|
6
|
+
import type { MessageHandler, MessageHandlerInboundMessage, Logger } from '@credo-ts/core';
|
|
7
|
+
import { EventEmitter } from '@credo-ts/core';
|
|
8
|
+
import { VaultCreatedAckMessage } from '../messages';
|
|
9
|
+
export declare class VaultCreatedAckHandler implements MessageHandler {
|
|
10
|
+
private logger;
|
|
11
|
+
private eventEmitter;
|
|
12
|
+
supportedMessages: (typeof VaultCreatedAckMessage)[];
|
|
13
|
+
constructor(logger: Logger, eventEmitter: EventEmitter);
|
|
14
|
+
handle(messageContext: MessageHandlerInboundMessage<VaultCreatedAckHandler>): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Handler for vault-created-ack messages
|
|
4
|
+
*
|
|
5
|
+
* Receives acknowledgment of vault creation notification.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.VaultCreatedAckHandler = void 0;
|
|
9
|
+
const messages_1 = require("../messages");
|
|
10
|
+
const VaultsEvents_1 = require("../VaultsEvents");
|
|
11
|
+
class VaultCreatedAckHandler {
|
|
12
|
+
constructor(logger, eventEmitter) {
|
|
13
|
+
this.supportedMessages = [messages_1.VaultCreatedAckMessage];
|
|
14
|
+
this.logger = logger;
|
|
15
|
+
this.eventEmitter = eventEmitter;
|
|
16
|
+
}
|
|
17
|
+
async handle(messageContext) {
|
|
18
|
+
const { agentContext, connection, message } = messageContext;
|
|
19
|
+
this.logger.info(`Vault creation ${message.status} for ${message.vaultId}`, {
|
|
20
|
+
vaultId: message.vaultId,
|
|
21
|
+
status: message.status,
|
|
22
|
+
reason: message.reason,
|
|
23
|
+
connectionId: connection?.id,
|
|
24
|
+
});
|
|
25
|
+
// Emit event for application
|
|
26
|
+
this.eventEmitter.emit(agentContext, {
|
|
27
|
+
type: VaultsEvents_1.VaultEventTypes.VaultCreated,
|
|
28
|
+
payload: {
|
|
29
|
+
vaultId: message.vaultId,
|
|
30
|
+
acknowledged: true,
|
|
31
|
+
status: message.status,
|
|
32
|
+
reason: message.reason,
|
|
33
|
+
acknowledgedBy: connection?.id,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.VaultCreatedAckHandler = VaultCreatedAckHandler;
|
|
39
|
+
//# sourceMappingURL=VaultCreatedAckHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaultCreatedAckHandler.js","sourceRoot":"","sources":["../../src/handlers/VaultCreatedAckHandler.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAMH,0CAAoD;AACpD,kDAAiD;AAEjD,MAAa,sBAAsB;IAKjC,YAAmB,MAAc,EAAE,YAA0B;QAFtD,sBAAiB,GAAG,CAAC,iCAAsB,CAAC,CAAA;QAGjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,cAAoE;QACtF,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,cAAc,CAAA;QAE5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,OAAO,EAAE,EAAE;YAC1E,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,YAAY,EAAE,UAAU,EAAE,EAAE;SAC7B,CAAC,CAAA;QAEF,6BAA6B;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,EAAE,8BAAe,CAAC,YAAY;YAClC,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,cAAc,EAAE,UAAU,EAAE,EAAE;aAC/B;SACF,CAAC,CAAA;IACJ,CAAC;CACF;AAhCD,wDAgCC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for vault-data messages
|
|
3
|
+
*
|
|
4
|
+
* When we receive vault data from a peer:
|
|
5
|
+
* 1. Validates the message
|
|
6
|
+
* 2. Stores the received vault locally
|
|
7
|
+
* 3. Emits an event for the application to handle
|
|
8
|
+
*/
|
|
9
|
+
import type { MessageHandler, MessageHandlerInboundMessage } from '@credo-ts/core';
|
|
10
|
+
import { EventEmitter } from '@credo-ts/core';
|
|
11
|
+
import { VaultDataMessage } from '../messages';
|
|
12
|
+
import { VaultRepository } from '../repository/VaultRepository';
|
|
13
|
+
export declare class VaultDataHandler implements MessageHandler {
|
|
14
|
+
private vaultRepository;
|
|
15
|
+
private eventEmitter;
|
|
16
|
+
supportedMessages: (typeof VaultDataMessage)[];
|
|
17
|
+
constructor(vaultRepository: VaultRepository, eventEmitter: EventEmitter);
|
|
18
|
+
handle(messageContext: MessageHandlerInboundMessage<VaultDataHandler>): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Handler for vault-data messages
|
|
4
|
+
*
|
|
5
|
+
* When we receive vault data from a peer:
|
|
6
|
+
* 1. Validates the message
|
|
7
|
+
* 2. Stores the received vault locally
|
|
8
|
+
* 3. Emits an event for the application to handle
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.VaultDataHandler = void 0;
|
|
12
|
+
const messages_1 = require("../messages");
|
|
13
|
+
const VaultRecord_1 = require("../repository/VaultRecord");
|
|
14
|
+
const VaultsEvents_1 = require("../VaultsEvents");
|
|
15
|
+
class VaultDataHandler {
|
|
16
|
+
constructor(vaultRepository, eventEmitter) {
|
|
17
|
+
this.supportedMessages = [messages_1.VaultDataMessage];
|
|
18
|
+
this.vaultRepository = vaultRepository;
|
|
19
|
+
this.eventEmitter = eventEmitter;
|
|
20
|
+
}
|
|
21
|
+
async handle(messageContext) {
|
|
22
|
+
const { agentContext, connection, message } = messageContext;
|
|
23
|
+
// Store the received vault locally
|
|
24
|
+
// Check if vault already exists
|
|
25
|
+
const existingVault = await this.vaultRepository.findByVaultId(agentContext, message.vaultId);
|
|
26
|
+
if (existingVault) {
|
|
27
|
+
// Update existing vault if epoch is higher
|
|
28
|
+
if (message.header.epoch > existingVault.header.epoch) {
|
|
29
|
+
existingVault.header = message.header;
|
|
30
|
+
existingVault.ciphertext = message.ciphertext;
|
|
31
|
+
existingVault.updatedAt = new Date();
|
|
32
|
+
await this.vaultRepository.update(agentContext, existingVault);
|
|
33
|
+
this.eventEmitter.emit(agentContext, {
|
|
34
|
+
type: VaultsEvents_1.VaultEventTypes.VaultUpdated,
|
|
35
|
+
payload: {
|
|
36
|
+
vaultId: message.vaultId,
|
|
37
|
+
docId: message.docId,
|
|
38
|
+
epoch: message.header.epoch,
|
|
39
|
+
connectionId: connection?.id,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
// Ignore if epoch is same or lower (stale data)
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Create new vault record
|
|
47
|
+
const vaultRecord = new VaultRecord_1.VaultRecord({
|
|
48
|
+
vaultId: message.vaultId,
|
|
49
|
+
docId: message.docId,
|
|
50
|
+
header: message.header,
|
|
51
|
+
ciphertext: message.ciphertext,
|
|
52
|
+
ownerDid: connection?.theirDid ?? 'unknown',
|
|
53
|
+
});
|
|
54
|
+
await this.vaultRepository.save(agentContext, vaultRecord);
|
|
55
|
+
// Emit event for application to handle
|
|
56
|
+
this.eventEmitter.emit(agentContext, {
|
|
57
|
+
type: VaultsEvents_1.VaultEventTypes.VaultShared,
|
|
58
|
+
payload: {
|
|
59
|
+
vaultId: message.vaultId,
|
|
60
|
+
docId: message.docId,
|
|
61
|
+
connectionId: connection?.id,
|
|
62
|
+
theirDid: connection?.theirDid,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.VaultDataHandler = VaultDataHandler;
|
|
68
|
+
//# sourceMappingURL=VaultDataHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaultDataHandler.js","sourceRoot":"","sources":["../../src/handlers/VaultDataHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAMH,0CAA8C;AAE9C,2DAAuD;AACvD,kDAAiD;AAEjD,MAAa,gBAAgB;IAK3B,YAAmB,eAAgC,EAAE,YAA0B;QAFxE,sBAAiB,GAAG,CAAC,2BAAgB,CAAC,CAAA;QAG3C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,cAA8D;QAChF,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,cAAc,CAAA;QAE5D,mCAAmC;QACnC,gCAAgC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAE7F,IAAI,aAAa,EAAE,CAAC;YAClB,2CAA2C;YAC3C,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtD,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;gBACrC,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;gBAC7C,aAAa,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;gBAEpC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;gBAE9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;oBACnC,IAAI,EAAE,8BAAe,CAAC,YAAY;oBAClC,OAAO,EAAE;wBACP,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;wBAC3B,YAAY,EAAE,UAAU,EAAE,EAAE;qBAC7B;iBACF,CAAC,CAAA;YACJ,CAAC;YACD,gDAAgD;YAChD,OAAM;QACR,CAAC;QAED,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC;YAClC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,SAAS;SAC5C,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAE1D,uCAAuC;QACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,EAAE,8BAAe,CAAC,WAAW;YACjC,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,UAAU,EAAE,EAAE;gBAC5B,QAAQ,EAAE,UAAU,EAAE,QAAQ;aAC/B;SACF,CAAC,CAAA;IACJ,CAAC;CACF;AA9DD,4CA8DC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for vault problem-report messages
|
|
3
|
+
*
|
|
4
|
+
* When we receive an error from a peer:
|
|
5
|
+
* 1. Logs the error
|
|
6
|
+
* 2. Emits an event for the application to handle
|
|
7
|
+
*/
|
|
8
|
+
import type { MessageHandler, MessageHandlerInboundMessage, Logger } from '@credo-ts/core';
|
|
9
|
+
import { EventEmitter } from '@credo-ts/core';
|
|
10
|
+
import { VaultProblemReportMessage } from '../messages';
|
|
11
|
+
export declare class VaultProblemReportHandler implements MessageHandler {
|
|
12
|
+
private logger;
|
|
13
|
+
private eventEmitter;
|
|
14
|
+
supportedMessages: (typeof VaultProblemReportMessage)[];
|
|
15
|
+
constructor(logger: Logger, eventEmitter: EventEmitter);
|
|
16
|
+
handle(messageContext: MessageHandlerInboundMessage<VaultProblemReportHandler>): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Handler for vault problem-report messages
|
|
4
|
+
*
|
|
5
|
+
* When we receive an error from a peer:
|
|
6
|
+
* 1. Logs the error
|
|
7
|
+
* 2. Emits an event for the application to handle
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.VaultProblemReportHandler = void 0;
|
|
11
|
+
const messages_1 = require("../messages");
|
|
12
|
+
const VaultsEvents_1 = require("../VaultsEvents");
|
|
13
|
+
class VaultProblemReportHandler {
|
|
14
|
+
constructor(logger, eventEmitter) {
|
|
15
|
+
this.supportedMessages = [messages_1.VaultProblemReportMessage];
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.eventEmitter = eventEmitter;
|
|
18
|
+
}
|
|
19
|
+
async handle(messageContext) {
|
|
20
|
+
const { agentContext, connection, message } = messageContext;
|
|
21
|
+
this.logger.warn(`Received vault problem report: ${message.errorCode} - ${message.description}`, {
|
|
22
|
+
vaultId: message.vaultId,
|
|
23
|
+
connectionId: connection?.id,
|
|
24
|
+
errorCode: message.errorCode,
|
|
25
|
+
});
|
|
26
|
+
// Emit event for application to handle
|
|
27
|
+
this.eventEmitter.emit(agentContext, {
|
|
28
|
+
type: VaultsEvents_1.VaultEventTypes.VaultError,
|
|
29
|
+
payload: {
|
|
30
|
+
vaultId: message.vaultId,
|
|
31
|
+
errorCode: message.errorCode,
|
|
32
|
+
description: message.description,
|
|
33
|
+
details: message.details,
|
|
34
|
+
connectionId: connection?.id,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.VaultProblemReportHandler = VaultProblemReportHandler;
|
|
40
|
+
//# sourceMappingURL=VaultProblemReportHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaultProblemReportHandler.js","sourceRoot":"","sources":["../../src/handlers/VaultProblemReportHandler.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAMH,0CAAuD;AACvD,kDAAiD;AAEjD,MAAa,yBAAyB;IAKpC,YAAmB,MAAc,EAAE,YAA0B;QAFtD,sBAAiB,GAAG,CAAC,oCAAyB,CAAC,CAAA;QAGpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,cAAuE;QACzF,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,cAAc,CAAA;QAE5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,OAAO,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE;YAC/F,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,UAAU,EAAE,EAAE;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAA;QAEF,uCAAuC;QACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,EAAE,8BAAe,CAAC,UAAU;YAChC,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,UAAU,EAAE,EAAE;aAC7B;SACF,CAAC,CAAA;IACJ,CAAC;CACF;AA/BD,8DA+BC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for vault-reference messages
|
|
3
|
+
*
|
|
4
|
+
* Receives vault references and optionally downloads the ciphertext
|
|
5
|
+
* from external storage.
|
|
6
|
+
*/
|
|
7
|
+
import type { MessageHandler, MessageHandlerInboundMessage, Logger } from '@credo-ts/core';
|
|
8
|
+
import { EventEmitter, OutboundMessageContext } from '@credo-ts/core';
|
|
9
|
+
import { VaultReferenceMessage } from '../messages/VaultReferenceMessage';
|
|
10
|
+
import { VaultStoredAckMessage } from '../messages/VaultStoredAckMessage';
|
|
11
|
+
import { VaultProblemReportMessage } from '../messages/VaultProblemReportMessage';
|
|
12
|
+
import { VaultRepository } from '../repository/VaultRepository';
|
|
13
|
+
import { VaultStorageService } from '../storage/VaultStorageService';
|
|
14
|
+
export interface VaultReferenceHandlerOptions {
|
|
15
|
+
/** Automatically download ciphertext from storage */
|
|
16
|
+
autoDownload?: boolean;
|
|
17
|
+
/** Store reference even if download fails */
|
|
18
|
+
storeReferenceOnDownloadFailure?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class VaultReferenceHandler implements MessageHandler {
|
|
21
|
+
private logger;
|
|
22
|
+
private vaultRepository;
|
|
23
|
+
private storageService;
|
|
24
|
+
private eventEmitter;
|
|
25
|
+
private options;
|
|
26
|
+
supportedMessages: (typeof VaultReferenceMessage)[];
|
|
27
|
+
constructor(logger: Logger, vaultRepository: VaultRepository, storageService: VaultStorageService, eventEmitter: EventEmitter, options?: VaultReferenceHandlerOptions);
|
|
28
|
+
handle(messageContext: MessageHandlerInboundMessage<VaultReferenceHandler>): Promise<OutboundMessageContext<VaultStoredAckMessage> | OutboundMessageContext<VaultProblemReportMessage>>;
|
|
29
|
+
/**
|
|
30
|
+
* Download ciphertext from storage
|
|
31
|
+
*/
|
|
32
|
+
private downloadCiphertext;
|
|
33
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Handler for vault-reference messages
|
|
4
|
+
*
|
|
5
|
+
* Receives vault references and optionally downloads the ciphertext
|
|
6
|
+
* from external storage.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.VaultReferenceHandler = void 0;
|
|
10
|
+
const core_1 = require("@credo-ts/core");
|
|
11
|
+
const VaultReferenceMessage_1 = require("../messages/VaultReferenceMessage");
|
|
12
|
+
const VaultStoredAckMessage_1 = require("../messages/VaultStoredAckMessage");
|
|
13
|
+
const VaultProblemReportMessage_1 = require("../messages/VaultProblemReportMessage");
|
|
14
|
+
const VaultRecord_1 = require("../repository/VaultRecord");
|
|
15
|
+
const VaultsEvents_1 = require("../VaultsEvents");
|
|
16
|
+
const VaultCrypto_1 = require("../crypto/wasm/VaultCrypto");
|
|
17
|
+
const DEFAULT_OPTIONS = {
|
|
18
|
+
autoDownload: true,
|
|
19
|
+
storeReferenceOnDownloadFailure: true,
|
|
20
|
+
};
|
|
21
|
+
class VaultReferenceHandler {
|
|
22
|
+
constructor(logger, vaultRepository, storageService, eventEmitter, options) {
|
|
23
|
+
this.supportedMessages = [VaultReferenceMessage_1.VaultReferenceMessage];
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.vaultRepository = vaultRepository;
|
|
26
|
+
this.storageService = storageService;
|
|
27
|
+
this.eventEmitter = eventEmitter;
|
|
28
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
29
|
+
}
|
|
30
|
+
async handle(messageContext) {
|
|
31
|
+
const { agentContext, connection, message } = messageContext;
|
|
32
|
+
this.logger.debug(`Received vault reference for ${message.vaultId} from storage ${message.storage.uri}`);
|
|
33
|
+
let ciphertext = null;
|
|
34
|
+
let downloadError = null;
|
|
35
|
+
// Try to download ciphertext if autoDownload is enabled
|
|
36
|
+
if (this.options.autoDownload) {
|
|
37
|
+
try {
|
|
38
|
+
ciphertext = await this.downloadCiphertext(message);
|
|
39
|
+
this.logger.debug(`Downloaded ${ciphertext.length} bytes for vault ${message.vaultId}`);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
downloadError = error instanceof Error ? error.message : 'Unknown download error';
|
|
43
|
+
this.logger.warn(`Failed to download vault ${message.vaultId}: ${downloadError}`);
|
|
44
|
+
if (!this.options.storeReferenceOnDownloadFailure) {
|
|
45
|
+
return new core_1.OutboundMessageContext(new VaultProblemReportMessage_1.VaultProblemReportMessage({
|
|
46
|
+
threadId: message.threadId,
|
|
47
|
+
code: 'download-failed',
|
|
48
|
+
description: `Failed to download vault ciphertext: ${downloadError}`,
|
|
49
|
+
}), { agentContext, connection });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Check if vault already exists
|
|
54
|
+
const existing = await this.vaultRepository.findByVaultId(agentContext, message.vaultId);
|
|
55
|
+
if (existing) {
|
|
56
|
+
// Update existing vault
|
|
57
|
+
existing.header = message.header;
|
|
58
|
+
if (ciphertext) {
|
|
59
|
+
existing.ciphertext = (0, VaultCrypto_1.toBase64Url)(ciphertext);
|
|
60
|
+
}
|
|
61
|
+
existing.storageReference = {
|
|
62
|
+
type: message.storage.type,
|
|
63
|
+
uri: message.storage.uri,
|
|
64
|
+
checksum: message.storage.checksum,
|
|
65
|
+
size: message.storage.size,
|
|
66
|
+
contentType: message.storage.contentType,
|
|
67
|
+
};
|
|
68
|
+
existing.updatedAt = new Date();
|
|
69
|
+
// Track sender in metadata
|
|
70
|
+
existing.header.metadata = {
|
|
71
|
+
...existing.header.metadata,
|
|
72
|
+
lastReceivedFrom: connection?.id,
|
|
73
|
+
lastReceivedAt: new Date().toISOString(),
|
|
74
|
+
storageType: message.storage.type,
|
|
75
|
+
};
|
|
76
|
+
await this.vaultRepository.update(agentContext, existing);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Create new vault record
|
|
80
|
+
const record = new VaultRecord_1.VaultRecord({
|
|
81
|
+
vaultId: message.vaultId,
|
|
82
|
+
docId: message.docId,
|
|
83
|
+
header: message.header,
|
|
84
|
+
// Store ciphertext if downloaded, otherwise empty placeholder
|
|
85
|
+
ciphertext: ciphertext ? (0, VaultCrypto_1.toBase64Url)(ciphertext) : '',
|
|
86
|
+
ownerDid: agentContext.contextCorrelationId,
|
|
87
|
+
storageReference: {
|
|
88
|
+
type: message.storage.type,
|
|
89
|
+
uri: message.storage.uri,
|
|
90
|
+
checksum: message.storage.checksum,
|
|
91
|
+
size: message.storage.size,
|
|
92
|
+
contentType: message.storage.contentType,
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
// Track sender in metadata
|
|
96
|
+
record.header.metadata = {
|
|
97
|
+
...record.header.metadata,
|
|
98
|
+
receivedFrom: connection?.id,
|
|
99
|
+
receivedAt: new Date().toISOString(),
|
|
100
|
+
storageType: message.storage.type,
|
|
101
|
+
downloadPending: !ciphertext,
|
|
102
|
+
};
|
|
103
|
+
await this.vaultRepository.save(agentContext, record);
|
|
104
|
+
}
|
|
105
|
+
// Emit event
|
|
106
|
+
this.eventEmitter.emit(agentContext, {
|
|
107
|
+
type: VaultsEvents_1.VaultEventTypes.VaultShared,
|
|
108
|
+
payload: {
|
|
109
|
+
vaultId: message.vaultId,
|
|
110
|
+
docId: message.docId,
|
|
111
|
+
sharedBy: connection?.id,
|
|
112
|
+
storageType: message.storage.type,
|
|
113
|
+
storageUri: message.storage.uri,
|
|
114
|
+
size: message.storage.size,
|
|
115
|
+
downloaded: !!ciphertext,
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
// Return acknowledgment
|
|
119
|
+
const ackMessage = new VaultStoredAckMessage_1.VaultStoredAckMessage({
|
|
120
|
+
threadId: message.id,
|
|
121
|
+
vaultId: message.vaultId,
|
|
122
|
+
docId: message.docId,
|
|
123
|
+
storageLocation: ciphertext ? 'local' : 'pending',
|
|
124
|
+
storageMetadata: {
|
|
125
|
+
timestamp: new Date().toISOString(),
|
|
126
|
+
downloaded: !!ciphertext,
|
|
127
|
+
downloadError: downloadError ?? undefined,
|
|
128
|
+
originalStorage: message.storage.uri,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
this.logger.info(`Stored vault reference ${message.vaultId} (downloaded: ${!!ciphertext}, storage: ${message.storage.uri})`);
|
|
132
|
+
return new core_1.OutboundMessageContext(ackMessage, { agentContext, connection });
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Download ciphertext from storage
|
|
136
|
+
*/
|
|
137
|
+
async downloadCiphertext(message) {
|
|
138
|
+
const { storage } = message;
|
|
139
|
+
// Try pre-signed download URL first (no credentials needed)
|
|
140
|
+
if (storage.downloadUrl) {
|
|
141
|
+
// Check if URL is still valid
|
|
142
|
+
if (storage.downloadUrlExpiresAt) {
|
|
143
|
+
const expiresAt = new Date(storage.downloadUrlExpiresAt);
|
|
144
|
+
if (expiresAt <= new Date()) {
|
|
145
|
+
this.logger.debug('Pre-signed download URL expired, falling back to direct storage access');
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
return this.storageService.downloadFromUrl(storage.downloadUrl, storage.checksum);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
return this.storageService.downloadFromUrl(storage.downloadUrl, storage.checksum);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Try direct storage access (requires credentials)
|
|
156
|
+
if (this.storageService.isConfigured()) {
|
|
157
|
+
return this.storageService.download({
|
|
158
|
+
type: storage.type,
|
|
159
|
+
uri: storage.uri,
|
|
160
|
+
checksum: storage.checksum,
|
|
161
|
+
size: storage.size,
|
|
162
|
+
contentType: storage.contentType,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
throw new Error('No download method available: no pre-signed URL and storage not configured');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exports.VaultReferenceHandler = VaultReferenceHandler;
|
|
169
|
+
//# sourceMappingURL=VaultReferenceHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaultReferenceHandler.js","sourceRoot":"","sources":["../../src/handlers/VaultReferenceHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for vault-stored-ack messages
|
|
3
|
+
*
|
|
4
|
+
* Receives acknowledgment that a vault was stored by the peer.
|
|
5
|
+
*/
|
|
6
|
+
import type { MessageHandler, MessageHandlerInboundMessage, Logger } from '@credo-ts/core';
|
|
7
|
+
import { EventEmitter } from '@credo-ts/core';
|
|
8
|
+
import { VaultStoredAckMessage } from '../messages';
|
|
9
|
+
export declare class VaultStoredAckHandler implements MessageHandler {
|
|
10
|
+
private logger;
|
|
11
|
+
private eventEmitter;
|
|
12
|
+
supportedMessages: (typeof VaultStoredAckMessage)[];
|
|
13
|
+
constructor(logger: Logger, eventEmitter: EventEmitter);
|
|
14
|
+
handle(messageContext: MessageHandlerInboundMessage<VaultStoredAckHandler>): Promise<void>;
|
|
15
|
+
}
|