PQS: Post Quantum Shell Protocol 1.1.0.0a (A2)
A quantum secure secure shell protocol
pqsconfig.h
Go to the documentation of this file.
1/* 2025-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 PQS_CONFIG_H
53#define PQS_CONFIG_H
54
55#include "pqscommon.h"
56#include "pqslogger.h"
57#include "qsms.h"
58
63
67#define PQS_CONFIG_LINE_MAX 1024U
68
72#define PQS_CONFIG_KEY_MAX 64U
73
77#define PQS_CONFIG_VALUE_MAX QSC_SYSTEM_MAX_PATH
78
82#define PQS_SERVER_CONFIG_NAME "pqsd.conf"
83
87#define PQS_CLIENT_CONFIG_NAME "pqs.conf"
88
96PQS_EXPORT_API typedef struct pqs_server_config
97{
98 char application_path[QSC_SYSTEM_MAX_PATH];
99 char private_key_path[QSC_SYSTEM_MAX_PATH];
100 char public_key_path[QSC_SYSTEM_MAX_PATH];
101 char user_database_path[QSC_SYSTEM_MAX_PATH];
102 char shell_database_path[QSC_SYSTEM_MAX_PATH];
103 char policy_database_path[QSC_SYSTEM_MAX_PATH];
104 char log_path[QSC_SYSTEM_MAX_PATH];
105 char listen_address[QSC_IPINFO_IPV4_STRNLEN];
106 uint16_t listen_port;
107 uint32_t max_sessions;
109 char sandbox_working_directory[QSC_SYSTEM_MAX_PATH];
110 char sandbox_run_as_user[PQS_USERNAME_MAX];
111 char sandbox_run_as_group[PQS_USERNAME_MAX];
122
130PQS_EXPORT_API typedef struct pqs_client_config
131{
132 char application_path[QSC_SYSTEM_MAX_PATH];
133 char server_public_key_path[QSC_SYSTEM_MAX_PATH];
134 char known_hosts_path[QSC_SYSTEM_MAX_PATH];
135 char log_path[QSC_SYSTEM_MAX_PATH];
136 char host[QSC_IPINFO_IPV4_STRNLEN];
137 char username[PQS_USERNAME_MAX];
138 uint16_t port;
142
148PQS_EXPORT_API void pqs_config_server_defaults(pqs_server_config* cfg);
149
155PQS_EXPORT_API void pqs_config_client_defaults(pqs_client_config* cfg);
156
165PQS_EXPORT_API bool pqs_config_server_load(pqs_server_config* cfg, const char* fpath);
166
175PQS_EXPORT_API bool pqs_config_client_load(pqs_client_config* cfg, const char* fpath);
176
184PQS_EXPORT_API const char* pqs_config_log_level_to_string(pqs_log_level level);
185
186#endif
PQS_EXPORT_API bool pqs_config_server_load(pqs_server_config *cfg, const char *fpath)
Load a PQS server configuration file.
Definition pqsconfig.c:578
PQS_EXPORT_API const char * pqs_config_log_level_to_string(pqs_log_level level)
Convert a log level to a string.
Definition pqsconfig.c:476
PQS_EXPORT_API void pqs_config_client_defaults(pqs_client_config *cfg)
Initialize a client configuration with safe defaults.
Definition pqsconfig.c:555
PQS_EXPORT_API void pqs_config_server_defaults(pqs_server_config *cfg)
Initialize a server configuration with safe defaults.
Definition pqsconfig.c:518
PQS_EXPORT_API bool pqs_config_client_load(pqs_client_config *cfg, const char *fpath)
Load a PQS client configuration file.
Definition pqsconfig.c:604
The PQS structured logging functions.
pqs_log_level
The PQS log severity levels.
Definition pqslogger.h:81
The PQS client configuration state.
Definition pqsconfig.h:131
char application_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:132
char known_hosts_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:134
pqs_log_level log_level
Definition pqsconfig.h:140
char username[PQS_USERNAME_MAX]
Definition pqsconfig.h:137
char host[QSC_IPINFO_IPV4_STRNLEN]
Definition pqsconfig.h:136
uint16_t port
Definition pqsconfig.h:138
char server_public_key_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:133
bool strict_host_checking
Definition pqsconfig.h:139
char log_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:135
The PQS server configuration state.
Definition pqsconfig.h:97
char sandbox_run_as_group[PQS_USERNAME_MAX]
Definition pqsconfig.h:111
char application_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:98
uint16_t listen_port
Definition pqsconfig.h:106
pqs_log_level log_level
Definition pqsconfig.h:116
char user_database_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:101
uint32_t login_timeout_seconds
Definition pqsconfig.h:112
uint32_t idle_timeout_seconds
Definition pqsconfig.h:113
uint32_t command_timeout_seconds
Definition pqsconfig.h:114
char public_key_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:100
char policy_database_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:103
bool sandbox_enabled
Definition pqsconfig.h:117
char sandbox_run_as_user[PQS_USERNAME_MAX]
Definition pqsconfig.h:110
bool sandbox_allow_same_user
Definition pqsconfig.h:120
uint32_t max_sessions
Definition pqsconfig.h:107
uint32_t max_login_attempts
Definition pqsconfig.h:108
uint32_t command_output_max_bytes
Definition pqsconfig.h:115
char private_key_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:99
char log_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:104
bool sandbox_chroot_enabled
Definition pqsconfig.h:119
char listen_address[QSC_IPINFO_IPV4_STRNLEN]
Definition pqsconfig.h:105
bool sandbox_clear_environment
Definition pqsconfig.h:118
char sandbox_working_directory[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:109
char shell_database_path[QSC_SYSTEM_MAX_PATH]
Definition pqsconfig.h:102