Skip to content

Commit

Permalink
feat: OrbitDB Berty Member Store + group signed entries access contro…
Browse files Browse the repository at this point in the history
…ller
  • Loading branch information
glouvigny committed Nov 26, 2019
1 parent 84573be commit 9ba59b0
Show file tree
Hide file tree
Showing 39 changed files with 4,835 additions and 1,132 deletions.
7 changes: 6 additions & 1 deletion api/errcode.proto
Expand Up @@ -45,11 +45,16 @@ enum ErrCode {
ErrHandshakeSessionInvalid = 2013;
ErrHandshakeKeyNotInSigChain = 2014;
ErrHandshakeDecrypt = 2015;
ErrGroupMemberLogEventOpen = 2020;
ErrGroupMemberLogEventSignature = 2021;
ErrGroupMemberLogWrongInviter = 2022;
ErrGroupMemberUnknownGroupID = 2023;
ErrGroupMemberMissingSecrets = 2024;

//
// Chat Bridge (starting at 3001)
//

ErrBridgeInterrupted = 3001;
ErrBridgeNotRunning = 3002;
}
}
19 changes: 0 additions & 19 deletions api/go-internal/log_entry_member.proto

This file was deleted.

31 changes: 0 additions & 31 deletions api/go-internal/log_entry_message.proto

This file was deleted.

19 changes: 0 additions & 19 deletions api/go-internal/log_entry_secret.proto

This file was deleted.

21 changes: 0 additions & 21 deletions api/go-internal/log_entry_setting.proto

This file was deleted.

4 changes: 2 additions & 2 deletions api/go-internal/protocolmodel.proto
Expand Up @@ -24,7 +24,7 @@ message GroupInfo { // group clashes with reserved SQL keyword
// - Group details/meta

bytes group_pub_key = 1 [(gogoproto.moretags) = "gorm:\"primary_key\""];
bytes shared_secret = 2;
bytes group_signing_key = 2;
bytes metadata = 3;
GroupAudience audience = 4 [(gogoproto.moretags) = "gorm:\"index\""];
uint32 version = 5;
Expand Down Expand Up @@ -61,7 +61,7 @@ message GroupIncomingRequest {
bytes inviter_member_pub_key = 2;
bytes invitation_sig = 3;
bytes invitation_priv_key = 4;
bytes group_shared_secret = 5;
bytes group_signing_key = 5;
bytes group_version = 6;
bytes essential_metadata = 7;
bytes inviter_contact_pub_key = 9;
Expand Down
78 changes: 78 additions & 0 deletions api/go-internal/store_entry.proto
@@ -0,0 +1,78 @@
syntax = "proto3";

package berty.group;

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option go_package = "berty.tech/go/internal/group";
option (gogoproto.marshaler_all) = true;
option (gogoproto.unmarshaler_all) = true;
option (gogoproto.sizer_all) = true;

message StoreEncryptedEntry {
bytes encrypted_payload = 1;
bytes signature = 2;
}

message MemberEntryPayload {
bytes member_pub_key = 1;
bytes member_pub_key_signature = 2; // Signed by invitation_priv_key
bytes member_device_pub_key = 3;
bytes member_device_pub_key_signature = 4; // Signed by member_priv_key

bytes inviter_device_pub_key = 5;
bytes invitation_pub_key = 6;
bytes invitation_pub_key_signature = 7; // Signed by inviter_member_priv_key
}

message MessageEntryEnvelope {
uint64 counter = 1;
bytes encrypted_payload = 2;
bytes signature = 3; // Signed with member_device_pub_key of author
}

message MessageEntryPayload {
enum PayloadType {
PayloadTypeUnknown = 0;
PayloadTypeMessage = 1;
PayloadTypeInvitation = 2;
}

PayloadType type = 1;
bytes message_body = 2;
Invitation invitation = 3;
}

message Invitation {
bytes inviter_device_pub_key = 1;
bytes invitation_priv_key = 2; // This will contains only the private part of the invitation key, as the other part can be calculated (we dont expect much invitations being received)
bytes invitation_pub_key_signature = 3; // Signed by inviter_member_priv_key

uint32 group_version = 4;
bytes group_pub_key = 5;
bytes group_signing_key = 6; // This will contains only the private part of the signing key, same logic as invitation_priv_key above
}

message SecretEntryPayload {
bytes dest_member_pub_key = 1;
bytes sender_device_pub_key = 2;
bytes encrypted_device_secret = 3;
}

message DeviceSecret {
bytes derivation_state = 1;
uint64 counter = 2;
}

message SettingsEntryPayload {
enum PayloadType {
PayloadTypeUnknown = 0;
PayloadTypeGroupSetting = 1;
PayloadTypeMemberSetting = 2;
}

PayloadType type = 1;
bytes member_pub_key = 2;
bytes key = 3;
bytes value = 4;
}
9 changes: 3 additions & 6 deletions go/gen.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 9 additions & 4 deletions go/go.mod

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9ba59b0

Please sign in to comment.