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  }