Nostrduino
Loading...
Searching...
No Matches
Nip44.h
Go to the documentation of this file.
1#ifndef NOSTR_NIP44_H
2#define NOSTR_NIP44_H
3
4#include "NostrLimits.h"
5#include "NostrString.h"
6
7namespace nostr {
8
9class Nip44 {
10 public:
11 explicit Nip44(const NostrLimits &limits = NostrLimits()) : limits(limits) {}
12
13 NostrString encrypt(NostrString &privateKeyHex, NostrString &recipientPubKeyHex, NostrString content);
14 NostrString decrypt(NostrString &privateKeyHex, NostrString &senderPubKeyHex, NostrString content);
15
16 // Deterministic helpers are useful for protocol vectors and callers that
17 // already manage a conversation key and nonce securely.
18 static NostrString conversationKey(const NostrString &privateKeyHex, const NostrString &publicKeyHex);
19 static NostrString encryptWithConversationKey(NostrString plaintext, const NostrString &conversationKeyHex,
20 const NostrString &nonceHex);
21 static NostrString decryptWithConversationKey(const NostrString &payload, const NostrString &conversationKeyHex);
22
23 // Binary buffer variants avoid Arduino String's 16-bit length limit. The
24 // encryption buffer is consumed and overwritten with ciphertext.
25 static bool encryptWithConversationKey(uint8_t *plaintextBuffer, size_t plaintextSize,
26 size_t plaintextBufferCapacity, const uint8_t conversationKey[32],
27 const uint8_t nonce[32], char *payloadBuffer, size_t payloadCapacity,
28 size_t &payloadSize);
29 static bool decryptWithConversationKey(const char *payload, size_t payloadSize,
30 const uint8_t conversationKey[32], uint8_t *plaintextBuffer,
31 size_t plaintextBufferCapacity, size_t &plaintextSize);
32 static size_t paddedLength(size_t plaintextLength);
33
34 private:
35 NostrLimits limits;
36};
37
38} // namespace nostr
39
40#endif
#define NostrString
Definition NostrString.h:10
Definition Nip44.h:9
static NostrString encryptWithConversationKey(NostrString plaintext, const NostrString &conversationKeyHex, const NostrString &nonceHex)
Definition Nip44.cpp:584
static NostrString conversationKey(const NostrString &privateKeyHex, const NostrString &publicKeyHex)
Definition Nip44.cpp:575
Nip44(const NostrLimits &limits=NostrLimits())
Definition Nip44.h:11
NostrString decrypt(NostrString &privateKeyHex, NostrString &senderPubKeyHex, NostrString content)
Definition Nip44.cpp:635
static size_t paddedLength(size_t plaintextLength)
Definition Nip44.cpp:618
NostrString encrypt(NostrString &privateKeyHex, NostrString &recipientPubKeyHex, NostrString content)
Definition Nip44.cpp:622
static NostrString decryptWithConversationKey(const NostrString &payload, const NostrString &conversationKeyHex)
Definition Nip44.cpp:596
Definition CryptoLock.h:6
Definition NostrLimits.h:9