diff --git a/app/arbiter/crypto/keystore.go b/app/arbiter/crypto/keystore.go index a6f8f53..587ab2c 100644 --- a/app/arbiter/crypto/keystore.go +++ b/app/arbiter/crypto/keystore.go @@ -7,8 +7,10 @@ import ( "encoding/hex" "encoding/json" "errors" + "fmt" "os" + "github.com/btcsuite/btcd/btcutil" "github.com/ethereum/go-ethereum/accounts/keystore" ) @@ -104,7 +106,22 @@ func GetBtcKeyFromKeystore(path, password string) (string, error) { if err != nil { return "", err } - return hex.EncodeToString(decryptedData), nil + hexPrivateKey, err := convertWIFToHex(string(decryptedData)) + if err != nil { + return "", fmt.Errorf("failed to convert WIF to hex: %v", err) + } + return hexPrivateKey, nil +} + +func convertWIFToHex(wif string) (string, error) { + decodedWIF, err := btcutil.DecodeWIF(wif) + if err != nil { + return "", err + } + + privateKeyBytes := decodedWIF.PrivKey.Serialize() + hexPrivateKey := hex.EncodeToString(privateKeyBytes) + return hexPrivateKey, nil } // decryptBTCKeystore decrypts BTC keystore data using password diff --git a/app/keystore-generator/btc/btc.go b/app/keystore-generator/btc/btc.go index 60be5ad..7d9c61f 100644 --- a/app/keystore-generator/btc/btc.go +++ b/app/keystore-generator/btc/btc.go @@ -6,12 +6,26 @@ import ( "crypto/cipher" "crypto/rand" "crypto/sha256" + "encoding/hex" "errors" "fmt" "io" "os" + + "github.com/btcsuite/btcd/btcutil" ) +func convertWIFToHex(wif string) (string, error) { + decodedWIF, err := btcutil.DecodeWIF(wif) + if err != nil { + return "", err + } + + privateKeyBytes := decodedWIF.PrivKey.Serialize() + hexPrivateKey := hex.EncodeToString(privateKeyBytes) + return hexPrivateKey, nil +} + func ParseKeystore(filePath string, password string) (string, error) { data, err := os.ReadFile(filePath) if err != nil { @@ -23,8 +37,11 @@ func ParseKeystore(filePath string, password string) (string, error) { if err != nil { return "", fmt.Errorf("failed to decrypt keystore: %v", err) } - - return string(decrypted), nil + hexPrivateKey, err := convertWIFToHex(string(decrypted)) + if err != nil { + return "", fmt.Errorf("failed to convert WIF to hex: %v", err) + } + return hexPrivateKey, nil } func Encrypt(data []byte, password string) ([]byte, error) {