QSC Post Quantum Cryptographic Library 1.3.0.0 (C1)
A post quantum secure library written in Ansi C
Loading...
Searching...
No Matches
consoleutils.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_CONSOLEUTILS_H
53#define QSC_CONSOLEUTILS_H
54
55#include "qsccommon.h"
56
57QSC_CPLUSPLUS_ENABLED_START
58
91
96#define QSC_CONSOLE_MAX_LINE 128ULL
97
98
103#define QSC_CONSOLE_STRING_NOT_FOUND -1L
104
109typedef enum
110{
111 white = 0x00U,
112 blue = 0x01U,
113 green = 0x02U,
114 red = 0x03U
116
121typedef enum
122{
123 regular = 0x00U,
124 bold = 0x01U,
125 italic = 0x02U,
126 bolditalic = 0x03U
128
138
145
156QSC_EXPORT_API size_t qsc_consoleutils_get_formatted_line(char* line, size_t maxlen);
157
168QSC_EXPORT_API size_t qsc_consoleutils_get_line(char* line, size_t maxlen);
169
182QSC_EXPORT_API size_t qsc_consoleutils_get_quoted_string(char* output, const char* input, size_t maxlen);
183
192
200QSC_EXPORT_API void qsc_consoleutils_hex_to_bin(const char* hexstr, uint8_t* output, size_t length);
201
210QSC_EXPORT_API bool qsc_consoleutils_line_contains(const char* line, const char* token);
211
220QSC_EXPORT_API bool qsc_consoleutils_line_equals(const char* line1, const char* line2);
221
232QSC_EXPORT_API size_t qsc_consoleutils_masked_password(char* output, size_t otplen);
233
241QSC_EXPORT_API bool qsc_consoleutils_message_confirm(const char* message);
242
252QSC_EXPORT_API void qsc_consoleutils_print_array(const uint8_t* input, size_t inplen, size_t linelen);
253
261QSC_EXPORT_API void qsc_consoleutils_print_hex(const uint8_t* input, size_t inplen, size_t linelen);
262
269QSC_EXPORT_API void qsc_consoleutils_print_formatted(const char* input, size_t inplen);
270
277QSC_EXPORT_API void qsc_consoleutils_print_formatted_line(const char* input, size_t inplen);
278
286QSC_EXPORT_API void qsc_consoleutils_print_safe(const char* input);
287
293QSC_EXPORT_API void qsc_consoleutils_print_line(const char* input);
294
301
308
315
322QSC_EXPORT_API void qsc_consoleutils_print_concatenated_line(const char** input, size_t count);
323
330
335
342QSC_EXPORT_API void qsc_consoleutils_set_window_buffer(size_t width, size_t height);
343
348
355
362QSC_EXPORT_API void qsc_consoleutils_set_window_size(size_t width, size_t height);
363
370
375
376QSC_CPLUSPLUS_ENABLED_END
377
378#endif
QSC_EXPORT_API void qsc_consoleutils_print_concatenated_line(const char **input, size_t count)
Print a double-precision floating point number to the console.
Definition consoleutils.c:460
QSC_EXPORT_API void qsc_consoleutils_set_virtual_terminal(void)
Enable virtual terminal processing mode in the console.
Definition consoleutils.c:728
QSC_EXPORT_API bool qsc_consoleutils_message_confirm(const char *message)
Display a confirmation message and wait for a Y/N response.
Definition consoleutils.c:384
QSC_EXPORT_API void qsc_consoleutils_set_window_clear(void)
Clear all text from the console window.
Definition consoleutils.c:657
QSC_EXPORT_API void qsc_consoleutils_print_line(const char *input)
Print a string to the console with a trailing line break.
Definition consoleutils.c:565
QSC_EXPORT_API void qsc_consoleutils_set_window_size(size_t width, size_t height)
Set the size of the console window.
Definition consoleutils.c:694
QSC_EXPORT_API size_t qsc_consoleutils_get_quoted_string(char *output, const char *input, size_t maxlen)
Extract a quoted string from input.
Definition consoleutils.c:179
QSC_EXPORT_API void qsc_consoleutils_print_hex(const uint8_t *input, size_t inplen, size_t linelen)
Print a byte array as hexadecimal values to the console.
Definition consoleutils.c:479
QSC_EXPORT_API void qsc_consoleutils_print_formatted(const char *input, size_t inplen)
Print a formatted string to the console, ignoring special characters.
Definition consoleutils.c:519
QSC_EXPORT_API void qsc_consoleutils_progress_counter(int32_t seconds)
Display a small spinning progress counter for a specified duration.
Definition consoleutils.c:609
QSC_EXPORT_API size_t qsc_consoleutils_get_line(char *line, size_t maxlen)
Get a line of text from the console.
Definition consoleutils.c:120
QSC_EXPORT_API void qsc_consoleutils_print_uint(uint32_t digit)
Print an unsigned 32-bit integer to the console.
Definition consoleutils.c:591
QSC_EXPORT_API void qsc_consoleutils_send_enter(void)
Send an "enter" (newline) command to the console.
Definition consoleutils.c:634
QSC_EXPORT_API char qsc_consoleutils_get_wait(void)
Wait for user input from the console.
Definition consoleutils.c:244
QSC_EXPORT_API void qsc_consoleutils_print_array(const uint8_t *input, size_t inplen, size_t linelen)
Print a byte array to the console.
Definition consoleutils.c:407
QSC_EXPORT_API void qsc_consoleutils_print_ulong(uint64_t digit)
Print an unsigned 64-bit integer to the console.
Definition consoleutils.c:600
QSC_EXPORT_API void qsc_consoleutils_print_formatted_line(const char *input, size_t inplen)
Print a formatted string to the console with a line break.
Definition consoleutils.c:553
QSC_EXPORT_API size_t qsc_consoleutils_get_formatted_line(char *line, size_t maxlen)
Get a formatted line of text from the console.
Definition consoleutils.c:157
qsc_console_font_color
The console font color choices.
Definition consoleutils.h:110
@ green
Definition consoleutils.h:113
@ blue
Definition consoleutils.h:112
@ red
Definition consoleutils.h:114
@ white
Definition consoleutils.h:111
QSC_EXPORT_API void qsc_consoleutils_print_safe(const char *input)
Print a string safely to the console.
Definition consoleutils.c:577
QSC_EXPORT_API size_t qsc_consoleutils_masked_password(char *output, size_t otplen)
Read a masked password from the console.
Definition consoleutils.c:326
QSC_EXPORT_API bool qsc_consoleutils_line_equals(const char *line1, const char *line2)
Compare two lines of text for equivalence.
Definition consoleutils.c:303
QSC_EXPORT_API void qsc_consoleutils_set_window_buffer(size_t width, size_t height)
Set the vertical scroll buffer size of the console window.
Definition consoleutils.c:639
QSC_EXPORT_API bool qsc_consoleutils_line_contains(const char *line, const char *token)
Check if a line of text contains a given token.
Definition consoleutils.c:286
QSC_EXPORT_API void qsc_consoleutils_hex_to_bin(const char *hexstr, uint8_t *output, size_t length)
Convert a hexadecimal string to a binary (byte) array.
Definition consoleutils.c:253
QSC_EXPORT_API void qsc_consoleutils_set_window_prompt(const char *prompt)
Set the console window prompt string.
Definition consoleutils.c:684
QSC_EXPORT_API void qsc_consoleutils_print_double(double digit)
Print a double-precision floating point number to the console.
Definition consoleutils.c:451
QSC_EXPORT_API char qsc_consoleutils_get_char(void)
Get a character from the console in a blocking manner.
Definition consoleutils.c:107
qsc_console_font_style
The console font style options.
Definition consoleutils.h:122
@ regular
Definition consoleutils.h:123
@ italic
Definition consoleutils.h:125
@ bold
Definition consoleutils.h:124
@ bolditalic
Definition consoleutils.h:126
QSC_EXPORT_API void qsc_consoleutils_set_window_title(const char *title)
Set the title of the console window.
Definition consoleutils.c:713
QSC_EXPORT_API void qsc_consoleutils_colored_message(const char *message, qsc_console_font_color color)
Print a colored console message.
Definition consoleutils.c:65
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:645