ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
networking.h File Reference

Go to the source code of this file.

Functions

 EMSCRIPTEN_DECLARE_VAL_TYPE (PeerBytes)
 EMSCRIPTEN_DECLARE_VAL_TYPE (QuicControlResult)
 EMSCRIPTEN_DECLARE_VAL_TYPE (QuicPacketResult)
QuicControlResult network_quic_output (crypto_context_t *context)
QuicPacketResult network_quic_packet (crypto_context_t *context, bool seal, unsigned flow, unsigned delivery, PeerBytes packet)

Function Documentation

◆ EMSCRIPTEN_DECLARE_VAL_TYPE() [1/3]

EMSCRIPTEN_DECLARE_VAL_TYPE ( PeerBytes )

◆ EMSCRIPTEN_DECLARE_VAL_TYPE() [2/3]

EMSCRIPTEN_DECLARE_VAL_TYPE ( QuicControlResult )

◆ EMSCRIPTEN_DECLARE_VAL_TYPE() [3/3]

EMSCRIPTEN_DECLARE_VAL_TYPE ( QuicPacketResult )

◆ network_quic_output()

QuicControlResult network_quic_output ( crypto_context_t * context)

Definition at line 61 of file networking.cpp.

61 {
62 uint8_t data[256];
63 size_t length = 0;
64 uint32_t flow = 0;
65 const int code = browser_security_output(context, data, sizeof(data), &length, &flow);
66 emscripten::val result = emscripten::val::object();
67 result.set("code", code);
68 result.set("flow", flow);
69 result.set("packet", length ? binding_copy_output(data, length) : emscripten::val::null());
70 return QuicControlResult(result);
71}
emscripten::val binding_copy_output(const void *data, size_t length)
Definition byte_arrays.h:18
unsigned int uint32_t
Definition common.h:62
unsigned char uint8_t
Definition common.h:60
asciichat_error_t browser_security_output(crypto_context_t *ctx, uint8_t *output, size_t capacity, size_t *length, uint32_t *channel)

References binding_copy_output(), and browser_security_output().

Referenced by PeerCryptoBinding::takeQuicOutput().

◆ network_quic_packet()

QuicPacketResult network_quic_packet ( crypto_context_t * context,
bool seal,
unsigned flow,
unsigned delivery,
PeerBytes packet )

Definition at line 73 of file networking.cpp.

74 {
75 auto input_data = binding_copy_input(packet);
76 std::vector<uint8_t> output(input_data.size() + (seal ? 94 : 0));
77 size_t length = 0;
78 uint64_t sequence = 0;
79 int code = browser_security_packet(context, seal, flow, delivery, input_data.data(), input_data.size(), output.data(),
80 output.size(), &length, &sequence);
81 emscripten::val result = emscripten::val::object();
82 result.set("code", code);
83 result.set("packet", binding_copy_output(output.data(), length));
84 result.set("sequence", emscripten::val::global("BigInt")(std::to_string(sequence)));
85 if (!input_data.empty())
86 sodium_memzero(input_data.data(), input_data.size());
87 if (!output.empty())
88 sodium_memzero(output.data(), output.size());
89 return QuicPacketResult(result);
90}
std::vector< uint8_t > binding_copy_input(emscripten::val bytes)
Definition byte_arrays.h:6
unsigned long long uint64_t
Definition common.h:63
asciichat_error_t browser_security_packet(crypto_context_t *ctx, bool seal, uint32_t channel, uint32_t delivery, const uint8_t *packet, size_t length, uint8_t *output, size_t capacity, size_t *out_length, uint64_t *sequence)

References binding_copy_input(), binding_copy_output(), and browser_security_packet().

Referenced by PeerCryptoBinding::quicPacket().