/usr/include/sodium
NameSizeModeActions
core.h3910644editdlrm
crypto_aead_aes256gcm.h79800644editdlrm
crypto_aead_chacha20poly1305.h87820644editdlrm
crypto_aead_xchacha20poly1305.h48480644editdlrm
crypto_auth.h11430644editdlrm
crypto_auth_hmacsha256.h21360644editdlrm
crypto_auth_hmacsha512.h21230644editdlrm
crypto_auth_hmacsha512256.h21330644editdlrm
crypto_box.h68380644editdlrm
crypto_box_curve25519xchacha20poly1305.h79570644editdlrm
crypto_box_curve25519xsalsa20poly1305.h46970644editdlrm
crypto_core_ed25519.h28980644editdlrm
crypto_core_hchacha20.h8160644editdlrm
crypto_core_hsalsa20.h8040644editdlrm
crypto_core_ristretto255.h31400644editdlrm
crypto_core_salsa20.h7920644editdlrm
crypto_core_salsa208.h9680644editdlrm
crypto_core_salsa2012.h8160644editdlrm
crypto_generichash.h24950644editdlrm
crypto_generichash_blake2b.h39630644editdlrm
crypto_hash.h9010644editdlrm
crypto_hash_sha256.h14920644editdlrm
crypto_hash_sha512.h14960644editdlrm
crypto_kdf.h13080644editdlrm
crypto_kdf_blake2b.h10710644editdlrm
crypto_kx.h22010644editdlrm
crypto_onetimeauth.h19120644editdlrm
crypto_onetimeauth_poly1305.h21980644editdlrm
crypto_pwhash.h49660644editdlrm
crypto_pwhash_argon2i.h39190644editdlrm
crypto_pwhash_argon2id.h39810644editdlrm
crypto_pwhash_scryptsalsa208sha256.h46880644editdlrm
crypto_scalarmult.h11840644editdlrm
crypto_scalarmult_curve25519.h10980644editdlrm
crypto_scalarmult_ed25519.h14060644editdlrm
crypto_scalarmult_ristretto255.h11190644editdlrm
crypto_secretbox.h33160644editdlrm
crypto_secretbox_xchacha20poly1305.h28530644editdlrm
crypto_secretbox_xsalsa20poly1305.h24190644editdlrm
crypto_secretstream_xchacha20poly1305.h38320644editdlrm
crypto_shorthash.h9600644editdlrm
crypto_shorthash_siphash24.h12360644editdlrm
crypto_sign.h33530644editdlrm
crypto_sign_ed25519.h43410644editdlrm
crypto_sign_edwards25519sha512batch.h20530644editdlrm
crypto_stream.h16060644editdlrm
crypto_stream_chacha20.h36720644editdlrm
crypto_stream_salsa20.h18360644editdlrm
crypto_stream_salsa208.h17310644editdlrm
crypto_stream_salsa2012.h15320644editdlrm
crypto_stream_xchacha20.h18750644editdlrm
crypto_stream_xsalsa20.h18560644editdlrm
crypto_verify_16.h4190644editdlrm
crypto_verify_32.h4190644editdlrm
crypto_verify_64.h4190644editdlrm
export.h13470644editdlrm
randombytes.h18470644editdlrm
randombytes_internal_random.h4270644editdlrm
randombytes_sysrandom.h2820644editdlrm
runtime.h8890644editdlrm
utils.h61490644editdlrm
version.h5090644editdlrm
Edit: /usr/include/sodium/utils.h (6149B)
#ifndef sodium_utils_H #define sodium_utils_H #include #include "export.h" #ifdef __cplusplus extern "C" { #endif #ifndef SODIUM_C99 # if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L # define SODIUM_C99(X) # else # define SODIUM_C99(X) X # endif #endif SODIUM_EXPORT void sodium_memzero(void * const pnt, const size_t len); SODIUM_EXPORT void sodium_stackzero(const size_t len); /* * WARNING: sodium_memcmp() must be used to verify if two secret keys * are equal, in constant time. * It returns 0 if the keys are equal, and -1 if they differ. * This function is not designed for lexicographical comparisons. */ SODIUM_EXPORT int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) __attribute__ ((warn_unused_result)); /* * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ * It is suitable for lexicographical comparisons, or to compare nonces * and counters stored in little-endian format. * However, it is slower than sodium_memcmp(). */ SODIUM_EXPORT int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, size_t len) __attribute__ ((warn_unused_result)); SODIUM_EXPORT int sodium_is_zero(const unsigned char *n, const size_t nlen); SODIUM_EXPORT void sodium_increment(unsigned char *n, const size_t nlen); SODIUM_EXPORT void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); SODIUM_EXPORT void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); SODIUM_EXPORT char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, const unsigned char * const bin, const size_t bin_len) __attribute__ ((nonnull(1))); SODIUM_EXPORT int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, const char * const hex, const size_t hex_len, const char * const ignore, size_t * const bin_len, const char ** const hex_end) __attribute__ ((nonnull(1))); #define sodium_base64_VARIANT_ORIGINAL 1 #define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 #define sodium_base64_VARIANT_URLSAFE 5 #define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 /* * Computes the required length to encode BIN_LEN bytes as a base64 string * using the given variant. The computed length includes a trailing \0. */ #define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ (((BIN_LEN) / 3U) * 4U + \ ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) SODIUM_EXPORT size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); SODIUM_EXPORT char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, const unsigned char * const bin, const size_t bin_len, const int variant) __attribute__ ((nonnull(1))); SODIUM_EXPORT int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, const char * const b64, const size_t b64_len, const char * const ignore, size_t * const bin_len, const char ** const b64_end, const int variant) __attribute__ ((nonnull(1))); SODIUM_EXPORT int sodium_mlock(void * const addr, const size_t len) __attribute__ ((nonnull)); SODIUM_EXPORT int sodium_munlock(void * const addr, const size_t len) __attribute__ ((nonnull)); /* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose * allocation functions. * * They return a pointer to a region filled with 0xd0 bytes, immediately * followed by a guard page. * As a result, accessing a single byte after the requested allocation size * will intentionally trigger a segmentation fault. * * A canary and an additional guard page placed before the beginning of the * region may also kill the process if a buffer underflow is detected. * * The memory layout is: * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] * With the layout of the unprotected pages being: * [optional padding][16-bytes canary][user region] * * However: * - These functions are significantly slower than standard functions * - Each allocation requires 3 or 4 additional pages * - The returned address will not be aligned if the allocation size is not * a multiple of the required alignment. For this reason, these functions * are designed to store data, such as secret keys and messages. * * sodium_malloc() can be used to allocate any libsodium data structure. * * The crypto_generichash_state structure is packed and its length is * either 357 or 361 bytes. For this reason, when using sodium_malloc() to * allocate a crypto_generichash_state structure, padding must be added in * order to ensure proper alignment. crypto_generichash_statebytes() * returns the rounded up structure size, and should be prefered to sizeof(): * state = sodium_malloc(crypto_generichash_statebytes()); */ SODIUM_EXPORT void *sodium_malloc(const size_t size) __attribute__ ((malloc)); SODIUM_EXPORT void *sodium_allocarray(size_t count, size_t size) __attribute__ ((malloc)); SODIUM_EXPORT void sodium_free(void *ptr); SODIUM_EXPORT int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); SODIUM_EXPORT int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); SODIUM_EXPORT int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); SODIUM_EXPORT int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, size_t unpadded_buflen, size_t blocksize, size_t max_buflen) __attribute__ ((nonnull(2))); SODIUM_EXPORT int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, size_t padded_buflen, size_t blocksize) __attribute__ ((nonnull(2))); /* -------- */ int _sodium_alloc_init(void); #ifdef __cplusplus } #endif #endif