本文整理汇总了Golang中github.com/openblockchain/obc-peer/protos.Transaction.String方法的典型用法代码示例。如果您正苦于以下问题:Golang Transaction.String方法的具体用法?Golang Transaction.String怎么用?Golang Transaction.String使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/openblockchain/obc-peer/protos.Transaction
的用法示例。
在下文中一共展示了Transaction.String方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TransactionPreValidation
// TransactionPreValidation verifies that the transaction is
// well formed with the respect to the security layer
// prescriptions (i.e. signature verification).
func (peer *peerImpl) TransactionPreValidation(tx *obc.Transaction) (*obc.Transaction, error) {
if !peer.isInitialized {
return nil, utils.ErrNotInitialized
}
peer.node.log.Debug("Pre validating [%s].", tx.String())
peer.node.log.Debug("Tx confdential level [%s].", tx.ConfidentialityLevel.String())
if tx.Cert != nil && tx.Signature != nil {
// Verify the transaction
// 1. Unmarshal cert
cert, err := utils.DERToX509Certificate(tx.Cert)
if err != nil {
peer.node.log.Error("TransactionPreExecution: failed unmarshalling cert [%s] [%s].", err.Error())
return tx, err
}
// TODO: verify cert
// 3. Marshall tx without signature
signature := tx.Signature
tx.Signature = nil
rawTx, err := proto.Marshal(tx)
if err != nil {
peer.node.log.Error("TransactionPreExecution: failed marshaling tx [%s] [%s].", err.Error())
return tx, err
}
tx.Signature = signature
// 2. Verify signature
ok, err := peer.node.verify(cert.PublicKey, rawTx, tx.Signature)
if err != nil {
peer.node.log.Error("TransactionPreExecution: failed marshaling tx [%s] [%s].", err.Error())
return tx, err
}
if !ok {
return tx, utils.ErrInvalidTransactionSignature
}
} else {
if tx.Cert == nil {
return tx, utils.ErrTransactionCertificate
}
if tx.Signature == nil {
return tx, utils.ErrTransactionSignature
}
}
return tx, nil
}
示例2: TransactionPreExecution
// TransactionPreValidation verifies that the transaction is
// well formed with the respect to the security layer
// prescriptions (i.e. signature verification). If this is the case,
// the method prepares the transaction to be executed.
func (validator *validatorImpl) TransactionPreExecution(tx *obc.Transaction) (*obc.Transaction, error) {
if !validator.isInitialized {
return nil, utils.ErrNotInitialized
}
validator.peer.node.log.Debug("Pre executing [%s].", tx.String())
validator.peer.node.log.Debug("Tx confdential level [%s].", tx.ConfidentialityLevel.String())
switch tx.ConfidentialityLevel {
case obc.ConfidentialityLevel_PUBLIC:
validator.peer.node.log.Debug("Deep cloning.")
// Nothing to do here. Clone tx.
clone, err := validator.deepCloneTransaction(tx)
if err != nil {
validator.peer.node.log.Error("Failed deep cloning [%s].", err.Error())
return nil, err
}
return clone, nil
case obc.ConfidentialityLevel_CONFIDENTIAL:
validator.peer.node.log.Debug("Clone and Decrypt.")
// Clone the transaction and decrypt it
newTx, err := validator.decryptTx(tx)
if err != nil {
validator.peer.node.log.Error("Failed decrypting [%s].", err.Error())
return nil, err
}
// TODO: Validate confidentiality level. Must be the same on tx and newTx.Spec
return newTx, nil
default:
return nil, utils.ErrInvalidConfidentialityLevel
}
}