OPENSSL_HEXCHAR2INT(3ossl)
β¨ OPENSSL_HEXCHAR2INT π
okay bestie, so this is the OpenSSL manual page for OPENSSL_HEXCHAR2INT β and it's literally the whole hex encoding/decoding situation, no cap π
πΈ NAME πΈ
OPENSSL_hexchar2int, OPENSSL_hexstr2buf_ex, OPENSSL_hexstr2buf, OPENSSL_buf2hexstr_ex, OPENSSL_buf2hexstr β these are the Hex encoding and decoding functions, and honestly they're giving very useful π¦
β¨ SYNOPSIS β¨
#include <openssl/crypto.h>
int OPENSSL_hexchar2int(unsigned char c);
int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, long *buflen,
const char *str, const char sep);
unsigned char *OPENSSL_hexstr2buf(const char *str, long *len);
int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength,
const unsigned char *buf, long buflen,
const char sep);
char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen);
like, look at all those signatures slaying in a row π
π DESCRIPTION π
okay so let's go through these one by one, because each one is kinda its own little icon π
π the one that reads a single char
OPENSSL_hexchar2int() converts a hexadecimal character to its numeric equivalent. that's it, that's the whole job. one char in, one number out. simple queen behavior β¨
π©· the ones that decode a hex string into bytes
OPENSSL_hexstr2buf_ex() decodes the hex string str and places the resulting string of bytes in the given buf. π«Ά
so about the arguments, bestie:
- the character
sepis the separator between the bytes β and setting this to'\0'means that there is no separator, periodt buf_ngives the size of the buffer- if
buflenis notNULL, it is filled in with the result length - to find out how large the result will be, call this function with
NULLforbuf(yes, that's the whole trick, iykyk)
also important π¨ colons between two-character hex "bytes" are accepted and ignored. and an odd number of hex digits is an error β like, do not come in here with half a byte, that's not the vibe π
OPENSSL_hexstr2buf() does the same thing as OPENSSL_hexstr2buf_ex(), but it allocates the space for the result, and returns the result. it uses a default separator of ':'. π
the memory is allocated by calling OPENSSL_malloc() and should be released by calling OPENSSL_free() β so like, please free it, don't just leave it there, that's not main character energy π
π¦ the ones that turn bytes back into a hex string
OPENSSL_buf2hexstr_ex() encodes the contents of the given buf with length buflen and places the resulting hexadecimal character string in the given str. β¨
the deets:
- the character
sepis the separator between the bytes β setting this to'\0'means that there is no separator str_ngives the size of the of the string buffer (yes it really says "of the of the", we're keeping it, no notes π)- if
strlengthis notNULL, it is filled in with the result length - to find out how large the result will be, call this function with
NULLforstrβ same little power move as before π§
OPENSSL_buf2hexstr() does the same thing as OPENSSL_buf2hexstr_ex(), but it allocates the space for the result, and returns the result. it uses a default separator of ':'. πΈ the memory is allocated by calling OPENSSL_malloc() and should be released by calling OPENSSL_free() β bestie, OPENSSL_free(), always π«Ά
β RETURN VALUES β
OPENSSL_hexchar2intreturns the value of a decoded hex character, or-1on error. π₯OPENSSL_buf2hexstr()andOPENSSL_hexstr2buf()return a pointer to allocated memory, orNULLon error. πOPENSSL_buf2hexstr_ex()andOPENSSL_hexstr2buf_ex()return1on success, or0on error. β¨
like, 1 means slay, 0 means something went wrong π
π COPYRIGHT π
Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
and that's the whole page, bestie π so this was OpenSSL 3.5.0, dated 2026-09-25, page OPENSSL_HEXCHAR2INT(3ossl) β go forth and hex-decode responsibly, mwah π§β¨
π¦ where this page comes from
- opensuse-leap 16.0: openssl-3-doc 3.5.0-160000.11.1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms