本文整理汇总了Golang中github.com/dedis/onet/log.Lvl2函数的典型用法代码示例。如果您正苦于以下问题:Golang Lvl2函数的具体用法?Golang Lvl2怎么用?Golang Lvl2使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Lvl2函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Instantiate
// Instantiate returns a new NTree protocol instance
func (nt *NtreeServer) Instantiate(node *onet.TreeNodeInstance) (onet.ProtocolInstance, error) {
log.Lvl2("Waiting for enough transactions...")
currTransactions := nt.WaitEnoughBlocks()
pi, err := NewNTreeRootProtocol(node, currTransactions)
log.Lvl2("Instantiated Ntree Root Protocol with", len(currTransactions), "transactions")
return pi, err
}
开发者ID:dedis,项目名称:cothority,代码行数:8,代码来源:server.go
示例2: ProposeVote
// ProposeVote calls the 'accept'-vote on the current propose-configuration
func (i *Identity) ProposeVote(accept bool) onet.ClientError {
log.Lvl3("Voting proposal")
if i.Proposed == nil {
return onet.NewClientErrorCode(ErrorConfigMissing, "No proposed config")
}
log.Lvlf3("Voting %t on %s", accept, i.Proposed.Device)
if !accept {
return nil
}
hash, err := i.Proposed.Hash()
if err != nil {
return onet.NewClientErrorCode(ErrorOnet, err.Error())
}
sig, err := crypto.SignSchnorr(network.Suite, i.Private, hash)
if err != nil {
return onet.NewClientErrorCode(ErrorOnet, err.Error())
}
pvr := &ProposeVoteReply{}
cerr := i.Client.SendProtobuf(i.Cothority.RandomServerIdentity(), &ProposeVote{
ID: i.ID,
Signer: i.DeviceName,
Signature: &sig,
}, pvr)
if cerr != nil {
return cerr
}
if pvr.Data != nil {
log.Lvl2("Threshold reached and signed")
i.Config = i.Proposed
i.Proposed = nil
} else {
log.Lvl2("Threshold not reached")
}
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:36,代码来源:api.go
示例3: TestService_GetUpdateChain
func TestService_GetUpdateChain(t *testing.T) {
// Create a small chain and test whether we can get from one element
// of the chain to the last element with a valid slice of SkipBlocks
local := onet.NewLocalTest()
defer local.CloseAll()
sbLength := 3
_, el, gs := local.MakeHELS(sbLength, skipchainSID)
s := gs.(*Service)
sbs := make([]*SkipBlock, sbLength)
var err error
sbs[0], err = makeGenesisRoster(s, el)
log.ErrFatal(err)
log.Lvl1("Initialize skipchain.")
// init skipchain
for i := 1; i < sbLength; i++ {
log.Lvl2("Doing skipblock", i)
newSB := NewSkipBlock()
newSB.Roster = el
psbrMsg, err := s.ProposeSkipBlock(&ProposeSkipBlock{sbs[i-1].Hash, newSB})
assert.Nil(t, err)
reply := psbrMsg.(*ProposedSkipBlockReply)
sbs[i] = reply.Latest
}
for i := 0; i < sbLength; i++ {
m, err := s.GetUpdateChain(&GetUpdateChain{sbs[i].Hash})
sbc := m.(*GetUpdateChainReply)
log.ErrFatal(err)
if !sbc.Update[0].Equal(sbs[i]) {
t.Fatal("First hash is not from our SkipBlock")
}
if !sbc.Update[len(sbc.Update)-1].Equal(sbs[sbLength-1]) {
log.Lvl2(sbc.Update[len(sbc.Update)-1].Hash)
log.Lvl2(sbs[sbLength-1].Hash)
t.Fatal("Last Hash is not equal to last SkipBlock for", i)
}
for up, sb1 := range sbc.Update {
log.ErrFatal(sb1.VerifySignatures())
if up < len(sbc.Update)-1 {
sb2 := sbc.Update[up+1]
h1 := sb1.Height
h2 := sb2.Height
log.Lvl2("sbc1.Height=", sb1.Height)
log.Lvl2("sbc2.Height=", sb2.Height)
// height := min(len(sb1.ForwardLink), h2)
height := h1
if h2 < height {
height = h2
}
if !bytes.Equal(sb1.ForwardLink[height-1].Hash,
sb2.Hash) {
t.Fatal("Forward-pointer of", up,
"is different of hash in", up+1)
}
}
}
}
}
开发者ID:dedis,项目名称:cothority,代码行数:58,代码来源:skipchain_test.go
示例4: CreateRootControl
// CreateRootControl creates two Skipchains: a root SkipChain with
// maximumHeight of maxHRoot and an control SkipChain with
// maximumHeight of maxHControl. It connects both chains for later
// reference.
func (c *Client) CreateRootControl(elRoot, elControl *onet.Roster, baseHeight, maxHRoot, maxHControl int, ver VerifierID) (root, control *SkipBlock, cerr onet.ClientError) {
log.Lvl2("Creating root roster", elRoot)
root, cerr = c.CreateRoster(elRoot, baseHeight, maxHRoot, ver, nil)
if cerr != nil {
return
}
log.Lvl2("Creating control roster", elControl)
control, cerr = c.CreateRoster(elControl, baseHeight, maxHControl, ver, root.Hash)
if cerr != nil {
return
}
return c.LinkParentChildBlock(root, control)
}
开发者ID:dedis,项目名称:cothority,代码行数:17,代码来源:api.go
示例5: Start
// Start initiates the JVSS protocol by setting up a long-term shared secret
// which can be used later on by the JVSS group to sign and verify messages.
func (jv *JVSS) Start() error {
log.Lvl2(jv.Name(), "index", jv.Index(), " Starts()")
sid := newSID(LTSS)
jv.sidStore.insert(sid)
err := jv.initSecret(sid)
if err != nil {
log.Error(err)
return err
}
log.Lvl2("Waiting on long-term secrets:", jv.Name())
<-jv.longTermSecDone
log.Lvl2("Done waiting on long-term secrets:", jv.Name())
return err
}
开发者ID:dedis,项目名称:cothority,代码行数:16,代码来源:jvss.go
示例6: runProtocolOnceGo
func runProtocolOnceGo(nbrHosts int, name string, refuseCount int,
succeed bool) error {
log.Lvl2("Running BFTCoSi with", nbrHosts, "hosts")
local := onet.NewLocalTest()
defer local.CloseAll()
_, _, tree := local.GenBigTree(nbrHosts, nbrHosts, 2, true)
log.Lvl3("Tree is:", tree.Dump())
done := make(chan bool)
// create the message we want to sign for this round
msg := []byte("Hello BFTCoSi")
// Start the protocol
node, err := local.CreateProtocol(name, tree)
if err != nil {
return errors.New("Couldn't create new node: " + err.Error())
}
// Register the function generating the protocol instance
var root *ProtocolBFTCoSi
root = node.(*ProtocolBFTCoSi)
root.Msg = msg
cMux.Lock()
counter := &Counter{refuseCount: refuseCount}
counters.add(counter)
root.Data = []byte(strconv.Itoa(counters.size() - 1))
log.Lvl3("Added counter", counters.size()-1, refuseCount)
cMux.Unlock()
log.ErrFatal(err)
// function that will be called when protocol is finished by the root
root.RegisterOnDone(func() {
done <- true
})
go node.Start()
log.Lvl1("Launched protocol")
// are we done yet?
wait := time.Second * 60
select {
case <-done:
counter.Lock()
if counter.veriCount != nbrHosts {
return errors.New("Each host should have called verification.")
}
// if assert refuses we don't care for unlocking (t.Refuse)
counter.Unlock()
sig := root.Signature()
err := sig.Verify(root.Suite(), root.Roster().Publics())
if succeed && err != nil {
return fmt.Errorf("%s Verification of the signature refused: %s - %+v", root.Name(), err.Error(), sig.Sig)
}
if !succeed && err == nil {
return fmt.Errorf("%s: Shouldn't have succeeded for %d hosts, but signed for count: %d",
root.Name(), nbrHosts, refuseCount)
}
case <-time.After(wait):
log.Lvl1("Going to break because of timeout")
return errors.New("Waited " + wait.String() + " for BFTCoSi to finish ...")
}
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:60,代码来源:bftcosi_test.go
示例7: signFile
// signFile will search for the file and sign it
// it always returns nil as an error
func signFile(c *cli.Context) error {
if c.Args().First() == "" {
log.Fatal("Please give the file to sign", 1)
}
fileName := c.Args().First()
groupToml := c.String(optionGroup)
file, err := os.Open(fileName)
log.ErrFatal(err, "Couldn't read file to be signed:")
sig, err := sign(file, groupToml)
log.ErrFatal(err, "Couldn't create signature:")
log.Lvl3(sig)
var outFile *os.File
outFileName := c.String("out")
if outFileName != "" {
outFile, err = os.Create(outFileName)
log.ErrFatal(err, "Couldn't create signature file:")
} else {
outFile = os.Stdout
}
writeSigAsJSON(sig, outFile)
if outFileName != "" {
log.Lvl2("Signature written to: %s", outFile.Name())
} // else keep the Stdout empty
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:29,代码来源:client.go
示例8: TestBroadcast
// Tests a 2-node system
func TestBroadcast(t *testing.T) {
for _, nbrNodes := range []int{3, 10, 14} {
local := onet.NewLocalTest()
_, _, tree := local.GenTree(nbrNodes, false)
pi, err := local.CreateProtocol("Broadcast", tree)
if err != nil {
t.Fatal("Couldn't start protocol:", err)
}
protocol := pi.(*manage.Broadcast)
done := make(chan bool)
protocol.RegisterOnDone(func() {
done <- true
})
protocol.Start()
timeout := network.WaitRetry * time.Duration(network.MaxRetryConnect*nbrNodes*2) * time.Millisecond
select {
case <-done:
log.Lvl2("Done with connecting everybody")
case <-time.After(timeout):
t.Fatal("Didn't finish in time")
}
local.CloseAll()
log.AfterTest(t)
}
}
开发者ID:dedis,项目名称:cothority,代码行数:27,代码来源:broadcast_test.go
示例9: triggerTransactions
func (c *Client) triggerTransactions(blocksPath string, nTxs int) error {
log.Lvl2("ByzCoin Client will trigger up to", nTxs, "transactions")
parser, err := blockchain.NewParser(blocksPath, magicNum)
if err != nil {
log.Error("Error: Couldn't parse blocks in", blocksPath,
".\nPlease download bitcoin blocks as .dat files first and place them in",
blocksPath, "Either run a bitcoin node (recommended) or using a torrent.")
return err
}
transactions, err := parser.Parse(0, ReadFirstNBlocks)
if err != nil {
return fmt.Errorf("Error while parsing transactions %v", err)
}
if len(transactions) == 0 {
return errors.New("Couldn't read any transactions.")
}
if len(transactions) < nTxs {
return fmt.Errorf("Read only %v but caller wanted %v", len(transactions), nTxs)
}
consumed := nTxs
for consumed > 0 {
for _, tr := range transactions {
// "send" transaction to server (we skip tcp connection on purpose here)
c.srv.AddTransaction(tr)
}
consumed--
}
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:30,代码来源:client.go
示例10: checkMLUpdate
func checkMLUpdate(service *Service, root, latest *SkipBlock, base, height int) error {
chain, err := service.GetUpdateChain(&GetUpdateChain{root.Hash})
if err != nil {
return err
}
updates := chain.(*GetUpdateChainReply).Update
genesis := updates[0]
if len(genesis.ForwardLink) != height {
return errors.New("Genesis-block doesn't have height " + strconv.Itoa(height))
}
if len(updates[1].BackLinkIds) != height {
return errors.New("Second block doesn't have correct number of backlinks")
}
l := updates[len(updates)-1]
if len(l.ForwardLink) != 0 {
return errors.New("Last block still has forward-links")
}
if !l.Equal(latest) {
return errors.New("Last block from update is not the same as last block")
}
log.Lvl2(base, height, len(updates))
if base > 1 && height > 1 && len(updates) == 10 {
return fmt.Errorf("Shouldn't need 10 blocks with base %d and height %d",
base, height)
}
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:27,代码来源:skipchain_test.go
示例11: loadConfig
// loadConfig will try to load the configuration and `fatal` if it is there but
// not valid. If the config-file is missing altogether, loaded will be false and
// an empty config-file will be returned.
func loadConfig(c *cli.Context) (cfg *ciscConfig, loaded bool) {
cfg = &ciscConfig{Identity: &identity.Identity{}}
loaded = true
configFile := getConfig(c)
log.Lvl2("Loading from", configFile)
buf, err := ioutil.ReadFile(configFile)
if err != nil {
if os.IsNotExist(err) {
return
}
log.ErrFatal(err)
}
_, msg, err := network.UnmarshalRegistered(buf)
log.ErrFatal(err)
cfg, loaded = msg.(*ciscConfig)
cfg.Identity.Client = onet.NewClient(identity.ServiceName)
for _, f := range cfg.Follow {
f.Client = onet.NewClient(identity.ServiceName)
}
if !loaded {
log.Fatal("Wrong message-type in config-file")
}
return
}
开发者ID:dedis,项目名称:cothority,代码行数:28,代码来源:lib.go
示例12: Run
// Run starts the simulation on the simulation-side
func (e *Simulation) Run(config *onet.SimulationConfig) error {
msg := []byte(e.Message)
size := config.Tree.Size()
log.Lvl2("Size is:", size, "rounds:", e.Rounds)
for round := 0; round < e.Rounds; round++ {
log.Lvl1("Starting round", round, "with message", string(msg))
round := monitor.NewTimeMeasure("round")
p, err := config.Overlay.CreateProtocolOnet("NaiveTree", config.Tree)
if err != nil {
log.Error("Quitting the simulation....", err)
return err
}
pi := p.(*Protocol)
pi.Message = msg
pi.verifySignature = e.Checking
done := make(chan bool)
pi.TreeNodeInstance.OnDoneCallback(func() bool {
done <- true
return true
})
err = pi.Start()
if err != nil {
log.Error("Quitting the simulation....", err)
return err
}
<-done
round.Record()
}
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:33,代码来源:simulation.go
示例13: Dispatch
// Dispatch listens for all channels and waits for a timeout in case nothing
// happens for a certain duration
func (p *ProtocolCount) Dispatch() error {
running := true
for running {
log.Lvl3(p.Info(), "waiting for message during", p.Timeout())
select {
case pc := <-p.PrepareCountChan:
log.Lvl3(p.Info(), "received from", pc.TreeNode.ServerIdentity.Address,
pc.Timeout)
p.SetTimeout(pc.Timeout)
p.FuncPC()
case c := <-p.CountChan:
p.FuncC(c)
running = false
case _ = <-p.NodeIsUpChan:
if p.Parent() != nil {
err := p.SendTo(p.Parent(), &NodeIsUp{})
if err != nil {
log.Error(p.Info(), "couldn't send to parent",
p.Parent().Name(), err)
}
} else {
p.Replies++
}
case <-time.After(time.Duration(p.Timeout()) * time.Millisecond):
log.Lvl3(p.Info(), "timed out while waiting for", p.Timeout())
if p.IsRoot() {
log.Lvl2("Didn't get all children in time:", p.Replies)
p.Count <- p.Replies
running = false
}
}
}
p.Done()
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:37,代码来源:count.go
示例14: getResponse
func (c *CoSimul) getResponse(in []abstract.Scalar) {
if c.IsLeaf() {
// This is the leaf-node and we can't verify it
return
}
verify := false
switch VerifyResponse {
case NoCheck:
log.Lvl3("Not checking at all")
case RootCheck:
verify = c.IsRoot()
case AllCheck:
verify = !c.IsLeaf()
}
if verify {
err := c.VerifyResponses(c.TreeNode().AggregatePublic())
if err != nil {
log.Error("Couldn't verify responses at our level", c.Name(), err.Error())
} else {
log.Lvl2("Successfully verified responses at", c.Name())
}
}
}
开发者ID:dedis,项目名称:cothority,代码行数:25,代码来源:protocol.go
示例15: TestService_SetChildrenSkipBlock
func TestService_SetChildrenSkipBlock(t *testing.T) {
// How many nodes in Root
nodesRoot := 3
local := onet.NewLocalTest()
defer local.CloseAll()
hosts, el, genService := local.MakeHELS(nodesRoot, skipchainSID)
service := genService.(*Service)
// Setting up two chains and linking one to the other
sbRoot, err := makeGenesisRoster(service, el)
log.ErrFatal(err)
sbInter, err := makeGenesisRosterArgs(service, el, sbRoot.Hash, VerifyNone, 1, 1)
log.ErrFatal(err)
scsb := &SetChildrenSkipBlock{sbRoot.Hash, sbInter.Hash}
service.SetChildrenSkipBlock(scsb)
// Verifying other nodes also got the updated chains
// Check for the root-chain
for i, h := range hosts {
log.Lvlf2("%x", skipchainSID)
s := local.Services[h.ServerIdentity.ID][skipchainSID].(*Service)
m, err := s.GetUpdateChain(&GetUpdateChain{sbRoot.Hash})
log.ErrFatal(err, "Failed in iteration="+strconv.Itoa(i)+":")
sb := m.(*GetUpdateChainReply)
log.Lvl2(s.Context)
if len(sb.Update) != 1 {
// we expect only the first block
t.Fatal("There should be only 1 SkipBlock in the update")
}
link := sb.Update[0].ChildSL
if !bytes.Equal(link.Hash, sbInter.Hash) {
t.Fatal("The child-link doesn't point to our intermediate SkipBlock", i)
}
// We need to verify the signature on the child-link, too. This
// has to be signed by the collective signature of sbRoot.
if cerr := sbRoot.VerifySignatures(); cerr != nil {
t.Fatal("Signature on child-link is not valid")
}
}
// And check for the intermediate-chain to be updated
for _, h := range hosts {
s := local.Services[h.ServerIdentity.ID][skipchainSID].(*Service)
m, cerr := s.GetUpdateChain(&GetUpdateChain{sbInter.Hash})
sb := m.(*GetUpdateChainReply)
log.ErrFatal(cerr)
if len(sb.Update) != 1 {
t.Fatal("There should be only 1 SkipBlock in the update")
}
if !bytes.Equal(sb.Update[0].ParentBlockID, sbRoot.Hash) {
t.Fatal("The intermediate SkipBlock doesn't point to the root")
}
if err := sb.Update[0].VerifySignatures(); err != nil {
t.Fatal("Signature of that SkipBlock doesn't fit")
}
}
}
开发者ID:dedis,项目名称:cothority,代码行数:59,代码来源:skipchain_test.go
示例16: handleResponsePrepare
// If 'r' is nil, it will starts the response process.
func (bft *ProtocolBFTCoSi) handleResponsePrepare(r *Response) error {
if r != nil {
// check if we have enough responses
bft.tmpMutex.Lock()
bft.tempPrepareResponse = append(bft.tempPrepareResponse, r.Response)
bft.tempExceptions = append(bft.tempExceptions, r.Exceptions...)
if len(bft.tempPrepareResponse) < len(bft.Children()) {
bft.tmpMutex.Unlock()
return nil
}
bft.tmpMutex.Unlock()
}
// wait for verification
bzrReturn, ok := bft.waitResponseVerification()
// append response
if !ok {
log.Lvl2(bft.Roster(), "Refused to sign")
}
// Return if we're not root
if !bft.IsRoot() {
return bft.SendTo(bft.Parent(), bzrReturn)
}
// Since cosi does not support exceptions yet, we have to remove
// the responses that are not supposed to be there,i.e. exceptions.
cosiSig := bft.prepare.Signature()
correctResponseBuff, err := bzrReturn.Response.MarshalBinary()
if err != nil {
return err
}
// replace the old one with the corrected one
copy(cosiSig[32:64], correctResponseBuff)
bft.prepareSignature = cosiSig
// Verify the signature is correct
data := sha512.Sum512(bft.Msg)
sig := &BFTSignature{
Msg: data[:],
Sig: cosiSig,
Exceptions: bft.tempExceptions,
}
aggCommit := bft.Suite().Point().Null()
for _, c := range bft.tempPrepareCommit {
aggCommit.Add(aggCommit, c)
}
if err := sig.Verify(bft.Suite(), bft.Roster().Publics()); err != nil {
log.Error(bft.Name(), "Verification of the signature failed:", err)
bft.signRefusal = true
}
log.Lvl3(bft.Name(), "Verification of signature successful")
// Start the challenge of the 'commit'-round
if err := bft.startChallenge(RoundCommit); err != nil {
log.Error(bft.Name(), err)
return err
}
return nil
}
开发者ID:dedis,项目名称:cothority,代码行数:60,代码来源:bftcosi.go
示例17: Instantiate
// Instantiate takes blockSize transactions and create the byzcoin instances.
func (s *Server) Instantiate(node *onet.TreeNodeInstance) (onet.ProtocolInstance, error) {
// wait until we have enough blocks
currTransactions := s.WaitEnoughBlocks()
log.Lvl2("Instantiate ByzCoin Round with", len(currTransactions), "transactions")
pi, err := NewByzCoinRootProtocol(node, currTransactions, s.timeOutMs, s.fail)
return pi, err
}
开发者ID:dedis,项目名称:cothority,代码行数:9,代码来源:server.go
示例18: TestCoSimul
func TestCoSimul(t *testing.T) {
for VerifyResponse = 0; VerifyResponse < 3; VerifyResponse++ {
for _, nbrHosts := range []int{1, 3, 13} {
log.Lvl2("Running cosi with", nbrHosts, "hosts")
local := onet.NewLocalTest()
hosts, _, tree := local.GenBigTree(nbrHosts, nbrHosts, 3, true)
log.Lvl2(tree.Dump())
done := make(chan bool)
// create the message we want to sign for this round
msg := []byte("Hello World Cosi")
// Register the function generating the protocol instance
var root *CoSimul
// function that will be called when protocol is finished by the root
doneFunc := func(sig []byte) {
suite := hosts[0].Suite()
if err := cosi.VerifySignature(suite, root.Publics(),
msg, sig); err != nil {
t.Fatal("error verifying signature:", err)
} else {
log.Lvl1("Verification OK")
}
done <- true
}
// Start the protocol
p, err := local.CreateProtocol(Name, tree)
if err != nil {
t.Fatal("Couldn't create new node:", err)
}
root = p.(*CoSimul)
root.Message = msg
root.RegisterSignatureHook(doneFunc)
go root.StartProtocol()
select {
case <-done:
case <-time.After(time.Second * 2):
t.Fatal("Could not get signature verification done in time")
}
local.CloseAll()
}
}
}
开发者ID:dedis,项目名称:cothority,代码行数:45,代码来源:cosi_test.go
示例19: TestService_ProposeSkipBlock
func TestService_ProposeSkipBlock(t *testing.T) {
// First create a roster to attach the data to it
local := onet.NewLocalTest()
defer local.CloseAll()
_, el, genService := local.MakeHELS(5, skipchainSID)
service := genService.(*Service)
service.SkipBlocks = make(map[string]*SkipBlock)
// Setting up root roster
sbRoot, err := makeGenesisRoster(service, el)
log.ErrFatal(err)
// send a ProposeBlock
genesis := NewSkipBlock()
genesis.Data = []byte("In the beginning God created the heaven and the earth.")
genesis.MaximumHeight = 2
genesis.BaseHeight = 2
genesis.ParentBlockID = sbRoot.Hash
genesis.Roster = sbRoot.Roster
blockCount := 0
psbrMsg, err := service.ProposeSkipBlock(&ProposeSkipBlock{nil, genesis})
assert.Nil(t, err)
psbr := psbrMsg.(*ProposedSkipBlockReply)
latest := psbr.Latest
// verify creation of GenesisBlock:
assert.Equal(t, blockCount, latest.Index)
// the genesis block has a random back-link:
assert.Equal(t, 1, len(latest.BackLinkIds))
assert.NotEqual(t, 0, latest.BackLinkIds)
next := NewSkipBlock()
next.Data = []byte("And the earth was without form, and void; " +
"and darkness was upon the face of the deep. " +
"And the Spirit of God moved upon the face of the waters.")
next.MaximumHeight = 2
next.ParentBlockID = sbRoot.Hash
next.Roster = sbRoot.Roster
id := psbr.Latest.Hash
psbrMsg, err = service.ProposeSkipBlock(&ProposeSkipBlock{id, next})
assert.Nil(t, err)
psbr2 := psbrMsg.(*ProposedSkipBlockReply)
log.Lvl2(psbr2)
if psbr2 == nil {
t.Fatal("Didn't get anything in return")
}
assert.NotNil(t, psbr2)
assert.NotNil(t, psbr2.Latest)
latest2 := psbr2.Latest
// verify creation of GenesisBlock:
blockCount++
assert.Equal(t, blockCount, latest2.Index)
assert.Equal(t, 1, len(latest2.BackLinkIds))
assert.NotEqual(t, 0, latest2.BackLinkIds)
// We've added 2 blocks, + root block = 3
assert.Equal(t, 3, service.lenSkipBlocks())
}
开发者ID:dedis,项目名称:cothority,代码行数:57,代码来源:skipchain_test.go
示例20: TestCosi
func TestCosi(t *testing.T) {
//defer log.AfterTest(t)
log.TestOutput(testing.Verbose(), 4)
for _, nbrHosts := range []int{1, 3, 13} {
log.Lvl2("Running cosi with", nbrHosts, "hosts")
local := onet.NewLocalTest()
hosts, el, tree := local.GenBigTree(nbrHosts, nbrHosts, 3, true)
aggPublic := network.Suite.Point().Null()
for _, e := range el.List {
aggPublic = aggPublic.Add(aggPublic, e.Public)
}
done := make(chan bool)
// create the message we want to sign for this round
msg := []byte("Hello World Cosi")
// Register the function generating the protocol instance
var root *CoSi
// function that will be called when protocol is finished by the root
doneFunc := func(sig []byte) {
suite := hosts[0].Suite()
publics := el.Publics()
if err := root.VerifyResponses(aggPublic); err != nil {
t.Fatal("Error verifying responses", err)
}
if err := VerifySignature(suite, publics, msg, sig); err != nil {
t.Fatal("Error verifying signature:", err)
}
done <- true
}
// Start the protocol
p, err := local.CreateProtocol("CoSi", tree)
if err != nil {
t.Fatal("Couldn't create new node:", err)
}
root = p.(*CoSi)
root.Message = msg
responseFunc := func(in []abstract.Scalar) {
log.Lvl1("Got response")
if len(root.Children()) != len(in) {
t.Fatal("Didn't get same number of responses")
}
}
root.RegisterResponseHook(responseFunc)
root.RegisterSignatureHook(doneFunc)
go root.StartProtocol()
select {
case <-done:
case <-time.After(time.Second * 2):
t.Fatal("Could not get signature verification done in time")
}
local.CloseAll()
}
}
开发者ID:dedis,项目名称:cothority,代码行数:55,代码来源:cosi_test.go
注:本文中的github.com/dedis/onet/log.Lvl2函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论