go 实现波场(Tron) 签名

468 次浏览次阅读
没有评论

func SignTransaction(transaction *core.Transaction, privateKey string) (*core.Transaction, error) {privateBytes, err := hex.DecodeString(privateKey)
    if err != nil {return nil, fmt.Errorf("hex decode private key error: %v", err)
    }
    pri := crypto.ToECDSAUnsafe(privateBytes)
    defer zeroKey(pri)
    rawData, err := proto.Marshal(transaction.GetRawData())
    if err != nil {return nil, fmt.Errorf("protp marshal tx raw data error: %v", err)
    }
    h256h := sha256.New()
    h256h.Write(rawData)
    hash := h256h.Sum(nil)
    signature, err := crypto.Sign(hash, pri)
    if err != nil {return nil, fmt.Errorf("sign error: %v", err)
    }
    transaction.Signature = append(transaction.Signature, signature)
    return transaction, nil
}

func zeroKey(k *ecdsa.PrivateKey) {b := k.D.Bits()
    for i := range b {b[i] = 0
    }
}
正文完
 0
评论(没有评论)