QSC Post Quantum Cryptographic Library 1.1.0.2 (B2)
A post quantum secure library written in Ansi C
Loading...
Searching...
No Matches
stringutils.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_STRINGUTILS_H
53#define QSC_STRINGUTILS_H
54
55#include "qsccommon.h"
56
57QSC_CPLUSPLUS_ENABLED_START
58
82
87#define QSC_STRINGUTILS_TOKEN_NOT_FOUND -1LL
88
93#define QSC_STRINGUTILS_HEX_EXTENSION_SIZE 2ULL
94
99#define QSC_STRINGUTILS_HEX_BYTE_SIZE 2ULL
100
109QSC_EXPORT_API size_t qsc_stringutils_formatting_count(const char* dest, size_t dstlen);
110
120QSC_EXPORT_API size_t qsc_stringutils_formatting_filter(const char* source, size_t srclen, char* dest);
121
133QSC_EXPORT_API size_t qsc_stringutils_add_line_breaks(char* dest, size_t dstlen, size_t linelen, const char* source, size_t srclen);
134
145QSC_EXPORT_API size_t qsc_stringutils_remove_line_breaks(char* dest, size_t dstlen, const char* source, size_t srclen);
146
153
160QSC_EXPORT_API void qsc_stringutils_clear_substring(char* dest, size_t length);
161
171QSC_EXPORT_API bool qsc_stringutils_compare_strings(const char* str1, const char* str2, size_t length);
172
182QSC_EXPORT_API size_t qsc_stringutils_concat_strings(char* dest, size_t dstlen, const char* source);
183
194QSC_EXPORT_API size_t qsc_stringutils_concat_and_copy(char* dest, size_t dstlen, const char* str1, const char* str2);
195
206QSC_EXPORT_API size_t qsc_stringutils_copy_substring(char* dest, size_t dstlen, const char* source, size_t srclen);
207
217QSC_EXPORT_API size_t qsc_stringutils_copy_string(char* dest, size_t dstlen, const char* source);
218
227QSC_EXPORT_API int64_t qsc_stringutils_find_char(const char* source, const char token);
228
237QSC_EXPORT_API int64_t qsc_stringutils_find_string(const char* source, const char* token);
238
245QSC_EXPORT_API void qsc_stringutils_byte_to_hex(char* hex, uint8_t input);
246
254QSC_EXPORT_API uint8_t qsc_stringutils_hex_to_byte(const char* hex);
255
266QSC_EXPORT_API int64_t qsc_stringutils_insert_string(char* dest, size_t dstlen, const char* source, size_t offset);
267
275QSC_EXPORT_API bool qsc_stringutils_is_empty(const char* source);
276
285QSC_EXPORT_API bool qsc_stringutils_is_hex(const char* source, size_t srclen);
286
295QSC_EXPORT_API bool qsc_stringutils_is_numeric(const char* source, size_t srclen);
296
307QSC_EXPORT_API char* qsc_stringutils_register_string(char** source, size_t count);
308
317QSC_EXPORT_API size_t qsc_stringutils_remove_null_chars(char* source, size_t srclen);
318
328QSC_EXPORT_API int64_t qsc_stringutils_reverse_find_string(const char* source, const char* token, size_t start);
329
338QSC_EXPORT_API const char* qsc_stringutils_reverse_sub_string(const char* source, const char* token);
339
349bool qsc_stringutils_string_compare(const char* str1, const char* str2, size_t length);
350
359QSC_EXPORT_API int32_t qsc_stringutils_string_comparison(const char* source, const char* token);
360
369QSC_EXPORT_API bool qsc_stringutils_string_contains(const char* source, const char* token);
370
379QSC_EXPORT_API bool qsc_stringutils_strings_equal(const char* str1, const char* str2);
380
392QSC_EXPORT_API char** qsc_stringutils_split_string(char* source, const char* delim, size_t* count);
393
403QSC_EXPORT_API void qsc_stringutils_split_strings(char* dest1, char* dest2, size_t destlen, const char* source, const char* token);
404
415QSC_EXPORT_API char* qsc_stringutils_sub_string(const char* source, const char* token);
416
424QSC_EXPORT_API int32_t qsc_stringutils_string_to_int(const char* source);
425
433QSC_EXPORT_API size_t qsc_stringutils_string_size(const char* source);
434
442QSC_EXPORT_API void qsc_stringutils_int_to_string(int32_t num, char* dest, size_t dstlen);
443
451QSC_EXPORT_API void qsc_stringutils_uint32_to_string(uint32_t num, char* dest, size_t destlen);
452
460QSC_EXPORT_API void qsc_stringutils_int64_to_string(int64_t num, char* dest, size_t dstlen);
461
469QSC_EXPORT_API void qsc_stringutils_uint64_to_string(uint64_t num, char* dest, size_t dstlen);
470
477
484
491
498
507QSC_EXPORT_API size_t qsc_stringutils_whitespace_count(const char* source, size_t srclen);
508
518QSC_EXPORT_API size_t qsc_stringutils_whitespace_filter(const char* source, size_t srclen, char* dest);
519
520QSC_CPLUSPLUS_ENABLED_END
521
522#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
QSC_EXPORT_API bool qsc_stringutils_is_empty(const char *source)
Check if a string contains and characters.
Definition stringutils.c:474
QSC_EXPORT_API int32_t qsc_stringutils_string_to_int(const char *source)
Convert a string to a 32-bit integer.
Definition stringutils.c:885
QSC_EXPORT_API char * qsc_stringutils_sub_string(const char *source, const char *token)
Find a substring within a string.
Definition stringutils.c:942
QSC_EXPORT_API size_t qsc_stringutils_remove_null_chars(char *source, size_t srclen)
Remove null characters from an array.
Definition stringutils.c:589
QSC_EXPORT_API const char * qsc_stringutils_reverse_sub_string(const char *source, const char *token)
Find a substring within a string, searching in reverse.
Definition stringutils.c:660
QSC_EXPORT_API void qsc_stringutils_split_strings(char *dest1, char *dest2, size_t destlen, const char *source, const char *token)
Split a string into two substrings.
Definition stringutils.c:685
QSC_EXPORT_API bool qsc_stringutils_string_contains(const char *source, const char *token)
Test if the string contains a substring.
Definition stringutils.c:849
bool qsc_stringutils_string_compare(const char *str1, const char *str2, size_t length)
Compare two strings for equality.
Definition stringutils.c:799
QSC_EXPORT_API size_t qsc_stringutils_whitespace_count(const char *source, size_t srclen)
Count all the white-spaces in a string.
Definition stringutils.c:1037
QSC_EXPORT_API size_t qsc_stringutils_add_line_breaks(char *dest, size_t dstlen, size_t linelen, const char *source, size_t srclen)
Add line breaks to a string at a line length interval.
Definition stringutils.c:31
QSC_EXPORT_API void qsc_stringutils_clear_substring(char *dest, size_t length)
Clear a length of data from a string.
Definition stringutils.c:124
QSC_EXPORT_API bool qsc_stringutils_is_hex(const char *source, size_t srclen)
Check that a string contains only hexadecimal ASCII characters.
Definition stringutils.c:490
QSC_EXPORT_API void qsc_stringutils_clear_string(char *source)
Clear a string of data.
Definition stringutils.c:107
QSC_EXPORT_API void qsc_stringutils_uint32_to_string(uint32_t num, char *dest, size_t destlen)
Convert a 32-bit unsigned integer to a string.
Definition stringutils.c:428
QSC_EXPORT_API void qsc_stringutils_int_to_string(int32_t num, char *dest, size_t dstlen)
Convert a 32-bit signed integer to a string.
Definition stringutils.c:414
QSC_EXPORT_API size_t qsc_stringutils_concat_strings(char *dest, size_t dstlen, const char *source)
Concatenate two strings.
Definition stringutils.c:154
QSC_EXPORT_API char * qsc_stringutils_register_string(char **source, size_t count)
Join an array of strings to form one string.
Definition stringutils.c:550
QSC_EXPORT_API void qsc_stringutils_to_uppercase(char *source)
Convert a string to all upper-case characters.
Definition stringutils.c:1017
QSC_EXPORT_API size_t qsc_stringutils_whitespace_filter(const char *source, size_t srclen, char *dest)
Remove all the white-spaces from a string.
Definition stringutils.c:1059
QSC_EXPORT_API size_t qsc_stringutils_string_size(const char *source)
Get the character length of a string.
Definition stringutils.c:922
QSC_EXPORT_API void qsc_stringutils_trim_newline(char *source)
Trim null and newline characters from a string.
Definition stringutils.c:979
QSC_EXPORT_API void qsc_stringutils_int64_to_string(int64_t num, char *dest, size_t dstlen)
Convert a 64-bit signed integer to a string.
Definition stringutils.c:442
QSC_EXPORT_API int64_t qsc_stringutils_insert_string(char *dest, size_t dstlen, const char *source, size_t offset)
Inserts a substring into a string.
Definition stringutils.c:395
QSC_EXPORT_API size_t qsc_stringutils_copy_substring(char *dest, size_t dstlen, const char *source, size_t srclen)
Copy a length of one string to another.
Definition stringutils.c:264
QSC_EXPORT_API int64_t qsc_stringutils_reverse_find_string(const char *source, const char *token, size_t start)
Find the position of a substring within a string, searching in reverse.
Definition stringutils.c:622
QSC_EXPORT_API void qsc_stringutils_trim_spaces(char *source)
Trim a trailing space character from a string.
Definition stringutils.c:1000
QSC_EXPORT_API bool qsc_stringutils_strings_equal(const char *str1, const char *str2)
Compare two strings for equality.
Definition stringutils.c:866
QSC_EXPORT_API size_t qsc_stringutils_remove_line_breaks(char *dest, size_t dstlen, const char *source, size_t srclen)
Removes all line breaks from a string.
Definition stringutils.c:77
QSC_EXPORT_API void qsc_stringutils_uint64_to_string(uint64_t num, char *dest, size_t dstlen)
Convert a 64-bit unsigned integer to a string.
Definition stringutils.c:458
QSC_EXPORT_API bool qsc_stringutils_is_numeric(const char *source, size_t srclen)
Check that a string contains only numeric ASCII characters.
Definition stringutils.c:520
QSC_EXPORT_API bool qsc_stringutils_compare_strings(const char *str1, const char *str2, size_t length)
Compare two strings for equivalence.
Definition stringutils.c:134
QSC_EXPORT_API int64_t qsc_stringutils_find_char(const char *source, const char token)
Find a character position within a string.
Definition stringutils.c:332
QSC_EXPORT_API size_t qsc_stringutils_formatting_filter(const char *source, size_t srclen, char *dest)
Remove all white-spaces, lines stops, and returns from a string.
Definition stringutils.c:308
QSC_EXPORT_API char ** qsc_stringutils_split_string(char *source, const char *delim, size_t *count)
Split a string into a substring 2-dimensional array.
Definition stringutils.c:718
QSC_EXPORT_API size_t qsc_stringutils_formatting_count(const char *dest, size_t dstlen)
Counts all white-spaces, line stops, and returns from a string.
Definition stringutils.c:286
QSC_EXPORT_API int32_t qsc_stringutils_string_comparison(const char *source, const char *token)
Test if the string contains a substring.
Definition stringutils.c:826
QSC_EXPORT_API size_t qsc_stringutils_concat_and_copy(char *dest, size_t dstlen, const char *str1, const char *str2)
Concatenate two strings and copy them to a third string.
Definition stringutils.c:191
QSC_EXPORT_API uint8_t qsc_stringutils_hex_to_byte(const char *hex)
Convert a hexidecimal string to a byte.
Definition stringutils.c:384
QSC_EXPORT_API void qsc_stringutils_byte_to_hex(char *hex, uint8_t input)
Convert a byte to a hexidecimal string.
Definition stringutils.c:377
QSC_EXPORT_API void qsc_stringutils_to_lowercase(char *source)
Convert a string to all lower-case characters.
Definition stringutils.c:959
QSC_EXPORT_API int64_t qsc_stringutils_find_string(const char *source, const char *token)
Find a substrings position within a string.
Definition stringutils.c:354
QSC_EXPORT_API size_t qsc_stringutils_copy_string(char *dest, size_t dstlen, const char *source)
Copy a source string to a destination string.
Definition stringutils.c:230