1#ifndef SECP256K1_BIP324_HPP
2#define SECP256K1_BIP324_HPP
41 volatile std::uint8_t* p = key_;
42 for (std::size_t i = 0; i < 32; ++i) p[i] = 0;
46 void init(
const std::uint8_t* key)
noexcept;
52 const std::uint8_t* aad, std::size_t aad_len,
53 const std::uint8_t* plaintext, std::size_t plaintext_len)
noexcept;
60 const std::uint8_t* aad, std::size_t aad_len,
61 const std::uint8_t* header_enc,
62 const std::uint8_t* contents, std::size_t contents_len,
63 std::vector<std::uint8_t>& plaintext_out)
noexcept;
69 std::uint8_t key_[32]{};
70 std::uint64_t packet_counter_ = 0;
73 void build_nonce(std::uint8_t* nonce)
const noexcept;
89 volatile std::uint8_t* p = privkey_.data();
90 for (std::size_t i = 0; i < 32; ++i) p[i] = 0;
106 const std::uint8_t* plaintext, std::size_t plaintext_len)
noexcept;
114 const std::uint8_t* header,
115 const std::uint8_t* payload_and_tag, std::size_t len,
116 std::vector<std::uint8_t>& plaintext_out)
noexcept;
122 const std::array<std::uint8_t, 32>&
session_id() const noexcept {
128 bool established_ =
false;
131 std::array<std::uint8_t, 32> privkey_{};
132 std::array<std::uint8_t, 64> our_encoding_{};
135 std::array<std::uint8_t, 64> peer_encoding_{};
138 std::array<std::uint8_t, 32> session_id_{};
139 Bip324Cipher send_cipher_;
140 Bip324Cipher recv_cipher_;
Bip324Cipher() noexcept=default
bool decrypt(const std::uint8_t *aad, std::size_t aad_len, const std::uint8_t *header_enc, const std::uint8_t *contents, std::size_t contents_len, std::vector< std::uint8_t > &plaintext_out) noexcept
std::uint64_t packet_counter() const noexcept
void init(const std::uint8_t *key) noexcept
std::vector< std::uint8_t > encrypt(const std::uint8_t *aad, std::size_t aad_len, const std::uint8_t *plaintext, std::size_t plaintext_len) noexcept
const std::array< std::uint8_t, 32 > & session_id() const noexcept
bool complete_handshake(const std::uint8_t *peer_encoding) noexcept
std::vector< std::uint8_t > encrypt(const std::uint8_t *plaintext, std::size_t plaintext_len) noexcept
const std::array< std::uint8_t, 64 > & our_ellswift_encoding() const noexcept
Bip324Session(bool initiator, const std::uint8_t *privkey) noexcept
~Bip324Session() noexcept
bool is_established() const noexcept
Bip324Session(bool initiator) noexcept
bool decrypt(const std::uint8_t *header, const std::uint8_t *payload_and_tag, std::size_t len, std::vector< std::uint8_t > &plaintext_out) noexcept