EVP_HCRYPTO_MD2(3)
β¨ NAME β¨
Okay so first things first: this page is EVP_HCRYPTO_MD2(3), straight out of the Heimdal crypto library, and it's the EVP generic crypto functions page. It's a whole buffet of cipher getters, digest getters, and the context plumbing that makes them actually go. No cap, this thing is stacked. π«Ά
πΈ Functions πΈ
Here's the entire roster, in order, exactly as declared β nobody gets left behind, not one single signature:
const EVP_CIPHER * EVP_wincrypt_des_ede3_cbc (void)
const EVP_CIPHER * EVP_hcrypto_aes_128_cbc (void)
const EVP_CIPHER * EVP_hcrypto_aes_192_cbc (void)
const EVP_CIPHER * EVP_hcrypto_aes_256_cbc (void)
const EVP_CIPHER * EVP_hcrypto_aes_128_cfb8 (void)
const EVP_CIPHER * EVP_hcrypto_aes_192_cfb8 (void)
const EVP_CIPHER * EVP_hcrypto_aes_256_cfb8 (void)
const EVP_MD * EVP_hcrypto_sha256 (void)
const EVP_MD * EVP_hcrypto_sha384 (void)
const EVP_MD * EVP_hcrypto_sha512 (void)
const EVP_MD * EVP_hcrypto_sha1 (void)
const EVP_MD * EVP_hcrypto_md5 (void)
const EVP_MD * EVP_hcrypto_md4 (void)
const EVP_MD * EVP_hcrypto_md2 (void)
const EVP_CIPHER * EVP_hcrypto_des_cbc (void)
const EVP_CIPHER * EVP_hcrypto_des_ede3_cbc (void)
const EVP_CIPHER * EVP_hcrypto_rc2_cbc (void)
const EVP_CIPHER * EVP_hcrypto_rc2_40_cbc (void)
const EVP_CIPHER * EVP_hcrypto_rc2_64_cbc (void)
const EVP_CIPHER * EVP_hcrypto_camellia_128_cbc (void)
const EVP_CIPHER * EVP_hcrypto_camellia_192_cbc (void)
const EVP_CIPHER * EVP_hcrypto_camellia_256_cbc (void)
size_t EVP_MD_size (const EVP_MD *md)
size_t EVP_MD_block_size (const EVP_MD *md)
EVP_MD_CTX * EVP_MD_CTX_create (void)
void EVP_MD_CTX_init (EVP_MD_CTX *ctx) HC_DEPRECATED
void EVP_MD_CTX_destroy (EVP_MD_CTX *ctx)
int EVP_MD_CTX_cleanup (EVP_MD_CTX *ctx) HC_DEPRECATED
const EVP_MD * EVP_MD_CTX_md (EVP_MD_CTX *ctx)
size_t EVP_MD_CTX_size (EVP_MD_CTX *ctx)
size_t EVP_MD_CTX_block_size (EVP_MD_CTX *ctx)
int EVP_DigestInit_ex (EVP_MD_CTX *ctx, const EVP_MD *md, ENGINE
*engine)
int EVP_DigestUpdate (EVP_MD_CTX *ctx, const void *data, size_t size)
int EVP_DigestFinal_ex (EVP_MD_CTX *ctx, void *hash, unsigned int *size)
int EVP_Digest (const void *data, size_t dsize, void *hash, unsigned int
*hsize, const EVP_MD *md, ENGINE *engine)
const EVP_MD * EVP_sha256 (void)
const EVP_MD * EVP_sha384 (void)
const EVP_MD * EVP_sha512 (void)
const EVP_MD * EVP_sha1 (void)
const EVP_MD * EVP_sha (void)
const EVP_MD * EVP_md5 (void)
const EVP_MD * EVP_md4 (void)
const EVP_MD * EVP_md2 (void)
const EVP_MD * EVP_md_null (void)
size_t EVP_CIPHER_block_size (const EVP_CIPHER *c)
size_t EVP_CIPHER_key_length (const EVP_CIPHER *c)
size_t EVP_CIPHER_iv_length (const EVP_CIPHER *c)
void EVP_CIPHER_CTX_init (EVP_CIPHER_CTX *c)
int EVP_CIPHER_CTX_cleanup (EVP_CIPHER_CTX *c)
int EVP_CIPHER_CTX_set_key_length (EVP_CIPHER_CTX *c, int length)
const EVP_CIPHER * EVP_CIPHER_CTX_cipher (EVP_CIPHER_CTX *ctx)
size_t EVP_CIPHER_CTX_block_size (const EVP_CIPHER_CTX *ctx)
size_t EVP_CIPHER_CTX_key_length (const EVP_CIPHER_CTX *ctx)
size_t EVP_CIPHER_CTX_iv_length (const EVP_CIPHER_CTX *ctx)
unsigned long EVP_CIPHER_CTX_flags (const EVP_CIPHER_CTX *ctx)
int EVP_CIPHER_CTX_mode (const EVP_CIPHER_CTX *ctx)
void * EVP_CIPHER_CTX_get_app_data (EVP_CIPHER_CTX *ctx)
void EVP_CIPHER_CTX_set_app_data (EVP_CIPHER_CTX *ctx, void *data)
int EVP_CipherInit_ex (EVP_CIPHER_CTX *ctx, const EVP_CIPHER *c, ENGINE
*engine, const void *key, const void *iv, int encp)
int EVP_CipherUpdate (EVP_CIPHER_CTX *ctx, void *out, int *outlen, void
*in, size_t inlen)
int EVP_CipherFinal_ex (EVP_CIPHER_CTX *ctx, void *out, int *outlen)
const EVP_CIPHER * EVP_enc_null (void)
const EVP_CIPHER * EVP_rc2_cbc (void)
const EVP_CIPHER * EVP_rc2_40_cbc (void)
const EVP_CIPHER * EVP_rc2_64_cbc (void)
const EVP_CIPHER * EVP_rc4 (void)
const EVP_CIPHER * EVP_rc4_40 (void)
const EVP_CIPHER * EVP_des_cbc (void)
const EVP_CIPHER * EVP_des_ede3_cbc (void)
const EVP_CIPHER * EVP_aes_128_cbc (void)
const EVP_CIPHER * EVP_aes_192_cbc (void)
const EVP_CIPHER * EVP_aes_256_cbc (void)
const EVP_CIPHER * EVP_aes_128_cfb8 (void)
const EVP_CIPHER * EVP_aes_192_cfb8 (void)
const EVP_CIPHER * EVP_aes_256_cfb8 (void)
const EVP_CIPHER * EVP_camellia_128_cbc (void)
const EVP_CIPHER * EVP_camellia_192_cbc (void)
const EVP_CIPHER * EVP_camellia_256_cbc (void)
const EVP_CIPHER * EVP_get_cipherbyname (const char *name)
int EVP_BytesToKey (const EVP_CIPHER *type, const EVP_MD *md, const void
*salt, const void *data, size_t datalen, unsigned int count, void
*keydata, void *ivdata)
π Detailed Description π
Lowkey this is the part where we'd normally explain everything, but the page is like: go read EVP - generic crypto interface for the description and the examples, bestie. That's where the lore lives. β¨
π₯ Function Documentation π₯
Strap in, we're going function by function. iykyk. π
const EVP_CIPHER* EVP_aes_128_cbc (void)
Your AES-128 cipher type. That's the vibe.
Returns: the AES-128 EVP_CIPHER pointer.
Examples: example_evp_cipher.c.
const EVP_CIPHER* EVP_aes_128_cfb8 (void)
It's the AES-128 cipher type β yes, CFB8 flavoured, the heading says it plainly.
Returns: the AES-128 EVP_CIPHER pointer.
const EVP_CIPHER* EVP_aes_192_cbc (void)
The AES-192 cipher type, serving 192-bit realness. π
Returns: the AES-192 EVP_CIPHER pointer.
const EVP_CIPHER* EVP_aes_192_cfb8 (void)
The AES-192 cipher type, again.
Returns: the AES-192 EVP_CIPHER pointer.
const EVP_CIPHER* EVP_aes_256_cbc (void)
The AES-256 cipher type. Main character cipher energy, genuinely.
Returns: the AES-256 EVP_CIPHER pointer.
const EVP_CIPHER* EVP_aes_256_cfb8 (void)
The AES-256 cipher type, same deal.
Returns: the AES-256 EVP_CIPHER pointer.
int EVP_BytesToKey (const EVP_CIPHER * type, const EVP_MD * md, const void * salt, const void * data, size_t datalen, unsigned int count, void * keydata, void * ivdata)
Okay so this hands you a legacy string to key function β the one PEM files use. (The page spells it "legancy" and honestly, iconic typo, we keep it.) π
π¨ Bestie, listen: new protocols should use new string to key functions like NIST SP56-800A or PKCS#5 v2.0 (peep PKCS5_PBKDF2_HMAC_SHA1()). This one is legacy for a reason. Don't build your new thing on it, fr fr.
Parameters:
typeβ type of cipher to usemdβ message digest to usesaltβ salt salt string, should be an binary 8 byte buffer.dataβ the password/input key string.datalenβ length of data parameter.countβ iteration counter.keydataβ output keydata, needs to of the sizeEVP_CIPHER_key_length().ivdataβ output ivdata, needs to of the sizeEVP_CIPHER_block_size().
Returns: the size of derived key.
const EVP_CIPHER* EVP_camellia_128_cbc (void)
The Camellia-128 cipher type. πΈ
Returns: the Camellia-128 EVP_CIPHER pointer.
const EVP_CIPHER* EVP_camellia_192_cbc (void)
The Camellia-198 cipher type. (Not a typo on my end β the page really does say 198 here, and we're relaying it exactly as written, no editing the vibes. π)
Returns: the Camellia-198 EVP_CIPHER pointer.
const EVP_CIPHER* EVP_camellia_256_cbc (void)
The Camellia-256 cipher type.
Returns: the Camellia-256 EVP_CIPHER pointer.
size_t EVP_CIPHER_block_size (const EVP_CIPHER * c)
Returns the block size of the cipher. Size check, but make it crypto.
Parameters: c β cipher to get the block size from.
Returns: the block size of the cipher.
Examples: example_evp_cipher.c.
size_t EVP_CIPHER_CTX_block_size (const EVP_CIPHER_CTX * ctx)
Returns the block size of the cipher context β same energy, context edition.
Parameters: ctx β cipher context to get the block size from.
Returns: the block size of the cipher context.
const EVP_CIPHER* EVP_CIPHER_CTX_cipher (EVP_CIPHER_CTX * ctx)
Gives you back the EVP_CIPHER for a EVP_CIPHER_CTX context. Like asking your context "girl, which cipher are you?" π
Parameters: ctx β the context to get the cipher type from.
Returns: the EVP_CIPHER pointer.
int EVP_CIPHER_CTX_cleanup (EVP_CIPHER_CTX * c)
Cleans up the EVP_CIPHER_CTX context. Tidy up after yourself, bestie. π§
Parameters: c β the cipher to clean up.
Returns: 1 on success.
Examples: example_evp_cipher.c.
unsigned long EVP_CIPHER_CTX_flags (const EVP_CIPHER_CTX * ctx)
Gets the flags for an EVP_CIPHER_CTX context.
Parameters: ctx β the EVP_CIPHER_CTX to get the flags from
Returns: the flags for an EVP_CIPHER_CTX.
void* EVP_CIPHER_CTX_get_app_data (EVP_CIPHER_CTX * ctx)
Gets the app data for an EVP_CIPHER_CTX context. Your little stash of extras. π
Parameters: ctx β the EVP_CIPHER_CTX to get the app data from
Returns: the app data for an EVP_CIPHER_CTX.
void EVP_CIPHER_CTX_init (EVP_CIPHER_CTX * c)
Initiates a EVP_CIPHER_CTX context. When you're done with it, clean up with EVP_CIPHER_CTX_cleanup(). Ship it and shut it down. β¨
Parameters: c β the cipher initiate.
Examples: example_evp_cipher.c.
size_t EVP_CIPHER_CTX_iv_length (const EVP_CIPHER_CTX * ctx)
Returns the IV size of the cipher context.
Parameters: ctx β cipher context to get the IV size from.
Returns: the IV size of the cipher context.
size_t EVP_CIPHER_CTX_key_length (const EVP_CIPHER_CTX * ctx)
Returns the key size of the cipher context.
Parameters: ctx β cipher context to get the key size from.
Returns: the key size of the cipher context.
int EVP_CIPHER_CTX_mode (const EVP_CIPHER_CTX * ctx)
Gets the mode for an EVP_CIPHER_CTX context.
Parameters: ctx β the EVP_CIPHER_CTX to get the mode from
Returns: the mode for an EVP_CIPHER_CTX.
void EVP_CIPHER_CTX_set_app_data (EVP_CIPHER_CTX * ctx, void * data)
Sets the app data for an EVP_CIPHER_CTX context. Tuck your stuff in there. π
Parameters:
ctxβ theEVP_CIPHER_CTXto set the app data fordataβ the app data to set for anEVP_CIPHER_CTX.
int EVP_CIPHER_CTX_set_key_length (EVP_CIPHER_CTX * c, int length)
If the cipher type supports it, changes the key length. Key glow-up, conditional on the cipher being cool with it. π
Parameters:
cβ the cipher context to change the key length forlengthβ new key length
Returns: 1 on success.
size_t EVP_CIPHER_iv_length (const EVP_CIPHER * c)
Returns the IV size of the cipher.
Parameters: c β cipher to get the IV size from.
Returns: the IV size of the cipher.
Examples: example_evp_cipher.c.
size_t EVP_CIPHER_key_length (const EVP_CIPHER * c)
Returns the key size of the cipher.
Parameters: c β cipher to get the key size from.
Returns: the key size of the cipher.
Examples: example_evp_cipher.c.
int EVP_CipherFinal_ex (EVP_CIPHER_CTX * ctx, void * out, int * outlen)
Encipher/decipher final data. The grand finale of your crypto operation. π₯
Parameters:
ctxβ the cipher context.outβ output data from the operation.outlenβ output length
β οΈ Heads up: the input length needs to be at least EVP_CIPHER_block_size() bytes long. Do not skimp.
See EVP Cipher for an example how to use this function.
Returns: 1 on success.
Examples: example_evp_cipher.c.
int EVP_CipherInit_ex (EVP_CIPHER_CTX * ctx, const EVP_CIPHER * c, ENGINE * engine, const void * key, const void * iv, int encp)
Initiates the EVP_CIPHER_CTX context to encrypt or decrypt data. When you're done, clean up with EVP_CIPHER_CTX_cleanup(). π¦
Parameters:
ctxβ context to initiatecβ cipher to use.engineβ crypto engine to use,NULLto select default.keyβ the crypto key to use,NULLwill use the previous value.ivβ the IV to use,NULLwill use the previous value.encpβ non zero will encrypt,-1use the previous value.
Returns: 1 on success.
β¨ Examples: example_evp_cipher.c.
π
int EVP_CipherUpdate (EVP_CIPHER_CTX * ctx, void * out, int * outlen, void * in, size_t inlen)
Okay so this one is literally the encipher/decipher-partial-data girlie π.
Parameters, bestie:
ctxβ the cipher context.outβ output data from the operation.outlenβ output length.inβ input data to the operation.inlenβ length of data.
The output buffer length should at least be EVP_CIPHER_block_size() byte longer then the input length.
See EVP Cipher for an example how to use this function.
Returns: 1 on success.
If there in no spare bytes in the left from last Update and the input length is on the block boundery, the EVP_CipherUpdate() function can take a shortcut (and preformance gain) and directly encrypt the data, otherwise we hav to fix it up and store extra it the EVP_CIPHER_CTX.
β¨ Examples: example_evp_cipher.c.
π const EVP_CIPHER* EVP_des_cbc (void)
The DES cipher type. So iconic.
Returns: the DES-CBC EVP_CIPHER pointer.
πΈ const EVP_CIPHER* EVP_des_ede3_cbc (void)
The tripple DES cipher type. Yes, tripple with two pβs β the page said what it said π.
Returns: the DES-EDE3-CBC EVP_CIPHER pointer.
π¦ int EVP_Digest (const void * data, size_t dsize, void * hash, unsigned int * hsize, const EVP_MD * md, ENGINE * engine)
This function does the whole EVP_MD_CTX_create(), EVP_DigestInit_ex(), EVP_DigestUpdate(), EVP_DigestFinal_ex(), EVP_MD_CTX_destroy() dance in one call. Main character energy fr fr.
Parameters:
dataβ the data to update the context with.dsizeβ length of data.hashβ output data of at leastEVP_MD_size()length.hsizeβ output length of hash.mdβ message digest to use.engineβ engine to use,NULLfor default engine.
Returns: 1 on success.
π int EVP_DigestFinal_ex (EVP_MD_CTX * ctx, void * hash, unsigned int * size)
Complete the message digest. Wrap it up, bestie β¨.
Parameters:
ctxβ the context to complete.hashβ the output of the message digest function. At leastEVP_MD_size().sizeβ the output size of hash.
Returns: 1 on success.
π§ int EVP_DigestInit_ex (EVP_MD_CTX * ctx, const EVP_MD * md, ENGINE * engine)
Init a EVP_MD_CTX for use a specific message digest and engine.
Parameters:
ctxβ the message digest context to init.mdβ the message digest to use.engineβ the engine to use,NULLto use the default engine.
Returns: 1 on success.
π int EVP_DigestUpdate (EVP_MD_CTX * ctx, const void * data, size_t size)
Update the digest with some data. Feed the context, bestie π«Ά.
Parameters:
ctxβ the context to update.dataβ the data to update the context with.sizeβ length of data.
Returns: 1 on success.
π const EVP_CIPHER* EVP_enc_null (void)
The NULL cipher type β does no encryption/decryption. Itβs giving βIβm just here for the vibe check.β
Returns: the null EVP_CIPHER pointer.
π₯ const EVP_CIPHER* EVP_get_cipherbyname (const char * name)
Get the cipher type using their name.
Parameters:
nameβ the name of the cipher.
Returns: the selected EVP_CIPHER pointer or NULL if not found.
π const EVP_CIPHER* EVP_hcrypto_aes_128_cbc (void)
The AES-128 cipher type (hcrypto).
Returns: the AES-128 EVP_CIPHER pointer.
β const EVP_CIPHER* EVP_hcrypto_aes_128_cfb8 (void)
The AES-128 CFB8 cipher type (hcrypto).
Returns: the AES-128 EVP_CIPHER pointer.
π const EVP_CIPHER* EVP_hcrypto_aes_192_cbc (void)
The AES-192 cipher type (hcrypto).
Returns: the AES-192 EVP_CIPHER pointer.
π const EVP_CIPHER* EVP_hcrypto_aes_192_cfb8 (void)
The AES-192 CFB8 cipher type (hcrypto).
Returns: the AES-192 EVP_CIPHER pointer.
πΈ const EVP_CIPHER* EVP_hcrypto_aes_256_cbc (void)
The AES-256 cipher type (hcrypto).
Returns: the AES-256 EVP_CIPHER pointer.
π¦ const EVP_CIPHER* EVP_hcrypto_aes_256_cfb8 (void)
The AES-256 CFB8 cipher type (hcrypto).
Returns: the AES-256 EVP_CIPHER pointer.
π const EVP_CIPHER* EVP_hcrypto_camellia_128_cbc (void)
The Camellia-128 cipher type β hcrypto.
Returns: the Camellia-128 EVP_CIPHER pointer.
π§ const EVP_CIPHER* EVP_hcrypto_camellia_192_cbc (void)
The Camellia-198 cipher type β hcrypto. Yes bestie, the page says 198 here, Iβm just the messenger π.
Returns: the Camellia-198 EVP_CIPHER pointer.
π const EVP_CIPHER* EVP_hcrypto_camellia_256_cbc (void)
The Camellia-256 cipher type β hcrypto.
Returns: the Camellia-256 EVP_CIPHER pointer.
π const EVP_CIPHER* EVP_hcrypto_des_cbc (void)
The DES cipher type.
Returns: the DES-CBC EVP_CIPHER pointer.
π₯ const EVP_CIPHER* EVP_hcrypto_des_ede3_cbc (void)
The tripple DES cipher type β hcrypto.
Returns: the DES-EDE3-CBC EVP_CIPHER pointer.
π const EVP_MD* EVP_hcrypto_md2 (void)
The message digest MD2 β hcrypto.
Returns: the message digest type.
β const EVP_MD* EVP_hcrypto_md4 (void)
The message digest MD4 β hcrypto.
Returns: the message digest type.
π const EVP_MD* EVP_hcrypto_md5 (void)
The message digest MD5 β hcrypto.
Returns: the message digest type.
π const EVP_CIPHER* EVP_hcrypto_rc2_40_cbc (void)
The RC2-40 cipher type.
Returns: the RC2-40 EVP_CIPHER pointer.
πΈ const EVP_CIPHER* EVP_hcrypto_rc2_64_cbc (void)
The RC2-64 cipher type.
Returns: the RC2-64 EVP_CIPHER pointer.
π¦ const EVP_CIPHER* EVP_hcrypto_rc2_cbc (void)
The RC2 cipher type β hcrypto.
Returns: the RC2 EVP_CIPHER pointer.
π const EVP_MD* EVP_hcrypto_sha1 (void)
The message digest SHA1 β hcrypto.
Returns: the message digest type.
π§ const EVP_MD* EVP_hcrypto_sha256 (void)
The message digest SHA256 β hcrypto.
Returns: the message digest type.
π const EVP_MD* EVP_hcrypto_sha384 (void)
The message digest SHA384 β hcrypto.
Returns: the message digest type.
π const EVP_MD* EVP_hcrypto_sha512 (void)
The message digest SHA512 β hcrypto.
Returns: the message digest type.
π₯ const EVP_MD* EVP_md2 (void)
The message digest MD2.
Returns: the message digest type.
π const EVP_MD* EVP_md4 (void)
The message digest MD4.
Returns: the message digest type.
β const EVP_MD* EVP_md5 (void)
The message digest MD5.
Returns: the message digest type.
π size_t EVP_MD_block_size (const EVP_MD * md)
Return the blocksize of the message digest function.
Parameters:
mdβ the evp message.
Returns: size β size of the message digest block size.
π size_t EVP_MD_CTX_block_size (EVP_MD_CTX * ctx)
Return the blocksize of the message digest function.
Parameters:
ctxβ the evp message digest context.
Returns: size β size of the message digest block size.
πΈ int EVP_MD_CTX_cleanup (EVP_MD_CTX * ctx)
Free the resources used by the EVP_MD context.
Parameters:
ctxβ the context to free the resources from.
Returns: 1 on success.
π¦ EVP_MD_CTX* EVP_MD_CTX_create (void)
Allocate a message digest context object. Free with EVP_MD_CTX_destroy().
Returns: a newly allocated message digest context object.
π void EVP_MD_CTX_destroy (EVP_MD_CTX * ctx)
Free a message digest context object.
Parameters:
ctxβ context to free.
π§ void EVP_MD_CTX_init (EVP_MD_CTX * ctx)
Initiate a message digest context object. Deallocate with EVP_MD_CTX_cleanup().
β οΈ Bestie, the page literally says: βPlease use EVP_MD_CTX_create() instead.β So donβt be out here acting brand new with the old path unless you have to π
.
Parameters:
ctxβ variable to initiate.
π const EVP_MD* EVP_MD_CTX_md (EVP_MD_CTX * ctx)
Get the EVP_MD use for a specified context.
Parameters:
ctxβ theEVP_MDcontext to get theEVP_MDfor.
Returns: the EVP_MD used for the context.
π size_t EVP_MD_CTX_size (EVP_MD_CTX * ctx)
Return the output size of the message digest function.
Parameters:
ctxβ the evp message digest context.
Returns: size β output size of the message digest function.
π₯ const EVP_MD* EVP_md_null (void)
The null message digest.
Returns: the message digest type.
π size_t EVP_MD_size (const EVP_MD * md)
Return the output size of the message digest function.
Parameters:
mdβ the evp message.
Returns: size β output size of the message digest function.
β const EVP_CIPHER* EVP_rc2_40_cbc (void)
The RC2 cipher type.
Returns: the RC2 EVP_CIPHER pointer.
π const EVP_CIPHER* EVP_rc2_64_cbc (void)
The RC2 cipher type.
Returns: the RC2 EVP_CIPHER pointer.
π const EVP_CIPHER* EVP_rc2_cbc (void)
The RC2 cipher type.
Returns: the RC2 EVP_CIPHER pointer.
πΈ const EVP_CIPHER* EVP_rc4 (void)
The RC4 cipher type.
Returns: the RC4 EVP_CIPHER pointer.
π¦ const EVP_CIPHER* EVP_rc4_40 (void)
The RC4-40 cipher type.
Returns: the RC4-40 EVP_CIPHER pointer.
π const EVP_MD* EVP_sha (void)
The message digest SHA1.
Returns: the message digest type.
π§ const EVP_MD* EVP_sha1 (void)
The message digest SHA1.
Returns: the message digest type.
π const EVP_MD* EVP_sha256 (void)
The message digest SHA256.
Returns: the message digest type.
π const EVP_MD* EVP_sha384 (void)
The message digest SHA384.
Returns: the message digest type.
π₯ const EVP_MD* EVP_sha512 (void)
The message digest SHA512.
Returns: the message digest type.
π const EVP_CIPHER* EVP_wincrypt_des_ede3_cbc (void)
The tripple DES cipher type (Micrsoft crypt provider). Micrsoft said what it said π«Ά.
Returns: the DES-EDE3-CBC EVP_CIPHER pointer.
β¨ Thatβs the whole page, bestie. Source/version tea: version 1.5.2, dated 11 Jan 2012, for EVP generic...o functions(3). π
π¦ where this page comes from
- nixpkgs unstable: source
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms