libkazv
Loading...
Searching...
No Matches
sas-desc.hpp
Go to the documentation of this file.
1/*
2 * This file is part of libkazv.
3 * SPDX-FileCopyrightText: 2026 tusooa <tusooa@kazv.moe>
4 * SPDX-License-Identifier: AGPL-3.0-or-later
5 */
6
7#include <libkazv-config.hpp>
8#include "crypto-util.hpp"
9#include <copy-helper.hpp>
10#include <immer/array.hpp>
11#include <set>
12
13namespace Kazv
14{
15 class SasDesc
16 {
17 public:
18 static std::size_t constructRandomSize();
19
23 SasDesc();
24
29
31
33
35
38
40 bool valid() const;
41
42 std::string publicKey() const;
43
47 void setTheirKey(std::string theirPublicKey);
48
49 std::pair<immer::array<int> /* emoji */, immer::array<int> /* decimal */> getDisplayCodesCurve25519HkdfSha256(
50 std::string starterUserId,
51 std::string starterDeviceId,
52 std::string starterKey,
53 std::string accepterUserId,
54 std::string accepterDeviceId,
55 std::string accepterKey,
56 std::string txnId
57 ) const;
58
65 std::string getKeyMacHkdfHMacSha256V2(
66 std::string key,
67 std::string ourUserId,
68 std::string ourDeviceId,
69 std::string theirUserId,
70 std::string theirDeviceId,
71 std::string txnId,
72 std::string keyId
73 ) const;
74
76 std::string mac,
77 std::string key,
78 std::string ourUserId,
79 std::string ourDeviceId,
80 std::string theirUserId,
81 std::string theirDeviceId,
82 std::string txnId,
83 std::string keyId
84 ) const;
85
92 std::set<std::string> keyList,
93 std::string ourUserId,
94 std::string ourDeviceId,
95 std::string theirUserId,
96 std::string theirDeviceId,
97 std::string txnId
98 ) const;
99
101 std::string mac,
102 std::set<std::string> keyList,
103 std::string ourUserId,
104 std::string ourDeviceId,
105 std::string theirUserId,
106 std::string theirDeviceId,
107 std::string txnId
108 ) const;
109
110 private:
111 struct Private;
112 std::unique_ptr<Private> m_d;
113 };
114}
Definition sas-desc.hpp:16
void emplace(RandomTag, RandomData r)
Replace this with a random SAS description.
Definition sas-desc.cpp:52
std::pair< immer::array< int >, immer::array< int > > getDisplayCodesCurve25519HkdfSha256(std::string starterUserId, std::string starterDeviceId, std::string starterKey, std::string accepterUserId, std::string accepterDeviceId, std::string accepterKey, std::string txnId) const
Definition sas-desc.cpp:77
std::string getKeyMacHkdfHMacSha256V2(std::string key, std::string ourUserId, std::string ourDeviceId, std::string theirUserId, std::string theirDeviceId, std::string txnId, std::string keyId) const
Get the mac for a key using hkdf-hmac-sha256.v2.
Definition sas-desc.cpp:115
bool valid() const
Definition sas-desc.cpp:47
std::string getKeyListMacHkdfHMacSha256V2(std::set< std::string > keyList, std::string ourUserId, std::string ourDeviceId, std::string theirUserId, std::string theirDeviceId, std::string txnId) const
Get the mac for a key list using hkdf-hmac-sha256.v2.
Definition sas-desc.cpp:178
static std::size_t constructRandomSize()
Definition sas-desc.cpp:40
bool verifyKeyMacHkdfHMacSha256V2(std::string mac, std::string key, std::string ourUserId, std::string ourDeviceId, std::string theirUserId, std::string theirDeviceId, std::string txnId, std::string keyId) const
Definition sas-desc.cpp:137
std::string publicKey() const
Definition sas-desc.cpp:57
SasDesc()
Construct an invalid SAS description.
Definition sas-desc.cpp:27
SasDesc(SasDesc &&that)
SasDesc & operator=(SasDesc &&that)
bool verifyKeyListMacHkdfHMacSha256V2(std::string mac, std::set< std::string > keyList, std::string ourUserId, std::string ourDeviceId, std::string theirUserId, std::string theirDeviceId, std::string txnId) const
Definition sas-desc.cpp:199
void setTheirKey(std::string theirPublicKey)
Set the key of the other party.
Definition sas-desc.cpp:65
Definition location.hpp:10
std::string RandomData
Definition crypto-util.hpp:35
The tag to indicate that a constructor should use user-provided random data.
Definition crypto-util.hpp:33
Definition sas-desc.cpp:15