EVP_DIGESTINIT(3ssl) OpenSSL EVP_DIGESTINIT(3ssl) EVP_MD_fetch, EVP_MD_up_ref, EVP_MD_free, EVP_MD_get_params, EVP_MD_gettable_params, EVP_MD_CTX_new, EVP_MD_CTX_reset, EVP_MD_CTX_free, EVP_MD_CTX_dup, EVP_MD_CTX_copy, EVP_MD_CTX_copy_ex, EVP_MD_CTX_ctrl, EVP_MD_CTX_set_params, EVP_MD_CTX_get_params, EVP_MD_settable_ctx_params, EVP_MD_gettable_ctx_params, EVP_MD_CTX_settable_params, EVP_MD_CTX_gettable_params, EVP_MD_CTX_set_flags, EVP_MD_CTX_clear_flags, EVP_MD_CTX_test_flags, EVP_Q_digest, EVP_Digest, EVP_DigestInit_ex2, EVP_DigestInit_ex, EVP_DigestInit, EVP_DigestUpdate, EVP_DigestFinal_ex, EVP_DigestFinalXOF, EVP_DigestFinal, EVP_DigestSqueeze, EVP_MD_is_a, EVP_MD_get0_name, EVP_MD_get0_description, EVP_MD_names_do_all, EVP_MD_get0_provider, EVP_MD_get_type, EVP_MD_get_pkey_type, EVP_MD_get_size, EVP_MD_get_block_size, EVP_MD_get_flags, EVP_MD_CTX_get0_name, EVP_MD_CTX_md, EVP_MD_CTX_get0_md, EVP_MD_CTX_get1_md, EVP_MD_CTX_get_type, EVP_MD_CTX_get_size_ex, EVP_MD_CTX_get_block_size, EVP_MD_CTX_get0_md_data, EVP_MD_CTX_update_fn, EVP_MD_CTX_set_update_fn, EVP_md_null, EVP_get_digestbyname, EVP_get_digestbynid, EVP_get_digestbyobj, EVP_MD_CTX_get_pkey_ctx, EVP_MD_CTX_set_pkey_ctx, EVP_MD_do_all_provided, EVP_MD_type, EVP_MD_nid, EVP_MD_name, EVP_MD_pkey_type, EVP_MD_size, EVP_MD_block_size, EVP_MD_flags, EVP_MD_xof, EVP_MD_CTX_size, EVP_MD_CTX_get_size, EVP_MD_CTX_block_size, EVP_MD_CTX_type, EVP_MD_CTX_pkey_ctx, EVP_MD_CTX_md_data - EVP #include EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, const char *properties); int EVP_MD_up_ref(EVP_MD *md); void EVP_MD_free(EVP_MD *md); int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]); const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); EVP_MD_CTX *EVP_MD_CTX_new(void); int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); void EVP_MD_CTX_free(EVP_MD_CTX *ctx); void EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void* p2); int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, const char *propq, const void *data, size_t datalen, unsigned char *md, size_t *mdlen); int EVP_Digest(const void *data, size_t count, unsigned char *md, unsigned int *size, const EVP_MD *type, ENGINE *impl); int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, const OSSL_PARAM params[]); int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *out, size_t outlen); int EVP_DigestSqueeze(EVP_MD_CTX *ctx, unsigned char *out, size_t outlen); EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); int EVP_MD_CTX_copy(EVP_MD_CTX *out, EVP_MD_CTX *in); const char *EVP_MD_get0_name(const EVP_MD *md); const char *EVP_MD_get0_description(const EVP_MD *md); int EVP_MD_is_a(const EVP_MD *md, const char *name); int EVP_MD_names_do_all(const EVP_MD *md, void (*fn)(const char *name, void *data), void *data); const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); int EVP_MD_get_type(const EVP_MD *md); int EVP_MD_get_pkey_type(const EVP_MD *md); int EVP_MD_get_size(const EVP_MD *md); int EVP_MD_get_block_size(const EVP_MD *md); unsigned long EVP_MD_get_flags(const EVP_MD *md); int EVP_MD_xof(const EVP_MD *md); const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); const char *EVP_MD_CTX_get0_name(const EVP_MD_CTX *ctx); int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX *ctx); int EVP_MD_CTX_get_block_size(const EVP_MD_CTX *ctx); int EVP_MD_CTX_get_type(const EVP_MD_CTX *ctx); void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); const EVP_MD *EVP_md_null(void); const EVP_MD *EVP_get_digestbyname(const char *name); const EVP_MD *EVP_get_digestbynid(int type); const EVP_MD *EVP_get_digestbyobj(const ASN1_OBJECT *o); EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, void (*fn)(EVP_MD *mac, void *arg), void *arg); #define EVP_MD_type EVP_MD_get_type #define EVP_MD_nid EVP_MD_get_type #define EVP_MD_name EVP_MD_get0_name #define EVP_MD_pkey_type EVP_MD_get_pkey_type #define EVP_MD_size EVP_MD_get_size #define EVP_MD_block_size EVP_MD_get_block_size #define EVP_MD_flags EVP_MD_get_flags #define EVP_MD_CTX_get_size EVP_MD_CTX_get_size_ex #define EVP_MD_CTX_size EVP_MD_CTX_get_size_ex #define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size #define EVP_MD_CTX_type EVP_MD_CTX_get_type #define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx #define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data OpenSSL 3.0 OPENSSL_API_COMPAT openssl_user_macros(7): const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, const void *data, size_t count); void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, int (*update)(EVP_MD_CTX *ctx, const void *data, size_t count)); EVP (XOF). EVP_MD . ( SHA256) EVP_DigestFinal_ex(). (XOF) SHAKE256 outlen EVP_DigestFinalXOF() EVP_DigestSqueeze(). EVP_DigestFinal_ex() XOF "xoflen" ( ""). EVP_MD_get_size() EVP_MD_CTX_get_size_ex() XOF. EVP_MD_fetch() algorithm properties. " " crypto(7) . EVP_MD_free(). EVP_MD . EVP_MD_up_ref() EVP_MD. EVP_MD_free() EVP_MD . 0 . NULL . EVP_MD_CTX_new() . EVP_MD_CTX_reset() ctx. . EVP_MD_CTX_free() ctx . NULL . EVP_MD_CTX_ctrl() . EVP_MD_CTX_set_params() EVP_MD_CTX_get_params() . ctx. cmd p1 p2. EVP_MD_CTX_ctrl() EVP_DigestInit_ex2(). . EVP_MD OpenSSL OSSL_PARAM(3) OpenSSL EVP_MD_CTX_get_params() EVP_MD_CTX_set_params() . "CONTROLS" . EVP_MD_get_params() params MD md. "" . EVP_MD_CTX_get_params() params MD ctx. "" . EVP_MD_CTX_set_params() params MD ctx. "" . EVP_MD_gettable_params() OSSL_PARAM(3) EVP_MD_get_params(). EVP_MD_gettable_ctx_params(), EVP_MD_CTX_gettable_params() OSSL_PARAM(3) EVP_MD_CTX_get_params(). EVP_MD_gettable_ctx_params() EVP_MD_CTX_gettable_params() . EVP_MD_settable_ctx_params(), EVP_MD_CTX_settable_params() OSSL_PARAM(3) EVP_MD_CTX_set_params(). EVP_MD_settable_ctx_params() EVP_MD_CTX_settable_params() . EVP_MD_CTX_set_flags(), EVP_MD_CTX_clear_flags(), EVP_MD_CTX_test_flags() ctx. "FLAGS" . EVP_Q_digest() . datalen data name libctx propq. md mdlen NULL. EVP_MAX_MD_SIZE . EVP_Digest() Init_ex Update Final_ex . count data type ENGINE impl. md size NULL. EVP_MAX_MD_SIZE . impl NULL type. EVP_DigestInit_ex2() ctx type. type EVP_sha1() EVP_MD_fetch(). ctx NULL. params . type NULL ctx EVP_DigestInit_ex() EVP_MD_CTX_reset(). EVP_DigestInit_ex() ctx type. type EVP_sha1() EVP_MD_fetch(). impl NULL type . type NULL ctx EVP_DigestInit_ex() EVP_MD_CTX_reset(). EVP_DigestUpdate() cnt d ctx. ctx . EVP_DigestFinal_ex() ctx md. s NULL ( ) s EVP_MAX_MD_SIZE . EVP_DigestFinal_ex() EVP_DigestUpdate() EVP_DigestInit_ex2() . ctx NULL. EVP_DigestFinalXOF() XOFs SHAKE128 SHAKE256. ctx out outlen. EVP_DigestUpdate() EVP_DigestInit_ex2() . EVP_DigestFinalXOF() EVP_DigestSqueeze() EVP_DigestFinalXOF() . EVP_DigestFinalXOF() . EVP_MD_CTX_dup() in. EVP_MD_fetch() . EVP_MD_CTX_copy_ex() in out. . EVP_DigestInit() EVP_DigestInit_ex2() EVP_MD_CTX_reset() type NULL. EVP_DigestFinal() EVP_DigestFinal_ex() ctx EVP_MD_CTX_reset(). EVP_MD_CTX_copy() EVP_MD_CTX_copy_ex() out . EVP_MD_is_a() 1 md name 0. md ( EVP_sha256() EVP_MD_fetch()) ( OSSL_LIB_CTX(3)). EVP_MD_xof() 1 md (XOF) 0. SHAKE128 SHAKE256 XOF. 0 BLAKE2B. EVP_MD_get0_name() EVP_MD_CTX_get0_name() . EVP_MD_names_do_all() . EVP_MD_names_do_all() md fn data. EVP_MD . EVP_MD_get0_description() . . EVP_MD_get0_provider() OSSL_PROVIDER EVP_MD . EVP_MD_get_size() EVP_MD . 0 . XOF 0. EVP_MD_CTX_get_size_ex() EVP_MD_CTX_get_size() EVP_MD_get_size(). XOF "xoflen" 0. EVP_MD_get_block_size() EVP_MD_CTX_get_block_size() EVP_MD EVP_MD_CTX. EVP_MD_get_type() EVP_MD_CTX_get_type() NID (OBJECT IDENTIFIER) EVP_MD. "EVP_MD_get_type(EVP_sha1())" NID_sha1. ASN1 OIDs. EVP_MD_CTX_get0_md_data() EVP_MD_CTX . OpenSSL EVP_MD_meth_set_app_datasize(). EVP_MD_CTX_get0_md() EVP_MD_CTX_get1_md() EVP_MD_CTX_get0_md() EVP_MD EVP_MD_CTX . EVP_MD EVP_DigestInit_ex2() ( ) EVP_MD_CTX . ( EVP_MD_fetch(3)) EVP_MD_CTX. EVP_MD_CTX_get1_md() EVP_MD_CTX . EVP_MD_CTX_set_update_fn() ctx update. EVP_DigestUpdate(). EVP_MD . EVP_MD_CTX_update_fn() ctx. EVP_MD_get_flags() md. EVP_MD_CTX. EVP_MD_meth_set_flags(3) . EVP_MD_get_pkey_type() NID . EVP_sha1() RSA NID_sha1WithRSAEncryption. . EVP_md_null() "" : . EVP_get_digestbyname(), EVP_get_digestbynid(), EVP_get_digestbyobj() EVP_MD NID ASN1_OBJECT . EVP_get_digestbyname() OpenSSL 3 EVP_MD_fetch() "" . OpenSSL NID . EVP_get_digestbynid() EVP_get_digestbyobj() . ( EVP_DigestInit_ex()) . . EVP_MD_fetch() . "ALGORITHM FETCHING" crypto(7) . EVP_MD_free(). EVP_MD_CTX_get_pkey_ctx() EVP_PKEY_CTX ctx. . EVP_MD_CTX_set_pkey_ctx() EVP_PKEY_CTX EVP_MD_CTX. EVP_PKEY_CTX EVP_DigestSignInit(3) EVP_DigestVerifyInit(3). pctx . pctx NULL EVP_PKEY_CTX ctx. EVP_PKEY_CTX EVP_PKEY_CTX. EVP_MD_do_all_provided() libctx fn arg . OSSL_PARAM(3) . EVP_MD_CTX_set_params() EVP_MD_CTX_get_params() OSSL_PARAM : "xoflen" (OSSL_DIGEST_PARAM_XOFLEN) < > . size_t. SHAKE-128 SHAKE-256 EVP_DigestFinal_ex() EVP_DigestFinal(). "size" (OSSL_DIGEST_PARAM_SIZE) < > . size_t. BLAKE2B-512 EVP_DigestFinal_ex() EVP_DigestFinal(). EVP_MD_CTX_set_params() OSSL_PARAM : "pad-type" (OSSL_DIGEST_PARAM_PAD_TYPE) < > . MDC2. EVP_MD_CTX_get_params() OSSL_PARAM : "micalg" (OSSL_DIGEST_PARAM_MICALG) < UTF8>. . S/MIME / RFC 3851. . EVP_MD_CTX_ctrl() : EVP_MD_CTRL_MICALG . S/MIME / RFC 3851. p2. EVP_MD EVP_MD_CTX_get_params() OSSL_PARAM(3) "micalg" (OSSL_DIGEST_PARAM_MICALG). EVP_MD_CTRL_XOF_LEN p1. EVP_DigestFinalXOF(). SHAKE. EVP_MD EVP_MD_CTX_get_params() OSSL_PARAM(3) "xoflen" (OSSL_DIGEST_PARAM_XOFLEN). EVP_MD_CTX_set_flags() EVP_MD_CTX_clear_flags() EVP_MD_CTX_test_flags() EVP_MD_CTX : EVP_MD_CTX_FLAG_ONESHOT . EVP_MD_CTX_FLAG_CLEANED . EVP_MD_CTX_FLAG_REUSE . EVP_MD_CTX_FLAG_NO_INIT EVP_DigestInit() . EVP_MD_CTX_FLAG_FINALISE EVP_DigestSign . . EVP_MD_fetch() EVP_MD NULL . EVP_MD_up_ref() 1 0 . EVP_Q_digest() EVP_Digest() EVP_DigestInit_ex2() EVP_DigestInit_ex() EVP_DigestInit() EVP_DigestUpdate() EVP_DigestFinal_ex() EVP_DigestFinalXOF() EVP_DigestFinal() 1 0 . EVP_MD_CTX_ctrl() 1 0 . EVP_MD_CTX_set_params() EVP_MD_CTX_get_params() 1 0 . EVP_MD_CTX_settable_params() EVP_MD_CTX_gettable_params() OSSL_PARAM(3) NULL . EVP_MD_CTX_dup() EVP_MD_CTX NULL . EVP_MD_CTX_copy_ex() 1 0 . EVP_MD_get_type() EVP_MD_get_pkey_type() NID NID_undef . EVP_MD_get_size() EVP_MD_get_block_size() EVP_MD_CTX_get_size() EVP_MD_CTX_get_block_size() -1 . EVP_md_null() EVP_MD "". EVP_get_digestbyname(), EVP_get_digestbynid(), EVP_get_digestbyobj() EVP_MD NULL . EVP_MD_CTX_set_pkey_ctx() . EVP_MD_names_do_all() 1 . 0 . EVP . . SHA-2 ( EVP_sha256(3)) SHA-3 ( EVP_sha3_512(3)). . impl EVP_DigestInit_ex() NULL . EVP_DigestInit_ex() EVP_DigestInit_ex2() EVP_DigestInit() EVP_MD_CTX EVP_DigestUpdate() EVP_DigestFinal(). EVP_MD_CTX . EVP_DigestInit() EVP_DigestFinal() EVP_MD_CTX_copy() . EVP_DigestInit_ex() EVP_DigestFinal_ex() EVP_MD_CTX_copy_ex() . . EVP_MD_CTX_get0_name() EVP_MD_CTX_get_size() EVP_MD_CTX_get_block_size() EVP_MD_CTX_get_type() EVP_get_digestbynid() EVP_get_digestbyobj() . EVP_MD_CTX_ctrl() . "Test Message\n" "Hello World\n" . #include #include #include int main(int argc, char *argv[]) { EVP_MD_CTX *mdctx; const EVP_MD *md; char mess1[] = "Test Message\n"; char mess2[] = "Hello World\n"; unsigned char md_value[EVP_MAX_MD_SIZE]; unsigned int md_len, i; if (argv[1] == NULL) { printf("Usage: mdtest digestname\n"); exit(1); } md = EVP_get_digestbyname(argv[1]); if (md == NULL) { printf("Unknown message digest %s\n", argv[1]); exit(1); } mdctx = EVP_MD_CTX_new(); if (mdctx == NULL) { printf("Message digest create failed.\n"); exit(1); } if (!EVP_DigestInit_ex2(mdctx, md, NULL)) { printf("Message digest initialization failed.\n"); EVP_MD_CTX_free(mdctx); exit(1); } if (!EVP_DigestUpdate(mdctx, mess1, strlen(mess1))) { printf("Message digest update failed.\n"); EVP_MD_CTX_free(mdctx); exit(1); } if (!EVP_DigestUpdate(mdctx, mess2, strlen(mess2))) { printf("Message digest update failed.\n"); EVP_MD_CTX_free(mdctx); exit(1); } if (!EVP_DigestFinal_ex(mdctx, md_value, &md_len)) { printf("Message digest finalization failed.\n"); EVP_MD_CTX_free(mdctx); exit(1); } EVP_MD_CTX_free(mdctx); printf("Digest is: "); for (i = 0; i < md_len; i++) printf("%02x", md_value[i]); printf("\n"); exit(0); } EVP_MD_meth_new(3), openssl-dgst(1), evp(7), OSSL_PROVIDER(3), OSSL_PARAM(3), property(7), " " crypto(7), provider-digest(7), life_cycle-digest(7) . EVP_blake2b512(3), EVP_md2(3), EVP_md4(3), EVP_md5(3), EVP_mdc2(3), EVP_ripemd160(3), EVP_sha1(3), EVP_sha224(3), EVP_sha3_224(3), EVP_sm3(3), EVP_whirlpool(3) EVP_MD_CTX_create() EVP_MD_CTX_destroy() EVP_MD_CTX_new() EVP_MD_CTX_free() OpenSSL 1.1.0 . OpenSSL 1.0 EVP_sha1() RSA DSA. EVP_dss1() OpenSSL 1.1.0. EVP_MD_CTX_set_pkey_ctx() OpenSSL 1.1.1. EVP_Q_digest() EVP_DigestInit_ex2() EVP_MD_fetch() EVP_MD_free() EVP_MD_up_ref() EVP_MD_get_params() EVP_MD_CTX_set_params() EVP_MD_CTX_get_params() EVP_MD_gettable_params() EVP_MD_gettable_ctx_params() EVP_MD_settable_ctx_params() EVP_MD_CTX_settable_params() EVP_MD_CTX_gettable_params() OpenSSL 3.0. EVP_MD_type() EVP_MD_nid() EVP_MD_name() EVP_MD_pkey_type() EVP_MD_size() EVP_MD_block_size() EVP_MD_flags() EVP_MD_CTX_size() EVP_MD_CTX_block_size() EVP_MD_CTX_type() EVP_MD_CTX_md_data() "get" "get0" OpenSSL 3.0 . . EVP_MD_CTX_md() OpenSSL 3.0 EVP_MD_CTX_get0_md() . EVP_MD_CTX_update_fn() EVP_MD_CTX_set_update_fn() OpenSSL 3.0. EVP_MD_CTX_dup() OpenSSL 3.1. EVP_DigestSqueeze() OpenSSL 3.3. EVP_MD_CTX_get_size_ex() EVP_xof() OpenSSL 3.4. EVP_MD_CTX_get_size() EVP_MD_CTX_size OpenSSL 3.4 EVP_MD_CTX_get_size_ex() EVP_MD_get_size . XOF . 2000-2024 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 EVP_DIGESTINIT(3ssl)