Files
MontaukOS/programs/include/tls/tls.hpp
T

46 lines
1.2 KiB
C++

/*
* tls.hpp
* Shared TLS helper library for ZenithOS
* Trust anchor loading, BearSSL time, TLS I/O, HTTPS fetch
* Copyright (c) 2026 Daniel Hammer
*/
#pragma once
extern "C" {
#include <bearssl.h>
}
#include <stddef.h>
#include <stdint.h>
namespace tls {
struct TrustAnchors {
br_x509_trust_anchor* anchors;
size_t count;
size_t capacity;
};
TrustAnchors load_trust_anchors();
void get_bearssl_time(uint32_t* days, uint32_t* seconds);
int tls_send_all(int fd, const unsigned char* data, size_t len);
int tls_recv_some(int fd, unsigned char* buf, size_t maxlen);
// Optional abort callback (for Ctrl+Q in terminal apps). nullptr = no abort.
using AbortCheckFn = bool (*)();
int tls_exchange(int fd, br_ssl_engine_context* eng,
const char* request, int reqLen,
char* respBuf, int respMax,
AbortCheckFn abort_check = nullptr);
// High-level: socket -> TLS setup -> exchange -> cleanup, all in one call.
int https_fetch(const char* host, uint32_t ip, uint16_t port,
const char* request, int reqLen,
const TrustAnchors& tas,
char* respBuf, int respMax,
AbortCheckFn abort_check = nullptr);
} // namespace tls