BIO_F_MD(3ssl) OpenSSL BIO_F_MD(3ssl) BIO_f_md, BIO_set_md, BIO_get_md, BIO_get_md_ctx - BIO #include #include const BIO_METHOD *BIO_f_md(void); int BIO_set_md(BIO *b, EVP_MD *md); int BIO_get_md(BIO *b, EVP_MD **mdp); int BIO_get_md_ctx(BIO *b, EVP_MD_CTX **mdcp); BIO_f_md() BIO . BIO . BIO EVP_DigestInit() EVP_DigestUpdate() EVP_DigestFinal(). BIO BIO_read_ex() BIO_write_ex() . BIO_gets() size . BIO_puts() . BIO_reset() BIO . BIO_set_md() BIO b md: BIO . BIO_ctrl(). BIO_get_md() BIO mdp. BIO_ctrl(). BIO_get_md_ctx() BIO mdcp. BIO_get_md_ctx() EVP_DigestFinal() EVP_SignFinal() EVP_VerifyFinal(). BIO_get_md_ctx() . BIO BIO . BIO BIO_reset() BIO_set_md() . BIO_gets() BIO_puts() BIOs BIO . BIO_get_md_ctx() BIO. BIO_set_md() . BIO_f_md() BIO . BIO_set_md() BIO_get_md() BIO_md_ctx() 1 <=0 . BIO BIO SHA1 MD5 "Hello World" . . BIO *bio, *mdtmp; char message[] = "Hello World"; bio = BIO_new(BIO_s_null()); mdtmp = BIO_new(BIO_f_md()); BIO_set_md(mdtmp, EVP_sha1()); /* * BIO_push() BIO * . */ bio = BIO_push(mdtmp, bio); mdtmp = BIO_new(BIO_f_md()); BIO_set_md(mdtmp, EVP_md5()); bio = BIO_push(mdtmp, bio); /* : mdtmp */ BIO_write(bio, message, strlen(message)); : BIO *bio, *mdtmp; char buf[1024]; int rdlen; bio = BIO_new_file(file, "rb"); mdtmp = BIO_new(BIO_f_md()); BIO_set_md(mdtmp, EVP_sha1()); bio = BIO_push(mdtmp, bio); mdtmp = BIO_new(BIO_f_md()); BIO_set_md(mdtmp, EVP_md5()); bio = BIO_push(mdtmp, bio); do { rdlen = BIO_read(bio, buf, sizeof(buf)); /* */ } while (rdlen > 0); BIO . . BIO *mdtmp; unsigned char mdbuf[EVP_MAX_MD_SIZE]; int mdlen; int i; mdtmp = bio; /* bio */ do { EVP_MD *md; mdtmp = BIO_find_type(mdtmp, BIO_TYPE_MD); if (!mdtmp) break; BIO_get_md(mdtmp, &md); printf("%s digest", OBJ_nid2sn(EVP_MD_get_type(md))); mdlen = BIO_gets(mdtmp, mdbuf, EVP_MAX_MD_SIZE); for (i = 0; i < mdlen; i++) printf(":%02X", mdbuf[i]); printf("\n"); mdtmp = BIO_next(mdtmp); } while (mdtmp); BIO_free_all(bio); BIO_puts() BIO_gets() . BIO_gets() BIO_puts() BIO BIO_ctrl(). OpenSSL 1.0.0 BIO_get_md_ctx() BIO . 2000-2021 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 BIO_F_MD(3ssl)