22#ifndef CSILK_INTERNAL_H
23#define CSILK_INTERNAL_H
128 const uint8_t* key,
size_t key_len,
const uint8_t* data,
size_t data_len, uint8_t out[32]);
265 const uint8_t* plaintext,
266 size_t plaintext_len,
270 size_t* ciphertext_len,
295 const uint8_t* ciphertext,
296 size_t ciphertext_len,
302 size_t* plaintext_len);
318 csilk_ctx_t* c,
char* public_key,
size_t* pub_len,
char* private_key,
size_t* priv_len);
334 const char* public_key,
336 const uint8_t* plaintext,
337 size_t plaintext_len,
339 size_t* ciphertext_len);
355 const char* private_key,
357 const uint8_t* ciphertext,
358 size_t ciphertext_len,
360 size_t* plaintext_len);
376 const char* private_key,
397 const char* public_key,
401 const uint8_t* signature,
430typedef struct csilk_mq_msg_s {
435 struct csilk_mq_msg_s*
443typedef struct csilk_mq_topic_s {
High-performance C web framework — main public API header.
void(* csilk_mq_worker_t)(const char *topic, const void *payload, size_t len)
Signature for a background MQ worker function.
Definition csilk.h:2422
void(* csilk_mq_handler_t)(csilk_mq_ctx_t *ctx)
MQ handler signature for middleware and subscribers.
Definition csilk.h:2394
csilk_mq_msg_t * queue_tail
Definition internal.h:476
uint64_t count
Definition internal.h:88
void _csilk_hmac_sha256(csilk_ctx_t *c, const uint8_t *key, size_t key_len, const uint8_t *data, size_t data_len, uint8_t out[32])
Internal: Compute HMAC-SHA256 using the server's crypto driver (if set) or the built-in software impl...
Definition utils.c:697
csilk_mq_t * _csilk_mq_new(uv_loop_t *loop)
Internal: Create a new MQ instance bound to a libuv loop.
Definition mq.c:329
int _csilk_asymmetric_encrypt(csilk_ctx_t *c, const char *public_key, size_t pub_len, const uint8_t *plaintext, size_t plaintext_len, uint8_t *ciphertext, size_t *ciphertext_len)
Internal: Asymmetric encrypt using the context's cipher driver or the built-in OpenSSL RSA-OAEP imple...
Definition utils.c:815
void csilk_hmac_sha256(const uint8_t *key, size_t key_len, const uint8_t *data, size_t data_len, uint8_t out[32])
Compute HMAC-SHA256 (keyed-hash message authentication code).
Definition utils.c:402
uv_mutex_t wal_mutex
Definition internal.h:491
char * name
Definition internal.h:444
uv_async_t async_handle
Definition internal.h:472
void _csilk_generate_uuid(csilk_ctx_t *c, char buf[37])
Internal: Generate a random UUID v4 string using the crypto driver (if set) or the built-in /dev/uran...
Definition utils.c:725
uv_work_t req
Definition internal.h:528
void csilk_base64url_encode(const uint8_t *src, size_t len, char *out)
Encode raw bytes as a Base64URL (RFC 4648 §5) string.
Definition utils.c:506
uv_mutex_t queue_mutex
Definition internal.h:474
void csilk_sha256_init(csilk_sha256_ctx *context)
Initialise a SHA-256 hashing context.
Definition utils.c:313
uv_file wal_fd
Definition internal.h:487
csilk_mq_worker_t handler
Definition internal.h:529
uint32_t queue_depth
Definition internal.h:497
int csilk_base64url_decode(const char *src, uint8_t *out)
Decode a Base64URL (RFC 4648 §5) string to raw bytes.
Definition utils.c:541
void csilk_ws_parse_frame(csilk_ctx_t *c, const uint8_t *buf, size_t nread)
Parse an incoming WebSocket frame from the raw TCP stream.
Definition websocket.c:293
void * payload
Definition internal.h:432
size_t len
Definition internal.h:532
uint64_t published_total
Definition internal.h:494
csilk_mq_msg_t * queue_head
Definition internal.h:475
void csilk_base64_encode(const uint8_t *src, size_t len, char *out)
Encode raw bytes as a standard Base64 string.
Definition utils.c:457
size_t handler_count
Definition internal.h:516
uint64_t failed_total
Definition internal.h:496
csilk_ctx_t ** monitors
Definition internal.h:499
void * payload
Definition internal.h:531
void csilk_sha1_update(csilk_sha1_ctx *context, const uint8_t *data, size_t len)
Feed data into the SHA-1 hashing context.
Definition utils.c:142
csilk_mq_msg_t * msg
Definition internal.h:513
int _csilk_generate_keypair(csilk_ctx_t *c, char *public_key, size_t *pub_len, char *private_key, size_t *priv_len)
Internal: Generate an RSA-2048 key pair using the context's cipher driver or the built-in OpenSSL imp...
Definition utils.c:804
void csilk_sha256_update(csilk_sha256_ctx *context, const uint8_t *data, size_t len)
Feed data into the SHA-256 hashing context.
Definition utils.c:335
csilk_mq_handler_t * handlers
Definition internal.h:514
struct csilk_mq_msg_s * next
Definition internal.h:435
size_t handler_count
Definition internal.h:447
int _csilk_verify(csilk_ctx_t *c, const char *public_key, size_t pub_len, const uint8_t *data, size_t data_len, const uint8_t *signature, size_t sig_len)
Internal: Verify a signature using the context's cipher driver or the built-in OpenSSL RSA-PSS implem...
Definition utils.c:865
int _csilk_symmetric_encrypt(csilk_ctx_t *c, const uint8_t *key, size_t key_len, const uint8_t *plaintext, size_t plaintext_len, const uint8_t *iv, size_t iv_len, uint8_t *ciphertext, size_t *ciphertext_len, uint8_t *tag, size_t tag_len)
Internal: Symmetric encrypt using the context's cipher driver or the built-in OpenSSL AES-256-GCM imp...
Definition utils.c:746
struct csilk_mq_topic_s * next
Definition internal.h:449
int aborted
Definition internal.h:518
void _csilk_set_internal_client(csilk_ctx_t *c, void *client)
Set the internal client connection object.
Definition context.c:561
void csilk_sha1_final(csilk_sha1_ctx *context, uint8_t digest[20])
Finalise the SHA-1 hash and write the 20-byte digest.
Definition utils.c:176
csilk_mq_handler_t * global_middlewares
Definition internal.h:481
void * _csilk_get_internal_client(csilk_ctx_t *c)
Get the internal client connection object.
Definition context.c:551
uv_mutex_t monitor_mutex
Definition internal.h:502
size_t global_mw_capacity
Definition internal.h:484
size_t handler_capacity
Definition internal.h:448
csilk_mq_t * mq
Definition internal.h:512
int _csilk_asymmetric_decrypt(csilk_ctx_t *c, const char *private_key, size_t priv_len, const uint8_t *ciphertext, size_t ciphertext_len, uint8_t *plaintext, size_t *plaintext_len)
Internal: Asymmetric decrypt using the context's cipher driver or the built-in OpenSSL RSA-OAEP imple...
Definition utils.c:832
void _csilk_send_response(csilk_ctx_t *c) __attribute__((weak))
Internal: Trigger the response send path.
Definition server.c:897
char * topic
Definition internal.h:530
int _csilk_sign(csilk_ctx_t *c, const char *private_key, size_t priv_len, const uint8_t *data, size_t data_len, uint8_t *signature, size_t *sig_len)
Internal: Sign data using the context's cipher driver or the built-in OpenSSL RSA-PSS implementation.
Definition utils.c:849
size_t len
Definition internal.h:434
size_t global_mw_count
Definition internal.h:483
void csilk_sha1_init(csilk_sha1_ctx *context)
Initialise a SHA-1 hashing context.
Definition utils.c:122
void _csilk_mq_free(csilk_mq_t *mq)
Internal: Destroy an MQ instance and release all resources.
Definition mq.c:958
int handler_index
Definition internal.h:517
uint64_t delivered_total
Definition internal.h:495
size_t csilk_url_decode(char *str)
URL-decode a percent-encoded string in-place.
Definition url.c:56
csilk_mq_handler_t * handlers
Definition internal.h:445
char * topic
Definition internal.h:431
size_t monitor_count
Definition internal.h:500
void csilk_sha256_final(csilk_sha256_ctx *context, uint8_t digest[32])
Finalise the SHA-256 hash and write the 32-byte digest.
Definition utils.c:361
void _csilk_send_data(csilk_ctx_t *c, const uint8_t *data, size_t len)
Internal: Send data through the appropriate I/O path.
Definition server.c:855
void csilk_generate_uuid(char *buf)
Generate a random UUID v4 string (standalone, no context needed).
Definition utils.c:628
size_t monitor_capacity
Definition internal.h:501
csilk_mq_topic_t * topics
Definition internal.h:478
char * wal_path
Definition internal.h:489
int _csilk_symmetric_decrypt(csilk_ctx_t *c, const uint8_t *key, size_t key_len, const uint8_t *ciphertext, size_t ciphertext_len, const uint8_t *iv, size_t iv_len, const uint8_t *tag, size_t tag_len, uint8_t *plaintext, size_t *plaintext_len)
Internal: Symmetric decrypt using the context's cipher driver or the built-in OpenSSL AES-256-GCM imp...
Definition utils.c:775
Internal: Per-message MQ context passed to middleware and subscribers.
Definition internal.h:511
Internal: A single message in the MQ linked-list queue. Messages are heap-allocated and linked via ne...
Definition internal.h:430
Internal: The Message Queue instance.
Definition internal.h:471
Internal: A topic node in the MQ's linked list of topics. Holds the topic name and its associated mid...
Definition internal.h:443
Internal: Context passed to libuv's thread-pool work callback.
Definition internal.h:527
SHA-1 hashing context.
Definition internal.h:43
SHA-256 hashing context.
Definition internal.h:86
struct __attribute__((packed))
Packed binary header prefixed to every WAL record.
Definition workflow_wal.h:54