diff --git a/.gitignore b/.gitignore index 2085be4..c7905fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .DS_Store bin coverage.txt +.claude/ +CLAUDE.md diff --git a/README.md b/README.md index 902d943..731d2a4 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ This forms an [implicit certificate](https://en.wikipedia.org/wiki/Implicit_cert ### How it is used in SyncTree? - Every change to the tree is signed by a user private key. -- Each node records its owner identity and is cryptographically verifiable, ho made which change, when, and whether it was authorized. +- Each node records its owner identity and is cryptographically verifiable, who made which change, when, and whether it was authorized. - Vector clocks maintain per-identity causal history based on the `ownerID`. - Fine-grained access control (ABAC) is enforced per node in the tree, also based `ownerID`. diff --git a/internal/crypto/idendity.go b/internal/crypto/identity.go similarity index 57% rename from internal/crypto/idendity.go rename to internal/crypto/identity.go index 985228b..ecc4989 100644 --- a/internal/crypto/idendity.go +++ b/internal/crypto/identity.go @@ -12,13 +12,13 @@ import ( "github.com/btcsuite/btcd/btcec/v2" ) -type Idendity struct { +type Identity struct { prv *ecdsa.PrivateKey id string } -func CreateIdendity() (*Idendity, error) { - idendity := &Idendity{} +func CreateIdentity() (*Identity, error) { + identity := &Identity{} prv, err := ecdsa.GenerateKey(btcec.S256(), rand.Reader) if err != nil { @@ -29,24 +29,24 @@ func CreateIdendity() (*Idendity, error) { return nil, errors.New("Invalid private key") } - idendity.prv = prv - idendity.id = GenerateHashFromString(idendity.PublicKeyAsHex()).String() + identity.prv = prv + identity.id = GenerateHashFromString(identity.PublicKeyAsHex()).String() - return idendity, nil + return identity, nil } -func (idendity *Idendity) PrivateKey() *ecdsa.PrivateKey { - return idendity.prv +func (identity *Identity) PrivateKey() *ecdsa.PrivateKey { + return identity.prv } -func (idendity *Idendity) PrivateKeyAsHex() string { - n := idendity.prv.Params().BitSize / 8 +func (identity *Identity) PrivateKeyAsHex() string { + n := identity.prv.Params().BitSize / 8 binaryDump := make([]byte, n) - if idendity.prv.D.BitLen()/8 >= n { - binaryDump = idendity.prv.D.Bytes() + if identity.prv.D.BitLen()/8 >= n { + binaryDump = identity.prv.D.Bytes() } else { i := len(binaryDump) - for _, d := range idendity.prv.D.Bits() { + for _, d := range identity.prv.D.Bits() { for j := 0; j < wordBytes && i > 0; j++ { i-- binaryDump[i] = byte(d) @@ -58,12 +58,12 @@ func (idendity *Idendity) PrivateKeyAsHex() string { return hex.EncodeToString(binaryDump) } -func (idendity *Idendity) ID() string { - return idendity.id +func (identity *Identity) ID() string { + return identity.id } func GenerateID(hexEncodedPrv string) (string, error) { - identity, err := CreateIdendityFromString(hexEncodedPrv) + identity, err := CreateIdentityFromString(hexEncodedPrv) if err != nil { return "", err } @@ -71,8 +71,8 @@ func GenerateID(hexEncodedPrv string) (string, error) { return identity.ID(), nil } -func CreateIdendityFromString(hexEncodedPrv string) (*Idendity, error) { - idendity := &Idendity{} +func CreateIdentityFromString(hexEncodedPrv string) (*Identity, error) { + identity := &Identity{} decodedPrv, err := hex.DecodeString(hexEncodedPrv) if err != nil { @@ -99,16 +99,16 @@ func CreateIdendityFromString(hexEncodedPrv string) (*Idendity, error) { return nil, errors.New("Invalid private key") } - idendity.prv = prv - idendity.id = GenerateHashFromString(idendity.PublicKeyAsHex()).String() + identity.prv = prv + identity.id = GenerateHashFromString(identity.PublicKeyAsHex()).String() - return idendity, nil + return identity, nil } -func (idendity *Idendity) PublicKey() []byte { - return elliptic.Marshal(btcec.S256(), idendity.prv.PublicKey.X, idendity.prv.PublicKey.Y) +func (identity *Identity) PublicKey() []byte { + return elliptic.Marshal(btcec.S256(), identity.prv.PublicKey.X, identity.prv.PublicKey.Y) } -func (idendity *Idendity) PublicKeyAsHex() string { - return hex.EncodeToString(idendity.PublicKey()) +func (identity *Identity) PublicKeyAsHex() string { + return hex.EncodeToString(identity.PublicKey()) } diff --git a/internal/crypto/idendity_test.go b/internal/crypto/identity_test.go similarity index 62% rename from internal/crypto/idendity_test.go rename to internal/crypto/identity_test.go index b6db9ae..9e9d766 100644 --- a/internal/crypto/idendity_test.go +++ b/internal/crypto/identity_test.go @@ -6,11 +6,11 @@ import ( "github.com/stretchr/testify/assert" ) -func TestCreateIdendity(t *testing.T) { - idendity, err := CreateIdendityFromString("6d2fb6f546bacfd98c68769e61e0b44a697a30596c018a50e28200aa59b01c0a") +func TestCreateIdentity(t *testing.T) { + identity, err := CreateIdentityFromString("6d2fb6f546bacfd98c68769e61e0b44a697a30596c018a50e28200aa59b01c0a") assert.Nil(t, err) - assert.Equal(t, "4fef2b5a82d134d058c1883c72d6d9caf77cd59ca82d73105017590dea3dcb87", idendity.ID()) - assert.Equal(t, "6d2fb6f546bacfd98c68769e61e0b44a697a30596c018a50e28200aa59b01c0a", idendity.PrivateKeyAsHex()) - assert.Equal(t, "0408e903276ee7973666dceeefa5335e5c4b6b5989821906db98f8de8acf8f853824ca3234a8602200baa2d75f30cb2050cda18602824c3eb2da654a93a01a7ad4", idendity.PublicKeyAsHex()) + assert.Equal(t, "4fef2b5a82d134d058c1883c72d6d9caf77cd59ca82d73105017590dea3dcb87", identity.ID()) + assert.Equal(t, "6d2fb6f546bacfd98c68769e61e0b44a697a30596c018a50e28200aa59b01c0a", identity.PrivateKeyAsHex()) + assert.Equal(t, "0408e903276ee7973666dceeefa5335e5c4b6b5989821906db98f8de8acf8f853824ca3234a8602200baa2d75f30cb2050cda18602824c3eb2da654a93a01a7ad4", identity.PublicKeyAsHex()) } diff --git a/internal/crypto/signature_test.go b/internal/crypto/signature_test.go index 63a31e9..6c3c2bf 100644 --- a/internal/crypto/signature_test.go +++ b/internal/crypto/signature_test.go @@ -8,7 +8,7 @@ import ( ) func TestRecoveredID(t *testing.T) { - idendity, err := CreateIdendity() + idendity, err := CreateIdentity() assert.Nil(t, err) msg := "test" @@ -26,7 +26,7 @@ func TestRecoveredID(t *testing.T) { } func TestRecoverFromStrings(t *testing.T) { - idendity, err := CreateIdendity() + idendity, err := CreateIdentity() assert.Nil(t, err) msg := "test" @@ -44,7 +44,7 @@ func TestRecoverFromStrings(t *testing.T) { } func TestRecoverFromStringsInvalidHash(t *testing.T) { - idendity, err := CreateIdendity() + idendity, err := CreateIdentity() assert.Nil(t, err) msg := "test" @@ -61,7 +61,7 @@ func TestRecoverFromStringsInvalidHash(t *testing.T) { } func TestRecoverPublicKey(t *testing.T) { - idendity, err := CreateIdendity() + idendity, err := CreateIdentity() assert.Nil(t, err) hash := GenerateHash([]byte("test")) @@ -75,10 +75,10 @@ func TestRecoverPublicKey(t *testing.T) { } func TestRecoverPublicKeyInvalidSignature(t *testing.T) { - idendity, err := CreateIdendity() + idendity, err := CreateIdentity() assert.Nil(t, err) - idendity2, err := CreateIdendity() + idendity2, err := CreateIdentity() assert.Nil(t, err) hash := GenerateHash([]byte("test")) @@ -92,7 +92,7 @@ func TestRecoverPublicKeyInvalidSignature(t *testing.T) { } func TestSignAndVerify(t *testing.T) { - idendity, err := CreateIdendity() + idendity, err := CreateIdentity() assert.Nil(t, err) msg := "test" @@ -110,10 +110,10 @@ func TestSignAndVerify(t *testing.T) { } func TestSignAndVerifyInvalidPubKey(t *testing.T) { - idendity, err := CreateIdendity() + idendity, err := CreateIdentity() assert.Nil(t, err) - idendity2, err := CreateIdendity() + idendity2, err := CreateIdentity() assert.Nil(t, err) msg := "test" @@ -132,7 +132,7 @@ func TestSignAndVerifyInvalidPubKey(t *testing.T) { func TestInterop(t *testing.T) { prvKey := "d6eb959e9aec2e6fdc44b5862b269e987b8a4d6f2baca542d8acaa97ee5e74f6" - idendity, err := CreateIdendityFromString(prvKey) + idendity, err := CreateIdentityFromString(prvKey) assert.Nil(t, err) hash := GenerateHashFromString("hello") diff --git a/pkg/crdt/abac.go b/pkg/crdt/abac.go index b7f87e9..fa50fc3 100644 --- a/pkg/crdt/abac.go +++ b/pkg/crdt/abac.go @@ -30,13 +30,13 @@ type ABACPolicy struct { Rules map[string]map[ABACAction]map[NodeID]ABACRule `json:"rules"` OwnerID string `json:"ownerID"` Clock VectorClock `json:"clock"` - Nounce string `json:"nounce"` + Nonce string `json:"nounce"` Signature string `json:"signature"` tree TreeChecker `json:"-"` - identity *crypto.Idendity `json:"-"` + identity *crypto.Identity `json:"-"` } -func NewABACPolicy(tree TreeChecker, ownerID string, identity *crypto.Idendity) *ABACPolicy { +func NewABACPolicy(tree TreeChecker, ownerID string, identity *crypto.Identity) *ABACPolicy { return &ABACPolicy{ Rules: make(map[string]map[ABACAction]map[NodeID]ABACRule), tree: tree, @@ -219,7 +219,7 @@ func (p *ABACPolicy) Merge(remote *ABACPolicy) error { p.Clock = copyClock(remote.Clock) p.Rules = deepCopyRules(remote.Rules) p.OwnerID = remote.OwnerID - p.Nounce = remote.Nounce + p.Nonce = remote.Nonce p.Signature = remote.Signature log.WithFields(log.Fields{ @@ -333,11 +333,11 @@ func (p *ABACPolicy) ComputeDigest() (*crypto.Hash, error) { digestInput := struct { Rules interface{} `json:"rules"` OwnerID string `json:"ownerID"` - Nounce string `json:"nounce"` + Nonce string `json:"nonce"` }{ Rules: orderedRules, OwnerID: p.OwnerID, - Nounce: p.Nounce, + Nonce: p.Nonce, } // Marshal the entire digest input @@ -402,7 +402,7 @@ func (p *ABACPolicy) PrintPolicy() { } func (p *ABACPolicy) Sign() error { - p.Nounce = random.GenerateRandomID() + p.Nonce = random.GenerateRandomID() digest, err := p.ComputeDigest() if err != nil { diff --git a/pkg/crdt/abac_test.go b/pkg/crdt/abac_test.go index fd92c7d..b3a7c79 100644 --- a/pkg/crdt/abac_test.go +++ b/pkg/crdt/abac_test.go @@ -17,7 +17,7 @@ func TestABACPolicyWithModifyOnly(t *testing.T) { tree := &mockTree{} prvKey := "d6eb959e9aec2e6fdc44b5862b269e987b8a4d6f2baca542d8acaa97ee5e74f6" - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) assert.NoError(t, err) policy := NewABACPolicy(tree, identity.ID(), identity) @@ -64,7 +64,7 @@ func TestABACPolicyUpdateAndRemove(t *testing.T) { tree := &mockTree{} prvKey := "d6eb959e9aec2e6fdc44b5862b269e987b8a4d6f2baca542d8acaa97ee5e74f6" - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) assert.NoError(t, err) policy := NewABACPolicy(tree, identity.ID(), identity) diff --git a/pkg/crdt/securetree_adapter.go b/pkg/crdt/securetree_adapter.go index 19d9492..8eb1b20 100644 --- a/pkg/crdt/securetree_adapter.go +++ b/pkg/crdt/securetree_adapter.go @@ -19,7 +19,7 @@ func performSecureAction( abac *ABACPolicy, actionFn func(ClientID) (*NodeCRDT, error), ) error { - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) if err != nil { return fmt.Errorf("failed to create identity: %w", err) } @@ -179,7 +179,7 @@ type AdapterSecureTreeCRDT struct { } func NewSecureTree(prvKey string) (SecureTree, error) { - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) if err != nil { return nil, fmt.Errorf("failed to create identity from string: %w", err) } @@ -232,7 +232,7 @@ func (c *AdapterSecureTreeCRDT) CreateNode(name string, nodeType NodeType, prvKe return newNode, nil } - var nounce, signature string + var nonce, signature string err := performSecureAction( false, // Check ABAC policy since this node is not attached to the tree yet prvKey, @@ -245,7 +245,7 @@ func (c *AdapterSecureTreeCRDT) CreateNode(name string, nodeType NodeType, prvKe return nil, err } - newNode.Nounce = nounce + newNode.Nonce = nonce newNode.Signature = signature return &AdapterSecureNodeCRDT{nodeCrdt: newNode}, nil @@ -298,7 +298,7 @@ func (c *AdapterSecureTreeCRDT) AddEdge(from, to NodeID, label string, prvKey st return node, nil } - // Write to the parent's node.Nounce and node.Signature + // Write to the parent's node.Nonce and node.Signature return performSecureAction( true, prvKey, @@ -433,7 +433,7 @@ func (c *AdapterSecureTreeCRDT) Merge(c2 SecureTree, prvKey string) error { // T } func (c *AdapterSecureTreeCRDT) ImportJSON(rawJSON []byte, prvKey string) (NodeID, error) { // Tested - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) if err != nil { return "", fmt.Errorf("failed to create identity from string: %w", err) } @@ -448,7 +448,7 @@ func (c *AdapterSecureTreeCRDT) ImportJSON(rawJSON []byte, prvKey string) (NodeI } func (c *AdapterSecureTreeCRDT) ImportJSONToMap(rawJSON []byte, parentID NodeID, key string, prvKey string) (NodeID, error) { // Tested - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) if err != nil { return "", fmt.Errorf("failed to create identity from string: %w", err) } @@ -463,7 +463,7 @@ func (c *AdapterSecureTreeCRDT) ImportJSONToMap(rawJSON []byte, parentID NodeID, } func (c *AdapterSecureTreeCRDT) ImportJSONToArray(rawJSON []byte, parentID NodeID, prvKey string) (NodeID, error) { - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) if err != nil { return "", fmt.Errorf("failed to create identity from string: %w", err) } diff --git a/pkg/crdt/securetree_adapter_test.go b/pkg/crdt/securetree_adapter_test.go index dcdd847..1ee1f54 100644 --- a/pkg/crdt/securetree_adapter_test.go +++ b/pkg/crdt/securetree_adapter_test.go @@ -66,7 +66,7 @@ func TestSecureTreeAdapterSetLiteral(t *testing.T) { assert.Nil(t, err) secureNode := aNode.(*AdapterSecureNodeCRDT) - assert.NotEmpty(t, secureNode.nodeCrdt.Nounce) + assert.NotEmpty(t, secureNode.nodeCrdt.Nonce) assert.NotEmpty(t, secureNode.nodeCrdt.Signature) }) } @@ -574,7 +574,7 @@ func TestSecureTreeAdapterMergeABAC(t *testing.T) { prvKey1 := "d6eb959e9aec2e6fdc44b5862b269e987b8a4d6f2baca542d8acaa97ee5e74f6" prvKey2 := "ed26531bac1838e519c2c6562ac717b22aac041730f0d753d3ad35b76b5f4924" - identity2, err := crypto.CreateIdendityFromString(prvKey2) + identity2, err := crypto.CreateIdentityFromString(prvKey2) assert.Nil(t, err) c1, err := NewSecureTree(prvKey1) @@ -632,7 +632,7 @@ func TestSecureTreeAdapterMergeComplexJSONABAC(t *testing.T) { ] }`) - identity2, err := crypto.CreateIdendityFromString(prvKey2) + identity2, err := crypto.CreateIdentityFromString(prvKey2) assert.Nil(t, err) c1, err := NewSecureTree(prvKey1) @@ -729,10 +729,10 @@ func (t *DummyTree) isDescendant(root NodeID, target NodeID) bool { func TestABACPolicyMerge_LWW(t *testing.T) { // Setup identities - identityA, err := crypto.CreateIdendity() + identityA, err := crypto.CreateIdentity() assert.NoError(t, err) - identityB, err := crypto.CreateIdendity() + identityB, err := crypto.CreateIdentity() assert.NoError(t, err) ownerA := identityA.ID() diff --git a/pkg/crdt/security.go b/pkg/crdt/security.go index e023d5d..54afe77 100644 --- a/pkg/crdt/security.go +++ b/pkg/crdt/security.go @@ -22,8 +22,8 @@ type nodeDigest struct { IsMap bool `json:"ismap"` IsArray bool `json:"isarray"` IsLiteral bool `json:"isliteral"` - LiteralValue interface{} `json:"litteralValue"` - Nounce string `json:"nounce"` + LiteralValue interface{} `json:"literalValue"` + Nonce string `json:"nonce"` IsDeleted bool `json:"deleted"` } @@ -37,7 +37,7 @@ func (n *NodeCRDT) ComputeDigest() (*crypto.Hash, error) { IsArray: n.IsArray, IsLiteral: n.IsLiteral, LiteralValue: n.LiteralValue, - Nounce: n.Nounce, + Nonce: n.Nonce, IsDeleted: n.IsDeleted, } @@ -58,14 +58,14 @@ func (n *NodeCRDT) ComputeDigest() (*crypto.Hash, error) { encodeField(&buf, "ismap", d.IsMap) encodeField(&buf, "isarray", d.IsArray) encodeField(&buf, "isliteral", d.IsLiteral) - encodeField(&buf, "litteralValue", d.LiteralValue) - encodeField(&buf, "nounce", d.Nounce) + encodeField(&buf, "literalValue", d.LiteralValue) + encodeField(&buf, "nonce", d.Nonce) encodeField(&buf, "deleted", d.IsDeleted) buf.Truncate(buf.Len() - 1) // remove last comma buf.WriteString("}") - digest := crypto.GenerateHashFromString(string(buf.Bytes()) + n.Nounce) + digest := crypto.GenerateHashFromString(string(buf.Bytes()) + n.Nonce) return digest, nil } @@ -121,8 +121,8 @@ func jsonInt(i int) (string, error) { return string(b), nil } -func (n *NodeCRDT) Sign(identity *crypto.Idendity) error { - n.Nounce = random.GenerateRandomID() +func (n *NodeCRDT) Sign(identity *crypto.Identity) error { + n.Nonce = random.GenerateRandomID() digest, err := n.ComputeDigest() if err != nil { log.WithFields(log.Fields{ diff --git a/pkg/crdt/security_test.go b/pkg/crdt/security_test.go index b241730..6f0e38e 100644 --- a/pkg/crdt/security_test.go +++ b/pkg/crdt/security_test.go @@ -11,7 +11,7 @@ import ( func TestInterop(t *testing.T) { prvKey := "d6eb959e9aec2e6fdc44b5862b269e987b8a4d6f2baca542d8acaa97ee5e74f6" - idendity, err := crypto.CreateIdendityFromString(prvKey) + idendity, err := crypto.CreateIdentityFromString(prvKey) assert.Nil(t, err) fmt.Println("Message=hello") diff --git a/pkg/crdt/serialisation.go b/pkg/crdt/serialisation.go index fc608c6..e411eb3 100644 --- a/pkg/crdt/serialisation.go +++ b/pkg/crdt/serialisation.go @@ -17,7 +17,7 @@ func (c *TreeCRDT) ImportJSON(rawJSON []byte, clientID ClientID) (NodeID, error) return c.importJSON(rawJSON, c.Root.ID, "", -1, Root, clientID, false, nil) } -func (c *TreeCRDT) SecureImportJSON(rawJSON []byte, identity *crypto.Idendity) (NodeID, error) { +func (c *TreeCRDT) SecureImportJSON(rawJSON []byte, identity *crypto.Identity) (NodeID, error) { clientID := ClientID(identity.ID()) return c.importJSON(rawJSON, c.Root.ID, "", -1, Root, clientID, true, identity) } @@ -41,7 +41,7 @@ func (c *TreeCRDT) ImportJSONToMap(rawJSON []byte, parentID NodeID, key string, return c.importJSON(rawJSON, parentID, key, -1, Map, clientID, false, nil) } -func (c *TreeCRDT) SecureImportJSONToMap(rawJSON []byte, parentID NodeID, key string, identity *crypto.Idendity) (NodeID, error) { +func (c *TreeCRDT) SecureImportJSONToMap(rawJSON []byte, parentID NodeID, key string, identity *crypto.Identity) (NodeID, error) { if parentID == "" { if c.Root == nil { return "", errors.New("cannot import JSON without a root node") @@ -80,7 +80,7 @@ func (c *TreeCRDT) ImportJSONToArray(rawJSON []byte, parentID NodeID, clientID C return c.importJSON(rawJSON, parentID, "", -1, Map, clientID, false, nil) } -func (c *TreeCRDT) SecureImportJSONToArray(rawJSON []byte, parentID NodeID, identity *crypto.Idendity) (NodeID, error) { +func (c *TreeCRDT) SecureImportJSONToArray(rawJSON []byte, parentID NodeID, identity *crypto.Identity) (NodeID, error) { if parentID == "" { if c.Root == nil { return "", errors.New("cannot import JSON without a root node") @@ -100,7 +100,7 @@ func (c *TreeCRDT) SecureImportJSONToArray(rawJSON []byte, parentID NodeID, iden return c.importJSON(rawJSON, parentID, "", -1, Map, clientID, true, identity) } -func (c *TreeCRDT) importJSON(rawJSON []byte, parentID NodeID, edgeLabel string, idx int, nodeType NodeType, clientID ClientID, secure bool, identity *crypto.Idendity) (NodeID, error) { +func (c *TreeCRDT) importJSON(rawJSON []byte, parentID NodeID, edgeLabel string, idx int, nodeType NodeType, clientID ClientID, secure bool, identity *crypto.Identity) (NodeID, error) { version := 1 var parent *NodeCRDT if parentID == "" { @@ -120,7 +120,7 @@ func (c *TreeCRDT) importJSON(rawJSON []byte, parentID NodeID, edgeLabel string, return nodeID, err } -func (c *TreeCRDT) secureImportRecursive(v interface{}, parent *NodeCRDT, edgeLabel string, idx int, nodeType NodeType, clientID ClientID, secure bool, identity *crypto.Idendity) (NodeID, error) { +func (c *TreeCRDT) secureImportRecursive(v interface{}, parent *NodeCRDT, edgeLabel string, idx int, nodeType NodeType, clientID ClientID, secure bool, identity *crypto.Identity) (NodeID, error) { version := 1 switch val := v.(type) { @@ -277,11 +277,11 @@ func (c *TreeCRDT) Save() ([]byte, error) { "ispromoted": node.IsPromoted, "ismap": node.IsMap, "isliteral": node.IsLiteral, - "litteralValue": node.LiteralValue, + "literalValue": node.LiteralValue, "owner": string(node.Owner), "clock": node.Clock, "signature": node.Signature, - "nounce": node.Nounce, + "nonce": node.Nonce, "edges": edges, } } @@ -327,10 +327,10 @@ func (c *TreeCRDT) Load(data []byte) error { IsMap: nodeMap["ismap"].(bool), IsDeleted: nodeMap["deleted"].(bool), IsLiteral: nodeMap["isliteral"].(bool), - LiteralValue: nodeMap["litteralValue"], + LiteralValue: nodeMap["literalValue"], Owner: ClientID(nodeMap["owner"].(string)), Signature: nodeMap["signature"].(string), - Nounce: nodeMap["nounce"].(string), + Nonce: nodeMap["nonce"].(string), } node.tree = c diff --git a/pkg/crdt/treecrdt.go b/pkg/crdt/treecrdt.go index c4d2938..32510d2 100644 --- a/pkg/crdt/treecrdt.go +++ b/pkg/crdt/treecrdt.go @@ -32,8 +32,8 @@ type NodeCRDT struct { IsArray bool `json:"isarray"` IsPromoted bool `json:"ispromoted"` IsLiteral bool `json:"isliteral"` - LiteralValue interface{} `json:"litteralValue"` - Nounce string `json:"nounce"` + LiteralValue interface{} `json:"literalValue"` + Nonce string `json:"nonce"` Signature string `json:"signature"` IsDeleted bool `json:"deleted"` } @@ -807,7 +807,7 @@ func (c *TreeCRDT) merge(c2 *TreeCRDT, secure bool, prvKey string) error { cloned.Owner = remote.Owner cloned.IsDeleted = remote.IsDeleted cloned.IsRoot = remote.IsRoot - cloned.Nounce = remote.Nounce + cloned.Nonce = remote.Nonce cloned.Signature = remote.Signature c.Nodes[id] = cloned local = cloned @@ -818,7 +818,7 @@ func (c *TreeCRDT) merge(c2 *TreeCRDT, secure bool, prvKey string) error { if remote.IsLiteral { err := local.setLiteralWithVersion(remote.LiteralValue, remote.Owner, remote.Clock[remote.Owner]) - local.Nounce = remote.Nounce + local.Nonce = remote.Nonce local.Signature = remote.Signature if err != nil { log.WithFields(log.Fields{ @@ -863,7 +863,7 @@ func (c *TreeCRDT) merge(c2 *TreeCRDT, secure bool, prvKey string) error { }).Error("AddEdge failed during promotion") } if secure { - identity, err := crypto.CreateIdendityFromString(prvKey) + identity, err := crypto.CreateIdentityFromString(prvKey) if err != nil { log.WithFields(log.Fields{ "NodeID": fromNode.ID, @@ -1061,7 +1061,7 @@ func (c *TreeCRDT) cloneNodeFromRemote(c2 *TreeCRDT, id NodeID) { cloned.IsDeleted = remote.IsDeleted cloned.IsRoot = remote.IsRoot cloned.ParentID = remote.ParentID - cloned.Nounce = remote.Nounce + cloned.Nonce = remote.Nonce cloned.Signature = remote.Signature c.Nodes[id] = cloned } diff --git a/pkg/crdt/treecrdt_test.go b/pkg/crdt/treecrdt_test.go index ef34466..979351a 100644 --- a/pkg/crdt/treecrdt_test.go +++ b/pkg/crdt/treecrdt_test.go @@ -479,7 +479,7 @@ func TestTreeCRDTValidation(t *testing.T) { Owner: client, tree: c, Clock: VectorClock{}, - Nounce: "iso", + Nonce: "iso", Signature: "sig", } c.Nodes[isolated.ID] = isolated diff --git a/pkg/security/crypto/standalone_crypto.go b/pkg/security/crypto/standalone_crypto.go index 874ba0a..6d58031 100644 --- a/pkg/security/crypto/standalone_crypto.go +++ b/pkg/security/crypto/standalone_crypto.go @@ -14,7 +14,7 @@ func CreateCrypto() *StandaloneCrypto { } func (standaloneCrypto *StandaloneCrypto) GeneratePrivateKey() (string, error) { - identify, err := crypto.CreateIdendity() + identify, err := crypto.CreateIdentity() if err != nil { return "", err } @@ -23,7 +23,7 @@ func (standaloneCrypto *StandaloneCrypto) GeneratePrivateKey() (string, error) { } func (standaloneCrypto *StandaloneCrypto) GenerateID(prvKey string) (string, error) { - identify, err := crypto.CreateIdendityFromString(prvKey) + identify, err := crypto.CreateIdentityFromString(prvKey) if err != nil { return "", err } @@ -32,7 +32,7 @@ func (standaloneCrypto *StandaloneCrypto) GenerateID(prvKey string) (string, err } func (standaloneCrypto *StandaloneCrypto) GenerateSignature(data string, prvKey string) (string, error) { - idendity, err := crypto.CreateIdendityFromString(prvKey) + idendity, err := crypto.CreateIdentityFromString(prvKey) if err != nil { return "", err }