mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-04-23 11:27:52 +00:00
24 lines
860 B
TypeScript
24 lines
860 B
TypeScript
// @ts-nocheck
|
|
|
|
import { crypto } from '../constants/decryptWallet'
|
|
import Base58 from '../deps/Base58'
|
|
import {AES_CBC, HmacSha512} from 'asmcrypto.js'
|
|
import { doInitWorkers, kdf } from '../deps/kdf'
|
|
|
|
|
|
export const decryptStoredWallet = async (password, wallet) => {
|
|
const threads = doInitWorkers(crypto.kdfThreads)
|
|
const encryptedSeedBytes = Base58.decode(wallet.encryptedSeed)
|
|
const iv = Base58.decode(wallet.iv)
|
|
const salt = Base58.decode(wallet.salt)
|
|
|
|
const key = await kdf(password, salt, threads)
|
|
const encryptionKey = key.slice(0, 32)
|
|
const macKey = key.slice(32, 63)
|
|
const mac = new HmacSha512(macKey).process(encryptedSeedBytes).finish().result
|
|
if (Base58.encode(mac) !== wallet.mac) {
|
|
throw new Error("Incorrect password")
|
|
}
|
|
const decryptedBytes = AES_CBC.decrypt(encryptedSeedBytes, encryptionKey, false, iv)
|
|
return decryptedBytes
|
|
} |