UUID
func (t *TestChaincode) getUUID(stub shim.ChaincodeStubInterface, args []string) pb.Response {
arl := util.GenerateUUID()
fmt.Println(arl)
return shim.Success([]byte(arl))
}
getLogger
func getLogger(stub shim.ChaincodeStubInterface) (c *shim.ChaincodeLogger) {
fcn, _ := stub.GetFunctionAndParameters()
c = shim.NewLogger(fmt.Sprintf("%s.%s.%s", stub.GetChannelID(), "你的链码名称", fcn))
c.SetLevel(shim.LogDebug)
return
}
rsaKey
func (t *TestChaincode) getRSAKey(stub shim.ChaincodeStubInterface, args []string) pb.Response {
logger := getLogger(stub)
// 生成私钥
privateKey, err := rsa.GenerateKey(rand.Reader, 256)
logger.Debug("generate key")
// 生成公钥
publicKey := &privateKey.PublicKey
if err != nil {
return shim.Error(err.Error())
}
//生成私钥字符串
derStream := MarshalPKCS8PrivateKey(privateKey)
block := &pem.Block{
Type: "PRIVATE KEY",
Bytes: derStream,
}
pribuffer := bytes.NewBuffer(make([]byte, 1024*5))
err = pem.Encode(pribuffer, block)
if err != nil {
return shim.Error(err.Error())
}
logger.Debug("privatekey is :" + pribuffer.String())
// 生成公钥字符串
pubbuffer := bytes.NewBuffer(make([]byte, 1024*5))
derPkix, err := x509.MarshalPKIXPublicKey(publicKey)
if err != nil {
return shim.Error(err.Error())
}
block = &pem.Block{
Type: "PUBLIC KEY",
Bytes: derPkix,
}
err = pem.Encode(pubbuffer, block)
if err != nil {
fmt.Println(err.Error())
}
pubStr := pubbuffer.String()
priStr := pribuffer.String()
logger.Debug("publickey is : " + pubStr)
pubStr = pubStr[strings.Index(pubStr, "-----BEGIN PUBLIC KE"):]
priStr = priStr[strings.Index(priStr, "-----BEGIN PRIVATE KE"):]
rsaKey := &RSAKey{pubStr, priStr}
value, err := json.Marshal(rsaKey)
if err != nil {
return shim.Error(err.Error())
}
return shim.Success(value)
}
type RSAKey struct {
PrivateKey string `json:"privateKey"`
PublicKey string `json:"publicKey"`
}