57QSC_CPLUSPLUS_ENABLED_START
189#define QSC_ENCODING_BER_CLASS_UNIVERSAL 0x00U
199#define QSC_ENCODING_BER_CLASS_APPLICATION 0x40U
209#define QSC_ENCODING_BER_CLASS_CONTEXT_SPECIFIC 0x80U
218#define QSC_ENCODING_BER_CLASS_PRIVATE 0xC0U
230#define QSC_BER_ENCODING_INDEFINITE_LENGTH ((size_t)-1)
702#if defined(QSC_DEBUG_MODE)
715QSC_CPLUSPLUS_ENABLED_END
QSC_EXPORT_API qsc_encoding_ber_element * qsc_encoding_ber_decode_element(const uint8_t *buffer, size_t buflen, size_t *consumed)
Decode a single BER element from an octet buffer.
Definition encoding.c:1243
QSC_EXPORT_API size_t qsc_encoding_base64_decoded_size(const char *input, size_t length)
Compute the byte count required to hold the decoded form of a Base64 string.
Definition encoding.c:378
QSC_EXPORT_API size_t qsc_encoding_der_encode_element(qsc_encoding_ber_element *element, uint8_t *buffer, size_t buflen)
Encode an ASN.1 element tree using DER.
Definition encoding.c:1351
QSC_EXPORT_API size_t qsc_encoding_ber_encode_element(qsc_encoding_ber_element *element, uint8_t *buffer, size_t buflen)
Encode a complete BER element (tag + length + value) to an octet buffer.
Definition encoding.c:1128
QSC_EXPORT_API bool qsc_encoding_pem_encode(const char *label, char *output, size_t otplen, const uint8_t *data, size_t datalen)
Encode binary data in PEM format.
Definition encoding.c:1740
QSC_EXPORT_API size_t qsc_encoding_ber_decode_length(const uint8_t *buffer, size_t buflen, size_t *length, bool *indef)
Decode a BER length field from an octet buffer.
Definition encoding.c:776
QSC_EXPORT_API bool qsc_encoding_pem_decode(const char *input, size_t inplen, uint8_t *output, size_t otplen, size_t *declen)
Decode a PEM-formatted string to binary data.
Definition encoding.c:1624
QSC_EXPORT_API size_t qsc_encoding_ber_encode_length(size_t length, uint8_t *buffer, size_t buflen)
Encode a length value to BER form.
Definition encoding.c:649
QSC_EXPORT_API bool qsc_encoding_hex_encode(const uint8_t *input, size_t inplen, char *output, size_t otplen)
Encode binary data to an upper-case hexadecimal string.
Definition encoding.c:1597
QSC_EXPORT_API bool qsc_encoding_base64_is_valid_char(char value)
Test whether a character belongs to the Base64 alphabet.
Definition encoding.c:336
QSC_EXPORT_API size_t qsc_encoding_ber_decode_tag(const uint8_t *buffer, size_t buflen, uint8_t *tagclass, bool *construct, uint32_t *tagnum)
Decode a BER tag field from an octet buffer.
Definition encoding.c:707
QSC_EXPORT_API void qsc_encoding_ber_free_element(qsc_encoding_ber_element *element)
Recursively free a decoded BER element tree.
Definition encoding.c:845
QSC_EXPORT_API size_t qsc_encoding_base64_encoded_size(size_t length)
Compute the character count required to hold the Base64 encoding of length input bytes,...
Definition encoding.c:355
qsc_encoding_ber_asn1_tag_t
Universal ASN.1 tag numbers as defined in X.680 8.6 and X.690 Table 1.
Definition encoding.h:246
@ BER_ASN1_UTCTIME
Definition encoding.h:269
@ BER_ASN1_SEQUENCE
Definition encoding.h:262
@ BER_ASN1_INTEGER
Definition encoding.h:249
@ BER_ASN1_GENERAL_STRING
Definition encoding.h:273
@ BER_ASN1_CHARACTER_STRING
Definition encoding.h:275
@ BER_ASN1_OBJECT_DESCRIPTOR
Definition encoding.h:254
@ BER_ASN1_VIDEOTEX_STRING
Definition encoding.h:267
@ BER_ASN1_UTF8_STRING
Definition encoding.h:259
@ BER_ASN1_PRINTABLE_STRING
Definition encoding.h:265
@ BER_ASN1_BIT_STRING
Definition encoding.h:250
@ BER_ASN1_T61_STRING
Definition encoding.h:266
@ BER_ASN1_NULL
Definition encoding.h:252
@ BER_ASN1_EOC
Definition encoding.h:247
@ BER_ASN1_OCTET_STRING
Definition encoding.h:251
@ BER_ASN1_BMP_STRING
Definition encoding.h:276
@ BER_ASN1_GENERALIZEDTIME
Definition encoding.h:270
@ BER_ASN1_OBJECT_IDENTIFIER
Definition encoding.h:253
@ BER_ASN1_VISIBLE_STRING
Definition encoding.h:272
@ BER_ASN1_EMBEDDED_PDV
Definition encoding.h:258
@ BER_ASN1_SET
Definition encoding.h:263
@ BER_ASN1_IA5_STRING
Definition encoding.h:268
@ BER_ASN1_UNIVERSAL_STRING
Definition encoding.h:274
@ BER_ASN1_REAL
Definition encoding.h:256
@ BER_ASN1_ENUMERATED
Definition encoding.h:257
@ BER_ASN1_GRAPHIC_STRING
Definition encoding.h:271
@ BER_ASN1_NUMERIC_STRING
Definition encoding.h:264
@ BER_ASN1_BOOLEAN
Definition encoding.h:248
@ BER_ASN1_RELATIVE_OID
Definition encoding.h:260
@ BER_ASN1_EXTERNAL
Definition encoding.h:255
QSC_EXPORT_API bool qsc_encoding_base64_encode(char *output, size_t otplen, const uint8_t *input, size_t inplen)
Encode a byte array to a Base64 string.
Definition encoding.c:411
QSC_EXPORT_API bool qsc_encoding_hex_decode(const char *input, size_t inplen, uint8_t *output, size_t otplen, size_t *declen)
Decode a hexadecimal string to binary data.
Definition encoding.c:1494
QSC_EXPORT_API size_t qsc_encoding_ber_encode_tag(uint8_t tagclass, bool construct, uint32_t tagnum, uint8_t *buffer, size_t buflen)
Encode an ASN.1 tag to BER form.
Definition encoding.c:568
QSC_EXPORT_API qsc_encoding_ber_element * qsc_encoding_der_decode_element(const uint8_t *buffer, size_t buflen, size_t *consumed)
Decode a single DER element from an octet buffer.
Definition encoding.c:1316
QSC_EXPORT_API bool qsc_encoding_base64_decode(uint8_t *output, size_t otplen, const char *input, size_t inplen)
Decode a Base64-encoded string to a byte array.
Definition encoding.c:452
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
In-memory representation of a single BER/DER ASN.1 TLV element.
Definition encoding.h:311
size_t ccount
Definition encoding.h:332
uint8_t tagclass
Definition encoding.h:312
uint32_t tagnumber
Definition encoding.h:318
bool constructed
Definition encoding.h:316
uint8_t * value
Definition encoding.h:325
struct qsc_encoding_ber_element ** children
Definition encoding.h:329
bool indefinite
Definition encoding.h:320
size_t length
Definition encoding.h:322