Commit 7ea75e5d authored by vicotor's avatar vicotor

update

parent 7d0849c3
......@@ -3,10 +3,10 @@ package server
import (
"bytes"
"crypto/ecdsa"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"github.com/ethereum/go-ethereum/crypto"
"github.com/golang/protobuf/proto"
lru "github.com/hashicorp/golang-lru"
"github.com/odysseus/nodemanager/config"
......@@ -294,35 +294,36 @@ func (wm *WorkerManager) manageWorker(worker *Worker) error {
continue
}
{
// verify container_signature and miner_signature
// container_signature = sign(hash(task_id+hash(task_param)+hash(task_result)))
paramHash := sha3.Sum256(task.TaskParam)
resultHash := sha3.Sum256(result.TaskResult)
dataHash := sha3.Sum256(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:]))
containerPubkey, _ := utils.HexToPubkey(hex.EncodeToString(task.ContainerPubkey))
verified := ecdsa.VerifyASN1(containerPubkey, dataHash[:], result.ContainerSignature)
if !verified {
// todo: handle signature verify failed
}
}
//{
// // verify container_signature and miner_signature
// // container_signature = sign(hash(task_id+hash(task_param)+hash(task_result)))
// paramHash := crypto.Keccak256Hash(task.TaskParam)
// resultHash := crypto.Keccak256Hash(result.TaskResult)
// dataHash := crypto.Keccak256Hash(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:]))
// containerPubkey, _ := utils.HexToPubkey(hex.EncodeToString(task.ContainerPubkey))
// verified := ecdsa.VerifyASN1(containerPubkey, dataHash[:], result.ContainerSignature)
// if !verified {
// // todo: handle signature verify failed
// }
//}
{
// verify miner_signature
// miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result)))
paramHash := sha3.Sum256(task.TaskParam)
resultHash := sha3.Sum256(result.TaskResult)
dataHash := sha3.Sum256(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:]))
paramHash := crypto.Keccak256Hash(task.TaskParam)
resultHash := crypto.Keccak256Hash(result.TaskResult)
dataHash := crypto.Keccak256Hash(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:]))
minerPubkey, _ := utils.HexToPubkey(worker.publicKey) // todo: get miner pubkey
verified := ecdsa.VerifyASN1(minerPubkey, dataHash[:], result.MinerSignature)
log.WithField("minerSignatureVerify", verified).Debug("miner signature verify")
if !verified {
// todo: handle signature verify failed
}
}
//manager_signature = sign(hash((task_id+hash(task_param)+hash(task_result)+container_signature+miner_signature+workload))
paramHash := sha3.Sum256(task.TaskParam)
resultHash := sha3.Sum256(result.TaskResult)
dataHash := sha3.Sum256(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:],
paramHash := crypto.Keccak256Hash(task.TaskParam)
resultHash := crypto.Keccak256Hash(result.TaskResult)
dataHash := crypto.Keccak256Hash(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:],
result.ContainerSignature, result.MinerSignature, big.NewInt(int64(task.TaskWorkload)).Bytes()))
signature, err := wm.node.Sign(dataHash[:])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment