mirror of
https://github.com/arnaucube/slowlorisdb.git
synced 2026-02-28 05:46:48 +01:00
add initial node
This commit is contained in:
35
node/node.go
Normal file
35
node/node.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package node
|
||||
|
||||
import (
|
||||
"crypto/ecdsa"
|
||||
|
||||
"github.com/arnaucube/slowlorisdb/core"
|
||||
"github.com/arnaucube/slowlorisdb/db"
|
||||
)
|
||||
|
||||
type Node struct {
|
||||
PrivK *ecdsa.PrivateKey
|
||||
Addr core.Address
|
||||
Bc *core.Blockchain
|
||||
}
|
||||
|
||||
func NewNode(db *db.Db) (*Node, error) {
|
||||
privK, err := core.NewKey()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
addr := core.AddressFromPrivK(privK)
|
||||
|
||||
bc := core.NewBlockchain(db)
|
||||
|
||||
node := &Node{
|
||||
PrivK: privK,
|
||||
Addr: addr,
|
||||
Bc: bc,
|
||||
}
|
||||
return node, nil
|
||||
}
|
||||
|
||||
func (node *Node) Sign(m []byte) (*core.Signature, error) {
|
||||
return core.Sign(node.PrivK, m)
|
||||
}
|
||||
38
node/node_test.go
Normal file
38
node/node_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package node
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
|
||||
"github.com/arnaucube/slowlorisdb/core"
|
||||
"github.com/arnaucube/slowlorisdb/db"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestNode(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "db")
|
||||
assert.Nil(t, err)
|
||||
db, err := db.New(dir)
|
||||
assert.Nil(t, err)
|
||||
|
||||
node, err := NewNode(db)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, node.Addr, core.AddressFromPrivK(node.PrivK))
|
||||
}
|
||||
|
||||
func TestNodeSignature(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "db")
|
||||
assert.Nil(t, err)
|
||||
db, err := db.New(dir)
|
||||
assert.Nil(t, err)
|
||||
|
||||
node, err := NewNode(db)
|
||||
assert.Nil(t, err)
|
||||
|
||||
m := []byte("test")
|
||||
sig, err := node.Sign(m)
|
||||
assert.Nil(t, err)
|
||||
pubK := node.PrivK.PublicKey
|
||||
assert.True(t, core.VerifySignature(&pubK, m, *sig))
|
||||
}
|
||||
Reference in New Issue
Block a user