+typedef struct dh_pub {
+ dh_param dp;
+ mp *y;
+} dh_pub;
+
+typedef struct dh_priv {
+ dh_param dp;
+ mp *x;
+ mp *y;
+} dh_priv;
+
+/*----- Key fetching ------------------------------------------------------*/
+
+extern const key_fetchdef dh_paramfetch[];
+#define DH_PARAMFETCHSZ 5
+
+extern const key_fetchdef dh_pubfetch[];
+#define DH_PUBFETCHSZ 6
+
+extern const key_fetchdef dh_privfetch[];
+#define DH_PRIVFETCHSZ 9
+
+/* --- @dh_paramfree@, @dh_pubfree@, @dh_privfree@ --- *
+ *
+ * Arguments: @dh_param *dp@, @dh_pub *dp@, @dh_priv *dp@ = pointer to
+ * key block to free
+ *
+ * Returns: ---
+ *
+ * Use: Frees a Diffie-Hellman key block.
+ */
+
+extern void dh_paramfree(dh_param */*dp*/);
+extern void dh_pubfree(dh_pub */*dp*/);
+extern void dh_privfree(dh_priv */*dp*/);
+