github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/crypto/ledger/discover_mock.go (about) 1 //go:build ledger_suite 2 // +build ledger_suite 3 4 package ledger 5 6 import ( 7 btcec "github.com/btcsuite/btcd/btcec/v2" 8 "github.com/gnolang/gno/tm2/pkg/crypto/secp256k1" 9 ) 10 11 // discoverLedger defines a function to be invoked at runtime for discovering 12 // a connected Ledger device. 13 var discoverLedger discoverLedgerFn = func() (LedgerSECP256K1, error) { 14 privateKey := secp256k1.GenPrivKey() 15 16 _, pubKeyObject := btcec.PrivKeyFromBytes(privateKey[:]) 17 18 return &MockLedger{ 19 GetAddressPubKeySECP256K1Fn: func(data []uint32, str string) ([]byte, string, error) { 20 return pubKeyObject.SerializeCompressed(), privateKey.PubKey().Address().String(), nil 21 }, 22 }, nil 23 } 24 25 type ( 26 closeDelegate func() error 27 getPublicKeySECP256K1Delegate func([]uint32) ([]byte, error) 28 getAddressPubKeySECP256K1Delegate func([]uint32, string) ([]byte, string, error) 29 signSECP256K1Delegate func([]uint32, []byte, byte) ([]byte, error) 30 ) 31 32 type MockLedger struct { 33 CloseFn closeDelegate 34 GetPublicKeySECP256K1Fn getPublicKeySECP256K1Delegate 35 GetAddressPubKeySECP256K1Fn getAddressPubKeySECP256K1Delegate 36 SignSECP256K1Fn signSECP256K1Delegate 37 } 38 39 func (m *MockLedger) Close() error { 40 if m.CloseFn != nil { 41 return m.CloseFn() 42 } 43 44 return nil 45 } 46 47 func (m *MockLedger) GetPublicKeySECP256K1(data []uint32) ([]byte, error) { 48 if m.GetPublicKeySECP256K1Fn != nil { 49 return m.GetPublicKeySECP256K1Fn(data) 50 } 51 52 return nil, nil 53 } 54 55 func (m *MockLedger) GetAddressPubKeySECP256K1(data []uint32, str string) ([]byte, string, error) { 56 if m.GetAddressPubKeySECP256K1Fn != nil { 57 return m.GetAddressPubKeySECP256K1Fn(data, str) 58 } 59 60 return nil, "", nil 61 } 62 63 func (m *MockLedger) SignSECP256K1(d1 []uint32, d2 []byte, d3 byte) ([]byte, error) { 64 if m.SignSECP256K1Fn != nil { 65 return m.SignSECP256K1Fn(d1, d2, d3) 66 } 67 68 return nil, nil 69 }