hyperpayorg / hardwallet

Hyperpay hardwallet
https://hyperpay.me
41 stars 8 forks source link

Hyperpay Wallet HardWallet

HardWallet is committed to build a straightforward and easy-to-use library. The open source framework displays all functions and methods related to the hardware wallet. Contains related mnemonics, private keys, addresses and related signed transactions. And use a ble middleware to simulate the relevant data compression and transmission under Bluetooth communication.

Environment Setup

How To Use

For ease of use and understanding, some tests that can be tested directly are written. This can help to quickly understand the relationship between the various components.

Generate Wallet

Private key, public key and address can be generated by GenerateMnWallet func. Language supports: englishkoreanchinese_simplified ,etc. Mnemonics supports: 12 words24 words,etc. Password supported.

ceateAccount := &clientwallet.CreateAccount{
    Language: "english",
    Length:   12,
    Password: "123456",
}
fmt.Println(ceateAccount)
isCreated := clientwallet.GenerateMnWallet(ceateAccount)
fmt.Println(isCreated)

Wallet SignRawTransation

SignRawTransation can be generated by func SignRawTransaction(signIn *SignInput) func.

signIn := &clientwallet.SignInput{
        Coin:     "btc",
        Symbol:   "btc",
        Amount:   10000,
        Change:   25000000 - 10000 - 10000,
        Fee:      10000,
        SrcAddr:  "",
        DestAddr: "",
        Net:      "testnet",
        Password: "123456",
        Inputs:   jsonInputs,
}

signResult := clientwallet.SignRawTransaction(signIn)
fmt.Println(signResult)

Data structure returned as follow:

type WalletAccount struct {
    ResCode    int    // 0 fail 1 Success
    Address    string
    PublicKey  string
    PrivateKey string
    Seed       string // root seed
    Coin       string
    ErrMsg     string // fail messages
    ErrCode    int    // err code
    Params     []byte // reserved fields
}

Wallet EnKeystore

Key information storage supports pwd & udid.

Key := "L1oh9KNH4XpJgqDodxhjPgaEVS1qwXToWvPf2Zyn6bcm7xxxxxxx"
pwd := "11111"
udid := "AOIJF-QWEQR-VDFBET-YTAWWE"

// Encode
enResult := EnKeystore(Key, pwd, udid)
fmt.Println("Keystore : \n", enResult.Result)

Wallet KeyStore File Decrypt

The keystore file is decrypted using the KeyStore json, udid and the password.

To decrypt keystore file, use the following methods:

func DeKeystore(json, password, udid string)

Description: JSON is the KeyStore JSON file

Data structure returned as KeystoreResult

Wallet DeKeystore

enResult := "xxxxxxx"
pwd := "11111"
udid := "AOIJF-QWEQR-VDFBET-YTAWWE"
// Decode
deResult := DeKeystore(enResult, pwd, udid)
fmt.Println("PrivateKey : ", deResult.Result)