github.com/0chain/gosdk@v1.17.11/mobilesdk/sdk/keys.go (about) 1 package sdk 2 3 import ( 4 "encoding/json" 5 6 "github.com/0chain/gosdk/core/zcncrypto" 7 ) 8 9 // SplitKeys split keys by private key, return json string of wallet 10 // 11 // { 12 // "client_id":"3943b66200f4702145596de769c5137b333b42bf67c665677355843f233009e2", 13 // "client_key":"3423af4e1d19b99d5997a7ce5ee9fb46372a5e6a2af18e4640e1aeb3fe116f18580e723ae6d6527ff4cf81b537d4bbf5de670169654fa8f9e54291fa930f9f9a", 14 // "keys":[{ 15 // "public_key":"3423af4e1d19b99d5997a7ce5ee9fb46372a5e6a2af18e4640e1aeb3fe116f18580e723ae6d6527ff4cf81b537d4bbf5de670169654fa8f9e54291fa930f9f9a", 16 // "private_key":"69a59735f39eae40b80d53a73c5d7b161998da0b7cea44c94672a01c9128da09" 17 // } 18 // ], 19 // "mnemonics":"guitar cook depend snake response major argue abstract script tonight energy soccer copy latin street bracket combine image fabric maximum mercy icon bitter dwarf", 20 // "version":"1.0","date_created":"2022-11-02T10:21:32+08:00","nonce":0 21 // } 22 // - privateKey: private key to use for signing 23 // - signatureScheme: signature scheme to use for signing 24 // - numSplits: number of splits 25 func SplitKeys(privateKey, signatureScheme string, numSplits int) ([]byte, error) { 26 signScheme := zcncrypto.NewSignatureScheme(signatureScheme) 27 if signScheme != nil { 28 err := signScheme.SetPrivateKey(privateKey) 29 if err != nil { 30 return nil, err 31 } 32 wallet, err := signScheme.SplitKeys(numSplits) 33 if err != nil { 34 return nil, err 35 36 } 37 38 return json.Marshal(wallet) 39 } 40 return nil, ErrInvalidSignatureScheme 41 }