QSC Post Quantum Cryptographic Library 1.1.0.2 (B2)
A post quantum secure library written in Ansi C
Loading...
Searching...
No Matches
socketserver.h
Go to the documentation of this file.
1/* 2020-2026 Quantum Resistant Cryptographic Solutions Corporation
2 * All Rights Reserved.
3 *
4 * NOTICE:
5 * This software and all accompanying materials are the exclusive property of
6 * Quantum Resistant Cryptographic Solutions Corporation (QRCS). The intellectual
7 * and technical concepts contained herein are proprietary to QRCS and are
8 * protected under applicable Canadian, U.S., and international copyright,
9 * patent, and trade secret laws.
10 *
11 * CRYPTOGRAPHIC ALGORITHMS AND IMPLEMENTATIONS:
12 * - This software includes implementations of cryptographic primitives and
13 * algorithms that are standardized or in the public domain, such as AES
14 * and SHA-3, which are not proprietary to QRCS.
15 * - This software also includes cryptographic primitives, constructions, and
16 * algorithms designed by QRCS, including but not limited to RCS, SCB, CSX, QMAC, and
17 * related components, which are proprietary to QRCS.
18 * - All source code, implementations, protocol compositions, optimizations,
19 * parameter selections, and engineering work contained in this software are
20 * original works of QRCS and are protected under this license.
21 *
22 * LICENSE AND USE RESTRICTIONS:
23 * - This software is licensed under the Quantum Resistant Cryptographic Solutions
24 * Public Research and Evaluation License (QRCS-PREL), 2025-2026.
25 * - Permission is granted solely for non-commercial evaluation, academic research,
26 * cryptographic analysis, interoperability testing, and feasibility assessment.
27 * - Commercial use, production deployment, commercial redistribution, or
28 * integration into products or services is strictly prohibited without a
29 * separate written license agreement executed with QRCS.
30 * - Licensing and authorized distribution are solely at the discretion of QRCS.
31 *
32 * EXPERIMENTAL CRYPTOGRAPHY NOTICE:
33 * Portions of this software may include experimental, novel, or evolving
34 * cryptographic designs. Use of this software is entirely at the user's risk.
35 *
36 * DISCLAIMER:
37 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38 * IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
39 * FOR A PARTICULAR PURPOSE, SECURITY, OR NON-INFRINGEMENT. QRCS DISCLAIMS ALL
40 * LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
41 * ARISING FROM THE USE OR MISUSE OF THIS SOFTWARE.
42 *
43 * FULL LICENSE:
44 * This software is subject to the Quantum Resistant Cryptographic Solutions
45 * Public Research and Evaluation License (QRCS-PREL), 2025-2026. The complete license terms
46 * are provided in the accompanying LICENSE file or at https://www.qrcscorp.ca.
47 *
48 * Written by: John G. Underhill
49 * Contact: contact@qrcscorp.ca
50 */
51
52#ifndef QSC_SOCKETSERVER_H
53#define QSC_SOCKETSERVER_H
54
55#include "qsccommon.h"
56#include "socketbase.h"
57
58QSC_CPLUSPLUS_ENABLED_START
59
97
102#define QSC_SOCKET_SERVER_LISTEN_BACKLOG 128ULL
103
108#define QSC_SOCKET_SERVER_MAX_THREADS 1024ULL
109
110/*** Structures ***/
111
119
133
134/*** Function Prototypes ***/
135
142
150
151/*** Accessors ***/
152
161
170
179
186
193
206QSC_EXPORT_API qsc_socket_exceptions qsc_socket_server_listen(qsc_socket* source, qsc_socket* target, const char* address, uint16_t port, qsc_socket_address_families family);
207
220
233
245
256
267
278
285
286QSC_CPLUSPLUS_ENABLED_END
287
288#endif
Contains common definitions for the Quantum Secure Cryptographic (QSC) library.
#define QSC_EXPORT_API
API export macro for Microsoft compilers when importing from a DLL.
Definition qsccommon.h:605
Socket function definitions.
qsc_socket_exceptions
Socket code enumeration names.
Definition socketbase.h:115
qsc_socket_options
TCP socket options.
Definition socketflags.h:112
qsc_socket_transports
The socket transmission type.
Definition socketflags.h:203
qsc_socket_address_families
The socket address family type.
Definition socketflags.h:80
qsc_socket_protocols
The socket IP protocol type.
Definition socketflags.h:142
QSC_EXPORT_API qsc_socket_exceptions qsc_socket_server_listen_async(qsc_socket_server_async_accept_state *state, const char *address, uint16_t port, qsc_socket_address_families family)
Places the socket in an asynchronous listening state.
Definition socketserver.c:254
QSC_EXPORT_API qsc_socket_protocols qsc_socket_server_socket_protocol(const qsc_socket *sock)
Get the socket protocol type.
Definition socketserver.c:25
QSC_EXPORT_API qsc_socket_exceptions qsc_socket_server_listen_ipv4(qsc_socket *source, qsc_socket *target, const qsc_ipinfo_ipv4_address *address, uint16_t port)
Places the source IPv4 socket in a blocking listening state, and waits for a connection....
Definition socketserver.c:122
QSC_EXPORT_API void qsc_socket_server_set_options(const qsc_socket *sock, qsc_socket_protocols level, qsc_socket_options option, int32_t optval)
Send an option command to the socket. Options that use a boolean are format: 0=false,...
Definition socketserver.c:365
QSC_EXPORT_API qsc_socket_exceptions qsc_socket_server_listen_async_ipv6(qsc_socket_server_async_accept_state *state, const qsc_ipinfo_ipv6_address *address, uint16_t port)
Places the IPv6 socket in an asynchronous listening state.
Definition socketserver.c:323
QSC_EXPORT_API void qsc_socket_server_accept_callback(qsc_socket_server_accept_result *ares)
The socket server accept callback prototype.
QSC_EXPORT_API qsc_socket_exceptions qsc_socket_server_listen_ipv6(qsc_socket *source, qsc_socket *target, const qsc_ipinfo_ipv6_address *address, uint16_t port)
Places the source IPv6 socket in a blocking listening state, and waits for a connection....
Definition socketserver.c:157
QSC_EXPORT_API qsc_socket_exceptions qsc_socket_server_listen(qsc_socket *source, qsc_socket *target, const char *address, uint16_t port, qsc_socket_address_families family)
Places the source socket in a blocking listening state, and waits for a connection....
Definition socketserver.c:85
QSC_EXPORT_API qsc_socket_transports qsc_socket_server_socket_transport(const qsc_socket *sock)
Get the socket transport type.
Definition socketserver.c:41
QSC_EXPORT_API void qsc_socket_server_shut_down(qsc_socket *sock)
Shut down the server.
Definition socketserver.c:375
QSC_EXPORT_API void qsc_socket_server_initialize(qsc_socket *sock)
Initialize the server socket.
Definition socketserver.c:68
QSC_EXPORT_API void qsc_socket_server_close_socket(qsc_socket *sock)
Shut down channels and close the socket.
Definition socketserver.c:57
QSC_EXPORT_API qsc_socket_exceptions qsc_socket_server_listen_async_ipv4(qsc_socket_server_async_accept_state *state, const qsc_ipinfo_ipv4_address *address, uint16_t port)
Places the IPv4 socket in an asynchronous listening state.
Definition socketserver.c:290
QSC_EXPORT_API void qsc_socket_server_error_callback(const qsc_socket *source, qsc_socket_exceptions error)
The socket server error callback prototype.
QSC_EXPORT_API qsc_socket_address_families qsc_socket_server_address_family(const qsc_socket *sock)
Get the sockets address family, IPv4 or IPv6.
Definition socketserver.c:9
The IPv4 address structure.
Definition ipinfo.h:161
The IPv6 address structure.
Definition ipinfo.h:320
The async socket result structure.
Definition socketserver.h:116
qsc_socket target
Definition socketserver.h:117
The async listener-accept state structure. The structure contains a pointer to the listener socket,...
Definition socketserver.h:128
void(* callback)(qsc_socket_server_accept_result *result)
Definition socketserver.h:130
void(* error)(qsc_socket *sock, qsc_socket_exceptions exception)
Definition socketserver.h:131
qsc_socket * source
Definition socketserver.h:129
The socket instance structure.
Definition socket.h:133