QSC Post Quantum Cryptographic Library 1.1.0.2 (B2)
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
155QSC_EXPORT_API size_t qsc_consoleutils_get_formatted_line(char* line, size_t maxlen);
156
166QSC_EXPORT_API size_t qsc_consoleutils_get_line(char* line, size_t maxlen);
167
179QSC_EXPORT_API size_t qsc_consoleutils_get_quoted_string(char* output, const char* input, size_t maxlen);
180
189
197QSC_EXPORT_API void qsc_consoleutils_hex_to_bin(const char* hexstr, uint8_t* output, size_t length);
198
206QSC_EXPORT_API bool qsc_consoleutils_line_contains(const char* line, const char* token);
207
215QSC_EXPORT_API bool qsc_consoleutils_line_equals(const char* line1, const char* line2);
216
226QSC_EXPORT_API size_t qsc_consoleutils_masked_password(char* output, size_t otplen);
227
234QSC_EXPORT_API bool qsc_consoleutils_message_confirm(const char* message);
235
245QSC_EXPORT_API void qsc_consoleutils_print_array(const uint8_t* input, size_t inplen, size_t linelen);
246
254QSC_EXPORT_API void qsc_consoleutils_print_hex(const uint8_t* input, size_t inplen, size_t linelen);
255
262QSC_EXPORT_API void qsc_consoleutils_print_formatted(const char* input, size_t inplen);
263
270QSC_EXPORT_API void qsc_consoleutils_print_formatted_line(const char* input, size_t inplen);
271
279QSC_EXPORT_API void qsc_consoleutils_print_safe(const char* input);
280
286QSC_EXPORT_API void qsc_consoleutils_print_line(const char* input);
287
294
301
308
315QSC_EXPORT_API void qsc_consoleutils_print_concatenated_line(const char** input, size_t count);
316
323
328
335QSC_EXPORT_API void qsc_consoleutils_set_window_buffer(size_t width, size_t height);
336
341
348
355QSC_EXPORT_API void qsc_consoleutils_set_window_size(size_t width, size_t height);
356
363
368
369QSC_CPLUSPLUS_ENABLED_END
370
371#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:457
QSC_EXPORT_API void qsc_consoleutils_set_virtual_terminal(void)
Enable virtual terminal processing mode in the console.
Definition consoleutils.c:725
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:381
QSC_EXPORT_API void qsc_consoleutils_set_window_clear(void)
Clear all text from the console window.
Definition consoleutils.c:654
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:562
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:691
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:176
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:476
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:516
QSC_EXPORT_API void qsc_consoleutils_progress_counter(int32_t seconds)
Display a small spinning progress counter for a specified duration.
Definition consoleutils.c:606
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:117
QSC_EXPORT_API void qsc_consoleutils_print_uint(uint32_t digit)
Print an unsigned 32-bit integer to the console.
Definition consoleutils.c:588
QSC_EXPORT_API void qsc_consoleutils_send_enter(void)
Send an "enter" (newline) command to the console.
Definition consoleutils.c:631
QSC_EXPORT_API char qsc_consoleutils_get_wait(void)
Wait for user input from the console.
Definition consoleutils.c:241
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:404
QSC_EXPORT_API void qsc_consoleutils_print_ulong(uint64_t digit)
Print an unsigned 64-bit integer to the console.
Definition consoleutils.c:597
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:550
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:154
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:574
QSC_EXPORT_API size_t qsc_consoleutils_masked_password(char *output, size_t otplen)
Read a masked password from the console.
Definition consoleutils.c:323
QSC_EXPORT_API bool qsc_consoleutils_line_equals(const char *line1, const char *line2)
Compare two lines of text for equivalence.
Definition consoleutils.c:300
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:636
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:283
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:250
QSC_EXPORT_API void qsc_consoleutils_set_window_prompt(const char *prompt)
Set the console window prompt string.
Definition consoleutils.c:681
QSC_EXPORT_API void qsc_consoleutils_print_double(double digit)
Print a double-precision floating point number to the console.
Definition consoleutils.c:448
QSC_EXPORT_API char qsc_consoleutils_get_char(void)
Get a character from the console in a blocking manner.
Definition consoleutils.c:104
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:710
QSC_EXPORT_API void qsc_consoleutils_colored_message(const char *message, qsc_console_font_color color)
Print a colored console message.
Definition consoleutils.c:62
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