diff --git a/src/common/tortls.c b/src/common/tortls.c
index 33bd334a12..0315398946 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -683,6 +683,13 @@ MOCK_IMPL(STATIC tor_x509_cert_t *,
return cert;
}
+/** Return a copy of cert */
+tor_x509_cert_t *
+tor_x509_cert_dup(const tor_x509_cert_t *cert)
+{
+ return tor_x509_cert_new(X509_dup(cert->cert));
+}
+
/** Read a DER-encoded X509 cert, of length exactly certificate_len,
* from a certificate. Return a newly allocated tor_x509_cert_t on
* success and NULL on failure. */
diff --git a/src/common/tortls.h b/src/common/tortls.h
index 3adb1b2f6e..6510fdbe64 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -176,6 +176,7 @@ extern uint64_t total_bytes_written_by_tls;
#endif /* endif TORTLS_PRIVATE */
+tor_x509_cert_t *tor_x509_cert_dup(const tor_x509_cert_t *cert);
const char *tor_tls_err_to_string(int err);
void tor_tls_get_state_description(tor_tls_t *tls, char *buf, size_t sz);