Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2577974
encryption-test.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
encryption-test.cpp
View Options
/*
* This file is part of libkazv.
* SPDX-FileCopyrightText: 2021-2023 tusooa <tusooa@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include
<libkazv-config.hpp>
#include
<catch2/catch_all.hpp>
#include
<client-model.hpp>
#include
"client-test-util.hpp"
#include
"factory.hpp"
using
namespace
Kazv
::
Factory
;
TEST_CASE
(
"PrepareForSharingRoomKeyAction: adds the encrypted event to pending events"
,
"[client][encryption]"
)
{
ClientModel
m
;
m
.
crypto
=
Crypto
(
RandomTag
{},
genRandomData
(
Crypto
::
constructRandomSize
()));
RoomModel
room
;
room
.
encrypted
=
true
;
room
.
roomId
=
"!exampleroomid:example.com"
;
m
.
roomList
.
rooms
=
m
.
roomList
.
rooms
.
set
(
"!exampleroomid:example.com"
,
room
);
auto
event
=
Event
{
json
{
{
"type"
,
"m.room_key"
},
{
"content"
,
{{
"some"
,
"thing"
}}},
}};
auto
[
next
,
dontCareEffect
]
=
ClientModel
::
update
(
m
,
PrepareForSharingRoomKeyAction
{
"!exampleroomid:example.com"
,
{},
event
,
{}});
auto
nextRoom
=
next
.
roomList
.
rooms
.
at
(
"!exampleroomid:example.com"
);
REQUIRE
(
nextRoom
.
pendingRoomKeyEvents
.
size
()
==
1
);
REQUIRE
(
nextRoom
.
pendingRoomKeyEvents
[
0
].
event
.
encrypted
());
}
TEST_CASE
(
"encrypted event will keep a copy of m.relates_to in plaintext"
,
"[client][encryption]"
)
{
auto
room
=
makeRoom
(
withRoomEncrypted
(
true
));
auto
client
=
makeClient
(
withCrypto
(
makeCrypto
())
|
withRoom
(
room
)
);
auto
eventToEncrypt
=
makeEvent
(
withEventType
(
"m.room.message"
)
|
withEventRelationship
(
"moe.kazv.mxc.custom-rel-type"
,
"$some-event-id"
)
);
auto
[
encryptedEvent
,
maybeKey
]
=
client
.
megOlmEncrypt
(
eventToEncrypt
,
room
.
roomId
,
0
,
genRandomData
(
EncryptMegOlmEventAction
::
maxRandomSize
())
);
// because we do not have session key yet, it should always be rotated
REQUIRE
(
maybeKey
.
has_value
());
// check we can still access relationship
REQUIRE
(
encryptedEvent
.
relationship
()
==
std
::
pair
<
std
::
string
,
std
::
string
>
{
"moe.kazv.mxc.custom-rel-type"
,
"$some-event-id"
});
// check that the relationship is also in plaintext
REQUIRE
(
encryptedEvent
.
originalJson
().
get
()[
"content"
][
"m.relates_to"
]
==
json
{
{
"rel_type"
,
"moe.kazv.mxc.custom-rel-type"
},
{
"event_id"
,
"$some-event-id"
},
});
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Tue, Jun 24, 5:58 PM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
234967
Default Alt Text
encryption-test.cpp (2 KB)
Attached To
Mode
rL libkazv
Attached
Detach File
Event Timeline
Log In to Comment