diff --git a/des-compat.h b/des-compat.h
index ce80962475d27c5259d045c845e6a93ae2adfad3..e08615964e68131a107228c3a69d4e1fc84ed3d4 100644
--- a/des-compat.h
+++ b/des-compat.h
@@ -30,4 +30,52 @@
  * des_is_weak_key, plus the encryption functions (des_*_encrypt and
  * des_cbc_cksum) would be a pretty useful subset. */
 
+#include "des.h"
+
+/* FIXME: Names collides with nettle, so we'll need some ugly symbol
+ * munging */
+
+void des_ecb3_encrypt(const uint8_t *src, uint8_t *dst,
+		      struct des_ctx *k1, struct des_ctx *k2,
+		      struct des_ctx *k3, int enc);
+
+uint32_t
+des_cbc_cksum(const uint8_t *src, uint8_t dst,
+	      long length, struct des_ctx *ctx,
+	      uint8_t *iv);
+
+void
+des_cbc_encrypt(const uint8_t *src, uint8_t *dst, long length,
+		struct des_ctx *ctx, uint8_t *iv,
+		int enc);
+
+void
+des_3cbc_encrypt(const uint8_t *src, uint8_t *dst, long length,
+		 struct des_ctx * k1,struct des_ctx *k2, struct des_ctx *k3,
+		 /* What mode is this, two iv:s? */
+		 uint8_t *iv1, uint8_t *iv2,
+		 int enc);
+
+void
+des_ecb_encrypt(const uint8_t *src, uint8_t *dst, long length,
+		struct des_ctx *ctx, uint8_t *iv,
+		int enc);
+void
+des_ede3_cbc_encrypt(const uint8_t *src, uint8_t *dst, long length,
+		     struct des_ctx * k1,struct des_ctx *k2, struct des_ctx *k3,
+		     uint8_t *iv,
+		     int enc);
+
+int
+des_set_odd_parity(uint8_t *key);
+
+int
+des_set_key(const uint8_t *key, struct des_ctx *ctx);
+
+int
+des_key_sched(const uint8_t *key, struct des_ctx *ctx);
+
+int
+des_is_weak_key(const uint8_t key);
+
 #endif /* NETTLE_DES_COMPAT_H_INCLUDED */