@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 @@
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,2 @@
1
+ export * from './VaultStorageConfig';
2
+ export * from './VaultStorageService';
@@ -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.0",
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": "tsc",
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"