@dynamic-labs-wallet/node 0.0.131 → 0.0.133
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/index.cjs.js +30 -50
- package/index.esm.js +30 -50
- package/package.json +2 -2
- package/src/client.d.ts +11 -23
- package/src/client.d.ts.map +1 -1
package/index.cjs.js
CHANGED
|
@@ -465,18 +465,16 @@ class DynamicWalletClient {
|
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
467
|
//todo: need to modify with imported flag
|
|
468
|
-
async sign({ accountAddress, externalServerKeyShares, message, chainName, password = undefined, isFormatted = false
|
|
468
|
+
async sign({ accountAddress, externalServerKeyShares, message, chainName, password = undefined, isFormatted = false }) {
|
|
469
469
|
await this.verifyPassword({
|
|
470
470
|
accountAddress,
|
|
471
471
|
password,
|
|
472
|
-
walletOperation: core.WalletOperation.SIGN_MESSAGE
|
|
473
|
-
signedSessionId
|
|
472
|
+
walletOperation: core.WalletOperation.SIGN_MESSAGE
|
|
474
473
|
});
|
|
475
474
|
const wallet = await this.getWallet({
|
|
476
475
|
accountAddress,
|
|
477
476
|
walletOperation: core.WalletOperation.SIGN_MESSAGE,
|
|
478
|
-
password
|
|
479
|
-
signedSessionId
|
|
477
|
+
password
|
|
480
478
|
});
|
|
481
479
|
// Perform the dynamic server sign
|
|
482
480
|
const data = await this.dynamicServerSign({
|
|
@@ -496,19 +494,17 @@ class DynamicWalletClient {
|
|
|
496
494
|
});
|
|
497
495
|
return signature;
|
|
498
496
|
}
|
|
499
|
-
async refreshWalletAccountShares({ accountAddress, chainName, password = undefined
|
|
497
|
+
async refreshWalletAccountShares({ accountAddress, chainName, password = undefined }) {
|
|
500
498
|
this.ensureApiClientAuthenticated();
|
|
501
499
|
await this.verifyPassword({
|
|
502
500
|
accountAddress,
|
|
503
501
|
password,
|
|
504
|
-
walletOperation: core.WalletOperation.REFRESH
|
|
505
|
-
signedSessionId
|
|
502
|
+
walletOperation: core.WalletOperation.REFRESH
|
|
506
503
|
});
|
|
507
504
|
const wallet = await this.getWallet({
|
|
508
505
|
accountAddress,
|
|
509
506
|
walletOperation: core.WalletOperation.REFRESH,
|
|
510
|
-
password
|
|
511
|
-
signedSessionId
|
|
507
|
+
password
|
|
512
508
|
});
|
|
513
509
|
const mpcSigner = getMPCSigner({
|
|
514
510
|
chainName,
|
|
@@ -526,8 +522,7 @@ class DynamicWalletClient {
|
|
|
526
522
|
});
|
|
527
523
|
await this.storeEncryptedBackupByWallet({
|
|
528
524
|
accountAddress,
|
|
529
|
-
password: password != null ? password : this.environmentId
|
|
530
|
-
signedSessionId
|
|
525
|
+
password: password != null ? password : this.environmentId
|
|
531
526
|
});
|
|
532
527
|
return refreshResults;
|
|
533
528
|
}
|
|
@@ -580,13 +575,12 @@ class DynamicWalletClient {
|
|
|
580
575
|
existingExternalServerKeyShares
|
|
581
576
|
};
|
|
582
577
|
}
|
|
583
|
-
async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined
|
|
578
|
+
async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined }) {
|
|
584
579
|
this.ensureApiClientAuthenticated();
|
|
585
580
|
await this.verifyPassword({
|
|
586
581
|
accountAddress,
|
|
587
582
|
password,
|
|
588
|
-
walletOperation: core.WalletOperation.RESHARE
|
|
589
|
-
signedSessionId
|
|
583
|
+
walletOperation: core.WalletOperation.RESHARE
|
|
590
584
|
});
|
|
591
585
|
const { existingExternalServerShareCount } = core.getServerWalletReshareConfig({
|
|
592
586
|
oldThresholdSignatureScheme,
|
|
@@ -596,8 +590,7 @@ class DynamicWalletClient {
|
|
|
596
590
|
accountAddress,
|
|
597
591
|
walletOperation: core.WalletOperation.RESHARE,
|
|
598
592
|
shareCount: existingExternalServerShareCount,
|
|
599
|
-
password
|
|
600
|
-
signedSessionId
|
|
593
|
+
password
|
|
601
594
|
});
|
|
602
595
|
const { newExternalServerInitKeygenResults, newExternalServerKeygenIds, existingExternalServerKeygenIds, existingExternalServerKeyShares } = await this.reshareStrategy({
|
|
603
596
|
chainName,
|
|
@@ -639,24 +632,21 @@ class DynamicWalletClient {
|
|
|
639
632
|
});
|
|
640
633
|
await this.storeEncryptedBackupByWallet({
|
|
641
634
|
accountAddress,
|
|
642
|
-
password
|
|
643
|
-
signedSessionId
|
|
635
|
+
password
|
|
644
636
|
});
|
|
645
637
|
return reshareResults;
|
|
646
638
|
}
|
|
647
|
-
async exportKey({ accountAddress, chainName, password = undefined,
|
|
639
|
+
async exportKey({ accountAddress, chainName, password = undefined, externalServerKeyShares }) {
|
|
648
640
|
this.ensureApiClientAuthenticated();
|
|
649
641
|
await this.verifyPassword({
|
|
650
642
|
accountAddress,
|
|
651
643
|
password,
|
|
652
|
-
walletOperation: core.WalletOperation.EXPORT_PRIVATE_KEY
|
|
653
|
-
signedSessionId
|
|
644
|
+
walletOperation: core.WalletOperation.EXPORT_PRIVATE_KEY
|
|
654
645
|
});
|
|
655
646
|
const wallet = await this.getWallet({
|
|
656
647
|
accountAddress,
|
|
657
648
|
password,
|
|
658
|
-
walletOperation: core.WalletOperation.EXPORT_PRIVATE_KEY
|
|
659
|
-
signedSessionId
|
|
649
|
+
walletOperation: core.WalletOperation.EXPORT_PRIVATE_KEY
|
|
660
650
|
});
|
|
661
651
|
const mpcSigner = getMPCSigner({
|
|
662
652
|
chainName,
|
|
@@ -742,7 +732,7 @@ class DynamicWalletClient {
|
|
|
742
732
|
throw new Error('Ceremony completion timeout');
|
|
743
733
|
}
|
|
744
734
|
}
|
|
745
|
-
async storeEncryptedBackupByWallet({ accountAddress, externalServerKeyShares = undefined, password = undefined
|
|
735
|
+
async storeEncryptedBackupByWallet({ accountAddress, externalServerKeyShares = undefined, password = undefined }) {
|
|
746
736
|
this.ensureApiClientAuthenticated();
|
|
747
737
|
//add retry logic for ceremony completion to prevent race condition
|
|
748
738
|
await this.ensureCeremonyCompletionBeforeBackup({
|
|
@@ -750,8 +740,7 @@ class DynamicWalletClient {
|
|
|
750
740
|
});
|
|
751
741
|
try {
|
|
752
742
|
const keySharesToBackup = externalServerKeyShares != null ? externalServerKeyShares : await this.getExternalServerKeyShares({
|
|
753
|
-
accountAddress
|
|
754
|
-
signedSessionId
|
|
743
|
+
accountAddress
|
|
755
744
|
});
|
|
756
745
|
if (!keySharesToBackup || keySharesToBackup.length === 0) {
|
|
757
746
|
throw new Error(`Key shares not found for accountAddress: ${accountAddress}`);
|
|
@@ -791,12 +780,11 @@ class DynamicWalletClient {
|
|
|
791
780
|
throw error;
|
|
792
781
|
}
|
|
793
782
|
}
|
|
794
|
-
async storeEncryptedBackupByWalletWithRetry({ accountAddress, externalServerKeyShares, password
|
|
783
|
+
async storeEncryptedBackupByWalletWithRetry({ accountAddress, externalServerKeyShares, password }) {
|
|
795
784
|
await retryPromise(()=>this.storeEncryptedBackupByWallet({
|
|
796
785
|
accountAddress,
|
|
797
786
|
externalServerKeyShares,
|
|
798
|
-
password
|
|
799
|
-
signedSessionId
|
|
787
|
+
password
|
|
800
788
|
}), {
|
|
801
789
|
operationName: 'store encrypted backup',
|
|
802
790
|
logContext: {
|
|
@@ -808,26 +796,23 @@ class DynamicWalletClient {
|
|
|
808
796
|
}
|
|
809
797
|
});
|
|
810
798
|
}
|
|
811
|
-
async getExternalServerKeyShares({ accountAddress, password
|
|
799
|
+
async getExternalServerKeyShares({ accountAddress, password }) {
|
|
812
800
|
const wallet = await this.getWallet({
|
|
813
801
|
accountAddress,
|
|
814
802
|
password,
|
|
815
|
-
walletOperation: core.WalletOperation.REACH_THRESHOLD
|
|
816
|
-
signedSessionId
|
|
803
|
+
walletOperation: core.WalletOperation.REACH_THRESHOLD
|
|
817
804
|
});
|
|
818
805
|
return wallet.externalServerKeyShares;
|
|
819
806
|
}
|
|
820
|
-
async updatePassword({ accountAddress, existingPassword, newPassword
|
|
807
|
+
async updatePassword({ accountAddress, existingPassword, newPassword }) {
|
|
821
808
|
await this.getWallet({
|
|
822
809
|
accountAddress,
|
|
823
810
|
password: existingPassword,
|
|
824
|
-
walletOperation: core.WalletOperation.REACH_ALL_PARTIES
|
|
825
|
-
signedSessionId
|
|
811
|
+
walletOperation: core.WalletOperation.REACH_ALL_PARTIES
|
|
826
812
|
});
|
|
827
813
|
await this.storeEncryptedBackupByWallet({
|
|
828
814
|
accountAddress,
|
|
829
|
-
password: newPassword
|
|
830
|
-
signedSessionId
|
|
815
|
+
password: newPassword
|
|
831
816
|
});
|
|
832
817
|
}
|
|
833
818
|
async decryptKeyShare({ keyShare, password }) {
|
|
@@ -869,7 +854,7 @@ class DynamicWalletClient {
|
|
|
869
854
|
requiredShareCount
|
|
870
855
|
};
|
|
871
856
|
}
|
|
872
|
-
async recoverEncryptedBackupByWallet({ accountAddress, password, walletOperation,
|
|
857
|
+
async recoverEncryptedBackupByWallet({ accountAddress, password, walletOperation, shareCount = undefined, storeRecoveredShares = true }) {
|
|
873
858
|
this.ensureApiClientAuthenticated();
|
|
874
859
|
const wallet = this.walletMap[accountAddress];
|
|
875
860
|
this.logger.debug(`recoverEncryptedBackupByWallet wallet: ${walletOperation}`, wallet);
|
|
@@ -883,7 +868,7 @@ class DynamicWalletClient {
|
|
|
883
868
|
const data = await this.apiClient.recoverEncryptedBackupByWallet({
|
|
884
869
|
walletId: wallet.walletId,
|
|
885
870
|
keyShareIds: dynamicKeyShareIds,
|
|
886
|
-
|
|
871
|
+
requiresSignedSessionId: false
|
|
887
872
|
});
|
|
888
873
|
const dynamicKeyShares = data.keyShares.filter((keyShare)=>keyShare.encryptedAccountCredential !== null && keyShare.backupLocation === core.BackupLocation.DYNAMIC);
|
|
889
874
|
const decryptedKeyShares = await Promise.all(dynamicKeyShares.map((keyShare)=>this.decryptKeyShare({
|
|
@@ -897,17 +882,15 @@ class DynamicWalletClient {
|
|
|
897
882
|
}
|
|
898
883
|
return decryptedKeyShares;
|
|
899
884
|
}
|
|
900
|
-
async exportExternalServerKeyShares({ accountAddress, password
|
|
885
|
+
async exportExternalServerKeyShares({ accountAddress, password }) {
|
|
901
886
|
await this.verifyPassword({
|
|
902
887
|
accountAddress,
|
|
903
888
|
password,
|
|
904
|
-
walletOperation: core.WalletOperation.REACH_ALL_PARTIES
|
|
905
|
-
signedSessionId
|
|
889
|
+
walletOperation: core.WalletOperation.REACH_ALL_PARTIES
|
|
906
890
|
});
|
|
907
891
|
const externalServerKeyShares = await this.getExternalServerKeyShares({
|
|
908
892
|
accountAddress,
|
|
909
|
-
password
|
|
910
|
-
signedSessionId
|
|
893
|
+
password
|
|
911
894
|
});
|
|
912
895
|
return externalServerKeyShares;
|
|
913
896
|
}
|
|
@@ -956,12 +939,11 @@ class DynamicWalletClient {
|
|
|
956
939
|
* verifyPassword attempts to recover and decrypt a single client key share using the provided password.
|
|
957
940
|
* If successful, the key share is encrypted with the new password. This method solely performs the recovery
|
|
958
941
|
* and decryption without storing the restored key shares. If unsuccessful, it throws an error.
|
|
959
|
-
*/ async verifyPassword({ accountAddress, password = undefined, walletOperation = core.WalletOperation.NO_OPERATION
|
|
942
|
+
*/ async verifyPassword({ accountAddress, password = undefined, walletOperation = core.WalletOperation.NO_OPERATION }) {
|
|
960
943
|
await this.getWallet({
|
|
961
944
|
accountAddress,
|
|
962
945
|
password,
|
|
963
|
-
walletOperation
|
|
964
|
-
signedSessionId
|
|
946
|
+
walletOperation
|
|
965
947
|
});
|
|
966
948
|
if (await this.requiresPasswordForOperation({
|
|
967
949
|
accountAddress,
|
|
@@ -981,12 +963,10 @@ class DynamicWalletClient {
|
|
|
981
963
|
throw new Error('No dynamic key shares found');
|
|
982
964
|
}
|
|
983
965
|
try {
|
|
984
|
-
// TODO(zfaizal2): throw error if signedSessionId is not provided after service deploy
|
|
985
966
|
await this.recoverEncryptedBackupByWallet({
|
|
986
967
|
accountAddress,
|
|
987
968
|
password,
|
|
988
969
|
walletOperation,
|
|
989
|
-
signedSessionId,
|
|
990
970
|
shareCount: 1,
|
|
991
971
|
storeRecoveredShares: false
|
|
992
972
|
});
|
package/index.esm.js
CHANGED
|
@@ -465,18 +465,16 @@ class DynamicWalletClient {
|
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
467
|
//todo: need to modify with imported flag
|
|
468
|
-
async sign({ accountAddress, externalServerKeyShares, message, chainName, password = undefined, isFormatted = false
|
|
468
|
+
async sign({ accountAddress, externalServerKeyShares, message, chainName, password = undefined, isFormatted = false }) {
|
|
469
469
|
await this.verifyPassword({
|
|
470
470
|
accountAddress,
|
|
471
471
|
password,
|
|
472
|
-
walletOperation: WalletOperation.SIGN_MESSAGE
|
|
473
|
-
signedSessionId
|
|
472
|
+
walletOperation: WalletOperation.SIGN_MESSAGE
|
|
474
473
|
});
|
|
475
474
|
const wallet = await this.getWallet({
|
|
476
475
|
accountAddress,
|
|
477
476
|
walletOperation: WalletOperation.SIGN_MESSAGE,
|
|
478
|
-
password
|
|
479
|
-
signedSessionId
|
|
477
|
+
password
|
|
480
478
|
});
|
|
481
479
|
// Perform the dynamic server sign
|
|
482
480
|
const data = await this.dynamicServerSign({
|
|
@@ -496,19 +494,17 @@ class DynamicWalletClient {
|
|
|
496
494
|
});
|
|
497
495
|
return signature;
|
|
498
496
|
}
|
|
499
|
-
async refreshWalletAccountShares({ accountAddress, chainName, password = undefined
|
|
497
|
+
async refreshWalletAccountShares({ accountAddress, chainName, password = undefined }) {
|
|
500
498
|
this.ensureApiClientAuthenticated();
|
|
501
499
|
await this.verifyPassword({
|
|
502
500
|
accountAddress,
|
|
503
501
|
password,
|
|
504
|
-
walletOperation: WalletOperation.REFRESH
|
|
505
|
-
signedSessionId
|
|
502
|
+
walletOperation: WalletOperation.REFRESH
|
|
506
503
|
});
|
|
507
504
|
const wallet = await this.getWallet({
|
|
508
505
|
accountAddress,
|
|
509
506
|
walletOperation: WalletOperation.REFRESH,
|
|
510
|
-
password
|
|
511
|
-
signedSessionId
|
|
507
|
+
password
|
|
512
508
|
});
|
|
513
509
|
const mpcSigner = getMPCSigner({
|
|
514
510
|
chainName,
|
|
@@ -526,8 +522,7 @@ class DynamicWalletClient {
|
|
|
526
522
|
});
|
|
527
523
|
await this.storeEncryptedBackupByWallet({
|
|
528
524
|
accountAddress,
|
|
529
|
-
password: password != null ? password : this.environmentId
|
|
530
|
-
signedSessionId
|
|
525
|
+
password: password != null ? password : this.environmentId
|
|
531
526
|
});
|
|
532
527
|
return refreshResults;
|
|
533
528
|
}
|
|
@@ -580,13 +575,12 @@ class DynamicWalletClient {
|
|
|
580
575
|
existingExternalServerKeyShares
|
|
581
576
|
};
|
|
582
577
|
}
|
|
583
|
-
async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined
|
|
578
|
+
async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined }) {
|
|
584
579
|
this.ensureApiClientAuthenticated();
|
|
585
580
|
await this.verifyPassword({
|
|
586
581
|
accountAddress,
|
|
587
582
|
password,
|
|
588
|
-
walletOperation: WalletOperation.RESHARE
|
|
589
|
-
signedSessionId
|
|
583
|
+
walletOperation: WalletOperation.RESHARE
|
|
590
584
|
});
|
|
591
585
|
const { existingExternalServerShareCount } = getServerWalletReshareConfig({
|
|
592
586
|
oldThresholdSignatureScheme,
|
|
@@ -596,8 +590,7 @@ class DynamicWalletClient {
|
|
|
596
590
|
accountAddress,
|
|
597
591
|
walletOperation: WalletOperation.RESHARE,
|
|
598
592
|
shareCount: existingExternalServerShareCount,
|
|
599
|
-
password
|
|
600
|
-
signedSessionId
|
|
593
|
+
password
|
|
601
594
|
});
|
|
602
595
|
const { newExternalServerInitKeygenResults, newExternalServerKeygenIds, existingExternalServerKeygenIds, existingExternalServerKeyShares } = await this.reshareStrategy({
|
|
603
596
|
chainName,
|
|
@@ -639,24 +632,21 @@ class DynamicWalletClient {
|
|
|
639
632
|
});
|
|
640
633
|
await this.storeEncryptedBackupByWallet({
|
|
641
634
|
accountAddress,
|
|
642
|
-
password
|
|
643
|
-
signedSessionId
|
|
635
|
+
password
|
|
644
636
|
});
|
|
645
637
|
return reshareResults;
|
|
646
638
|
}
|
|
647
|
-
async exportKey({ accountAddress, chainName, password = undefined,
|
|
639
|
+
async exportKey({ accountAddress, chainName, password = undefined, externalServerKeyShares }) {
|
|
648
640
|
this.ensureApiClientAuthenticated();
|
|
649
641
|
await this.verifyPassword({
|
|
650
642
|
accountAddress,
|
|
651
643
|
password,
|
|
652
|
-
walletOperation: WalletOperation.EXPORT_PRIVATE_KEY
|
|
653
|
-
signedSessionId
|
|
644
|
+
walletOperation: WalletOperation.EXPORT_PRIVATE_KEY
|
|
654
645
|
});
|
|
655
646
|
const wallet = await this.getWallet({
|
|
656
647
|
accountAddress,
|
|
657
648
|
password,
|
|
658
|
-
walletOperation: WalletOperation.EXPORT_PRIVATE_KEY
|
|
659
|
-
signedSessionId
|
|
649
|
+
walletOperation: WalletOperation.EXPORT_PRIVATE_KEY
|
|
660
650
|
});
|
|
661
651
|
const mpcSigner = getMPCSigner({
|
|
662
652
|
chainName,
|
|
@@ -742,7 +732,7 @@ class DynamicWalletClient {
|
|
|
742
732
|
throw new Error('Ceremony completion timeout');
|
|
743
733
|
}
|
|
744
734
|
}
|
|
745
|
-
async storeEncryptedBackupByWallet({ accountAddress, externalServerKeyShares = undefined, password = undefined
|
|
735
|
+
async storeEncryptedBackupByWallet({ accountAddress, externalServerKeyShares = undefined, password = undefined }) {
|
|
746
736
|
this.ensureApiClientAuthenticated();
|
|
747
737
|
//add retry logic for ceremony completion to prevent race condition
|
|
748
738
|
await this.ensureCeremonyCompletionBeforeBackup({
|
|
@@ -750,8 +740,7 @@ class DynamicWalletClient {
|
|
|
750
740
|
});
|
|
751
741
|
try {
|
|
752
742
|
const keySharesToBackup = externalServerKeyShares != null ? externalServerKeyShares : await this.getExternalServerKeyShares({
|
|
753
|
-
accountAddress
|
|
754
|
-
signedSessionId
|
|
743
|
+
accountAddress
|
|
755
744
|
});
|
|
756
745
|
if (!keySharesToBackup || keySharesToBackup.length === 0) {
|
|
757
746
|
throw new Error(`Key shares not found for accountAddress: ${accountAddress}`);
|
|
@@ -791,12 +780,11 @@ class DynamicWalletClient {
|
|
|
791
780
|
throw error;
|
|
792
781
|
}
|
|
793
782
|
}
|
|
794
|
-
async storeEncryptedBackupByWalletWithRetry({ accountAddress, externalServerKeyShares, password
|
|
783
|
+
async storeEncryptedBackupByWalletWithRetry({ accountAddress, externalServerKeyShares, password }) {
|
|
795
784
|
await retryPromise(()=>this.storeEncryptedBackupByWallet({
|
|
796
785
|
accountAddress,
|
|
797
786
|
externalServerKeyShares,
|
|
798
|
-
password
|
|
799
|
-
signedSessionId
|
|
787
|
+
password
|
|
800
788
|
}), {
|
|
801
789
|
operationName: 'store encrypted backup',
|
|
802
790
|
logContext: {
|
|
@@ -808,26 +796,23 @@ class DynamicWalletClient {
|
|
|
808
796
|
}
|
|
809
797
|
});
|
|
810
798
|
}
|
|
811
|
-
async getExternalServerKeyShares({ accountAddress, password
|
|
799
|
+
async getExternalServerKeyShares({ accountAddress, password }) {
|
|
812
800
|
const wallet = await this.getWallet({
|
|
813
801
|
accountAddress,
|
|
814
802
|
password,
|
|
815
|
-
walletOperation: WalletOperation.REACH_THRESHOLD
|
|
816
|
-
signedSessionId
|
|
803
|
+
walletOperation: WalletOperation.REACH_THRESHOLD
|
|
817
804
|
});
|
|
818
805
|
return wallet.externalServerKeyShares;
|
|
819
806
|
}
|
|
820
|
-
async updatePassword({ accountAddress, existingPassword, newPassword
|
|
807
|
+
async updatePassword({ accountAddress, existingPassword, newPassword }) {
|
|
821
808
|
await this.getWallet({
|
|
822
809
|
accountAddress,
|
|
823
810
|
password: existingPassword,
|
|
824
|
-
walletOperation: WalletOperation.REACH_ALL_PARTIES
|
|
825
|
-
signedSessionId
|
|
811
|
+
walletOperation: WalletOperation.REACH_ALL_PARTIES
|
|
826
812
|
});
|
|
827
813
|
await this.storeEncryptedBackupByWallet({
|
|
828
814
|
accountAddress,
|
|
829
|
-
password: newPassword
|
|
830
|
-
signedSessionId
|
|
815
|
+
password: newPassword
|
|
831
816
|
});
|
|
832
817
|
}
|
|
833
818
|
async decryptKeyShare({ keyShare, password }) {
|
|
@@ -869,7 +854,7 @@ class DynamicWalletClient {
|
|
|
869
854
|
requiredShareCount
|
|
870
855
|
};
|
|
871
856
|
}
|
|
872
|
-
async recoverEncryptedBackupByWallet({ accountAddress, password, walletOperation,
|
|
857
|
+
async recoverEncryptedBackupByWallet({ accountAddress, password, walletOperation, shareCount = undefined, storeRecoveredShares = true }) {
|
|
873
858
|
this.ensureApiClientAuthenticated();
|
|
874
859
|
const wallet = this.walletMap[accountAddress];
|
|
875
860
|
this.logger.debug(`recoverEncryptedBackupByWallet wallet: ${walletOperation}`, wallet);
|
|
@@ -883,7 +868,7 @@ class DynamicWalletClient {
|
|
|
883
868
|
const data = await this.apiClient.recoverEncryptedBackupByWallet({
|
|
884
869
|
walletId: wallet.walletId,
|
|
885
870
|
keyShareIds: dynamicKeyShareIds,
|
|
886
|
-
|
|
871
|
+
requiresSignedSessionId: false
|
|
887
872
|
});
|
|
888
873
|
const dynamicKeyShares = data.keyShares.filter((keyShare)=>keyShare.encryptedAccountCredential !== null && keyShare.backupLocation === BackupLocation.DYNAMIC);
|
|
889
874
|
const decryptedKeyShares = await Promise.all(dynamicKeyShares.map((keyShare)=>this.decryptKeyShare({
|
|
@@ -897,17 +882,15 @@ class DynamicWalletClient {
|
|
|
897
882
|
}
|
|
898
883
|
return decryptedKeyShares;
|
|
899
884
|
}
|
|
900
|
-
async exportExternalServerKeyShares({ accountAddress, password
|
|
885
|
+
async exportExternalServerKeyShares({ accountAddress, password }) {
|
|
901
886
|
await this.verifyPassword({
|
|
902
887
|
accountAddress,
|
|
903
888
|
password,
|
|
904
|
-
walletOperation: WalletOperation.REACH_ALL_PARTIES
|
|
905
|
-
signedSessionId
|
|
889
|
+
walletOperation: WalletOperation.REACH_ALL_PARTIES
|
|
906
890
|
});
|
|
907
891
|
const externalServerKeyShares = await this.getExternalServerKeyShares({
|
|
908
892
|
accountAddress,
|
|
909
|
-
password
|
|
910
|
-
signedSessionId
|
|
893
|
+
password
|
|
911
894
|
});
|
|
912
895
|
return externalServerKeyShares;
|
|
913
896
|
}
|
|
@@ -956,12 +939,11 @@ class DynamicWalletClient {
|
|
|
956
939
|
* verifyPassword attempts to recover and decrypt a single client key share using the provided password.
|
|
957
940
|
* If successful, the key share is encrypted with the new password. This method solely performs the recovery
|
|
958
941
|
* and decryption without storing the restored key shares. If unsuccessful, it throws an error.
|
|
959
|
-
*/ async verifyPassword({ accountAddress, password = undefined, walletOperation = WalletOperation.NO_OPERATION
|
|
942
|
+
*/ async verifyPassword({ accountAddress, password = undefined, walletOperation = WalletOperation.NO_OPERATION }) {
|
|
960
943
|
await this.getWallet({
|
|
961
944
|
accountAddress,
|
|
962
945
|
password,
|
|
963
|
-
walletOperation
|
|
964
|
-
signedSessionId
|
|
946
|
+
walletOperation
|
|
965
947
|
});
|
|
966
948
|
if (await this.requiresPasswordForOperation({
|
|
967
949
|
accountAddress,
|
|
@@ -981,12 +963,10 @@ class DynamicWalletClient {
|
|
|
981
963
|
throw new Error('No dynamic key shares found');
|
|
982
964
|
}
|
|
983
965
|
try {
|
|
984
|
-
// TODO(zfaizal2): throw error if signedSessionId is not provided after service deploy
|
|
985
966
|
await this.recoverEncryptedBackupByWallet({
|
|
986
967
|
accountAddress,
|
|
987
968
|
password,
|
|
988
969
|
walletOperation,
|
|
989
|
-
signedSessionId,
|
|
990
970
|
shareCount: 1,
|
|
991
971
|
storeRecoveredShares: false
|
|
992
972
|
});
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/node",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.133",
|
|
4
4
|
"license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@dynamic-labs-wallet/core": "0.0.
|
|
6
|
+
"@dynamic-labs-wallet/core": "0.0.133",
|
|
7
7
|
"@dynamic-labs/logger": "^4.25.3",
|
|
8
8
|
"uuid": "11.1.0",
|
|
9
9
|
"@noble/hashes": "1.7.1"
|
package/src/client.d.ts
CHANGED
|
@@ -80,20 +80,18 @@ export declare class DynamicWalletClient {
|
|
|
80
80
|
derivationPath: Uint32Array | undefined;
|
|
81
81
|
isFormatted?: boolean;
|
|
82
82
|
}): Promise<Uint8Array | EcdsaSignature>;
|
|
83
|
-
sign({ accountAddress, externalServerKeyShares, message, chainName, password, isFormatted,
|
|
83
|
+
sign({ accountAddress, externalServerKeyShares, message, chainName, password, isFormatted, }: {
|
|
84
84
|
accountAddress: string;
|
|
85
85
|
externalServerKeyShares: ServerKeyShare[];
|
|
86
86
|
message: string | Uint8Array;
|
|
87
87
|
chainName: string;
|
|
88
88
|
password?: string;
|
|
89
|
-
signedSessionId: string;
|
|
90
89
|
isFormatted?: boolean;
|
|
91
90
|
}): Promise<Uint8Array | EcdsaSignature>;
|
|
92
|
-
refreshWalletAccountShares({ accountAddress, chainName, password,
|
|
91
|
+
refreshWalletAccountShares({ accountAddress, chainName, password, }: {
|
|
93
92
|
accountAddress: string;
|
|
94
93
|
chainName: string;
|
|
95
94
|
password?: string;
|
|
96
|
-
signedSessionId: string;
|
|
97
95
|
}): Promise<(EcdsaKeygenResult | BIP340KeygenResult)[]>;
|
|
98
96
|
getExportId({ chainName, serverKeyShare, }: {
|
|
99
97
|
chainName: string;
|
|
@@ -124,19 +122,17 @@ export declare class DynamicWalletClient {
|
|
|
124
122
|
existingExternalServerKeygenIds: string[];
|
|
125
123
|
existingExternalServerKeyShares: ServerKeyShare[];
|
|
126
124
|
}>;
|
|
127
|
-
reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password,
|
|
125
|
+
reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password, }: {
|
|
128
126
|
chainName: string;
|
|
129
127
|
accountAddress: string;
|
|
130
128
|
oldThresholdSignatureScheme: ThresholdSignatureScheme;
|
|
131
129
|
newThresholdSignatureScheme: ThresholdSignatureScheme;
|
|
132
130
|
password?: string;
|
|
133
|
-
signedSessionId: string;
|
|
134
131
|
}): Promise<(EcdsaKeygenResult | BIP340KeygenResult)[]>;
|
|
135
|
-
exportKey({ accountAddress, chainName, password,
|
|
132
|
+
exportKey({ accountAddress, chainName, password, externalServerKeyShares, }: {
|
|
136
133
|
accountAddress: string;
|
|
137
134
|
chainName: string;
|
|
138
135
|
password?: string;
|
|
139
|
-
signedSessionId: string;
|
|
140
136
|
externalServerKeyShares: ServerKeyShare[];
|
|
141
137
|
}): Promise<{
|
|
142
138
|
derivedPrivateKey: string | undefined;
|
|
@@ -155,28 +151,24 @@ export declare class DynamicWalletClient {
|
|
|
155
151
|
ensureCeremonyCompletionBeforeBackup({ accountAddress, }: {
|
|
156
152
|
accountAddress: string;
|
|
157
153
|
}): Promise<void>;
|
|
158
|
-
storeEncryptedBackupByWallet({ accountAddress, externalServerKeyShares, password,
|
|
154
|
+
storeEncryptedBackupByWallet({ accountAddress, externalServerKeyShares, password, }: {
|
|
159
155
|
accountAddress: string;
|
|
160
156
|
externalServerKeyShares?: ServerKeyShare[];
|
|
161
157
|
password?: string;
|
|
162
|
-
signedSessionId: string;
|
|
163
158
|
}): Promise<string[]>;
|
|
164
|
-
storeEncryptedBackupByWalletWithRetry({ accountAddress, externalServerKeyShares, password,
|
|
159
|
+
storeEncryptedBackupByWalletWithRetry({ accountAddress, externalServerKeyShares, password, }: {
|
|
165
160
|
accountAddress: string;
|
|
166
161
|
externalServerKeyShares?: ServerKeyShare[];
|
|
167
162
|
password?: string;
|
|
168
|
-
signedSessionId: string;
|
|
169
163
|
}): Promise<void>;
|
|
170
|
-
getExternalServerKeyShares({ accountAddress, password,
|
|
164
|
+
getExternalServerKeyShares({ accountAddress, password, }: {
|
|
171
165
|
accountAddress: string;
|
|
172
166
|
password?: string;
|
|
173
|
-
signedSessionId: string;
|
|
174
167
|
}): Promise<import("./mpc").ServerKeyShare[]>;
|
|
175
|
-
updatePassword({ accountAddress, existingPassword, newPassword,
|
|
168
|
+
updatePassword({ accountAddress, existingPassword, newPassword, }: {
|
|
176
169
|
accountAddress: string;
|
|
177
170
|
existingPassword?: string;
|
|
178
171
|
newPassword?: string;
|
|
179
|
-
signedSessionId: string;
|
|
180
172
|
}): Promise<void>;
|
|
181
173
|
decryptKeyShare({ keyShare, password, }: {
|
|
182
174
|
keyShare: string;
|
|
@@ -203,18 +195,16 @@ export declare class DynamicWalletClient {
|
|
|
203
195
|
shares: Partial<Record<BackupLocation, string[]>>;
|
|
204
196
|
requiredShareCount: number;
|
|
205
197
|
};
|
|
206
|
-
recoverEncryptedBackupByWallet({ accountAddress, password, walletOperation,
|
|
198
|
+
recoverEncryptedBackupByWallet({ accountAddress, password, walletOperation, shareCount, storeRecoveredShares, }: {
|
|
207
199
|
accountAddress: string;
|
|
208
200
|
password?: string;
|
|
209
201
|
walletOperation: WalletOperation;
|
|
210
|
-
signedSessionId: string;
|
|
211
202
|
shareCount?: number;
|
|
212
203
|
storeRecoveredShares?: boolean;
|
|
213
204
|
}): Promise<any[]>;
|
|
214
|
-
exportExternalServerKeyShares({ accountAddress, password,
|
|
205
|
+
exportExternalServerKeyShares({ accountAddress, password, }: {
|
|
215
206
|
accountAddress: string;
|
|
216
207
|
password?: string;
|
|
217
|
-
signedSessionId: string;
|
|
218
208
|
}): Promise<import("./mpc").ServerKeyShare[]>;
|
|
219
209
|
/**
|
|
220
210
|
* Helper function to check if the required wallet fields are present and valid
|
|
@@ -228,11 +218,10 @@ export declare class DynamicWalletClient {
|
|
|
228
218
|
* If successful, the key share is encrypted with the new password. This method solely performs the recovery
|
|
229
219
|
* and decryption without storing the restored key shares. If unsuccessful, it throws an error.
|
|
230
220
|
*/
|
|
231
|
-
verifyPassword({ accountAddress, password, walletOperation,
|
|
221
|
+
verifyPassword({ accountAddress, password, walletOperation, }: {
|
|
232
222
|
accountAddress: string;
|
|
233
223
|
password?: string;
|
|
234
224
|
walletOperation?: WalletOperation;
|
|
235
|
-
signedSessionId: string;
|
|
236
225
|
}): Promise<void>;
|
|
237
226
|
isPasswordEncrypted({ accountAddress, }: {
|
|
238
227
|
accountAddress: string;
|
|
@@ -257,7 +246,6 @@ export declare class DynamicWalletClient {
|
|
|
257
246
|
getWallet({ accountAddress, walletOperation, shareCount, }: {
|
|
258
247
|
accountAddress: string;
|
|
259
248
|
walletOperation?: WalletOperation;
|
|
260
|
-
signedSessionId: string;
|
|
261
249
|
shareCount?: number;
|
|
262
250
|
password?: string;
|
|
263
251
|
}): Promise<WalletProperties>;
|
package/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|