MCPcopy Create free account
hub / github.com/apache/httpd / md_pkey_fload

Function md_pkey_fload

modules/md/md_crypt.c:630–662  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

628}
629
630apr_status_t md_pkey_fload(md_pkey_t **ppkey, apr_pool_t *p,
631 const char *key, apr_size_t key_len,
632 const char *fname)
633{
634 apr_status_t rv = APR_ENOENT;
635 md_pkey_t *pkey;
636 BIO *bf;
637 passwd_ctx ctx;
638
639 pkey = make_pkey(p);
640 if (NULL != (bf = BIO_new_file(fname, "r"))) {
641 ctx.pass_phrase = key;
642 ctx.pass_len = (int)key_len;
643
644 ERR_clear_error();
645 pkey->pkey = PEM_read_bio_PrivateKey(bf, NULL, pem_passwd, &ctx);
646 BIO_free(bf);
647
648 if (pkey->pkey != NULL) {
649 rv = APR_SUCCESS;
650 apr_pool_cleanup_register(p, pkey, pkey_cleanup, apr_pool_cleanup_null);
651 }
652 else {
653 unsigned long err = ERR_get_error();
654 rv = APR_EINVAL;
655 md_log_perror(MD_LOG_MARK, MD_LOG_WARNING, rv, p,
656 "error loading pkey %s: %s (pass phrase was %snull)", fname,
657 ERR_error_string(err, NULL), key? "not " : "");
658 }
659 }
660 *ppkey = (APR_SUCCESS == rv)? pkey : NULL;
661 return rv;
662}
663
664static apr_status_t pkey_to_buffer(md_data_t *buf, md_pkey_t *pkey, apr_pool_t *p,
665 const char *pass, apr_size_t pass_len)

Callers 1

fs_floadFunction · 0.85

Calls 2

make_pkeyFunction · 0.85
md_log_perrorFunction · 0.85

Tested by

no test coverage detected