1
1
import { StorageModel } from '@common/storage' ;
2
2
import { encryptWalletPassword } from '@common/utils/crypto-utils' ;
3
3
import { Migration } from '@migrates/migrator' ;
4
- import { AdenaWallet , decryptAES , mnemonicToEntropy } from 'adena-module' ;
4
+ import { AdenaWallet , decryptAES , encryptAES , mnemonicToEntropy } from 'adena-module' ;
5
5
import {
6
+ AddressBookModelV008 ,
6
7
SerializedModelV008 ,
7
8
StorageModelDataV008 ,
8
9
WalletModelV008 ,
9
10
} from '../v008/storage-model-v008' ;
10
- import { SerializedModelV009 , StorageModelDataV009 } from './storage-model-v009' ;
11
+ import {
12
+ AddressBookModelV009 ,
13
+ SerializedModelV009 ,
14
+ StorageModelDataV009 ,
15
+ } from './storage-model-v009' ;
11
16
12
17
export class StorageMigration009 implements Migration < StorageModelDataV009 > {
13
18
public readonly version = 9 ;
@@ -25,10 +30,12 @@ export class StorageMigration009 implements Migration<StorageModelDataV009> {
25
30
}
26
31
const previous : StorageModelDataV008 = current . data ;
27
32
const serialized = await this . migrateSerialized ( previous . SERIALIZED , password || '' ) ;
33
+ const addressBook = await this . migrateAddressBook ( previous . ADDRESS_BOOK , password || '' ) ;
28
34
return {
29
35
version : this . version ,
30
36
data : {
31
37
...previous ,
38
+ ADDRESS_BOOK : addressBook ,
32
39
SERIALIZED : serialized ,
33
40
} ,
34
41
} ;
@@ -128,4 +135,26 @@ export class StorageMigration009 implements Migration<StorageModelDataV009> {
128
135
129
136
return serializedWallet ;
130
137
}
138
+
139
+ private async migrateAddressBook (
140
+ addressBook : AddressBookModelV008 ,
141
+ password : string ,
142
+ ) : Promise < AddressBookModelV009 > {
143
+ if ( ! addressBook ) {
144
+ return addressBook ;
145
+ }
146
+
147
+ if ( ! password ) {
148
+ return addressBook ;
149
+ }
150
+
151
+ let decrypted = await decryptAES ( addressBook , password ) ;
152
+
153
+ const sha256Password = encryptWalletPassword ( password ) ;
154
+ const encryptedAddressBook = await encryptAES ( decrypted , sha256Password ) ;
155
+
156
+ decrypted = '' ;
157
+
158
+ return encryptedAddressBook ;
159
+ }
131
160
}
0 commit comments