mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-07 21:47:02 +09:00
Implement iinvite join and tests
This commit is contained in:
parent
33a586c1af
commit
ab01e874bb
7 changed files with 207 additions and 146 deletions
|
@ -204,9 +204,10 @@ func (m *AclRoot) GetEncryptedOwnerMetadata() []byte {
|
|||
|
||||
// AclAccountInvite contains the public invite key, the private part of which is sent to the user directly
|
||||
type AclAccountInvite struct {
|
||||
InviteKey []byte `protobuf:"bytes,1,opt,name=inviteKey,proto3" json:"inviteKey,omitempty"`
|
||||
InviteType AclInviteType `protobuf:"varint,2,opt,name=inviteType,proto3,enum=aclrecord.AclInviteType" json:"inviteType,omitempty"`
|
||||
Permissions AclUserPermissions `protobuf:"varint,3,opt,name=permissions,proto3,enum=aclrecord.AclUserPermissions" json:"permissions,omitempty"`
|
||||
InviteKey []byte `protobuf:"bytes,1,opt,name=inviteKey,proto3" json:"inviteKey,omitempty"`
|
||||
InviteType AclInviteType `protobuf:"varint,2,opt,name=inviteType,proto3,enum=aclrecord.AclInviteType" json:"inviteType,omitempty"`
|
||||
Permissions AclUserPermissions `protobuf:"varint,3,opt,name=permissions,proto3,enum=aclrecord.AclUserPermissions" json:"permissions,omitempty"`
|
||||
EncryptedReadKey []byte `protobuf:"bytes,4,opt,name=encryptedReadKey,proto3" json:"encryptedReadKey,omitempty"`
|
||||
}
|
||||
|
||||
func (m *AclAccountInvite) Reset() { *m = AclAccountInvite{} }
|
||||
|
@ -271,6 +272,13 @@ func (m *AclAccountInvite) GetPermissions() AclUserPermissions {
|
|||
return AclUserPermissions_None
|
||||
}
|
||||
|
||||
func (m *AclAccountInvite) GetEncryptedReadKey() []byte {
|
||||
if m != nil {
|
||||
return m.EncryptedReadKey
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// AclAccountRequestJoin contains the reference to the invite record and the data of the person who wants to join, confirmed by the private invite key
|
||||
type AclAccountRequestJoin struct {
|
||||
InviteIdentity []byte `protobuf:"bytes,1,opt,name=inviteIdentity,proto3" json:"inviteIdentity,omitempty"`
|
||||
|
@ -1489,78 +1497,78 @@ func init() {
|
|||
}
|
||||
|
||||
var fileDescriptor_c8e9f754f34e929b = []byte{
|
||||
// 1124 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x5f, 0x6f, 0xdb, 0x54,
|
||||
0x14, 0xb7, 0x93, 0xa6, 0x69, 0x4e, 0x9a, 0xcc, 0xbd, 0x1b, 0x9b, 0xd7, 0x41, 0x08, 0x46, 0x9b,
|
||||
0xa2, 0x0a, 0xad, 0x28, 0xa8, 0xd3, 0x34, 0x01, 0x9d, 0x97, 0x4e, 0x4b, 0x36, 0x0d, 0xa6, 0xbb,
|
||||
0xb1, 0x21, 0x24, 0x90, 0x5c, 0xfb, 0x6a, 0x18, 0x9c, 0xeb, 0x60, 0xdf, 0x04, 0xe5, 0x5b, 0xf0,
|
||||
0x39, 0xe0, 0x95, 0x57, 0xde, 0x79, 0xe0, 0xa1, 0x8f, 0x08, 0xf1, 0x80, 0xda, 0x4f, 0xc0, 0x37,
|
||||
0x40, 0xf7, 0xda, 0xb1, 0xaf, 0x1d, 0x3b, 0x4d, 0x1f, 0xd0, 0x1e, 0xda, 0xf8, 0x9e, 0xff, 0xe7,
|
||||
0xfc, 0xce, 0xb9, 0xc7, 0x86, 0x8f, 0x6d, 0x7f, 0x3c, 0xf6, 0x69, 0x38, 0xb1, 0x6c, 0xb2, 0xef,
|
||||
0x1f, 0x7f, 0x47, 0x6c, 0xb6, 0x6f, 0xd9, 0x1e, 0xff, 0x0b, 0x88, 0xed, 0x07, 0xce, 0x24, 0xf0,
|
||||
0x99, 0xbf, 0x2f, 0xfe, 0x87, 0x29, 0xf5, 0xb6, 0x20, 0xa0, 0x46, 0x42, 0x30, 0xfe, 0xad, 0x40,
|
||||
0xdd, 0xb4, 0x3d, 0xec, 0xfb, 0x0c, 0xed, 0xc2, 0x96, 0xeb, 0x10, 0xca, 0x5c, 0x36, 0xd7, 0xd5,
|
||||
0xae, 0xda, 0xdb, 0xc6, 0xc9, 0x19, 0xbd, 0x0d, 0x8d, 0xb1, 0x15, 0x32, 0x12, 0x3c, 0x21, 0x73,
|
||||
0xbd, 0x22, 0x98, 0x29, 0x01, 0xe9, 0x50, 0x17, 0xa1, 0x8c, 0x1c, 0xbd, 0xda, 0x55, 0x7b, 0x0d,
|
||||
0xbc, 0x38, 0xa2, 0x3d, 0xd0, 0x08, 0xb5, 0x83, 0xf9, 0x84, 0x11, 0x07, 0x13, 0xcb, 0xe1, 0xea,
|
||||
0x1b, 0x42, 0x7d, 0x89, 0xce, 0x7d, 0x30, 0x77, 0x4c, 0x42, 0x66, 0x8d, 0x27, 0x7a, 0xad, 0xab,
|
||||
0xf6, 0xaa, 0x38, 0x25, 0xa0, 0x0f, 0x60, 0x67, 0x11, 0xcd, 0x73, 0xf7, 0x35, 0xb5, 0xd8, 0x34,
|
||||
0x20, 0xfa, 0xa6, 0x30, 0xb5, 0xcc, 0x40, 0xb7, 0xa0, 0x3d, 0x26, 0xcc, 0x72, 0x2c, 0x66, 0x3d,
|
||||
0x9b, 0x1e, 0x73, 0xaf, 0x75, 0x21, 0x9a, 0xa3, 0xa2, 0x7b, 0xa0, 0x27, 0x71, 0x3c, 0x5d, 0xb0,
|
||||
0x02, 0x77, 0xc6, 0x35, 0xb6, 0x84, 0x46, 0x29, 0x1f, 0xdd, 0x81, 0xab, 0x09, 0xef, 0xf3, 0x1f,
|
||||
0x29, 0x09, 0x16, 0x02, 0x7a, 0x43, 0x68, 0x96, 0x70, 0x8d, 0x5f, 0x54, 0xd0, 0x4c, 0xdb, 0x33,
|
||||
0x6d, 0xdb, 0x9f, 0x52, 0x36, 0xa2, 0x33, 0x97, 0x11, 0x9e, 0xbc, 0x2b, 0x9e, 0xb8, 0xe7, 0xa8,
|
||||
0xfa, 0x29, 0x01, 0xdd, 0x05, 0x88, 0x0e, 0x2f, 0xe6, 0x13, 0x22, 0xea, 0xdf, 0xee, 0xeb, 0xb7,
|
||||
0x53, 0x5c, 0x4d, 0xdb, 0x1b, 0x25, 0x7c, 0x2c, 0xc9, 0xa2, 0x43, 0x68, 0x4e, 0x48, 0x30, 0x76,
|
||||
0xc3, 0xd0, 0xf5, 0x69, 0x28, 0xe0, 0x69, 0xf7, 0xdf, 0xc9, 0xaa, 0x7e, 0x11, 0x92, 0xe0, 0x59,
|
||||
0x2a, 0x84, 0x65, 0x0d, 0xe3, 0x37, 0x15, 0xde, 0x4a, 0xa3, 0xc5, 0xe4, 0x87, 0x29, 0x09, 0xd9,
|
||||
0x63, 0xdf, 0xa5, 0xbc, 0xc6, 0x91, 0xa3, 0x51, 0xb6, 0x6b, 0x72, 0xd4, 0x54, 0x0e, 0x0b, 0x8f,
|
||||
0x23, 0x47, 0x24, 0xd0, 0xc0, 0x39, 0x2a, 0xba, 0x0b, 0xd7, 0xb2, 0x9a, 0x29, 0xce, 0x55, 0x61,
|
||||
0xb8, 0x8c, 0xcd, 0x3b, 0x77, 0x81, 0x6b, 0xdc, 0x5d, 0xc9, 0xd9, 0xf8, 0x5b, 0x85, 0x2b, 0xf9,
|
||||
0x6a, 0x8b, 0xf0, 0x57, 0xb5, 0xfb, 0x1b, 0x0d, 0xb9, 0x70, 0x68, 0x6a, 0xc5, 0x43, 0x63, 0xfc,
|
||||
0xa1, 0xc2, 0xb5, 0x25, 0x78, 0x4c, 0xdb, 0x26, 0x93, 0xd5, 0x03, 0xdd, 0x83, 0x4b, 0x41, 0x24,
|
||||
0x9c, 0x4b, 0x31, 0x4f, 0x2e, 0x8c, 0xa6, 0x5a, 0x32, 0xc2, 0xb9, 0x6e, 0xdb, 0xb8, 0x70, 0xb7,
|
||||
0x1d, 0x81, 0xbe, 0x94, 0xcd, 0x11, 0xb1, 0x3d, 0x97, 0x92, 0xa2, 0x90, 0xd5, 0xc2, 0x90, 0x8d,
|
||||
0xfb, 0x70, 0x35, 0x0f, 0x39, 0x26, 0x33, 0xff, 0x7b, 0x52, 0x00, 0xac, 0x5a, 0x04, 0xac, 0xf1,
|
||||
0x35, 0x5c, 0x36, 0x6d, 0xef, 0x61, 0x3e, 0xbf, 0x55, 0x15, 0x2d, 0xaa, 0x53, 0xa5, 0x04, 0xb5,
|
||||
0x6f, 0xe0, 0x46, 0x1a, 0x60, 0x5a, 0x8c, 0xc1, 0xb7, 0x16, 0x7d, 0x4d, 0x42, 0x74, 0x08, 0x75,
|
||||
0x3b, 0x7a, 0xd4, 0xd5, 0x6e, 0xb5, 0xd7, 0xec, 0xdf, 0xcc, 0x96, 0xb0, 0x44, 0x11, 0x2f, 0xb4,
|
||||
0x8c, 0x21, 0xb4, 0x53, 0xb1, 0xd0, 0x74, 0x1c, 0x74, 0x07, 0x1a, 0x96, 0xe3, 0xb8, 0x4c, 0xe0,
|
||||
0x12, 0x19, 0xd5, 0x0b, 0x8d, 0x9a, 0x8e, 0x83, 0x53, 0x51, 0xe3, 0x57, 0x15, 0x5a, 0x19, 0xe6,
|
||||
0xca, 0x1a, 0xe4, 0xf0, 0xaf, 0x5c, 0x14, 0xff, 0xcc, 0x58, 0x54, 0xd7, 0x18, 0x8b, 0x92, 0x5d,
|
||||
0x62, 0x1c, 0x14, 0x4c, 0xc5, 0xc0, 0xa2, 0x36, 0xf1, 0xb8, 0x8b, 0x20, 0x0b, 0x7e, 0x72, 0x36,
|
||||
0xe6, 0xb0, 0x5b, 0x5e, 0xde, 0xff, 0x35, 0x73, 0xe3, 0xe7, 0x8a, 0xd8, 0x0a, 0x71, 0x02, 0xb1,
|
||||
0xc7, 0xfb, 0xd0, 0xb4, 0xa2, 0x60, 0x9e, 0x90, 0xf9, 0x02, 0xb7, 0x4e, 0xd6, 0x6a, 0xbe, 0x49,
|
||||
0xb1, 0xac, 0x52, 0xb0, 0x08, 0x2b, 0x17, 0x5e, 0x84, 0xd5, 0x73, 0x16, 0xe1, 0x87, 0x70, 0x39,
|
||||
0x5d, 0x75, 0x5e, 0x0e, 0x9b, 0x22, 0x16, 0xfa, 0x74, 0xb1, 0xcf, 0x44, 0x5a, 0xb5, 0xb5, 0xd2,
|
||||
0x92, 0x34, 0x8c, 0xa9, 0xbc, 0x41, 0x31, 0x19, 0xfb, 0x33, 0x82, 0x3a, 0x00, 0x31, 0x1a, 0x6e,
|
||||
0x3c, 0x37, 0xdb, 0x58, 0xa2, 0x20, 0x13, 0x5a, 0x81, 0x5c, 0x5c, 0x51, 0x88, 0x66, 0xff, 0x46,
|
||||
0xd6, 0x6d, 0xa6, 0xfe, 0x38, 0xab, 0x61, 0x5c, 0x2f, 0xe8, 0xaa, 0xc8, 0xbb, 0xf1, 0x57, 0x1d,
|
||||
0x2e, 0x99, 0xb6, 0x37, 0xf0, 0x29, 0x23, 0x94, 0xbd, 0xb4, 0xbc, 0x29, 0x41, 0x07, 0xb0, 0x19,
|
||||
0xc5, 0x2c, 0xba, 0x65, 0xc9, 0x55, 0xe6, 0x7e, 0x1a, 0x2a, 0x38, 0x16, 0x46, 0x8f, 0x60, 0xdb,
|
||||
0x95, 0xee, 0xac, 0x38, 0xce, 0xf7, 0x56, 0x28, 0x47, 0x82, 0x43, 0x05, 0x67, 0x14, 0xd1, 0x11,
|
||||
0x34, 0x83, 0x74, 0x5f, 0x0b, 0x18, 0x9b, 0xfd, 0x6e, 0xa1, 0x1d, 0x69, 0xaf, 0x0f, 0x15, 0x2c,
|
||||
0xab, 0xa1, 0xc7, 0xbc, 0x6e, 0xd2, 0x5a, 0x11, 0xb8, 0x36, 0xfb, 0xc6, 0x2a, 0x3b, 0x91, 0xe4,
|
||||
0x50, 0xc1, 0x59, 0x55, 0xf4, 0x1c, 0xb4, 0x49, 0x6e, 0xaa, 0xc4, 0x66, 0x5b, 0xf7, 0x86, 0x1b,
|
||||
0x2a, 0x78, 0xc9, 0x00, 0x1a, 0x40, 0xcb, 0x92, 0x3b, 0x41, 0xbc, 0x15, 0x96, 0x55, 0x3b, 0x12,
|
||||
0xe1, 0x91, 0x65, 0x74, 0xb8, 0x91, 0x6c, 0x77, 0xd4, 0xcf, 0xed, 0x8e, 0x28, 0x3d, 0x79, 0x5c,
|
||||
0x9f, 0x42, 0x3b, 0xc8, 0xec, 0x2c, 0xf1, 0x0e, 0xd9, 0xec, 0xbf, 0xbf, 0xaa, 0x56, 0xb1, 0xe8,
|
||||
0x50, 0xc1, 0x39, 0x65, 0xf4, 0x25, 0x5c, 0xb1, 0x0a, 0x7a, 0x4d, 0xbc, 0x5e, 0x9e, 0x03, 0x40,
|
||||
0x92, 0x66, 0xa1, 0x05, 0xf4, 0x12, 0x76, 0xf2, 0x65, 0x0c, 0x75, 0x10, 0x66, 0x6f, 0xad, 0x05,
|
||||
0x44, 0x38, 0x54, 0xf0, 0xb2, 0x09, 0xf4, 0x49, 0x72, 0x5f, 0xf1, 0xa5, 0xa3, 0x37, 0x85, 0xc5,
|
||||
0xeb, 0x85, 0x16, 0xb9, 0x00, 0x6f, 0x35, 0x49, 0x5e, 0x6a, 0xb5, 0xe8, 0xae, 0xd6, 0xb7, 0xcf,
|
||||
0xcf, 0x34, 0x92, 0x94, 0x5a, 0x2d, 0xbe, 0xe6, 0xcd, 0xc5, 0x15, 0x23, 0x7a, 0xbf, 0x25, 0x0c,
|
||||
0xbd, 0xbb, 0x62, 0x86, 0xe2, 0xd6, 0x97, 0x94, 0x1e, 0xd4, 0xa1, 0x36, 0xe3, 0x83, 0x6c, 0x3c,
|
||||
0x14, 0x1f, 0x49, 0x47, 0x7c, 0x09, 0xdd, 0x03, 0xb0, 0x92, 0x31, 0x8f, 0x2f, 0xe4, 0xdd, 0xac,
|
||||
0x59, 0xf9, 0x0e, 0xc0, 0x92, 0xf4, 0xde, 0x81, 0x58, 0xa5, 0xe9, 0x8b, 0x3a, 0xda, 0x81, 0x56,
|
||||
0x9c, 0xc5, 0x0b, 0x9f, 0x7b, 0xd4, 0x14, 0x4e, 0x32, 0xe9, 0xdc, 0xa7, 0x64, 0x60, 0x51, 0x41,
|
||||
0x52, 0xf7, 0x5e, 0x01, 0x5a, 0x5e, 0x1e, 0x68, 0x0b, 0x36, 0x3e, 0xf3, 0x29, 0xd1, 0x14, 0xd4,
|
||||
0x80, 0x9a, 0xf8, 0xc0, 0xd0, 0x54, 0xfe, 0x68, 0x3a, 0x63, 0x97, 0x6a, 0x15, 0x04, 0xb0, 0xf9,
|
||||
0x2a, 0x70, 0x19, 0x09, 0xb4, 0x2a, 0x7f, 0xe6, 0x9d, 0x4b, 0x02, 0x6d, 0x83, 0x8b, 0x3c, 0xe2,
|
||||
0x1e, 0xb5, 0xda, 0x83, 0xc3, 0xdf, 0x4f, 0x3b, 0xea, 0xc9, 0x69, 0x47, 0xfd, 0xe7, 0xb4, 0xa3,
|
||||
0xfe, 0x74, 0xd6, 0x51, 0x4e, 0xce, 0x3a, 0xca, 0x9f, 0x67, 0x1d, 0xe5, 0xab, 0x9b, 0x6b, 0x7d,
|
||||
0x5f, 0x1e, 0x6f, 0x8a, 0x9f, 0x8f, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x5d, 0xff, 0xb8,
|
||||
0x8f, 0x0e, 0x00, 0x00,
|
||||
// 1125 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdf, 0x6e, 0xdb, 0x54,
|
||||
0x18, 0xb7, 0x93, 0xa6, 0x69, 0xbe, 0x34, 0x99, 0x7b, 0x36, 0x36, 0xaf, 0x83, 0x10, 0x8c, 0x36,
|
||||
0x45, 0x15, 0x5a, 0x51, 0x50, 0xa7, 0x69, 0x02, 0x3a, 0x2f, 0x9d, 0x96, 0x6c, 0x1a, 0x4c, 0x67,
|
||||
0x63, 0x43, 0x48, 0x20, 0xb9, 0xf6, 0xd1, 0x30, 0x38, 0xc7, 0xc1, 0x3e, 0x09, 0xca, 0x5b, 0xf0,
|
||||
0x1c, 0x5c, 0x73, 0xcb, 0x3d, 0x17, 0x5c, 0xf4, 0x0e, 0x84, 0xb8, 0x40, 0xed, 0x13, 0xf0, 0x06,
|
||||
0xe8, 0x1c, 0x3b, 0xf6, 0xb1, 0x63, 0xa7, 0xe9, 0x05, 0xda, 0x45, 0x1b, 0x9f, 0xef, 0x7c, 0xff,
|
||||
0x7f, 0xdf, 0x1f, 0x1b, 0x3e, 0xb6, 0xfd, 0xf1, 0xd8, 0xa7, 0xe1, 0xc4, 0xb2, 0xc9, 0xbe, 0x7f,
|
||||
0xfc, 0x1d, 0xb1, 0xd9, 0xbe, 0x65, 0x7b, 0xfc, 0x2f, 0x20, 0xb6, 0x1f, 0x38, 0x93, 0xc0, 0x67,
|
||||
0xfe, 0xbe, 0xf8, 0x1f, 0xa6, 0xd4, 0xdb, 0x82, 0x80, 0x1a, 0x09, 0xc1, 0xf8, 0xb7, 0x02, 0x75,
|
||||
0xd3, 0xf6, 0xb0, 0xef, 0x33, 0xb4, 0x0b, 0x5b, 0xae, 0x43, 0x28, 0x73, 0xd9, 0x5c, 0x57, 0xbb,
|
||||
0x6a, 0x6f, 0x1b, 0x27, 0x67, 0xf4, 0x36, 0x34, 0xc6, 0x56, 0xc8, 0x48, 0xf0, 0x84, 0xcc, 0xf5,
|
||||
0x8a, 0xb8, 0x4c, 0x09, 0x48, 0x87, 0xba, 0x70, 0x65, 0xe4, 0xe8, 0xd5, 0xae, 0xda, 0x6b, 0xe0,
|
||||
0xc5, 0x11, 0xed, 0x81, 0x46, 0xa8, 0x1d, 0xcc, 0x27, 0x8c, 0x38, 0x98, 0x58, 0x0e, 0x17, 0xdf,
|
||||
0x10, 0xe2, 0x4b, 0x74, 0x6e, 0x83, 0xb9, 0x63, 0x12, 0x32, 0x6b, 0x3c, 0xd1, 0x6b, 0x5d, 0xb5,
|
||||
0x57, 0xc5, 0x29, 0x01, 0x7d, 0x00, 0x3b, 0x0b, 0x6f, 0x9e, 0xbb, 0xaf, 0xa9, 0xc5, 0xa6, 0x01,
|
||||
0xd1, 0x37, 0x85, 0xaa, 0xe5, 0x0b, 0x74, 0x0b, 0xda, 0x63, 0xc2, 0x2c, 0xc7, 0x62, 0xd6, 0xb3,
|
||||
0xe9, 0x31, 0xb7, 0x5a, 0x17, 0xac, 0x39, 0x2a, 0xba, 0x07, 0x7a, 0xe2, 0xc7, 0xd3, 0xc5, 0x55,
|
||||
0xe0, 0xce, 0xb8, 0xc4, 0x96, 0x90, 0x28, 0xbd, 0x47, 0x77, 0xe0, 0x6a, 0x72, 0xf7, 0xf9, 0x8f,
|
||||
0x94, 0x04, 0x0b, 0x06, 0xbd, 0x21, 0x24, 0x4b, 0x6e, 0x8d, 0x3f, 0x54, 0xd0, 0x4c, 0xdb, 0x33,
|
||||
0x6d, 0xdb, 0x9f, 0x52, 0x36, 0xa2, 0x33, 0x97, 0x11, 0x1e, 0xbc, 0x2b, 0x9e, 0xb8, 0xe5, 0x28,
|
||||
0xfb, 0x29, 0x01, 0xdd, 0x05, 0x88, 0x0e, 0x2f, 0xe6, 0x13, 0x22, 0xf2, 0xdf, 0xee, 0xeb, 0xb7,
|
||||
0x53, 0x5c, 0x4d, 0xdb, 0x1b, 0x25, 0xf7, 0x58, 0xe2, 0x45, 0x87, 0xd0, 0x9c, 0x90, 0x60, 0xec,
|
||||
0x86, 0xa1, 0xeb, 0xd3, 0x50, 0xc0, 0xd3, 0xee, 0xbf, 0x93, 0x15, 0xfd, 0x22, 0x24, 0xc1, 0xb3,
|
||||
0x94, 0x09, 0xcb, 0x12, 0x17, 0x41, 0xd0, 0xf8, 0x55, 0x85, 0xb7, 0xd2, 0xc8, 0x30, 0xf9, 0x61,
|
||||
0x4a, 0x42, 0xf6, 0xd8, 0x77, 0x29, 0xc7, 0x23, 0x72, 0x6a, 0x94, 0xad, 0xb0, 0x1c, 0x35, 0xe5,
|
||||
0xc3, 0xc2, 0xbb, 0x91, 0x23, 0x82, 0x6d, 0xe0, 0x1c, 0x15, 0xdd, 0x85, 0x6b, 0x59, 0xc9, 0xb4,
|
||||
0x26, 0xaa, 0x42, 0x71, 0xd9, 0x35, 0xaf, 0xf2, 0x45, 0x0d, 0xc4, 0x71, 0x24, 0x67, 0xe3, 0x6f,
|
||||
0x15, 0xae, 0xe4, 0x91, 0x11, 0xee, 0xaf, 0x6a, 0x8d, 0x37, 0xea, 0x72, 0x21, 0x3c, 0xb5, 0x12,
|
||||
0x78, 0x7e, 0x57, 0xe1, 0xda, 0x12, 0x3c, 0xa6, 0x6d, 0x93, 0xc9, 0xea, 0xe6, 0xef, 0xc1, 0xa5,
|
||||
0x20, 0x62, 0xce, 0x85, 0x98, 0x27, 0x17, 0x7a, 0x53, 0x2d, 0x69, 0xf7, 0x5c, 0x65, 0x6e, 0x5c,
|
||||
0xb4, 0x32, 0x8d, 0x23, 0xd0, 0x97, 0xa2, 0x39, 0x22, 0xb6, 0xe7, 0x52, 0x52, 0xe4, 0xb2, 0x5a,
|
||||
0xe8, 0xb2, 0x71, 0x1f, 0xae, 0xe6, 0x21, 0xc7, 0x64, 0xe6, 0x7f, 0x4f, 0x0a, 0x80, 0x55, 0x8b,
|
||||
0x80, 0x35, 0xbe, 0x86, 0xcb, 0xa6, 0xed, 0x3d, 0xcc, 0xc7, 0xb7, 0x2a, 0xa3, 0x45, 0x79, 0xaa,
|
||||
0x94, 0xa0, 0xf6, 0x0d, 0xdc, 0x48, 0x1d, 0x4c, 0x93, 0x31, 0xf8, 0xd6, 0xa2, 0xaf, 0x49, 0x88,
|
||||
0x0e, 0xa1, 0x6e, 0x47, 0x8f, 0xba, 0xda, 0xad, 0xf6, 0x9a, 0xfd, 0x9b, 0xd9, 0x14, 0x96, 0x08,
|
||||
0xe2, 0x85, 0x94, 0x31, 0x84, 0x76, 0xca, 0x16, 0x9a, 0x8e, 0x83, 0xee, 0x40, 0xc3, 0x72, 0x1c,
|
||||
0x97, 0x09, 0x5c, 0x22, 0xa5, 0x7a, 0xa1, 0x52, 0xd3, 0x71, 0x70, 0xca, 0x6a, 0xfc, 0xa2, 0x42,
|
||||
0x2b, 0x73, 0xb9, 0x32, 0x07, 0x39, 0xfc, 0x2b, 0x17, 0x9e, 0x4c, 0x72, 0x5b, 0x54, 0xd7, 0x68,
|
||||
0x8b, 0xb2, 0xa9, 0x75, 0x50, 0xd0, 0x15, 0x03, 0x8b, 0xda, 0xc4, 0xe3, 0x26, 0x82, 0x2c, 0xf8,
|
||||
0xc9, 0xd9, 0x98, 0xc3, 0x6e, 0x79, 0x7a, 0xff, 0xd7, 0xc8, 0x8d, 0x9f, 0x2b, 0x62, 0x83, 0xc4,
|
||||
0x01, 0xc4, 0x16, 0xef, 0x43, 0xd3, 0x8a, 0x9c, 0x79, 0x42, 0xe6, 0x0b, 0xdc, 0x3a, 0x59, 0xad,
|
||||
0xf9, 0x22, 0xc5, 0xb2, 0x48, 0xc1, 0xd2, 0xac, 0x5c, 0x78, 0x69, 0x56, 0xcf, 0x59, 0x9a, 0x1f,
|
||||
0xc2, 0xe5, 0x74, 0x2d, 0x7a, 0x39, 0x6c, 0x8a, 0xae, 0xd0, 0xa7, 0x8b, 0xdd, 0x27, 0xc2, 0xaa,
|
||||
0xad, 0x15, 0x96, 0x24, 0x61, 0x4c, 0xe5, 0x6d, 0x8b, 0xc9, 0xd8, 0x9f, 0x11, 0xd4, 0x01, 0x88,
|
||||
0xd1, 0x70, 0xe3, 0xbe, 0xd9, 0xc6, 0x12, 0x05, 0x99, 0xd0, 0x0a, 0xe4, 0xe4, 0x8a, 0x44, 0x34,
|
||||
0xfb, 0x37, 0xb2, 0x66, 0x33, 0xf9, 0xc7, 0x59, 0x09, 0xe3, 0x7a, 0x41, 0x55, 0x45, 0xd6, 0x8d,
|
||||
0xbf, 0xea, 0x70, 0xc9, 0xb4, 0xbd, 0x81, 0x4f, 0x19, 0xa1, 0xec, 0xa5, 0xe5, 0x4d, 0x09, 0x3a,
|
||||
0x80, 0xcd, 0xc8, 0x67, 0x51, 0x2d, 0x4b, 0xa6, 0x32, 0xf3, 0x69, 0xa8, 0xe0, 0x98, 0x19, 0x3d,
|
||||
0x82, 0x6d, 0x57, 0x9a, 0x59, 0xb1, 0x9f, 0xef, 0xad, 0x10, 0x8e, 0x18, 0x87, 0x0a, 0xce, 0x08,
|
||||
0xa2, 0x23, 0x68, 0x06, 0xe9, 0xbe, 0x16, 0x30, 0x36, 0xfb, 0xdd, 0x42, 0x3d, 0xd2, 0x5e, 0x1f,
|
||||
0x2a, 0x58, 0x16, 0x43, 0x8f, 0x79, 0xde, 0xa4, 0xb5, 0x22, 0x70, 0x6d, 0xf6, 0x8d, 0x55, 0x7a,
|
||||
0x22, 0xce, 0xa1, 0x82, 0xb3, 0xa2, 0xe8, 0x39, 0x68, 0x93, 0x5c, 0x57, 0x89, 0xcd, 0xb6, 0xee,
|
||||
0x84, 0x1b, 0x2a, 0x78, 0x49, 0x01, 0x1a, 0x40, 0xcb, 0x92, 0x2b, 0x41, 0xbc, 0x41, 0x96, 0x65,
|
||||
0x3b, 0x62, 0xe1, 0x9e, 0x65, 0x64, 0xb8, 0x92, 0x6c, 0x75, 0xd4, 0xcf, 0xad, 0x8e, 0x28, 0x3c,
|
||||
0xb9, 0x5d, 0x9f, 0x42, 0x3b, 0xc8, 0xec, 0x2c, 0xf1, 0xbe, 0xd9, 0xec, 0xbf, 0xbf, 0x2a, 0x57,
|
||||
0x31, 0xeb, 0x50, 0xc1, 0x39, 0x61, 0xf4, 0x25, 0x5c, 0xb1, 0x0a, 0x6a, 0x4d, 0xbc, 0x8a, 0x9e,
|
||||
0x03, 0x40, 0x12, 0x66, 0xa1, 0x06, 0xf4, 0x12, 0x76, 0xf2, 0x69, 0x0c, 0x75, 0x10, 0x6a, 0x6f,
|
||||
0xad, 0x05, 0x44, 0x38, 0x54, 0xf0, 0xb2, 0x0a, 0xf4, 0x49, 0x32, 0xaf, 0xf8, 0xd2, 0xd1, 0x9b,
|
||||
0x42, 0xe3, 0xf5, 0x42, 0x8d, 0x9c, 0x81, 0x97, 0x9a, 0xc4, 0x2f, 0x95, 0x5a, 0x34, 0xab, 0xf5,
|
||||
0xed, 0xf3, 0x23, 0x8d, 0x38, 0xa5, 0x52, 0x8b, 0xc7, 0xbc, 0xb9, 0x18, 0x31, 0xa2, 0xf6, 0x5b,
|
||||
0x42, 0xd1, 0xbb, 0x2b, 0x7a, 0x28, 0x2e, 0x7d, 0x49, 0xe8, 0x41, 0x1d, 0x6a, 0x33, 0xde, 0xc8,
|
||||
0xc6, 0x43, 0xf1, 0x41, 0x75, 0xc4, 0x97, 0xd0, 0x3d, 0x00, 0x2b, 0x69, 0xf3, 0x78, 0x20, 0xef,
|
||||
0x66, 0xd5, 0xca, 0x33, 0x00, 0x4b, 0xdc, 0x7b, 0x07, 0x62, 0x95, 0xa6, 0x2f, 0xf5, 0x68, 0x07,
|
||||
0x5a, 0x71, 0x14, 0x2f, 0x7c, 0x6e, 0x51, 0x53, 0x38, 0xc9, 0xa4, 0x73, 0x9f, 0x92, 0x81, 0x45,
|
||||
0x05, 0x49, 0xdd, 0x7b, 0x05, 0x68, 0x79, 0x79, 0xa0, 0x2d, 0xd8, 0xf8, 0xcc, 0xa7, 0x44, 0x53,
|
||||
0x50, 0x03, 0x6a, 0xe2, 0x63, 0x44, 0x53, 0xf9, 0xa3, 0xe9, 0x8c, 0x5d, 0xaa, 0x55, 0x10, 0xc0,
|
||||
0xe6, 0xab, 0xc0, 0x65, 0x24, 0xd0, 0xaa, 0xfc, 0x99, 0x57, 0x2e, 0x09, 0xb4, 0x0d, 0xce, 0xf2,
|
||||
0x88, 0x5b, 0xd4, 0x6a, 0x0f, 0x0e, 0x7f, 0x3b, 0xed, 0xa8, 0x27, 0xa7, 0x1d, 0xf5, 0x9f, 0xd3,
|
||||
0x8e, 0xfa, 0xd3, 0x59, 0x47, 0x39, 0x39, 0xeb, 0x28, 0x7f, 0x9e, 0x75, 0x94, 0xaf, 0x6e, 0xae,
|
||||
0xf5, 0x2d, 0x7a, 0xbc, 0x29, 0x7e, 0x3e, 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x75, 0x08, 0x98,
|
||||
0x61, 0xbb, 0x0e, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *AclRoot) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -1667,6 +1675,13 @@ func (m *AclAccountInvite) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if len(m.EncryptedReadKey) > 0 {
|
||||
i -= len(m.EncryptedReadKey)
|
||||
copy(dAtA[i:], m.EncryptedReadKey)
|
||||
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.EncryptedReadKey)))
|
||||
i--
|
||||
dAtA[i] = 0x22
|
||||
}
|
||||
if m.Permissions != 0 {
|
||||
i = encodeVarintAclrecord(dAtA, i, uint64(m.Permissions))
|
||||
i--
|
||||
|
@ -2682,6 +2697,10 @@ func (m *AclAccountInvite) Size() (n int) {
|
|||
if m.Permissions != 0 {
|
||||
n += 1 + sovAclrecord(uint64(m.Permissions))
|
||||
}
|
||||
l = len(m.EncryptedReadKey)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovAclrecord(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
|
@ -3579,6 +3598,40 @@ func (m *AclAccountInvite) Unmarshal(dAtA []byte) error {
|
|||
break
|
||||
}
|
||||
}
|
||||
case 4:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field EncryptedReadKey", wireType)
|
||||
}
|
||||
var byteLen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowAclrecord
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
byteLen |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if byteLen < 0 {
|
||||
return ErrInvalidLengthAclrecord
|
||||
}
|
||||
postIndex := iNdEx + byteLen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthAclrecord
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.EncryptedReadKey = append(m.EncryptedReadKey[:0], dAtA[iNdEx:postIndex]...)
|
||||
if m.EncryptedReadKey == nil {
|
||||
m.EncryptedReadKey = []byte{}
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipAclrecord(dAtA[iNdEx:])
|
||||
|
|
|
@ -20,6 +20,7 @@ message AclAccountInvite {
|
|||
bytes inviteKey = 1;
|
||||
AclInviteType inviteType = 2;
|
||||
AclUserPermissions permissions = 3;
|
||||
bytes encryptedReadKey = 4;
|
||||
}
|
||||
|
||||
enum AclInviteType {
|
||||
|
|
|
@ -28,7 +28,6 @@ type RequestJoinPayload struct {
|
|||
|
||||
type InviteJoinPayload struct {
|
||||
InviteKey crypto.PrivKey
|
||||
ReadKey crypto.SymKey
|
||||
Metadata []byte
|
||||
}
|
||||
|
||||
|
@ -89,6 +88,7 @@ type AclRecordBuilder interface {
|
|||
BuildInvite() (res InviteResult, err error)
|
||||
BuildInviteAnyone() (res InviteResult, err error)
|
||||
BuildInviteRevoke(inviteRecordId string) (rawRecord *consensusproto.RawRecord, err error)
|
||||
BuildInviteJoin(payload InviteJoinPayload) (rawRecord *consensusproto.RawRecord, err error)
|
||||
BuildRequestJoin(payload RequestJoinPayload) (rawRecord *consensusproto.RawRecord, err error)
|
||||
BuildRequestAccept(payload RequestAcceptPayload) (rawRecord *consensusproto.RawRecord, err error)
|
||||
BuildRequestDecline(requestRecordId string) (rawRecord *consensusproto.RawRecord, err error)
|
||||
|
@ -334,10 +334,23 @@ func (a *aclRecordBuilder) BuildInviteAnyone() (res InviteResult, err error) {
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
curReadKey, err := a.state.CurrentReadKey()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
raw, err := curReadKey.Marshall()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
encReadKey, err := pubKey.Encrypt(raw)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
inviteRec := &aclrecordproto.AclAccountInvite{
|
||||
InviteKey: invitePubKey,
|
||||
InviteType: aclrecordproto.AclInviteType_AnyoneCanJoin,
|
||||
Permissions: aclrecordproto.AclUserPermissions_Reader,
|
||||
InviteKey: invitePubKey,
|
||||
InviteType: aclrecordproto.AclInviteType_AnyoneCanJoin,
|
||||
Permissions: aclrecordproto.AclUserPermissions_Reader,
|
||||
EncryptedReadKey: encReadKey,
|
||||
}
|
||||
content := &aclrecordproto.AclContentValue{Value: &aclrecordproto.AclContentValue_Invite{Invite: inviteRec}}
|
||||
rawRec, err := a.buildRecord(content)
|
||||
|
@ -463,7 +476,11 @@ func (a *aclRecordBuilder) BuildInviteJoin(payload InviteJoinPayload) (rawRecord
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
readKey, err := payload.ReadKey.Marshall()
|
||||
key, err := a.state.DecryptInvite(payload.InviteKey)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
readKey, err := key.Marshall()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -55,9 +55,10 @@ type AclKeys struct {
|
|||
}
|
||||
|
||||
type Invite struct {
|
||||
Key crypto.PubKey
|
||||
Type aclrecordproto.AclInviteType
|
||||
Permissions AclPermissions
|
||||
Key crypto.PubKey
|
||||
Type aclrecordproto.AclInviteType
|
||||
Permissions AclPermissions
|
||||
encryptedKey []byte
|
||||
}
|
||||
|
||||
type AclState struct {
|
||||
|
@ -250,69 +251,20 @@ func (st *AclState) RequestIds() []string {
|
|||
return requests
|
||||
}
|
||||
|
||||
func (st *AclState) DecryptInvite(invitePk crypto.PrivKey) (keys AclKeys, err error) {
|
||||
func (st *AclState) DecryptInvite(invitePk crypto.PrivKey) (key crypto.SymKey, err error) {
|
||||
if invitePk == nil {
|
||||
return AclKeys{}, ErrNoReadKey
|
||||
return nil, ErrNoReadKey
|
||||
}
|
||||
var recId string
|
||||
for id, invite := range st.invites {
|
||||
for _, invite := range st.invites {
|
||||
if invite.Key.Equals(invitePk.GetPublic()) {
|
||||
recId = id
|
||||
}
|
||||
}
|
||||
if recId == "" {
|
||||
return AclKeys{}, ErrNoSuchInvite
|
||||
}
|
||||
currentKey := st.CurrentReadKeyId()
|
||||
currentRec, err := st.list.Get(currentKey)
|
||||
if err != nil {
|
||||
return AclKeys{}, err
|
||||
}
|
||||
model, ok := currentRec.Model.(*aclrecordproto.AclData)
|
||||
if !ok {
|
||||
return AclKeys{}, ErrNoReadKey
|
||||
}
|
||||
var value *aclrecordproto.AclReadKeyChange
|
||||
for _, ch := range model.GetAclContent() {
|
||||
if ch.GetAccountRemove() != nil {
|
||||
value = ch.GetReadKeyChange()
|
||||
break
|
||||
} else if ch.GetReadKeyChange() != nil {
|
||||
value = ch.GetReadKeyChange()
|
||||
break
|
||||
}
|
||||
}
|
||||
if value == nil {
|
||||
return AclKeys{}, ErrNoReadKey
|
||||
}
|
||||
mkPubKey, err := st.keyStore.PubKeyFromProto(value.MetadataPubKey)
|
||||
if err != nil {
|
||||
return AclKeys{}, err
|
||||
}
|
||||
keys = AclKeys{
|
||||
MetadataPubKey: mkPubKey,
|
||||
}
|
||||
for _, key := range value.InviteKeys {
|
||||
invKey, err := st.keyStore.PubKeyFromProto(key.Identity)
|
||||
if err != nil {
|
||||
return AclKeys{}, err
|
||||
}
|
||||
if invitePk.Equals(invKey) {
|
||||
keys.ReadKey, err = st.unmarshallDecryptReadKey(key.EncryptedReadKey, invitePk.Decrypt)
|
||||
res, err := st.unmarshallDecryptReadKey(invite.encryptedKey, invitePk.Decrypt)
|
||||
if err != nil {
|
||||
return AclKeys{}, err
|
||||
return nil, err
|
||||
}
|
||||
break
|
||||
return res, nil
|
||||
}
|
||||
}
|
||||
if keys.ReadKey == nil {
|
||||
return AclKeys{}, ErrNoReadKey
|
||||
}
|
||||
keys.MetadataPrivKey, err = st.unmarshallDecryptPrivKey(value.EncryptedMetadataPrivKey, keys.ReadKey.Decrypt)
|
||||
if err != nil {
|
||||
return AclKeys{}, err
|
||||
}
|
||||
return keys, nil
|
||||
return nil, ErrNoSuchInvite
|
||||
}
|
||||
|
||||
func (st *AclState) ApplyRecord(record *AclRecord) (err error) {
|
||||
|
@ -544,9 +496,10 @@ func (st *AclState) applyInvite(ch *aclrecordproto.AclAccountInvite, record *Acl
|
|||
return err
|
||||
}
|
||||
st.invites[record.Id] = Invite{
|
||||
Key: inviteKey,
|
||||
Type: ch.InviteType,
|
||||
Permissions: AclPermissions(ch.Permissions),
|
||||
Key: inviteKey,
|
||||
Type: ch.InviteType,
|
||||
Permissions: AclPermissions(ch.Permissions),
|
||||
encryptedKey: ch.EncryptedReadKey,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -677,7 +630,7 @@ func (st *AclState) applyRequestAccept(ch *aclrecordproto.AclAccountRequestAccep
|
|||
return st.unpackAllKeys(ch.EncryptedReadKey)
|
||||
}
|
||||
|
||||
func (st *AclState) applyInviteJoin(ch *aclrecordproto.AclInviteJoin, record *AclRecord) error {
|
||||
func (st *AclState) applyInviteJoin(ch *aclrecordproto.AclAccountInviteJoin, record *AclRecord) error {
|
||||
err := st.contentValidator.ValidateInviteJoin(ch, record.Identity)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -716,7 +669,10 @@ func (st *AclState) applyInviteJoin(ch *aclrecordproto.AclInviteJoin, record *Ac
|
|||
}),
|
||||
}
|
||||
}
|
||||
return st.unpackAllKeys(ch.EncryptedReadKey)
|
||||
if st.pubKey.Equals(identity) {
|
||||
return st.unpackAllKeys(ch.EncryptedReadKey)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (st *AclState) unpackAllKeys(rk []byte) error {
|
||||
|
@ -870,6 +826,19 @@ func (st *AclState) applyReadKeyChange(ch *aclrecordproto.AclReadKeyChange, reco
|
|||
aclKeys.ReadKey = res
|
||||
}
|
||||
}
|
||||
for _, encKey := range ch.InviteKeys {
|
||||
invKey, err := st.keyStore.PubKeyFromProto(encKey.Identity)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for key, invite := range st.invites {
|
||||
if invite.Key.Equals(invKey) {
|
||||
invite.encryptedKey = encKey.EncryptedReadKey
|
||||
st.invites[key] = invite
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if aclKeys.ReadKey != nil {
|
||||
metadataKey, err := st.unmarshallDecryptPrivKey(ch.EncryptedMetadataPrivKey, aclKeys.ReadKey.Decrypt)
|
||||
if err != nil {
|
||||
|
|
|
@ -498,6 +498,21 @@ func (a *AclTestExecutor) Execute(cmd string) (err error) {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
case "invite_join":
|
||||
invite := a.invites[args[0]]
|
||||
inviteJoin, err := acl.RecordBuilder().BuildInviteJoin(InviteJoinPayload{
|
||||
InviteKey: invite,
|
||||
Metadata: []byte(account),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = addRec(WrapAclRecord(inviteJoin))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
a.expectedAccounts[account].status = StatusActive
|
||||
a.expectedAccounts[account].perms = AclPermissions(aclrecordproto.AclUserPermissions_Reader)
|
||||
case "remove":
|
||||
identities := strings.Split(args[0], ",")
|
||||
var pubKeys []crypto.PubKey
|
||||
|
|
|
@ -128,6 +128,9 @@ func TestAclExecutor(t *testing.T) {
|
|||
{"a.changes::guest,none", ErrInsufficientPermissions},
|
||||
// can't change permission of existing user to guest, should be only possible to create it with add
|
||||
{"a.changes::r,g", ErrInsufficientPermissions},
|
||||
{"a.invite_anyone::invAnyoneId", nil},
|
||||
{"new.invite_join::invAnyoneId", nil},
|
||||
{"new1.invite_join::invAnyoneId", nil},
|
||||
}
|
||||
for _, cmd := range cmds {
|
||||
err := a.Execute(cmd.cmd)
|
||||
|
|
|
@ -13,7 +13,7 @@ type ContentValidator interface {
|
|||
ValidatePermissionChanges(ch *aclrecordproto.AclAccountPermissionChanges, authorIdentity crypto.PubKey) (err error)
|
||||
ValidateAccountsAdd(ch *aclrecordproto.AclAccountsAdd, authorIdentity crypto.PubKey) (err error)
|
||||
ValidateInvite(ch *aclrecordproto.AclAccountInvite, authorIdentity crypto.PubKey) (err error)
|
||||
ValidateInviteJoin(ch *aclrecordproto.AclInviteJoin, authorIdentity crypto.PubKey) (err error)
|
||||
ValidateInviteJoin(ch *aclrecordproto.AclAccountInviteJoin, authorIdentity crypto.PubKey) (err error)
|
||||
ValidateInviteRevoke(ch *aclrecordproto.AclAccountInviteRevoke, authorIdentity crypto.PubKey) (err error)
|
||||
ValidateRequestJoin(ch *aclrecordproto.AclAccountRequestJoin, authorIdentity crypto.PubKey) (err error)
|
||||
ValidateRequestAccept(ch *aclrecordproto.AclAccountRequestAccept, authorIdentity crypto.PubKey) (err error)
|
||||
|
@ -69,7 +69,7 @@ func (c *contentValidator) ValidateAccountsAdd(ch *aclrecordproto.AclAccountsAdd
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *contentValidator) ValidateInviteJoin(ch *aclrecordproto.AclInviteJoin, authorIdentity crypto.PubKey) (err error) {
|
||||
func (c *contentValidator) ValidateInviteJoin(ch *aclrecordproto.AclAccountInviteJoin, authorIdentity crypto.PubKey) (err error) {
|
||||
if !c.aclState.Permissions(authorIdentity).NoPermissions() {
|
||||
return ErrInsufficientPermissions
|
||||
}
|
||||
|
@ -104,6 +104,9 @@ func (c *contentValidator) ValidateInviteJoin(ch *aclrecordproto.AclInviteJoin,
|
|||
if len(ch.Metadata) > MaxMetadataLen {
|
||||
return ErrMetadataTooLarge
|
||||
}
|
||||
if ch.EncryptedReadKey == nil {
|
||||
return ErrIncorrectReadKey
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue