fabric链码操作方法不定期汇总

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"`
}

猜你喜欢

转载自blog.csdn.net/fangdengfu123/article/details/80579966