Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F7890053
crypto-p.hpp
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
crypto-p.hpp
View Options
/*
* Copyright (C) 2021 Tusooa Zhu <tusooa@vista.aero>
*
* This file is part of libkazv.
*
* libkazv is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* libkazv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with libkazv. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#include
<libkazv-config.hpp>
#include
<olm/olm.h>
#include
<unordered_map>
#include
"crypto.hpp"
#include
"crypto-util.hpp"
#include
"session.hpp"
#include
"inbound-group-session.hpp"
#include
"outbound-group-session.hpp"
namespace
Kazv
{
using
SessionList
=
std
::
vector
<
Session
>
;
struct
CryptoPrivate
{
CryptoPrivate
();
CryptoPrivate
(
const
CryptoPrivate
&
that
);
~
CryptoPrivate
();
ByteArray
accountData
;
OlmAccount
*
account
;
immer
::
map
<
std
::
string
/* algorithm */
,
int
>
uploadedOneTimeKeysCount
;
int
numUnpublishedKeys
{
0
};
std
::
unordered_map
<
std
::
string
/* theirCurve25519IdentityKey */
,
Session
>
knownSessions
;
std
::
unordered_map
<
KeyOfGroupSession
,
InboundGroupSession
>
inboundGroupSessions
;
std
::
unordered_map
<
std
::
string
/* roomId */
,
OutboundGroupSession
>
outboundGroupSessions
;
ByteArray
utilityData
;
OlmUtility
*
utility
;
std
::
size_t
checkUtilError
(
std
::
size_t
code
)
const
;
std
::
string
pickle
()
const
;
void
unpickle
(
std
::
string
data
);
ByteArray
identityKeys
();
std
::
string
ed25519IdentityKey
();
std
::
string
curve25519IdentityKey
();
std
::
size_t
checkError
(
std
::
size_t
code
)
const
;
MaybeString
decryptOlm
(
nlohmann
::
json
content
);
// Here we need the full event for eventId and originServerTs
MaybeString
decryptMegOlm
(
nlohmann
::
json
eventJson
);
/// returns whether the session is successfully established
bool
createInboundSession
(
std
::
string
theirCurve25519IdentityKey
,
std
::
string
message
);
bool
createInboundGroupSession
(
KeyOfGroupSession
k
,
std
::
string
sessionKey
,
std
::
string
ed25519Key
);
bool
reuseOrCreateOutboundGroupSession
(
std
::
string
roomId
,
MegOlmSessionRotateDesc
desc
);
};
}
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Thu, Oct 2, 2:55 AM (21 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
471894
Default Alt Text
crypto-p.hpp (2 KB)
Attached To
Mode
rL libkazv
Attached
Detach File
Event Timeline
Log In to Comment