Fix threadbuilder and change examples

This commit is contained in:
mcrakhman 2022-07-03 17:35:21 +02:00
parent e970fa1d4d
commit 3404626dd6
No known key found for this signature in database
GPG Key ID: DED12CFEF5B8396B
8 changed files with 284 additions and 286 deletions

View File

@ -14,8 +14,7 @@ changes:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: A identity: A
@ -45,8 +44,7 @@ changes:
encryptedReadKeys: [ key.Read.1 ] encryptedReadKeys: [ key.Read.1 ]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: D identity: D

View File

@ -126,7 +126,7 @@ func (t *ThreadBuilder) Parse(thread *YMLThread) {
newChange.readKey = k newChange.readKey = k
newChange.signKey = t.keychain.SigningKeys[ch.Identity] newChange.signKey = t.keychain.SigningKeys[ch.Identity]
aclChange := &pb.ACLChange{} aclChange := &pb.ACLChange{}
aclChange.Identity = newChange.Identity aclChange.Identity = ch.Identity
if len(ch.AclChanges) > 0 || ch.AclSnapshot != nil { if len(ch.AclChanges) > 0 || ch.AclSnapshot != nil {
aclChange.AclData = &pb.ACLChangeACLData{} aclChange.AclData = &pb.ACLChangeACLData{}
if ch.AclSnapshot != nil { if ch.AclSnapshot != nil {
@ -368,7 +368,8 @@ func (t *ThreadBuilder) convertPermission(perm string) pb.ACLChangeUserPermissio
func (t *ThreadBuilder) traverseFromHeads(f func(t *threadChange) error) error { func (t *ThreadBuilder) traverseFromHeads(f func(t *threadChange) error) error {
uniqMap := map[string]struct{}{} uniqMap := map[string]struct{}{}
stack := t.heads stack := make([]string, len(t.heads), 10)
copy(stack, t.heads)
for len(stack) > 0 { for len(stack) > 0 {
id := stack[len(stack)-1] id := stack[len(stack)-1]
stack = stack[:len(stack)-1] stack = stack[:len(stack)-1]

View File

@ -1,75 +1,68 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1 - id: A.1.1
identity: A identity: A
records: aclSnapshot:
- id: A.1.1 userStates:
aclSnapshot: - identity: A
userStates: encryptionKey: key.Enc.A
- identity: A encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.A permission: admin
encryptedReadKeys: [key.Read.1] snapshot:
permission: admin text: "some text"
snapshot: aclChanges:
blocks: - userAdd:
- id: root identity: A
aclChanges: permission: admin
- userAdd: encryptionKey: key.Enc.A
identity: A encryptedReadKeys: [key.Read.1]
permission: admin changes:
encryptionKey: key.Enc.A - textAppend:
encryptedReadKeys: [key.Read.1] text: "some text"
changes: readKey: key.Read.1
- blockAdd: - id: A.1.2
id: root identity: A
readKey: key.Read.1 aclChanges:
- id: A.1.2 - userInvite:
aclChanges: acceptKey: key.Sign.Onetime1
- userInvite: encryptionKey: key.Enc.Onetime1
acceptKey: key.Sign.Onetime1 encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.Onetime1 permissions: writer
encryptedReadKeys: [key.Read.1] - userAdd:
permissions: writer identity: C
- userAdd: permission: reader
identity: C encryptionKey: key.Enc.C
permission: reader encryptedReadKeys: [ key.Read.1 ]
encryptionKey: key.Enc.C readKey: key.Read.1
encryptedReadKeys: [ key.Read.1 ] - id: A.1.3
readKey: key.Read.1 identity: A
- id: A.1.3 changes:
changes: - textAppend:
- blockAdd: text: "second"
id: second readKey: key.Read.1
targetId: root - id: B.1.1
readKey: key.Read.1
- id: B.1
identity: B identity: B
records: aclChanges:
- id: B.1.1 - userJoin:
aclChanges: identity: B
- userJoin: encryptionKey: key.Enc.B
identity: B acceptSignature: key.Sign.Onetime1
encryptionKey: key.Enc.B inviteId: A.1.2
acceptSignature: key.Sign.Onetime1 encryptedReadKeys: [key.Read.1]
inviteId: A.1.2 readKey: key.Read.1
encryptedReadKeys: [key.Read.1] - id: B.1.2
readKey: key.Read.1 identity: B
- id: B.1.2 changes:
changes: - textAppend:
- blockAdd: text: "first"
id: first readKey: key.Read.1
targetId: root - id: C.1.1
readKey: key.Read.1
- id: C.1
identity: C identity: C
records: changes:
- id: C.1.1 - textAppend:
changes: text: "third"
- blockAdd: readKey: key.Read.1
id: third
targetId: root
readKey: key.Read.1
keys: keys:
Enc: Enc:
- A - A
@ -106,4 +99,5 @@ graph:
baseSnapshot: A.1.1 baseSnapshot: A.1.1
aclHeads: [B.1.1] aclHeads: [B.1.1]
treeHeads: [B.1.1] treeHeads: [B.1.1]
heads:
- "A.1.3"

View File

@ -1,72 +1,70 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1 - id: A.1.1
identity: A identity: A
records: aclSnapshot:
- id: A.1.1 userStates:
aclSnapshot: - identity: A
userStates: encryptionKey: key.Enc.A
- identity: A encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.A permission: admin
encryptedReadKeys: [key.Read.1] - identity: B
permission: admin encryptionKey: key.Enc.B
- identity: B encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.B permission: admin
encryptedReadKeys: [key.Read.1] snapshot:
permission: admin text: "some text"
snapshot: aclChanges:
blocks: - userAdd:
- id: root identity: A
aclChanges: permission: admin
- userAdd: encryptionKey: key.Enc.A
identity: A encryptedReadKeys: [key.Read.1]
permission: admin - userAdd:
encryptionKey: key.Enc.A identity: B
encryptedReadKeys: [key.Read.1] permission: admin
- userAdd: encryptionKey: key.Enc.B
identity: B encryptedReadKeys: [key.Read.1]
permission: admin changes:
encryptionKey: key.Enc.B - textAppend:
encryptedReadKeys: [key.Read.1] text: "some text"
changes: readKey: key.Read.1
- blockAdd: - id: A.1.2
id: root identity: A
readKey: key.Read.1 aclChanges:
- id: A.1.2 - userRemove:
aclChanges: removedIdentity: B
- userRemove: newReadKey: key.Read.2
removedIdentity: B identitiesLeft: [A, C]
newReadKey: key.Read.2 readKey: key.Read.2
identitiesLeft: [A, C] - id: A.1.3
readKey: key.Read.2 identity: A
- id: A.1.3 aclChanges:
aclChanges: - userAdd:
- userAdd: identity: E
identity: E permission: admin
permission: admin encryptionKey: key.Enc.E
encryptionKey: key.Enc.E encryptedReadKeys: [key.Read.1, key.Read.2]
encryptedReadKeys: [key.Read.1, key.Read.2] readKey: key.Read.2
readKey: key.Read.2 - id: B.1.1
- id: B.1
identity: B identity: B
records: aclChanges:
- id: B.1.1 - userAdd:
aclChanges: identity: C
- userAdd: permission: admin
identity: C encryptionKey: key.Enc.C
permission: admin encryptedReadKeys: [ key.Read.1 ]
encryptionKey: key.Enc.C readKey: key.Read.1
encryptedReadKeys: [ key.Read.1 ] - id: B.1.2
readKey: key.Read.1 identity: B
- id: B.1.2 aclChanges:
aclChanges: - userAdd:
- userAdd: identity: D
identity: D permission: admin
permission: admin encryptionKey: key.Enc.D
encryptionKey: key.Enc.D encryptedReadKeys: [ key.Read.1 ]
encryptedReadKeys: [ key.Read.1 ] readKey: key.Read.1
readKey: key.Read.1
keys: keys:
Enc: Enc:
- A - A
@ -103,3 +101,6 @@ graph:
baseSnapshot: A.1.1 baseSnapshot: A.1.1
aclHeads: [A.1.2] aclHeads: [A.1.2]
treeHeads: [A.1.2] treeHeads: [A.1.2]
heads:
- "A.1.3"
- "B.1.2"

View File

@ -1,68 +1,65 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1 - id: A.1.1
identity: A identity: A
records: aclSnapshot:
- id: A.1.1 userStates:
aclSnapshot: - identity: A
userStates: encryptionKey: key.Enc.A
- identity: A encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.A permission: admin
encryptedReadKeys: [key.Read.1] snapshot:
permission: admin text: "some text"
snapshot: aclChanges:
blocks: - userAdd:
- id: root identity: A
aclChanges: permission: admin
- userAdd: encryptionKey: key.Enc.A
identity: A encryptedReadKeys: [key.Read.1]
permission: admin changes:
encryptionKey: key.Enc.A - textAppend:
encryptedReadKeys: [key.Read.1] text: "some text"
changes: readKey: key.Read.1
- blockAdd: - id: A.1.2
id: root identity: A
readKey: key.Read.1 aclChanges:
- id: A.1.2 - userInvite:
aclChanges: acceptKey: key.Sign.Onetime1
- userInvite: encryptionKey: key.Enc.Onetime1
acceptKey: key.Sign.Onetime1 encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.Onetime1 permissions: writer
encryptedReadKeys: [key.Read.1] readKey: key.Read.1
permissions: writer - id: A.1.3
readKey: key.Read.1 identity: A
- id: A.1.3 aclChanges:
aclChanges: - userRemove:
- userRemove: removedIdentity: B
removedIdentity: B newReadKey: key.Read.2
newReadKey: key.Read.2 identitiesLeft: [A]
identitiesLeft: [A] readKey: key.Read.2
readKey: key.Read.2 - id: A.1.4
- id: A.1.4 identity: A
changes: changes:
- blockAdd: - textAppend:
id: second text: "first"
targetId: root readKey: key.Read.2
readKey: key.Read.2 - id: B.1.1
- id: B.1
identity: B identity: B
records: aclChanges:
- id: B.1.1 - userJoin:
aclChanges: identity: B
- userJoin: encryptionKey: key.Enc.B
identity: B acceptSignature: key.Sign.Onetime1
encryptionKey: key.Enc.B inviteId: A.1.2
acceptSignature: key.Sign.Onetime1 encryptedReadKeys: [key.Read.1]
inviteId: A.1.2 readKey: key.Read.1
encryptedReadKeys: [key.Read.1] - id: B.1.2
readKey: key.Read.1 identity: B
- id: B.1.2 changes:
changes: - textAppend:
- blockAdd: text: "second"
id: first readKey: key.Read.1
targetId: root
readKey: key.Read.1
keys: keys:
Enc: Enc:
- A - A
@ -104,3 +101,6 @@ graph:
aclSnapshot: A.1.1 aclSnapshot: A.1.1
aclHeads: [A.1.3] aclHeads: [A.1.3]
treeHeads: [A.1.3] treeHeads: [A.1.3]
heads:
- "A.1.4"
- "B.1.2"

View File

@ -1,91 +1,91 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1 - id: A.1.1
identity: A identity: A
records: aclSnapshot:
- id: A.1.1 userStates:
aclSnapshot: - identity: A
userStates: encryptionKey: key.Enc.A
- identity: A encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.A permission: admin
encryptedReadKeys: [key.Read.1] - identity: B
permission: admin encryptionKey: key.Enc.B
- identity: B encryptedReadKeys: [key.Read.1]
encryptionKey: key.Enc.B permission: admin
encryptedReadKeys: [key.Read.1] snapshot:
permission: admin text: "some text"
snapshot: aclChanges:
blocks: - userAdd:
- id: root identity: A
aclChanges: permission: admin
- userAdd: encryptionKey: key.Enc.A
identity: A encryptedReadKeys: [key.Read.1]
permission: admin - userAdd:
encryptionKey: key.Enc.A identity: B
encryptedReadKeys: [key.Read.1] permission: admin
- userAdd: encryptionKey: key.Enc.B
identity: B encryptedReadKeys: [key.Read.1]
permission: admin readKey: key.Read.1
encryptionKey: key.Enc.B changes:
encryptedReadKeys: [key.Read.1] - textAppend:
readKey: key.Read.1 text: "some text"
- id: A.1.2 - id: A.1.2
aclSnapshot: identity: A
userStates: aclSnapshot:
- identity: A userStates:
encryptionKey: key.Enc.A - identity: A
encryptedReadKeys: [key.Read.1] encryptionKey: key.Enc.A
permission: admin encryptedReadKeys: [key.Read.1]
- identity: B permission: admin
encryptionKey: key.Enc.B - identity: B
encryptedReadKeys: [key.Read.1] encryptionKey: key.Enc.B
permission: admin encryptedReadKeys: [key.Read.1]
- identity: C permission: admin
encryptionKey: key.Enc.C - identity: C
encryptedReadKeys: [ key.Read.1 ] encryptionKey: key.Enc.C
permission: admin encryptedReadKeys: [ key.Read.1 ]
- identity: D permission: admin
encryptionKey: key.Enc.D - identity: D
encryptedReadKeys: [ key.Read.1 ] encryptionKey: key.Enc.D
permission: admin encryptedReadKeys: [ key.Read.1 ]
snapshot: permission: admin
blocks: snapshot:
- id: root text: "some text"
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: D identity: D
permission: admin permission: admin
encryptionKey: key.Enc.D encryptionKey: key.Enc.D
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
readKey: key.Read.1 readKey: key.Read.1
- id: A.1.3 - id: A.1.3
aclChanges: identity: A
- userAdd: aclChanges:
identity: E - userAdd:
permission: admin identity: E
encryptionKey: key.Enc.E permission: admin
encryptedReadKeys: [key.Read.1] encryptionKey: key.Enc.E
readKey: key.Read.1 encryptedReadKeys: [key.Read.1]
- id: B.1 readKey: key.Read.1
- id: B.1.1
identity: B identity: B
records: aclChanges:
- id: B.1.1 - userAdd:
aclChanges: identity: C
- userAdd: permission: admin
identity: C encryptionKey: key.Enc.C
permission: admin encryptedReadKeys: [ key.Read.1 ]
encryptionKey: key.Enc.C readKey: key.Read.1
encryptedReadKeys: [ key.Read.1 ] - id: B.1.2
readKey: key.Read.1 identity: B
- id: B.1.2 aclChanges:
aclChanges: - userAdd:
- userAdd: identity: F
identity: F permission: admin
permission: admin encryptionKey: key.Enc.F
encryptionKey: key.Enc.F encryptedReadKeys: [ key.Read.1 ]
encryptedReadKeys: [ key.Read.1 ] readKey: key.Read.1
readKey: key.Read.1
keys: keys:
Enc: Enc:
- A - A
@ -124,3 +124,7 @@ graph:
baseSnapshot: A.1.2 baseSnapshot: A.1.2
aclHeads: [A.1.2] aclHeads: [A.1.2]
treeHeads: [A.1.2] treeHeads: [A.1.2]
heads:
- "A.1.3"
- "B.1.2"

View File

@ -67,7 +67,7 @@ type ACLChange struct {
type PlainTextChange struct { type PlainTextChange struct {
TextAppend *struct { TextAppend *struct {
Text string `yaml:"text"` Text string `yaml:"text"`
} `yaml:"blockAdd"` } `yaml:"textAppend"`
} }
type YMLThread struct { type YMLThread struct {

View File

@ -6,7 +6,7 @@ import (
) )
func Test_YamlParse(t *testing.T) { func Test_YamlParse(t *testing.T) {
tb, _ := NewThreadBuilderFromFile("userjoinexample.yml") tb, _ := NewThreadBuilderFromFile("validsnapshotexample.yml")
gr, _ := tb.Graph() gr, _ := tb.Graph()
fmt.Println(gr) fmt.Println(gr)
} }