diff --git a/src/include.am b/src/include.am
index 9fa901c41330ee31fdf8a4c074ffa255e153d6cf..581fd69c79b34be7f000abf8eea6e4fcef623300 100644
--- a/src/include.am
+++ b/src/include.am
@@ -5,6 +5,7 @@ include src/lib/ctime/include.am
 include src/lib/compress/include.am
 include src/lib/container/include.am
 include src/lib/crypt_ops/include.am
+include src/lib/defs/include.am
 include src/lib/include.libdonna.am
 include src/lib/malloc/include.am
 include src/lib/testsupport/include.am
diff --git a/src/lib/container/map.c b/src/lib/container/map.c
index 227fb8f5e331714f648a383b91f9078120046a75..508680e4a5edc8e9a95d355affe809b74a2d0ed2 100644
--- a/src/lib/container/map.c
+++ b/src/lib/container/map.c
@@ -13,7 +13,7 @@
 
 #include "lib/container/map.h"
 #include "lib/ctime/di_ops.h"
-#include "lib/crypt_ops/crypto_digest.h"
+#include "lib/defs/digest_sizes.h"
 
 #include "common/util_bug.h"
 #include "common/util.h" // For strlower
diff --git a/src/lib/container/smartlist.c b/src/lib/container/smartlist.c
index 0fe11c6703bf271268494933bd5518174396d7d5..2d861f566c590c0128153fa0ee6e2d1e04c7092a 100644
--- a/src/lib/container/smartlist.c
+++ b/src/lib/container/smartlist.c
@@ -15,7 +15,7 @@
 #include "lib/container/smartlist.h"
 #include "lib/err/torerr.h"
 #include "common/util.h" // For strstrip.
-#include "lib/crypt_ops/crypto_digest.h"
+#include "lib/defs/digest_sizes.h"
 #include "lib/ctime/di_ops.h"
 
 #include <stdlib.h>
diff --git a/src/lib/crypt_ops/.may_include b/src/lib/crypt_ops/.may_include
index 6eefec15810063b2d0da9738cbb7216700cf1383..4f415f876ec2838f048d0444547fd91482bc8de0 100644
--- a/src/lib/crypt_ops/.may_include
+++ b/src/lib/crypt_ops/.may_include
@@ -2,6 +2,7 @@ orconfig.h
 lib/cc/*.h
 lib/crypt_ops/*.h
 lib/ctime/*.h
+lib/defs/*.h
 lib/err/*.h
 lib/testsupport/testsupport.h
 
diff --git a/src/lib/crypt_ops/crypto_digest.c b/src/lib/crypt_ops/crypto_digest.c
index d746aaaca51138338dc8a7565de22c1ed98ae053..b6ec2b28417e068ffa42eead1d700bdd1cf95b32 100644
--- a/src/lib/crypt_ops/crypto_digest.c
+++ b/src/lib/crypt_ops/crypto_digest.c
@@ -580,4 +580,3 @@ crypto_xof_free_(crypto_xof_t *xof)
   memwipe(xof, 0, sizeof(crypto_xof_t));
   tor_free(xof);
 }
-
diff --git a/src/lib/crypt_ops/crypto_digest.h b/src/lib/crypt_ops/crypto_digest.h
index 129258245ebeeac6b51c32cdae4526999e56e951..63e8bec70b37d2228f2b51bf759bf6a0b64477f2 100644
--- a/src/lib/crypt_ops/crypto_digest.h
+++ b/src/lib/crypt_ops/crypto_digest.h
@@ -17,14 +17,7 @@
 
 #include "lib/container/container.h"
 #include "lib/cc/torint.h"
-
-/** Length of the output of our message digest. */
-#define DIGEST_LEN 20
-/** Length of the output of our second (improved) message digests.  (For now
- * this is just sha256, but it could be any other 256-bit digest.) */
-#define DIGEST256_LEN 32
-/** Length of the output of our 64-bit optimized message digests (SHA512). */
-#define DIGEST512_LEN 64
+#include "lib/defs/digest_sizes.h"
 
 /** Length of a sha1 message digest when encoded in base32 with trailing =
  * signs removed. */
@@ -133,4 +126,3 @@ digest_algorithm_t crypto_digest_get_algorithm(crypto_digest_t *digest);
 #endif
 
 #endif /* !defined(TOR_CRYPTO_DIGEST_H) */
-
diff --git a/src/lib/defs/.may_include b/src/lib/defs/.may_include
new file mode 100644
index 0000000000000000000000000000000000000000..2b06e8519c7e51f941518619f04271155a665977
--- /dev/null
+++ b/src/lib/defs/.may_include
@@ -0,0 +1 @@
+orconfig.h
diff --git a/src/lib/defs/digest_sizes.h b/src/lib/defs/digest_sizes.h
new file mode 100644
index 0000000000000000000000000000000000000000..f426fff20d6d2357b2826e0e3aacd69b81422605
--- /dev/null
+++ b/src/lib/defs/digest_sizes.h
@@ -0,0 +1,18 @@
+/* Copyright (c) 2001, Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_DIGEST_SIZES_H
+#define TOR_DIGEST_SIZES_H
+
+/** Length of the output of our message digest. */
+#define DIGEST_LEN 20
+/** Length of the output of our second (improved) message digests.  (For now
+ * this is just sha256, but it could be any other 256-bit digest.) */
+#define DIGEST256_LEN 32
+/** Length of the output of our 64-bit optimized message digests (SHA512). */
+#define DIGEST512_LEN 64
+
+#endif
diff --git a/src/lib/defs/include.am b/src/lib/defs/include.am
new file mode 100644
index 0000000000000000000000000000000000000000..861406c01da0724aee62192e46a9841984dabcb2
--- /dev/null
+++ b/src/lib/defs/include.am
@@ -0,0 +1,3 @@
+
+noinst_HEADERS += \
+	digest_sizes.h