You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.4 KiB

package ringct
import "fmt"
import "github.com/deroproject/derosuite/crypto"
/* This file implements MLSAG signatures for the transactions */
// get the hash of the transaction which is used to create the mlsag later on, this hash is input to MLSAG
// the hash is = hash( message + hash(basehash) + hash(pederson and borromean data))
func Get_pre_mlsag_hash(sig *RctSig) (crypto.Hash) {
message_hash := sig.Message
base_hash := crypto.Keccak256(sig.SerializeBase())
fmt.Printf("Message hash %x\n", message_hash)
fmt.Printf("Base hash %x\n", base_hash)
// now join the borromean signature and extract a sig
var other_data []byte
for i := range sig.rangeSigs {
other_data = append(other_data,sig.rangeSigs[i].asig.s0.Serialize()...)
other_data = append(other_data,sig.rangeSigs[i].asig.s1.Serialize()...)
other_data = append(other_data, sig.rangeSigs[i].ci.Serialize()...)
}
other_data_hash := crypto.Keccak256(other_data)
fmt.Printf("other hash %x\n", other_data_hash)
// join all 3 hashes and hash them again to get the data
final_data := append(message_hash[:], base_hash[:]...)
final_data = append(final_data, other_data_hash[:]...)
final_data_hash := crypto.Keccak256(final_data)
fmt.Printf("final_data_hash hash %x\n", other_data_hash)
return final_data_hash
}