ACL Payload validation fix

This commit is contained in:
Dmitry Bilienko 2023-04-18 11:37:46 +05:00 committed by Mikhail Iudin
parent 4773eb1d06
commit a2e6fccac6
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
2 changed files with 13 additions and 9 deletions

View File

@ -88,7 +88,6 @@ func ValidateSpaceStorageCreatePayload(payload SpaceStorageCreatePayload) (err e
err = ErrIncorrectSpaceHeader err = ErrIncorrectSpaceHeader
return return
} }
return return
} }
@ -148,7 +147,7 @@ func validateCreateSpaceAclPayload(rawWithId *aclrecordproto.RawAclRecordWithId)
if err != nil { if err != nil {
return return
} }
payloadIdentity, err := crypto.UnmarshalEd25519PublicKey(aclRoot.Identity) payloadIdentity, err := crypto.UnmarshalEd25519PublicKeyProto(aclRoot.Identity)
if err != nil { if err != nil {
return return
} }
@ -161,8 +160,11 @@ func validateCreateSpaceAclPayload(rawWithId *aclrecordproto.RawAclRecordWithId)
if err != nil { if err != nil {
return return
} }
rawIdentity, err := payloadIdentity.Raw()
res, err = masterKey.Verify(aclRoot.Identity, aclRoot.IdentitySignature) if err != nil {
return
}
res, err = masterKey.Verify(rawIdentity, aclRoot.IdentitySignature)
if err != nil || !res { if err != nil || !res {
err = ErrIncorrectSpaceHeader err = ErrIncorrectSpaceHeader
return return

View File

@ -215,12 +215,13 @@ func TestFailedAclPayloadSpace_IncorrectSignature(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
rawIdentity, err := accountKeys.SignKey.GetPublic().Raw() rawIdentity, err := accountKeys.SignKey.GetPublic().Raw()
require.NoError(t, err) require.NoError(t, err)
identity, err := accountKeys.SignKey.GetPublic().Marshall()
identitySignature, err := masterKey.Sign(rawIdentity) identitySignature, err := masterKey.Sign(rawIdentity)
require.NoError(t, err) require.NoError(t, err)
rawMasterKey, err := masterKey.GetPublic().Raw() rawMasterKey, err := masterKey.GetPublic().Raw()
require.NoError(t, err) require.NoError(t, err)
aclRoot := aclrecordproto.AclRoot{ aclRoot := aclrecordproto.AclRoot{
Identity: rawIdentity, Identity: identity,
MasterKey: rawMasterKey, MasterKey: rawMasterKey,
SpaceId: "SpaceId", SpaceId: "SpaceId",
EncryptedReadKey: readKey, EncryptedReadKey: readKey,
@ -264,7 +265,7 @@ func TestFailedAclPayloadSpace_IncorrectIdentitySignature(t *testing.T) {
return return
} }
masterPubKey := masterKey.GetPublic() masterPubKey := masterKey.GetPublic()
rawIdentity, err := accountKeys.SignKey.GetPublic().Raw() identity, err := accountKeys.SignKey.GetPublic().Marshall()
if err != nil { if err != nil {
return return
} }
@ -273,12 +274,12 @@ func TestFailedAclPayloadSpace_IncorrectIdentitySignature(t *testing.T) {
return return
} }
aclRoot := aclrecordproto.AclRoot{ aclRoot := aclrecordproto.AclRoot{
Identity: rawIdentity, Identity: identity,
MasterKey: rawMasterKey, MasterKey: rawMasterKey,
SpaceId: spaceId, SpaceId: spaceId,
EncryptedReadKey: readKey, EncryptedReadKey: readKey,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
IdentitySignature: rawIdentity, IdentitySignature: identity,
} }
marshalled, err := aclRoot.Marshal() marshalled, err := aclRoot.Marshal()
if err != nil { if err != nil {
@ -550,6 +551,7 @@ func rawAclWithId(accountKeys *accountdata.AccountKeys, spaceId string) (aclHead
return return
} }
masterKey, _, err := crypto.GenerateRandomEd25519KeyPair() masterKey, _, err := crypto.GenerateRandomEd25519KeyPair()
identity, err := accountKeys.SignKey.GetPublic().Marshall()
if err != nil { if err != nil {
return return
} }
@ -567,7 +569,7 @@ func rawAclWithId(accountKeys *accountdata.AccountKeys, spaceId string) (aclHead
return return
} }
aclRoot := aclrecordproto.AclRoot{ aclRoot := aclrecordproto.AclRoot{
Identity: rawIdentity, Identity: identity,
MasterKey: rawMasterKey, MasterKey: rawMasterKey,
SpaceId: spaceId, SpaceId: spaceId,
EncryptedReadKey: readKey, EncryptedReadKey: readKey,