QSC Post Quantum Cryptographic Library 1.0.0.6c (A6)
A post quantum secure library written in Ansi C
 
Loading...
Searching...
No Matches
stringutils.h
Go to the documentation of this file.
1/* 2025 Quantum Resistant Cryptographic Solutions Corporation
2 * All Rights Reserved.
3 *
4 * NOTICE: This software and all accompanying materials are the exclusive
5 * property of Quantum Resistant Cryptographic Solutions Corporation (QRCS).
6 * The intellectual and technical concepts contained within this implementation
7 * are proprietary to QRCS and its authorized licensors and are protected under
8 * applicable U.S. and international copyright, patent, and trade secret laws.
9 *
10 * CRYPTOGRAPHIC STANDARDS:
11 * - This software includes implementations of cryptographic algorithms such as
12 * SHA3, AES, and others. These algorithms are public domain or standardized
13 * by organizations such as NIST and are NOT the property of QRCS.
14 * - However, all source code, optimizations, and implementations in this library
15 * are original works of QRCS and are protected under this license.
16 *
17 * RESTRICTIONS:
18 * - Redistribution, modification, or unauthorized distribution of this software,
19 * in whole or in part, is strictly prohibited.
20 * - This software is provided for non-commercial, educational, and research
21 * purposes only. Commercial use in any form is expressly forbidden.
22 * - Licensing and authorized distribution are solely at the discretion of QRCS.
23 * - Any use of this software implies acceptance of these restrictions.
24 *
25 * DISCLAIMER:
26 * This software is provided "as is," without warranty of any kind, express or
27 * implied, including but not limited to warranties of merchantability or fitness
28 * for a particular purpose. QRCS disclaims all liability for any direct, indirect,
29 * incidental, or consequential damages resulting from the use or misuse of this software.
30 *
31 * FULL LICENSE:
32 * This software is subject to the **Quantum Resistant Cryptographic Solutions
33 * Proprietary License (QRCS-PL)**. The complete license terms are included
34 * in the LICENSE.txt file distributed with this software.
35 *
36 * Written by: John G. Underhill
37 * Contact: john.underhill@protonmail.com
38 */
39
40#ifndef QSC_STRINGUTILS_H
41#define QSC_STRINGUTILS_H
42
43#include "common.h"
44
45QSC_CPLUSPLUS_ENABLED_START
46
70
75#define QSC_STRINGUTILS_TOKEN_NOT_FOUND -1LL
76
81#define QSC_STRINGUTILS_HEX_EXTENSION_SIZE 2ULL
82
87#define QSC_STRINGUTILS_HEX_BYTE_SIZE 2ULL
88
97QSC_EXPORT_API size_t qsc_stringutils_formatting_count(const char* dest, size_t dstlen);
98
108QSC_EXPORT_API size_t qsc_stringutils_formatting_filter(const char* source, size_t srclen, char* dest);
109
121QSC_EXPORT_API size_t qsc_stringutils_add_line_breaks(char* dest, size_t dstlen, size_t linelen, const char* source, size_t srclen);
122
133QSC_EXPORT_API size_t qsc_stringutils_remove_line_breaks(char* dest, size_t dstlen, const char* source, size_t srclen);
134
141
148QSC_EXPORT_API void qsc_stringutils_clear_substring(char* dest, size_t length);
149
159QSC_EXPORT_API bool qsc_stringutils_compare_strings(const char* str1, const char* str2, size_t length);
160
170QSC_EXPORT_API size_t qsc_stringutils_concat_strings(char* dest, size_t dstlen, const char* source);
171
182QSC_EXPORT_API size_t qsc_stringutils_concat_and_copy(char* dest, size_t dstlen, const char* str1, const char* str2);
183
194QSC_EXPORT_API size_t qsc_stringutils_copy_substring(char* dest, size_t dstlen, const char* source, size_t srclen);
195
205QSC_EXPORT_API size_t qsc_stringutils_copy_string(char* dest, size_t dstlen, const char* source);
206
215QSC_EXPORT_API int64_t qsc_stringutils_find_char(const char* source, const char token);
216
225QSC_EXPORT_API int64_t qsc_stringutils_find_string(const char* source, const char* token);
226
233QSC_EXPORT_API void qsc_stringutils_byte_to_hex(char* hex, uint8_t input);
234
242QSC_EXPORT_API uint8_t qsc_stringutils_hex_to_byte(const char* hex);
243
254QSC_EXPORT_API int64_t qsc_stringutils_insert_string(char* dest, size_t dstlen, const char* source, size_t offset);
255
263QSC_EXPORT_API bool qsc_stringutils_is_empty(const char* source);
264
273QSC_EXPORT_API bool qsc_stringutils_is_hex(const char* source, size_t srclen);
274
283QSC_EXPORT_API bool qsc_stringutils_is_numeric(const char* source, size_t srclen);
284
295QSC_EXPORT_API char* qsc_stringutils_register_string(char** source, size_t count);
296
305QSC_EXPORT_API size_t qsc_stringutils_remove_null_chars(char* source, size_t srclen);
306
316QSC_EXPORT_API int64_t qsc_stringutils_reverse_find_string(const char* source, const char* token, size_t start);
317
326QSC_EXPORT_API const char* qsc_stringutils_reverse_sub_string(const char* source, const char* token);
327
337bool qsc_stringutils_string_compare(const char* str1, const char* str2, size_t length);
338
347QSC_EXPORT_API int32_t qsc_stringutils_string_comparison(const char* source, const char* token);
348
357QSC_EXPORT_API bool qsc_stringutils_string_contains(const char* source, const char* token);
358
367QSC_EXPORT_API bool qsc_stringutils_strings_equal(const char* str1, const char* str2);
368
380QSC_EXPORT_API char** qsc_stringutils_split_string(char* source, const char* delim, size_t* count);
381
391QSC_EXPORT_API void qsc_stringutils_split_strings(char* dest1, char* dest2, size_t destlen, const char* source, const char* token);
392
403QSC_EXPORT_API char* qsc_stringutils_sub_string(const char* source, const char* token);
404
412QSC_EXPORT_API int32_t qsc_stringutils_string_to_int(const char* source);
413
421QSC_EXPORT_API size_t qsc_stringutils_string_size(const char* source);
422
430QSC_EXPORT_API void qsc_stringutils_int_to_string(int32_t num, char* dest, size_t dstlen);
431
439QSC_EXPORT_API void qsc_stringutils_uint32_to_string(uint32_t num, char* dest, size_t destlen);
440
448QSC_EXPORT_API void qsc_stringutils_int64_to_string(int64_t num, char* dest, size_t dstlen);
449
457QSC_EXPORT_API void qsc_stringutils_uint64_to_string(uint64_t num, char* dest, size_t dstlen);
458
465
472
479
486
495QSC_EXPORT_API size_t qsc_stringutils_whitespace_count(const char* source, size_t srclen);
496
506QSC_EXPORT_API size_t qsc_stringutils_whitespace_filter(const char* source, size_t srclen, char* dest);
507
508QSC_CPLUSPLUS_ENABLED_END
509
510#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 common.h:520
QSC_EXPORT_API bool qsc_stringutils_is_empty(const char *source)
Check if a string contains and characters.
Definition stringutils.c:459
QSC_EXPORT_API int32_t qsc_stringutils_string_to_int(const char *source)
Convert a string to a 32-bit integer.
Definition stringutils.c:860
QSC_EXPORT_API char * qsc_stringutils_sub_string(const char *source, const char *token)
Find a substring within a string.
Definition stringutils.c:908
QSC_EXPORT_API size_t qsc_stringutils_remove_null_chars(char *source, size_t srclen)
Remove null characters from an array.
Definition stringutils.c:564
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:634
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:659
QSC_EXPORT_API bool qsc_stringutils_string_contains(const char *source, const char *token)
Test if the string contains a substring.
Definition stringutils.c:817
bool qsc_stringutils_string_compare(const char *str1, const char *str2, size_t length)
Compare two strings for equality.
Definition stringutils.c:772
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:1003
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:115
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:466
QSC_EXPORT_API void qsc_stringutils_clear_string(char *source)
Clear a string of data.
Definition stringutils.c:98
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:417
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:403
QSC_EXPORT_API size_t qsc_stringutils_concat_strings(char *dest, size_t dstlen, const char *source)
Concatenate two strings.
Definition stringutils.c:143
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:526
QSC_EXPORT_API void qsc_stringutils_to_uppercase(char *source)
Convert a string to all upper-case characters.
Definition stringutils.c:983
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:1025
QSC_EXPORT_API size_t qsc_stringutils_string_size(const char *source)
Get the character length of a string.
Definition stringutils.c:888
QSC_EXPORT_API void qsc_stringutils_trim_newline(char *source)
Trim null and newline characters from a string.
Definition stringutils.c:945
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:431
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:384
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:253
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:596
QSC_EXPORT_API void qsc_stringutils_trim_spaces(char *source)
Trim a trailing space character from a string.
Definition stringutils.c:966
QSC_EXPORT_API bool qsc_stringutils_strings_equal(const char *str1, const char *str2)
Compare two strings for equality.
Definition stringutils.c:834
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:68
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:445
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:496
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:125
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:321
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:297
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:692
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:275
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:799
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:180
QSC_EXPORT_API uint8_t qsc_stringutils_hex_to_byte(const char *hex)
Convert a hexidecimal string to a byte.
Definition stringutils.c:373
QSC_EXPORT_API void qsc_stringutils_byte_to_hex(char *hex, uint8_t input)
Convert a byte to a hexidecimal string.
Definition stringutils.c:366
QSC_EXPORT_API void qsc_stringutils_to_lowercase(char *source)
Convert a string to all lower-case characters.
Definition stringutils.c:925
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:343
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:219