mirror of
https://github.com/muun/recovery.git
synced 2025-02-22 11:02:31 -05:00
32 lines
667 B
Go
32 lines
667 B
Go
package main
|
|
|
|
import (
|
|
log "log"
|
|
|
|
"github.com/btcsuite/btcutil/base58"
|
|
"github.com/muun/libwallet"
|
|
)
|
|
|
|
func buildExtendedKey(rawKey, recoveryCode string) *libwallet.DecryptedPrivateKey {
|
|
recoveryCodeBytes := extractBytes(recoveryCode)
|
|
salt := extractSalt(rawKey)
|
|
|
|
privKey := libwallet.NewChallengePrivateKey(recoveryCodeBytes, salt)
|
|
|
|
key, err := privKey.DecryptKey(rawKey, libwallet.Mainnet())
|
|
if err != nil {
|
|
log.Fatalf("failed to decrypt key: %v", err)
|
|
}
|
|
|
|
return key
|
|
}
|
|
|
|
func extractSalt(rawKey string) []byte {
|
|
bytes := base58.Decode(rawKey)
|
|
return bytes[len(bytes)-8:]
|
|
}
|
|
|
|
func extractBytes(recoveryCode string) []byte {
|
|
return []byte(recoveryCode)
|
|
}
|