Commit 7ea75e5d authored by vicotor's avatar vicotor

update

parent 7d0849c3
...@@ -3,10 +3,10 @@ package server ...@@ -3,10 +3,10 @@ package server
import ( import (
"bytes" "bytes"
"crypto/ecdsa" "crypto/ecdsa"
"encoding/hex"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/ethereum/go-ethereum/crypto"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
lru "github.com/hashicorp/golang-lru" lru "github.com/hashicorp/golang-lru"
"github.com/odysseus/nodemanager/config" "github.com/odysseus/nodemanager/config"
...@@ -294,35 +294,36 @@ func (wm *WorkerManager) manageWorker(worker *Worker) error { ...@@ -294,35 +294,36 @@ func (wm *WorkerManager) manageWorker(worker *Worker) error {
continue continue
} }
{ //{
// verify container_signature and miner_signature // // verify container_signature and miner_signature
// container_signature = sign(hash(task_id+hash(task_param)+hash(task_result))) // // container_signature = sign(hash(task_id+hash(task_param)+hash(task_result)))
paramHash := sha3.Sum256(task.TaskParam) // paramHash := crypto.Keccak256Hash(task.TaskParam)
resultHash := sha3.Sum256(result.TaskResult) // resultHash := crypto.Keccak256Hash(result.TaskResult)
dataHash := sha3.Sum256(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:])) // dataHash := crypto.Keccak256Hash(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:]))
containerPubkey, _ := utils.HexToPubkey(hex.EncodeToString(task.ContainerPubkey)) // containerPubkey, _ := utils.HexToPubkey(hex.EncodeToString(task.ContainerPubkey))
verified := ecdsa.VerifyASN1(containerPubkey, dataHash[:], result.ContainerSignature) // verified := ecdsa.VerifyASN1(containerPubkey, dataHash[:], result.ContainerSignature)
if !verified { // if !verified {
// todo: handle signature verify failed // // todo: handle signature verify failed
} // }
} //}
{ {
// verify miner_signature // verify miner_signature
// miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result))) // miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result)))
paramHash := sha3.Sum256(task.TaskParam) paramHash := crypto.Keccak256Hash(task.TaskParam)
resultHash := sha3.Sum256(result.TaskResult) resultHash := crypto.Keccak256Hash(result.TaskResult)
dataHash := sha3.Sum256(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:])) dataHash := crypto.Keccak256Hash(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:]))
minerPubkey, _ := utils.HexToPubkey(worker.publicKey) // todo: get miner pubkey minerPubkey, _ := utils.HexToPubkey(worker.publicKey) // todo: get miner pubkey
verified := ecdsa.VerifyASN1(minerPubkey, dataHash[:], result.MinerSignature) verified := ecdsa.VerifyASN1(minerPubkey, dataHash[:], result.MinerSignature)
log.WithField("minerSignatureVerify", verified).Debug("miner signature verify")
if !verified { if !verified {
// todo: handle signature verify failed // todo: handle signature verify failed
} }
} }
//manager_signature = sign(hash((task_id+hash(task_param)+hash(task_result)+container_signature+miner_signature+workload)) //manager_signature = sign(hash((task_id+hash(task_param)+hash(task_result)+container_signature+miner_signature+workload))
paramHash := sha3.Sum256(task.TaskParam) paramHash := crypto.Keccak256Hash(task.TaskParam)
resultHash := sha3.Sum256(result.TaskResult) resultHash := crypto.Keccak256Hash(result.TaskResult)
dataHash := sha3.Sum256(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:], dataHash := crypto.Keccak256Hash(utils.CombineBytes([]byte(result.TaskUuid), paramHash[:], resultHash[:],
result.ContainerSignature, result.MinerSignature, big.NewInt(int64(task.TaskWorkload)).Bytes())) result.ContainerSignature, result.MinerSignature, big.NewInt(int64(task.TaskWorkload)).Bytes()))
signature, err := wm.node.Sign(dataHash[:]) 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