PQS: Post Quantum Shell Protocol 1.1.0.0a (A2)
A quantum secure secure shell protocol
pqsadmin.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 * This software is subject to the Quantum Resistant Cryptographic Solutions
12 * Public Research and Evaluation License (QRCS-PREL), 2025-2026.
13 *
14 * Written by: John G. Underhill
15 * Contact: contact@qrcscorp.ca
16 */
17
18#ifndef PQS_ADMIN_H
19#define PQS_ADMIN_H
20
21#include "pqsconfig.h"
22#include "pqskey.h"
23#include "pqslogger.h"
24#include "pqspolicy.h"
25#include "pqssandbox.h"
26#include "pqsshell.h"
27#include "pqsuser.h"
28
33
37#define PQS_ADMIN_ARGUMENT_MAX 128U
38
42#define PQS_ADMIN_OUTPUT_MAX 2048U
43
47#define PQS_ADMIN_POLICY_PREFIX "admin."
48
65
74
78PQS_EXPORT_API typedef struct pqs_admin_context
79{
80 const char* user;
81 const char* peer;
82 pqs_user_privileges privilege;
89 const qsms_client_verification_key* public_key;
92
101PQS_EXPORT_API bool pqs_admin_authorize(const pqs_admin_context* context, const pqs_admin_request* request);
102
113PQS_EXPORT_API bool pqs_admin_execute(const pqs_admin_context* context, const pqs_admin_request* request, char* output, size_t outlen);
114
123PQS_EXPORT_API bool pqs_admin_request_parse(pqs_admin_request* request, const char* command);
124
132PQS_EXPORT_API const char* pqs_admin_command_to_string(pqs_admin_command_ids command);
133
141PQS_EXPORT_API const char* pqs_admin_policy_verb(pqs_admin_command_ids command);
142
143#endif
#define PQS_ADMIN_ARGUMENT_MAX
The maximum administrative command argument buffer size.
Definition pqsadmin.h:37
PQS_EXPORT_API const char * pqs_admin_policy_verb(pqs_admin_command_ids command)
Return the policy verb associated with a typed administrative command.
Definition pqsadmin.c:463
PQS_EXPORT_API bool pqs_admin_request_parse(pqs_admin_request *request, const char *command)
Parse a bounded administrative request string.
Definition pqsadmin.c:348
pqs_admin_command_ids
Stable PQS typed administrative command identifiers.
Definition pqsadmin.h:53
@ pqs_admin_command_config_summary
Definition pqsadmin.h:60
@ pqs_admin_command_none
Definition pqsadmin.h:54
@ pqs_admin_command_sandbox_status
Definition pqsadmin.h:58
@ pqs_admin_command_server_status
Definition pqsadmin.h:55
@ pqs_admin_command_policy_list
Definition pqsadmin.h:62
@ pqs_admin_command_server_version
Definition pqsadmin.h:56
@ pqs_admin_command_server_fingerprint
Definition pqsadmin.h:57
@ pqs_admin_command_shell_list
Definition pqsadmin.h:63
@ pqs_admin_command_user_list
Definition pqsadmin.h:61
@ pqs_admin_command_audit_verify
Definition pqsadmin.h:59
PQS_EXPORT_API const char * pqs_admin_command_to_string(pqs_admin_command_ids command)
Return the stable command name for a typed administrative command.
Definition pqsadmin.c:421
PQS_EXPORT_API bool pqs_admin_authorize(const pqs_admin_context *context, const pqs_admin_request *request)
Authorize a typed administrative command against privilege and policy.
Definition pqsadmin.c:284
PQS_EXPORT_API bool pqs_admin_execute(const pqs_admin_context *context, const pqs_admin_request *request, char *output, size_t outlen)
Execute a typed administrative command into a bounded response buffer.
Definition pqsadmin.c:301
PQS client and server configuration file support.
PQS host-key fingerprint and known-hosts helper functions.
The PQS structured logging functions.
PQS server-side command policy database functions.
PQS command execution sandbox configuration helpers.
PQS server-side shell profile database functions.
PQS server-side user database and passphrase verifier functions.
The server-side context made available to a typed administrative command.
Definition pqsadmin.h:79
bool logger_failed
Definition pqsadmin.h:90
const pqs_shell_store * shells
Definition pqsadmin.h:86
bool authenticated
Definition pqsadmin.h:83
const pqs_server_config * config
Definition pqsadmin.h:84
const pqs_user_store * users
Definition pqsadmin.h:85
const pqs_sandbox_profile * sandbox
Definition pqsadmin.h:88
const char * user
Definition pqsadmin.h:80
const char * peer
Definition pqsadmin.h:81
pqs_user_privileges privilege
Definition pqsadmin.h:82
const qsms_client_verification_key * public_key
Definition pqsadmin.h:89
const pqs_policy_store * policies
Definition pqsadmin.h:87
A parsed PQS administrative command request.
Definition pqsadmin.h:70
char arguments[PQS_ADMIN_ARGUMENT_MAX]
Definition pqsadmin.h:72
pqs_admin_command_ids command
Definition pqsadmin.h:71
The fixed-size PQS command policy database.
Definition pqspolicy.h:111
The PQS command execution sandbox profile.
Definition pqssandbox.h:96
The PQS server configuration state.
Definition pqsconfig.h:97
The fixed-size PQS server shell profile database.
Definition pqsshell.h:104
The fixed-size PQS server user database.
Definition pqsuser.h:92