@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 @@
|
|
|
1
|
+
{"version":3,"file":"VaultStorageConfig.js","sourceRoot":"","sources":["../../src/storage/VaultStorageConfig.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA+GH;;GAEG;AACU,QAAA,sBAAsB,GAAG;IACpC,qCAAqC;IACrC,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAEjC,4CAA4C;IAC5C,oBAAoB,EAAE,IAAI;IAE1B,kCAAkC;IAClC,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IAErC,yBAAyB;IACzB,UAAU,EAAE,SAAS;CACtB,CAAA"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault Storage Service
|
|
3
|
+
*
|
|
4
|
+
* Handles external storage operations for large vault files.
|
|
5
|
+
* Supports S3 and S3-compatible storage (MinIO, Cloudflare R2, etc.)
|
|
6
|
+
*/
|
|
7
|
+
import type { Logger } from '@credo-ts/core';
|
|
8
|
+
import type { S3StorageConfig, VaultStorageReference, PresignedUploadUrl, PresignedDownloadUrl } from './VaultStorageConfig';
|
|
9
|
+
/**
|
|
10
|
+
* Vault Storage Service
|
|
11
|
+
*
|
|
12
|
+
* Provides operations for storing and retrieving vault ciphertext
|
|
13
|
+
* from external storage providers like S3.
|
|
14
|
+
*/
|
|
15
|
+
export declare class VaultStorageService {
|
|
16
|
+
private logger;
|
|
17
|
+
private s3Client?;
|
|
18
|
+
private s3Commands?;
|
|
19
|
+
private s3Presigner?;
|
|
20
|
+
private config?;
|
|
21
|
+
constructor(logger: Logger);
|
|
22
|
+
/**
|
|
23
|
+
* Configure the storage service with S3 settings
|
|
24
|
+
*/
|
|
25
|
+
configure(config: S3StorageConfig): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if storage is configured and ready
|
|
28
|
+
*/
|
|
29
|
+
isConfigured(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize S3 client (lazy loading)
|
|
32
|
+
*/
|
|
33
|
+
private initializeS3Client;
|
|
34
|
+
/**
|
|
35
|
+
* Upload vault ciphertext to S3
|
|
36
|
+
*
|
|
37
|
+
* @param ciphertext - Encrypted vault data
|
|
38
|
+
* @param vaultId - Vault identifier
|
|
39
|
+
* @param options - Upload options
|
|
40
|
+
* @returns Storage reference
|
|
41
|
+
*/
|
|
42
|
+
upload(ciphertext: Uint8Array, vaultId: string, options?: {
|
|
43
|
+
docId?: string;
|
|
44
|
+
contentType?: string;
|
|
45
|
+
metadata?: Record<string, string>;
|
|
46
|
+
}): Promise<VaultStorageReference>;
|
|
47
|
+
/**
|
|
48
|
+
* Download vault ciphertext from S3
|
|
49
|
+
*
|
|
50
|
+
* @param reference - Storage reference
|
|
51
|
+
* @returns Ciphertext bytes
|
|
52
|
+
*/
|
|
53
|
+
download(reference: VaultStorageReference): Promise<Uint8Array>;
|
|
54
|
+
/**
|
|
55
|
+
* Delete vault ciphertext from S3
|
|
56
|
+
*
|
|
57
|
+
* @param reference - Storage reference
|
|
58
|
+
*/
|
|
59
|
+
delete(reference: VaultStorageReference): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Check if a vault exists in storage
|
|
62
|
+
*
|
|
63
|
+
* @param reference - Storage reference
|
|
64
|
+
* @returns True if exists
|
|
65
|
+
*/
|
|
66
|
+
exists(reference: VaultStorageReference): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Generate pre-signed URL for upload
|
|
69
|
+
*
|
|
70
|
+
* Used by vault operators to provide upload URLs to clients
|
|
71
|
+
*
|
|
72
|
+
* @param vaultId - Vault identifier
|
|
73
|
+
* @param options - Upload options
|
|
74
|
+
* @returns Pre-signed upload URL
|
|
75
|
+
*/
|
|
76
|
+
generateUploadUrl(vaultId: string, options?: {
|
|
77
|
+
contentType?: string;
|
|
78
|
+
maxSize?: number;
|
|
79
|
+
expiresIn?: number;
|
|
80
|
+
}): Promise<PresignedUploadUrl>;
|
|
81
|
+
/**
|
|
82
|
+
* Generate pre-signed URL for download
|
|
83
|
+
*
|
|
84
|
+
* @param reference - Storage reference
|
|
85
|
+
* @param expiresIn - Expiration in seconds
|
|
86
|
+
* @returns Pre-signed download URL
|
|
87
|
+
*/
|
|
88
|
+
generateDownloadUrl(reference: VaultStorageReference, expiresIn?: number): Promise<PresignedDownloadUrl>;
|
|
89
|
+
/**
|
|
90
|
+
* Download from a pre-signed URL (for clients without S3 credentials)
|
|
91
|
+
*
|
|
92
|
+
* @param downloadUrl - Pre-signed download URL
|
|
93
|
+
* @param expectedChecksum - Expected checksum for verification
|
|
94
|
+
* @returns Downloaded data
|
|
95
|
+
*/
|
|
96
|
+
downloadFromUrl(downloadUrl: string, expectedChecksum?: string): Promise<Uint8Array>;
|
|
97
|
+
/**
|
|
98
|
+
* Upload to a pre-signed URL (for clients without S3 credentials)
|
|
99
|
+
*
|
|
100
|
+
* @param uploadUrl - Pre-signed upload URL
|
|
101
|
+
* @param data - Data to upload
|
|
102
|
+
* @param contentType - Content type
|
|
103
|
+
* @returns Checksum of uploaded data
|
|
104
|
+
*/
|
|
105
|
+
uploadToUrl(uploadUrl: string, data: Uint8Array, contentType?: string): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Compute SHA-256 checksum
|
|
108
|
+
*/
|
|
109
|
+
private computeChecksum;
|
|
110
|
+
/**
|
|
111
|
+
* Build S3 URI from bucket and key
|
|
112
|
+
*/
|
|
113
|
+
private buildStorageUri;
|
|
114
|
+
/**
|
|
115
|
+
* Parse S3 URI into bucket and key
|
|
116
|
+
*/
|
|
117
|
+
private parseStorageUri;
|
|
118
|
+
}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vault Storage Service
|
|
4
|
+
*
|
|
5
|
+
* Handles external storage operations for large vault files.
|
|
6
|
+
* Supports S3 and S3-compatible storage (MinIO, Cloudflare R2, etc.)
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
25
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
26
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
27
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
28
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
29
|
+
};
|
|
30
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
38
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
39
|
+
};
|
|
40
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
41
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.VaultStorageService = void 0;
|
|
45
|
+
const core_1 = require("@credo-ts/core");
|
|
46
|
+
const crypto_1 = require("crypto");
|
|
47
|
+
const errors_1 = require("../errors");
|
|
48
|
+
const VaultStorageConfig_1 = require("./VaultStorageConfig");
|
|
49
|
+
/**
|
|
50
|
+
* Vault Storage Service
|
|
51
|
+
*
|
|
52
|
+
* Provides operations for storing and retrieving vault ciphertext
|
|
53
|
+
* from external storage providers like S3.
|
|
54
|
+
*/
|
|
55
|
+
let VaultStorageService = class VaultStorageService {
|
|
56
|
+
constructor(logger) {
|
|
57
|
+
this.logger = logger;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Configure the storage service with S3 settings
|
|
61
|
+
*/
|
|
62
|
+
async configure(config) {
|
|
63
|
+
this.config = config;
|
|
64
|
+
await this.initializeS3Client();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if storage is configured and ready
|
|
68
|
+
*/
|
|
69
|
+
isConfigured() {
|
|
70
|
+
return !!this.config && !!this.s3Client;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Initialize S3 client (lazy loading)
|
|
74
|
+
*/
|
|
75
|
+
async initializeS3Client() {
|
|
76
|
+
if (!this.config) {
|
|
77
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Storage not configured');
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
// Dynamic import to avoid hard dependency on @aws-sdk/client-s3
|
|
81
|
+
const { S3Client, PutObjectCommand, GetObjectCommand, DeleteObjectCommand, HeadObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
82
|
+
const { getSignedUrl } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/s3-request-presigner')));
|
|
83
|
+
const clientConfig = {
|
|
84
|
+
region: this.config.region,
|
|
85
|
+
};
|
|
86
|
+
if (this.config.endpoint) {
|
|
87
|
+
clientConfig.endpoint = this.config.endpoint;
|
|
88
|
+
}
|
|
89
|
+
if (this.config.forcePathStyle) {
|
|
90
|
+
clientConfig.forcePathStyle = true;
|
|
91
|
+
}
|
|
92
|
+
if (this.config.accessKeyId && this.config.secretAccessKey) {
|
|
93
|
+
clientConfig.credentials = {
|
|
94
|
+
accessKeyId: this.config.accessKeyId,
|
|
95
|
+
secretAccessKey: this.config.secretAccessKey,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
this.s3Client = new S3Client(clientConfig);
|
|
99
|
+
this.s3Commands = {
|
|
100
|
+
PutObjectCommand,
|
|
101
|
+
GetObjectCommand,
|
|
102
|
+
DeleteObjectCommand,
|
|
103
|
+
HeadObjectCommand,
|
|
104
|
+
};
|
|
105
|
+
this.s3Presigner = { getSignedUrl };
|
|
106
|
+
this.logger.info(`S3 storage initialized: bucket=${this.config.bucket}, region=${this.config.region}`);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
this.logger.error('Failed to initialize S3 client', { error });
|
|
110
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Failed to initialize S3 client. Make sure @aws-sdk/client-s3 is installed.');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Upload vault ciphertext to S3
|
|
115
|
+
*
|
|
116
|
+
* @param ciphertext - Encrypted vault data
|
|
117
|
+
* @param vaultId - Vault identifier
|
|
118
|
+
* @param options - Upload options
|
|
119
|
+
* @returns Storage reference
|
|
120
|
+
*/
|
|
121
|
+
async upload(ciphertext, vaultId, options) {
|
|
122
|
+
if (!this.isConfigured()) {
|
|
123
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Storage not configured');
|
|
124
|
+
}
|
|
125
|
+
const config = this.config;
|
|
126
|
+
const maxSize = config.maxFileSize ?? VaultStorageConfig_1.DEFAULT_STORAGE_CONFIG.MAX_FILE_SIZE;
|
|
127
|
+
if (ciphertext.length > maxSize) {
|
|
128
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, `File size ${ciphertext.length} exceeds maximum ${maxSize} bytes`);
|
|
129
|
+
}
|
|
130
|
+
// Generate storage key
|
|
131
|
+
const prefix = config.keyPrefix ?? VaultStorageConfig_1.DEFAULT_STORAGE_CONFIG.KEY_PREFIX;
|
|
132
|
+
const storageKey = `${prefix}${vaultId}`;
|
|
133
|
+
// Compute checksum
|
|
134
|
+
const checksum = this.computeChecksum(ciphertext);
|
|
135
|
+
// Upload to S3
|
|
136
|
+
const command = new this.s3Commands.PutObjectCommand({
|
|
137
|
+
Bucket: config.bucket,
|
|
138
|
+
Key: storageKey,
|
|
139
|
+
Body: ciphertext,
|
|
140
|
+
ContentType: options?.contentType ?? 'application/octet-stream',
|
|
141
|
+
ContentLength: ciphertext.length,
|
|
142
|
+
ChecksumSHA256: checksum,
|
|
143
|
+
Metadata: {
|
|
144
|
+
'vault-id': vaultId,
|
|
145
|
+
...(options?.docId && { 'doc-id': options.docId }),
|
|
146
|
+
...options?.metadata,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
await this.s3Client.send(command);
|
|
150
|
+
const uri = this.buildStorageUri(config.bucket, storageKey);
|
|
151
|
+
this.logger.info(`Uploaded vault ${vaultId} to ${uri} (${ciphertext.length} bytes)`);
|
|
152
|
+
return {
|
|
153
|
+
type: 's3',
|
|
154
|
+
uri,
|
|
155
|
+
checksum: `sha-256:${checksum}`,
|
|
156
|
+
size: ciphertext.length,
|
|
157
|
+
contentType: options?.contentType ?? 'application/octet-stream',
|
|
158
|
+
metadata: options?.metadata,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Download vault ciphertext from S3
|
|
163
|
+
*
|
|
164
|
+
* @param reference - Storage reference
|
|
165
|
+
* @returns Ciphertext bytes
|
|
166
|
+
*/
|
|
167
|
+
async download(reference) {
|
|
168
|
+
if (!this.isConfigured()) {
|
|
169
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Storage not configured');
|
|
170
|
+
}
|
|
171
|
+
const { bucket, key } = this.parseStorageUri(reference.uri);
|
|
172
|
+
const command = new this.s3Commands.GetObjectCommand({
|
|
173
|
+
Bucket: bucket,
|
|
174
|
+
Key: key,
|
|
175
|
+
});
|
|
176
|
+
const response = (await this.s3Client.send(command));
|
|
177
|
+
if (!response.Body) {
|
|
178
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, `Empty response for ${reference.uri}`);
|
|
179
|
+
}
|
|
180
|
+
const ciphertext = await response.Body.transformToByteArray();
|
|
181
|
+
// Verify checksum if provided
|
|
182
|
+
if (reference.checksum) {
|
|
183
|
+
const expectedChecksum = reference.checksum.replace('sha-256:', '');
|
|
184
|
+
const actualChecksum = this.computeChecksum(ciphertext);
|
|
185
|
+
if (actualChecksum !== expectedChecksum) {
|
|
186
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.INTEGRITY_CHECK_FAILED, `Checksum mismatch: expected ${expectedChecksum}, got ${actualChecksum}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
this.logger.info(`Downloaded vault from ${reference.uri} (${ciphertext.length} bytes)`);
|
|
190
|
+
return ciphertext;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Delete vault ciphertext from S3
|
|
194
|
+
*
|
|
195
|
+
* @param reference - Storage reference
|
|
196
|
+
*/
|
|
197
|
+
async delete(reference) {
|
|
198
|
+
if (!this.isConfigured()) {
|
|
199
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Storage not configured');
|
|
200
|
+
}
|
|
201
|
+
const { bucket, key } = this.parseStorageUri(reference.uri);
|
|
202
|
+
const command = new this.s3Commands.DeleteObjectCommand({
|
|
203
|
+
Bucket: bucket,
|
|
204
|
+
Key: key,
|
|
205
|
+
});
|
|
206
|
+
await this.s3Client.send(command);
|
|
207
|
+
this.logger.info(`Deleted vault from ${reference.uri}`);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Check if a vault exists in storage
|
|
211
|
+
*
|
|
212
|
+
* @param reference - Storage reference
|
|
213
|
+
* @returns True if exists
|
|
214
|
+
*/
|
|
215
|
+
async exists(reference) {
|
|
216
|
+
if (!this.isConfigured()) {
|
|
217
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Storage not configured');
|
|
218
|
+
}
|
|
219
|
+
const { bucket, key } = this.parseStorageUri(reference.uri);
|
|
220
|
+
try {
|
|
221
|
+
const command = new this.s3Commands.HeadObjectCommand({
|
|
222
|
+
Bucket: bucket,
|
|
223
|
+
Key: key,
|
|
224
|
+
});
|
|
225
|
+
await this.s3Client.send(command);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Generate pre-signed URL for upload
|
|
234
|
+
*
|
|
235
|
+
* Used by vault operators to provide upload URLs to clients
|
|
236
|
+
*
|
|
237
|
+
* @param vaultId - Vault identifier
|
|
238
|
+
* @param options - Upload options
|
|
239
|
+
* @returns Pre-signed upload URL
|
|
240
|
+
*/
|
|
241
|
+
async generateUploadUrl(vaultId, options) {
|
|
242
|
+
if (!this.isConfigured()) {
|
|
243
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Storage not configured');
|
|
244
|
+
}
|
|
245
|
+
const config = this.config;
|
|
246
|
+
const prefix = config.keyPrefix ?? VaultStorageConfig_1.DEFAULT_STORAGE_CONFIG.KEY_PREFIX;
|
|
247
|
+
const storageKey = `${prefix}${vaultId}`;
|
|
248
|
+
const expiresIn = options?.expiresIn ?? config.presignedUrlExpiry ?? VaultStorageConfig_1.DEFAULT_STORAGE_CONFIG.PRESIGNED_URL_EXPIRY;
|
|
249
|
+
const command = new this.s3Commands.PutObjectCommand({
|
|
250
|
+
Bucket: config.bucket,
|
|
251
|
+
Key: storageKey,
|
|
252
|
+
ContentType: options?.contentType ?? 'application/octet-stream',
|
|
253
|
+
});
|
|
254
|
+
const uploadUrl = await this.s3Presigner.getSignedUrl(this.s3Client, command, { expiresIn });
|
|
255
|
+
const expiresAt = new Date(Date.now() + expiresIn * 1000).toISOString();
|
|
256
|
+
return {
|
|
257
|
+
uploadUrl,
|
|
258
|
+
method: 'PUT',
|
|
259
|
+
headers: {
|
|
260
|
+
'Content-Type': options?.contentType ?? 'application/octet-stream',
|
|
261
|
+
},
|
|
262
|
+
expiresAt,
|
|
263
|
+
storageKey,
|
|
264
|
+
finalUri: this.buildStorageUri(config.bucket, storageKey),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Generate pre-signed URL for download
|
|
269
|
+
*
|
|
270
|
+
* @param reference - Storage reference
|
|
271
|
+
* @param expiresIn - Expiration in seconds
|
|
272
|
+
* @returns Pre-signed download URL
|
|
273
|
+
*/
|
|
274
|
+
async generateDownloadUrl(reference, expiresIn) {
|
|
275
|
+
if (!this.isConfigured()) {
|
|
276
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, 'Storage not configured');
|
|
277
|
+
}
|
|
278
|
+
const config = this.config;
|
|
279
|
+
const { bucket, key } = this.parseStorageUri(reference.uri);
|
|
280
|
+
const expiry = expiresIn ?? config.presignedUrlExpiry ?? VaultStorageConfig_1.DEFAULT_STORAGE_CONFIG.PRESIGNED_URL_EXPIRY;
|
|
281
|
+
const command = new this.s3Commands.GetObjectCommand({
|
|
282
|
+
Bucket: bucket,
|
|
283
|
+
Key: key,
|
|
284
|
+
});
|
|
285
|
+
const downloadUrl = await this.s3Presigner.getSignedUrl(this.s3Client, command, { expiresIn: expiry });
|
|
286
|
+
return {
|
|
287
|
+
downloadUrl,
|
|
288
|
+
expiresAt: new Date(Date.now() + expiry * 1000).toISOString(),
|
|
289
|
+
size: reference.size,
|
|
290
|
+
checksum: reference.checksum,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Download from a pre-signed URL (for clients without S3 credentials)
|
|
295
|
+
*
|
|
296
|
+
* @param downloadUrl - Pre-signed download URL
|
|
297
|
+
* @param expectedChecksum - Expected checksum for verification
|
|
298
|
+
* @returns Downloaded data
|
|
299
|
+
*/
|
|
300
|
+
async downloadFromUrl(downloadUrl, expectedChecksum) {
|
|
301
|
+
const response = await fetch(downloadUrl);
|
|
302
|
+
if (!response.ok) {
|
|
303
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, `Download failed: ${response.status} ${response.statusText}`);
|
|
304
|
+
}
|
|
305
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
306
|
+
const data = new Uint8Array(arrayBuffer);
|
|
307
|
+
// Verify checksum if provided
|
|
308
|
+
if (expectedChecksum) {
|
|
309
|
+
const checksumValue = expectedChecksum.replace('sha-256:', '');
|
|
310
|
+
const actualChecksum = this.computeChecksum(data);
|
|
311
|
+
if (actualChecksum !== checksumValue) {
|
|
312
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.INTEGRITY_CHECK_FAILED, `Checksum mismatch: expected ${checksumValue}, got ${actualChecksum}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
this.logger.debug(`Downloaded ${data.length} bytes from pre-signed URL`);
|
|
316
|
+
return data;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Upload to a pre-signed URL (for clients without S3 credentials)
|
|
320
|
+
*
|
|
321
|
+
* @param uploadUrl - Pre-signed upload URL
|
|
322
|
+
* @param data - Data to upload
|
|
323
|
+
* @param contentType - Content type
|
|
324
|
+
* @returns Checksum of uploaded data
|
|
325
|
+
*/
|
|
326
|
+
async uploadToUrl(uploadUrl, data, contentType) {
|
|
327
|
+
const response = await fetch(uploadUrl, {
|
|
328
|
+
method: 'PUT',
|
|
329
|
+
body: data,
|
|
330
|
+
headers: {
|
|
331
|
+
'Content-Type': contentType ?? 'application/octet-stream',
|
|
332
|
+
'Content-Length': data.length.toString(),
|
|
333
|
+
},
|
|
334
|
+
});
|
|
335
|
+
if (!response.ok) {
|
|
336
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, `Upload failed: ${response.status} ${response.statusText}`);
|
|
337
|
+
}
|
|
338
|
+
const checksum = this.computeChecksum(data);
|
|
339
|
+
this.logger.debug(`Uploaded ${data.length} bytes to pre-signed URL`);
|
|
340
|
+
return `sha-256:${checksum}`;
|
|
341
|
+
}
|
|
342
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
343
|
+
// Private Helpers
|
|
344
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
345
|
+
/**
|
|
346
|
+
* Compute SHA-256 checksum
|
|
347
|
+
*/
|
|
348
|
+
computeChecksum(data) {
|
|
349
|
+
return (0, crypto_1.createHash)('sha256').update(data).digest('base64');
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Build S3 URI from bucket and key
|
|
353
|
+
*/
|
|
354
|
+
buildStorageUri(bucket, key) {
|
|
355
|
+
return `s3://${bucket}/${key}`;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Parse S3 URI into bucket and key
|
|
359
|
+
*/
|
|
360
|
+
parseStorageUri(uri) {
|
|
361
|
+
if (!uri.startsWith('s3://')) {
|
|
362
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, `Invalid S3 URI: ${uri}`);
|
|
363
|
+
}
|
|
364
|
+
const path = uri.slice(5); // Remove 's3://'
|
|
365
|
+
const slashIndex = path.indexOf('/');
|
|
366
|
+
if (slashIndex === -1) {
|
|
367
|
+
throw new errors_1.VaultError(errors_1.VaultErrorCode.STORAGE_ERROR, `Invalid S3 URI (no key): ${uri}`);
|
|
368
|
+
}
|
|
369
|
+
return {
|
|
370
|
+
bucket: path.slice(0, slashIndex),
|
|
371
|
+
key: path.slice(slashIndex + 1),
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
exports.VaultStorageService = VaultStorageService;
|
|
376
|
+
exports.VaultStorageService = VaultStorageService = __decorate([
|
|
377
|
+
(0, core_1.injectable)(),
|
|
378
|
+
__param(0, (0, core_1.inject)(core_1.InjectionSymbols.Logger)),
|
|
379
|
+
__metadata("design:paramtypes", [Object])
|
|
380
|
+
], VaultStorageService);
|
|
381
|
+
//# sourceMappingURL=VaultStorageService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaultStorageService.js","sourceRoot":"","sources":["../../src/storage/VaultStorageService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Storage configuration
|
|
18
|
+
__exportStar(require("./VaultStorageConfig"), exports);
|
|
19
|
+
// Storage service
|
|
20
|
+
__exportStar(require("./VaultStorageService"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wBAAwB;AACxB,uDAAoC;AAEpC,kBAAkB;AAClB,wDAAqC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ajna-inc/vaults",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Post-quantum encrypted vaults with DIDComm protocol for Credo",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"@types/jest": "^29.5.0",
|
|
26
26
|
"@types/node": "^18.0.0",
|
|
27
27
|
"jest": "^29.5.0",
|
|
28
|
+
"rimraf": "^4.4.0",
|
|
28
29
|
"ts-jest": "^29.1.0",
|
|
29
30
|
"typescript": "~5.3.0"
|
|
30
31
|
},
|
|
@@ -37,7 +38,9 @@
|
|
|
37
38
|
"access": "public"
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
40
|
-
"build": "
|
|
41
|
+
"build": "pnpm run clean && pnpm run compile",
|
|
42
|
+
"clean": "rimraf ./build",
|
|
43
|
+
"compile": "tsc -p tsconfig.build.json",
|
|
41
44
|
"test": "jest",
|
|
42
45
|
"test:watch": "jest --watch",
|
|
43
46
|
"build:wasm": "cd ../../../rust/wasm/vault-crypto && wasm-pack build --target nodejs --out-dir ../../../credo-ts/packages/vaults/wasm"
|