@push.rocks/smartsecret 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ export const smartSecretSealedFileMaximumEntryBytes = 512 * 1_024;
6
6
  const schemaVersion = 1;
7
7
  const profile = 'smartsecret-kernel-aes-256-gcm-file-v1';
8
8
  const manifestName = 'manifest.json';
9
+ const relocationReceiptName = '.smartsecret-relocation.json';
9
10
  const masterKeyBytes = 32;
10
11
  const maximumEnvelopeBytes = 768 * 1_024;
11
12
  const operationTimeoutMs = 60_000;
@@ -102,6 +103,65 @@ const normalizeOptions = (optionsArg) => {
102
103
  throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
103
104
  }
104
105
  };
106
+ const normalizeRelocationOptions = (optionsArg) => {
107
+ try {
108
+ if (!optionsArg || typeof optionsArg !== 'object' || Array.isArray(optionsArg)) {
109
+ throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
110
+ }
111
+ const expectedKeys = [
112
+ 'kernelStore',
113
+ 'storeId',
114
+ 'sourceDirectoryPath',
115
+ 'destinationDirectoryPath',
116
+ ];
117
+ const keys = Reflect.ownKeys(optionsArg);
118
+ if (keys.length !== expectedKeys.length
119
+ || keys.some((keyArg) => typeof keyArg !== 'string')
120
+ || expectedKeys.some((keyArg) => !keys.includes(keyArg)))
121
+ throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
122
+ const values = Object.create(null);
123
+ for (const key of keys) {
124
+ const descriptor = Object.getOwnPropertyDescriptor(optionsArg, key);
125
+ if (!descriptor?.enumerable || !('value' in descriptor)) {
126
+ throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
127
+ }
128
+ values[key] = descriptor.value;
129
+ }
130
+ const kernelStoreValue = values.kernelStore;
131
+ if (!kernelStoreValue || typeof kernelStoreValue !== 'object') {
132
+ throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
133
+ }
134
+ const moveEntry = dataPropertyValue(kernelStoreValue, 'moveEntry');
135
+ if (typeof moveEntry !== 'function') {
136
+ throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
137
+ }
138
+ const source = normalizeOptions({
139
+ kernelStore: kernelStoreValue,
140
+ storeId: values.storeId,
141
+ directoryPath: values.sourceDirectoryPath,
142
+ });
143
+ const destination = normalizeOptions({
144
+ kernelStore: kernelStoreValue,
145
+ storeId: values.storeId,
146
+ directoryPath: values.destinationDirectoryPath,
147
+ });
148
+ if (source.directoryPath === destination.directoryPath) {
149
+ throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
150
+ }
151
+ const kernelStore = {
152
+ ...source.kernelStore,
153
+ moveEntry: (sourceAccountArg, destinationAccountArg, operationOptionsArg) => Reflect.apply(moveEntry, kernelStoreValue, [sourceAccountArg, destinationAccountArg, operationOptionsArg]),
154
+ };
155
+ source.kernelStore = kernelStore;
156
+ destination.kernelStore = kernelStore;
157
+ return { kernelStore, source, destination };
158
+ }
159
+ catch (errorArg) {
160
+ if (errorArg instanceof SmartSecretSealedFileStoreError)
161
+ throw errorArg;
162
+ throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
163
+ }
164
+ };
105
165
  const exactObject = (valueArg, keysArg, errorCodeArg) => {
106
166
  try {
107
167
  if (!valueArg || typeof valueArg !== 'object' || Array.isArray(valueArg)) {
@@ -222,6 +282,49 @@ const manifestFor = (optionsArg, fingerprintArg) => ({
222
282
  storeId: optionsArg.storeId,
223
283
  masterKeyFingerprint: fingerprintArg,
224
284
  });
285
+ const directoryIdentity = (statsArg) => ({
286
+ device: statsArg.dev.toString(10),
287
+ inode: statsArg.ino.toString(10),
288
+ });
289
+ const directoryIdentitiesEqual = (leftArg, rightArg) => leftArg.device === rightArg.device && leftArg.inode === rightArg.inode;
290
+ const relocationReceiptFor = (optionsArg, fingerprintArg, identityArg) => ({
291
+ schemaVersion,
292
+ kind: 'relocation',
293
+ profile,
294
+ serviceDigest: digest(encoder.encode(optionsArg.source.service)),
295
+ storeId: optionsArg.source.storeId,
296
+ sourcePathDigest: digest(encoder.encode(optionsArg.source.directoryPath)),
297
+ destinationPathDigest: digest(encoder.encode(optionsArg.destination.directoryPath)),
298
+ masterKeyFingerprint: fingerprintArg,
299
+ ...identityArg,
300
+ });
301
+ const parseRelocationReceipt = (valueArg, optionsArg, fingerprintArg, identityArg) => {
302
+ const value = exactObject(valueArg, [
303
+ 'schemaVersion',
304
+ 'kind',
305
+ 'profile',
306
+ 'serviceDigest',
307
+ 'storeId',
308
+ 'sourcePathDigest',
309
+ 'destinationPathDigest',
310
+ 'masterKeyFingerprint',
311
+ 'device',
312
+ 'inode',
313
+ ], 'FILESYSTEM_FAILED');
314
+ const expected = relocationReceiptFor(optionsArg, fingerprintArg, identityArg);
315
+ if (value.schemaVersion !== expected.schemaVersion
316
+ || value.kind !== expected.kind
317
+ || value.profile !== expected.profile
318
+ || value.serviceDigest !== expected.serviceDigest
319
+ || value.storeId !== expected.storeId
320
+ || value.sourcePathDigest !== expected.sourcePathDigest
321
+ || value.destinationPathDigest !== expected.destinationPathDigest
322
+ || value.masterKeyFingerprint !== expected.masterKeyFingerprint
323
+ || value.device !== expected.device
324
+ || value.inode !== expected.inode)
325
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
326
+ return value;
327
+ };
225
328
  const parseManifest = (valueArg, optionsArg) => {
226
329
  const value = exactObject(valueArg, [
227
330
  'schemaVersion',
@@ -308,7 +411,7 @@ const validateDirectory = (statsArg, effectiveUidArg, finalArg) => {
308
411
  && !(statsArg.uid === 0n && (mode & 512n) !== 0n))
309
412
  throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
310
413
  };
311
- const ensureDirectory = async (directoryPathArg) => {
414
+ const openDirectory = async (directoryPathArg, createArg) => {
312
415
  let currentHandle;
313
416
  try {
314
417
  const effectiveUid = process.geteuid?.();
@@ -325,12 +428,14 @@ const ensureDirectory = async (directoryPathArg) => {
325
428
  validateDirectory(await currentHandle.stat({ bigint: true }), BigInt(effectiveUid), false);
326
429
  for (let index = 0; index < components.length; index++) {
327
430
  const componentPath = directoryHandlePath(currentHandle, components[index]);
328
- try {
329
- await plugins.fs.promises.mkdir(componentPath, { mode: 0o700 });
330
- }
331
- catch (errorArg) {
332
- if (errorArg.code !== 'EEXIST')
333
- throw errorArg;
431
+ if (createArg) {
432
+ try {
433
+ await plugins.fs.promises.mkdir(componentPath, { mode: 0o700 });
434
+ }
435
+ catch (errorArg) {
436
+ if (errorArg.code !== 'EEXIST')
437
+ throw errorArg;
438
+ }
334
439
  }
335
440
  let nextHandle;
336
441
  try {
@@ -361,6 +466,39 @@ const ensureDirectory = async (directoryPathArg) => {
361
466
  throw operationError;
362
467
  }
363
468
  };
469
+ const ensureDirectory = (directoryPathArg) => openDirectory(directoryPathArg, true);
470
+ const openExistingDirectory = (directoryPathArg) => openDirectory(directoryPathArg, false);
471
+ const openChildDirectoryIfPresent = async (parentHandleArg, nameArg) => {
472
+ let handle;
473
+ try {
474
+ try {
475
+ handle = await plugins.fs.promises.open(directoryHandlePath(parentHandleArg, nameArg), plugins.fs.constants.O_RDONLY
476
+ | plugins.fs.constants.O_DIRECTORY
477
+ | plugins.fs.constants.O_NOFOLLOW);
478
+ }
479
+ catch (errorArg) {
480
+ if (errorArg.code === 'ENOENT')
481
+ return undefined;
482
+ throw errorArg;
483
+ }
484
+ const effectiveUid = process.geteuid?.();
485
+ if (!Number.isSafeInteger(effectiveUid) || effectiveUid < 0) {
486
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
487
+ }
488
+ validateDirectory(await handle.stat({ bigint: true }), BigInt(effectiveUid), true);
489
+ const result = handle;
490
+ handle = undefined;
491
+ return result;
492
+ }
493
+ catch (errorArg) {
494
+ let operationError = errorArg instanceof SmartSecretSealedFileStoreError
495
+ ? errorArg
496
+ : createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
497
+ if (handle)
498
+ operationError = await closeFileHandleWithError(handle, operationError);
499
+ throw operationError;
500
+ }
501
+ };
364
502
  const readStrictJsonFile = async (directoryHandleArg, fileNameArg, maximumBytesArg) => {
365
503
  let handle;
366
504
  let bytes;
@@ -487,10 +625,11 @@ const removeAndSync = async (directoryHandleArg, fileNameArg) => {
487
625
  throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
488
626
  }
489
627
  };
490
- const listOwnedFiles = async (directoryHandleArg) => {
628
+ const listOwnedFiles = async (directoryHandleArg, allowRelocationReceiptArg = false) => {
491
629
  try {
492
630
  const names = await plugins.fs.promises.readdir(directoryHandlePath(directoryHandleArg));
493
631
  if (names.some((nameArg) => (nameArg !== manifestName
632
+ && !(allowRelocationReceiptArg && nameArg === relocationReceiptName)
494
633
  && !entryFilePattern.test(nameArg)
495
634
  && !temporaryFilePattern.test(nameArg))))
496
635
  throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
@@ -554,6 +693,151 @@ const readMasterKey = async (optionsArg) => {
554
693
  throw createSmartSecretSealedFileStoreError('MASTER_KEY_CONFLICT');
555
694
  }
556
695
  };
696
+ const mapRelocationKernelError = (errorArg) => {
697
+ if (!(errorArg instanceof SmartSecretKernelStoreError)) {
698
+ return createSmartSecretSealedFileStoreError('KERNEL_UNAVAILABLE');
699
+ }
700
+ if (errorArg.code === 'MUTATION_OUTCOME_UNKNOWN') {
701
+ return createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
702
+ }
703
+ if (errorArg.code === 'TARGET_CONFLICT' || errorArg.code === 'SOURCE_CHANGED') {
704
+ return createSmartSecretSealedFileStoreError('MASTER_KEY_CONFLICT');
705
+ }
706
+ if (errorArg.code === 'INVALID_ARGUMENT') {
707
+ return createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
708
+ }
709
+ return createSmartSecretSealedFileStoreError('KERNEL_UNAVAILABLE');
710
+ };
711
+ const acquireRelocationLeases = async (optionsArg) => {
712
+ const deadline = performance.now() + operationTimeoutMs;
713
+ const ordered = [optionsArg.source, optionsArg.destination]
714
+ .sort((leftArg, rightArg) => leftArg.mutexNamespace < rightArg.mutexNamespace
715
+ ? -1
716
+ : leftArg.mutexNamespace > rightArg.mutexNamespace
717
+ ? 1
718
+ : 0);
719
+ const leases = [];
720
+ try {
721
+ for (const options of ordered)
722
+ leases.push(await acquireLease(options, deadline));
723
+ return leases;
724
+ }
725
+ catch (errorArg) {
726
+ let operationError = errorArg;
727
+ for (const lease of leases.reverse()) {
728
+ try {
729
+ await lease.release();
730
+ }
731
+ catch {
732
+ operationError = preferCleanupError(operationError, createSmartSecretSealedFileStoreError('MUTEX_FAILED'));
733
+ }
734
+ }
735
+ throw operationError;
736
+ }
737
+ };
738
+ const inspectRelocationDirectory = async (directoryHandleArg, optionsArg) => {
739
+ const names = await listOwnedFiles(directoryHandleArg, true);
740
+ if (!names.includes(manifestName)) {
741
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
742
+ }
743
+ const manifestValue = await readStrictJsonFile(directoryHandleArg, manifestName, 4 * 1_024);
744
+ if (manifestValue === undefined) {
745
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
746
+ }
747
+ const receiptValue = names.includes(relocationReceiptName)
748
+ ? await readStrictJsonFile(directoryHandleArg, relocationReceiptName, 4 * 1_024)
749
+ : undefined;
750
+ if (names.includes(relocationReceiptName) && receiptValue === undefined) {
751
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
752
+ }
753
+ return {
754
+ manifest: parseManifest(manifestValue, optionsArg),
755
+ ...(receiptValue === undefined ? {} : { receiptValue }),
756
+ };
757
+ };
758
+ const readRelocationMasterKey = async (sourceArg, destinationArg, expectedFingerprintArg) => {
759
+ let sourceKey = null;
760
+ let destinationKey = null;
761
+ try {
762
+ sourceKey = await readMasterKey(sourceArg);
763
+ destinationKey = await readMasterKey(destinationArg);
764
+ if (!sourceKey && !destinationKey) {
765
+ throw createSmartSecretSealedFileStoreError('MASTER_KEY_UNAVAILABLE');
766
+ }
767
+ if ((sourceKey && fingerprint(sourceKey) !== expectedFingerprintArg)
768
+ || (destinationKey && fingerprint(destinationKey) !== expectedFingerprintArg)
769
+ || (sourceKey
770
+ && destinationKey
771
+ && !plugins.crypto.timingSafeEqual(sourceKey, destinationKey)))
772
+ throw createSmartSecretSealedFileStoreError('MASTER_KEY_CONFLICT');
773
+ return {
774
+ key: new Uint8Array(sourceKey ?? destinationKey),
775
+ sourcePresent: sourceKey !== null,
776
+ destinationPresent: destinationKey !== null,
777
+ };
778
+ }
779
+ finally {
780
+ sourceKey?.fill(0);
781
+ destinationKey?.fill(0);
782
+ }
783
+ };
784
+ const syncRelocationParents = async (sourceParentHandleArg, sourceParentPathArg, destinationParentHandleArg, destinationParentPathArg) => {
785
+ try {
786
+ await sourceParentHandleArg.sync();
787
+ if (sourceParentPathArg !== destinationParentPathArg) {
788
+ await destinationParentHandleArg.sync();
789
+ }
790
+ }
791
+ catch {
792
+ throw createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
793
+ }
794
+ };
795
+ const assertOpenChildIdentity = async (parentHandleArg, nameArg, childHandleArg) => {
796
+ try {
797
+ const [pathStats, handleStats] = await Promise.all([
798
+ plugins.fs.promises.lstat(directoryHandlePath(parentHandleArg, nameArg), { bigint: true }),
799
+ childHandleArg.stat({ bigint: true }),
800
+ ]);
801
+ if (pathStats.isSymbolicLink()
802
+ || !pathStats.isDirectory()
803
+ || pathStats.dev !== handleStats.dev
804
+ || pathStats.ino !== handleStats.ino)
805
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
806
+ return directoryIdentity(handleStats);
807
+ }
808
+ catch (errorArg) {
809
+ if (errorArg instanceof SmartSecretSealedFileStoreError)
810
+ throw errorArg;
811
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
812
+ }
813
+ };
814
+ const readChildIdentity = async (parentHandleArg, nameArg) => {
815
+ try {
816
+ const stats = await plugins.fs.promises.lstat(directoryHandlePath(parentHandleArg, nameArg), { bigint: true });
817
+ if (stats.isSymbolicLink() || !stats.isDirectory()) {
818
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
819
+ }
820
+ return directoryIdentity(stats);
821
+ }
822
+ catch (errorArg) {
823
+ if (errorArg.code === 'ENOENT')
824
+ return undefined;
825
+ if (errorArg instanceof SmartSecretSealedFileStoreError)
826
+ throw errorArg;
827
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
828
+ }
829
+ };
830
+ const assertChildAbsent = async (parentHandleArg, nameArg) => {
831
+ try {
832
+ await plugins.fs.promises.lstat(directoryHandlePath(parentHandleArg, nameArg));
833
+ }
834
+ catch (errorArg) {
835
+ if (errorArg.code === 'ENOENT')
836
+ return;
837
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
838
+ }
839
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
840
+ };
557
841
  const createMasterKey = async (optionsArg) => {
558
842
  const generated = plugins.smartcrypto.generateAes256GcmKey();
559
843
  let written = false;
@@ -588,14 +872,22 @@ const createMasterKey = async (optionsArg) => {
588
872
  generated.fill(0);
589
873
  }
590
874
  };
591
- const bootstrapUnderLease = async (optionsArg) => {
592
- const directoryHandle = await ensureDirectory(optionsArg.directoryPath);
875
+ const bootstrapUnderLease = async (optionsArg, existingIdentityArg, allowRelocationReceiptArg = false) => {
876
+ const directoryHandle = existingIdentityArg
877
+ ? await openExistingDirectory(optionsArg.directoryPath)
878
+ : await ensureDirectory(optionsArg.directoryPath);
593
879
  let key = null;
594
880
  let result;
595
881
  let createdMasterKey = false;
596
882
  let operationError;
597
883
  try {
598
- const names = await listOwnedFiles(directoryHandle);
884
+ if (existingIdentityArg) {
885
+ const currentIdentity = directoryIdentity(await directoryHandle.stat({ bigint: true }));
886
+ if (!directoryIdentitiesEqual(currentIdentity, existingIdentityArg)) {
887
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
888
+ }
889
+ }
890
+ const names = await listOwnedFiles(directoryHandle, allowRelocationReceiptArg);
599
891
  const manifestValue = await readStrictJsonFile(directoryHandle, manifestName, 4 * 1_024);
600
892
  const manifest = manifestValue === undefined ? undefined : parseManifest(manifestValue, optionsArg);
601
893
  key = await readMasterKey(optionsArg);
@@ -688,6 +980,183 @@ export class SmartSecretSealedFileStore {
688
980
  key = undefined;
689
981
  return store;
690
982
  }
983
+ /** Moves an initialized store and rebinds its exact kernel master key. */
984
+ static async relocate(optionsArg) {
985
+ const options = normalizeRelocationOptions(optionsArg);
986
+ if (process.platform !== 'linux' || typeof process.geteuid !== 'function') {
987
+ throw createSmartSecretSealedFileStoreError('KERNEL_UNAVAILABLE');
988
+ }
989
+ const leases = await acquireRelocationLeases(options);
990
+ let sourceParentHandle;
991
+ let destinationParentHandle;
992
+ let sourceDirectoryHandle;
993
+ let destinationDirectoryHandle;
994
+ let expectedKey;
995
+ let expectedIdentity;
996
+ let resultKey;
997
+ let mutationPossible = false;
998
+ let operationError;
999
+ const sourceParentPath = plugins.path.dirname(options.source.directoryPath);
1000
+ const destinationParentPath = plugins.path.dirname(options.destination.directoryPath);
1001
+ const sourceName = plugins.path.basename(options.source.directoryPath);
1002
+ const destinationName = plugins.path.basename(options.destination.directoryPath);
1003
+ try {
1004
+ sourceParentHandle = await openExistingDirectory(sourceParentPath);
1005
+ destinationParentHandle = await openExistingDirectory(destinationParentPath);
1006
+ const [sourceParentStats, destinationParentStats] = await Promise.all([
1007
+ sourceParentHandle.stat({ bigint: true }),
1008
+ destinationParentHandle.stat({ bigint: true }),
1009
+ ]);
1010
+ if (sourceParentStats.dev !== destinationParentStats.dev) {
1011
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
1012
+ }
1013
+ sourceDirectoryHandle = await openChildDirectoryIfPresent(sourceParentHandle, sourceName);
1014
+ destinationDirectoryHandle = await openChildDirectoryIfPresent(destinationParentHandle, destinationName);
1015
+ if (Boolean(sourceDirectoryHandle) === Boolean(destinationDirectoryHandle)) {
1016
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
1017
+ }
1018
+ const storeAtSource = sourceDirectoryHandle !== undefined;
1019
+ const currentOptions = storeAtSource ? options.source : options.destination;
1020
+ const currentHandle = sourceDirectoryHandle ?? destinationDirectoryHandle;
1021
+ expectedIdentity = await assertOpenChildIdentity(storeAtSource ? sourceParentHandle : destinationParentHandle, storeAtSource ? sourceName : destinationName, currentHandle);
1022
+ if (expectedIdentity.device !== sourceParentStats.dev.toString(10)) {
1023
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
1024
+ }
1025
+ const inspection = await inspectRelocationDirectory(currentHandle, currentOptions);
1026
+ const keyState = await readRelocationMasterKey(options.source, options.destination, inspection.manifest.masterKeyFingerprint);
1027
+ expectedKey = keyState.key;
1028
+ let receipt = inspection.receiptValue === undefined
1029
+ ? undefined
1030
+ : parseRelocationReceipt(inspection.receiptValue, options, inspection.manifest.masterKeyFingerprint, expectedIdentity);
1031
+ if (storeAtSource) {
1032
+ if (!keyState.sourcePresent) {
1033
+ throw createSmartSecretSealedFileStoreError('MASTER_KEY_UNAVAILABLE');
1034
+ }
1035
+ if (!receipt) {
1036
+ await atomicWriteJson(currentHandle, relocationReceiptName, relocationReceiptFor(options, inspection.manifest.masterKeyFingerprint, expectedIdentity));
1037
+ mutationPossible = true;
1038
+ const receiptValue = await readStrictJsonFile(currentHandle, relocationReceiptName, 4 * 1_024);
1039
+ if (receiptValue === undefined) {
1040
+ throw createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
1041
+ }
1042
+ receipt = parseRelocationReceipt(receiptValue, options, inspection.manifest.masterKeyFingerprint, expectedIdentity);
1043
+ }
1044
+ await assertOpenChildIdentity(sourceParentHandle, sourceName, sourceDirectoryHandle);
1045
+ await assertChildAbsent(destinationParentHandle, destinationName);
1046
+ try {
1047
+ await plugins.fs.promises.rename(directoryHandlePath(sourceParentHandle, sourceName), directoryHandlePath(destinationParentHandle, destinationName));
1048
+ mutationPossible = true;
1049
+ }
1050
+ catch {
1051
+ const [sourceAfter, destinationAfter] = await Promise.all([
1052
+ readChildIdentity(sourceParentHandle, sourceName),
1053
+ readChildIdentity(destinationParentHandle, destinationName),
1054
+ ]);
1055
+ if (sourceAfter
1056
+ && directoryIdentitiesEqual(sourceAfter, expectedIdentity)
1057
+ && destinationAfter === undefined) {
1058
+ try {
1059
+ if (!await removeAndSync(currentHandle, relocationReceiptName)) {
1060
+ throw createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
1061
+ }
1062
+ }
1063
+ catch (errorArg) {
1064
+ if (mutationOutcomeUnknown(errorArg))
1065
+ throw errorArg;
1066
+ throw createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
1067
+ }
1068
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
1069
+ }
1070
+ if (sourceAfter === undefined
1071
+ && destinationAfter
1072
+ && directoryIdentitiesEqual(destinationAfter, expectedIdentity)) {
1073
+ mutationPossible = true;
1074
+ }
1075
+ else {
1076
+ throw createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
1077
+ }
1078
+ }
1079
+ }
1080
+ else {
1081
+ if (!receipt && (keyState.sourcePresent || !keyState.destinationPresent)) {
1082
+ throw createSmartSecretSealedFileStoreError('FILESYSTEM_FAILED');
1083
+ }
1084
+ }
1085
+ await syncRelocationParents(sourceParentHandle, sourceParentPath, destinationParentHandle, destinationParentPath);
1086
+ mutationPossible = true;
1087
+ let moveStatus;
1088
+ try {
1089
+ moveStatus = await options.kernelStore.moveEntry(options.source.masterKeyAccount, options.destination.masterKeyAccount);
1090
+ }
1091
+ catch (errorArg) {
1092
+ throw mapRelocationKernelError(errorArg);
1093
+ }
1094
+ if (moveStatus === 'sourceAbsent') {
1095
+ throw createSmartSecretSealedFileStoreError('MASTER_KEY_UNAVAILABLE');
1096
+ }
1097
+ const destinationKey = await readMasterKey(options.destination);
1098
+ try {
1099
+ if (!destinationKey || !plugins.crypto.timingSafeEqual(destinationKey, expectedKey)) {
1100
+ throw createSmartSecretSealedFileStoreError('MASTER_KEY_CONFLICT');
1101
+ }
1102
+ }
1103
+ finally {
1104
+ destinationKey?.fill(0);
1105
+ }
1106
+ resultKey = await bootstrapUnderLease(options.destination, expectedIdentity, Boolean(receipt));
1107
+ if (!plugins.crypto.timingSafeEqual(resultKey, expectedKey)) {
1108
+ throw createSmartSecretSealedFileStoreError('MASTER_KEY_CONFLICT');
1109
+ }
1110
+ if (receipt) {
1111
+ try {
1112
+ if (!await removeAndSync(currentHandle, relocationReceiptName)) {
1113
+ throw createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
1114
+ }
1115
+ }
1116
+ catch (errorArg) {
1117
+ if (mutationOutcomeUnknown(errorArg))
1118
+ throw errorArg;
1119
+ throw createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN');
1120
+ }
1121
+ }
1122
+ }
1123
+ catch (errorArg) {
1124
+ operationError = errorArg;
1125
+ }
1126
+ for (const handle of [
1127
+ sourceDirectoryHandle,
1128
+ destinationDirectoryHandle,
1129
+ sourceParentHandle,
1130
+ destinationParentHandle,
1131
+ ]) {
1132
+ if (!handle)
1133
+ continue;
1134
+ try {
1135
+ await closeFileHandle(handle);
1136
+ }
1137
+ catch (errorArg) {
1138
+ operationError = preferCleanupError(operationError, mutationPossible
1139
+ ? createSmartSecretSealedFileStoreError('MUTATION_OUTCOME_UNKNOWN')
1140
+ : errorArg);
1141
+ }
1142
+ }
1143
+ for (const lease of leases.reverse()) {
1144
+ try {
1145
+ await lease.release();
1146
+ }
1147
+ catch {
1148
+ operationError = preferCleanupError(operationError, createSmartSecretSealedFileStoreError(mutationPossible ? 'MUTATION_OUTCOME_UNKNOWN' : 'MUTEX_FAILED'));
1149
+ }
1150
+ }
1151
+ expectedKey?.fill(0);
1152
+ if (operationError) {
1153
+ resultKey?.fill(0);
1154
+ throw operationError;
1155
+ }
1156
+ const store = new SmartSecretSealedFileStore(options.destination, resultKey);
1157
+ resultKey = undefined;
1158
+ return store;
1159
+ }
691
1160
  /** Explicitly discards this store's ciphertext and kernel master key. */
692
1161
  static async reset(optionsArg) {
693
1162
  const options = normalizeOptions(optionsArg);
@@ -755,7 +1224,7 @@ export class SmartSecretSealedFileStore {
755
1224
  throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
756
1225
  }
757
1226
  return this.reserveOperation((deadlineArg, markAcquiredArg) => this.withLease(deadlineArg, markAcquiredArg, async () => {
758
- const directoryHandle = await ensureDirectory(this.directoryPath);
1227
+ const directoryHandle = await openExistingDirectory(this.directoryPath);
759
1228
  const id = entryId(this.options, account);
760
1229
  let value;
761
1230
  let operationError;
@@ -822,7 +1291,7 @@ export class SmartSecretSealedFileStore {
822
1291
  let result;
823
1292
  try {
824
1293
  result = this.reserveOperation((deadlineArg, markAcquiredArg) => this.withLease(deadlineArg, markAcquiredArg, async () => {
825
- const directoryHandle = await ensureDirectory(this.directoryPath);
1294
+ const directoryHandle = await openExistingDirectory(this.directoryPath);
826
1295
  let encrypted;
827
1296
  const id = entryId(this.options, account);
828
1297
  const keyFingerprint = fingerprint(this.masterKey);
@@ -880,7 +1349,7 @@ export class SmartSecretSealedFileStore {
880
1349
  throw createSmartSecretSealedFileStoreError('INVALID_ARGUMENT');
881
1350
  }
882
1351
  return this.reserveOperation((deadlineArg, markAcquiredArg) => this.withLease(deadlineArg, markAcquiredArg, async () => {
883
- const directoryHandle = await ensureDirectory(this.directoryPath);
1352
+ const directoryHandle = await openExistingDirectory(this.directoryPath);
884
1353
  let result;
885
1354
  let operationError;
886
1355
  try {
@@ -986,4 +1455,4 @@ export class SmartSecretSealedFileStore {
986
1455
  }
987
1456
  }
988
1457
  }
989
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzZWNyZXQuc2VhbGVkZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c2VjcmV0LnNlYWxlZGZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsMkJBQTJCLEdBQzVCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyxpQ0FBaUMsR0FFbEMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLHFDQUFxQyxHQUN0QyxNQUFNLG1DQUFtQyxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFFbEUsTUFBTSxhQUFhLEdBQUcsQ0FBVSxDQUFDO0FBQ2pDLE1BQU0sT0FBTyxHQUFHLHdDQUFpRCxDQUFDO0FBQ2xFLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQztBQUNyQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ2xDLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxtQ0FBbUMsQ0FBQztBQUM3RCxNQUFNLG9CQUFvQixHQUFHLHdDQUF3QyxDQUFDO0FBQ3RFLE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUF1RGxDLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxTQUF1QixFQUFjLEVBQUU7SUFDeEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakQsS0FBSyxNQUFNLEtB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
1458
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzZWNyZXQuc2VhbGVkZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c2VjcmV0LnNlYWxlZGZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsMkJBQTJCLEdBQzVCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyxpQ0FBaUMsR0FHbEMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLHFDQUFxQyxHQUN0QyxNQUFNLG1DQUFtQyxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFFbEUsTUFBTSxhQUFhLEdBQUcsQ0FBVSxDQUFDO0FBQ2pDLE1BQU0sT0FBTyxHQUFHLHdDQUFpRCxDQUFDO0FBQ2xFLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQztBQUNyQyxNQUFNLHFCQUFxQixHQUFHLDhCQUE4QixDQUFDO0FBQzdELE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLG9CQUFvQixHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDekMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUM7QUFDbEMsTUFBTSxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQztBQUNyRCxNQUFNLGdCQUFnQixHQUFHLG1DQUFtQyxDQUFDO0FBQzdELE1BQU0sb0JBQW9CLEdBQUcsd0NBQXdDLENBQUM7QUFDdEUsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQXdHbEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFNBQXVCLEVBQWMsRUFBRTtJQUN4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FB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