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.
- Go Installation
git clone https://github.com/hyperpayorg/hardwallet
- About the missing librarys, use
go get xxx ..
to install them cd hardwallet
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.
Private key, public key and address can be generated by GenerateMnWallet
func.
Language supports: english
、korean
、chinese_simplified
,etc.
Mnemonics supports: 12 words
、24 words
,etc.
Password supported.
ceateAccount := &clientwallet.CreateAccount{
Language: "english",
Length: 12,
Password: "123456",
}
fmt.Println(ceateAccount)
isCreated := clientwallet.GenerateMnWallet(ceateAccount)
fmt.Println(isCreated)
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
}
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)
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
。
enResult := "xxxxxxx"
pwd := "11111"
udid := "AOIJF-QWEQR-VDFBET-YTAWWE"
// Decode
deResult := DeKeystore(enResult, pwd, udid)
fmt.Println("PrivateKey : ", deResult.Result)