| 1443 | } |
| 1444 | |
| 1445 | static apr_status_t cert_to_buffer(md_data_t *buffer, const md_cert_t *cert, apr_pool_t *p) |
| 1446 | { |
| 1447 | BIO *bio = BIO_new(BIO_s_mem()); |
| 1448 | int i; |
| 1449 | |
| 1450 | if (!bio) { |
| 1451 | return APR_ENOMEM; |
| 1452 | } |
| 1453 | |
| 1454 | ERR_clear_error(); |
| 1455 | PEM_write_bio_X509(bio, cert->x509); |
| 1456 | if (ERR_get_error() > 0) { |
| 1457 | BIO_free(bio); |
| 1458 | return APR_EINVAL; |
| 1459 | } |
| 1460 | |
| 1461 | i = BIO_pending(bio); |
| 1462 | if (i > 0) { |
| 1463 | buffer->data = apr_palloc(p, (apr_size_t)i); |
| 1464 | i = BIO_read(bio, (char*)buffer->data, i); |
| 1465 | buffer->len = (apr_size_t)i; |
| 1466 | } |
| 1467 | BIO_free(bio); |
| 1468 | return APR_SUCCESS; |
| 1469 | } |
| 1470 | |
| 1471 | apr_status_t md_cert_fsave(md_cert_t *cert, apr_pool_t *p, |
| 1472 | const char *fname, apr_fileperms_t perms) |
no outgoing calls
no test coverage detected