blob: d2135da42ac107323567639adb631a2e0d4708e7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
#pragma once
#include <plog/Init.h>
#include <plog/Log.h>
extern "C"
{
#include <noscrypt.h>
}
#include "service/nostr_service_base.hpp"
#include "signer/signer.hpp"
namespace nostr
{
namespace signer
{
class NoscryptSigner : public INostrConnectSigner
{
public:
NoscryptSigner(
std::shared_ptr<plog::IAppender> appender,
std::shared_ptr<nostr::service::INostrServiceBase> nostrService);
~NoscryptSigner();
void receiveConnection(std::string connectionToken) override;
std::string initiateConnection(
std::vector<std::string> relays,
std::string name,
std::string url,
std::string description) override;
void sign(std::shared_ptr<data::Event> event) override;
private:
std::shared_ptr<NCContext> _noscryptContext;
std::string _localPrivateKey;
std::string _localPublicKey;
///< A list of relays that will be used to connect to the remote signer.
std::vector<std::string> _relays;
/**
* @brief Initializes the noscrypt library context into the class's `context` property.
* @returns `true` if successful, `false` otherwise.
*/
std::shared_ptr<NCContext> _initNoscryptContext();
/**
* @brief Generates a private/public key pair for local use.
* @returns The generated keypair of the form `[privateKey, publicKey]`, or a pair of empty
* strings if the function failed.
* @remarks This keypair is intended for temporary use, and should not be saved or used outside
* of this class.
*/
std::tuple<std::string, std::string> _createLocalKeypair();
#pragma region Logging
void _logNoscryptInitResult(NCResult initResult);
void _logNoscryptSecretValidationResult(NCResult secretValidationResult);
void _logNoscryptPubkeyGenerationResult(NCResult pubkeyGenerationResult);
#pragma endregion
};
} // namespace signer
} // namespace nostr
|