diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
index c83299a..56280a6 100644
--- a/include/openssl/ssl.h
+++ b/include/openssl/ssl.h
@@ -3127,6 +3127,10 @@
  * GREASE. See draft-davidben-tls-grease-01. */
 OPENSSL_EXPORT void SSL_CTX_set_grease_enabled(SSL_CTX *ctx, int enabled);
 
+/* SSL_max_seal_overhead returns the maximum overhead, in bytes, of sealing a
+ * record with |ssl|. */
+OPENSSL_EXPORT size_t SSL_max_seal_overhead(const SSL *ssl);
+
 
 /* Deprecated functions. */
 
diff --git a/ssl/d1_both.c b/ssl/d1_both.c
index 7bb2de2..eae657c 100644
--- a/ssl/d1_both.c
+++ b/ssl/d1_both.c
@@ -527,10 +527,10 @@
 /* dtls1_max_record_size returns the maximum record body length that may be
  * written without exceeding the MTU. It accounts for any buffering installed on
  * the write BIO. If no record may be written, it returns zero. */
-static size_t dtls1_max_record_size(SSL *ssl) {
+static size_t dtls1_max_record_size(const SSL *ssl) {
   size_t ret = ssl->d1->mtu;
 
-  size_t overhead = ssl_max_seal_overhead(ssl);
+  size_t overhead = SSL_max_seal_overhead(ssl);
   if (ret <= overhead) {
     return 0;
   }
diff --git a/ssl/d1_pkt.c b/ssl/d1_pkt.c
index 099de5d..155359c 100644
--- a/ssl/d1_pkt.c
+++ b/ssl/d1_pkt.c
@@ -377,7 +377,7 @@
     return -1;
   }
 
-  size_t max_out = len + ssl_max_seal_overhead(ssl);
+  size_t max_out = len + SSL_max_seal_overhead(ssl);
   uint8_t *out;
   size_t ciphertext_len;
   if (!ssl_write_buffer_init(ssl, &out, max_out) ||
diff --git a/ssl/internal.h b/ssl/internal.h
index ecf2d0c..a054bbf 100644
--- a/ssl/internal.h
+++ b/ssl/internal.h
@@ -418,13 +418,6 @@
  * buffer-free APIs are available. */
 size_t ssl_seal_align_prefix_len(const SSL *ssl);
 
-/* ssl_max_seal_overhead returns the maximum overhead of sealing a record with
- * |ssl|.
- *
- * TODO(davidben): Expose this as part of public API once the high-level
- * buffer-free APIs are available. */
-size_t ssl_max_seal_overhead(const SSL *ssl);
-
 /* tls_seal_record seals a new record of type |type| and body |in| and writes it
  * to |out|. At most |max_out| bytes will be written. It returns one on success
  * and zero on error. If enabled, |tls_seal_record| implements TLS 1.0 CBC 1/n-1
@@ -432,7 +425,7 @@
  *
  * For a large record, the bulk of the ciphertext will begin
  * |ssl_seal_align_prefix_len| bytes into out. Aligning |out| appropriately may
- * improve performance. It writes at most |in_len| + |ssl_max_seal_overhead|
+ * improve performance. It writes at most |in_len| + |SSL_max_seal_overhead|
  * bytes to |out|.
  *
  * |in| and |out| may not alias. */
diff --git a/ssl/s3_pkt.c b/ssl/s3_pkt.c
index 3cf18b7..e4116fb 100644
--- a/ssl/s3_pkt.c
+++ b/ssl/s3_pkt.c
@@ -284,7 +284,7 @@
     return 0;
   }
 
-  size_t max_out = len + ssl_max_seal_overhead(ssl);
+  size_t max_out = len + SSL_max_seal_overhead(ssl);
   if (max_out < len) {
     OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
     return -1;
diff --git a/ssl/tls_record.c b/ssl/tls_record.c
index 7041ce3..a2ed2ec 100644
--- a/ssl/tls_record.c
+++ b/ssl/tls_record.c
@@ -174,7 +174,7 @@
   }
 }
 
-size_t ssl_max_seal_overhead(const SSL *ssl) {
+size_t SSL_max_seal_overhead(const SSL *ssl) {
   size_t ret = SSL_AEAD_CTX_max_overhead(ssl->s3->aead_write_ctx);
   if (SSL_is_dtls(ssl)) {
     ret += DTLS1_RT_HEADER_LENGTH;
