diff --git a/dsa.h b/dsa.h
index 4c60cb033d6489e2f95e17cc9e2abfb9ad8e54d1..22fecb969a31ef6bb154a9f7aeda440ef436c79d 100644
--- a/dsa.h
+++ b/dsa.h
@@ -52,9 +52,8 @@ struct dsa_public_key
 
 struct dsa_private_key
 {
-  /* Unlike an rsa public key, all the public information is needed,
-   * in addition to the private information. */
-  struct dsa_public_key pub;
+  /* Unlike an rsa public key, private key operations will need both
+   * the private and the public information. */
   mpz_t x;
 };
 
@@ -114,14 +113,15 @@ void
 _dsa_hash(mpz_t x, struct sha1_ctx *hash);
 
 void
-dsa_sign(struct dsa_private_key *key,
+dsa_sign(const struct dsa_public_key *pub,
+	 const struct dsa_private_key *key,
 	 void *random_ctx, nettle_random_func random,
 	 struct sha1_ctx *hash,
 	 struct dsa_signature *signature);
 
 
 int
-dsa_verify(struct dsa_public_key *key,
+dsa_verify(const struct dsa_public_key *key,
 	   struct sha1_ctx *hash,
 	   const struct dsa_signature *signature);