diff --git a/kex.h b/kex.h
index ac7ad33..80ce31c 100644
--- a/kex.h
+++ b/kex.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: kex.h,v 1.24 2001/06/25 08:25:37 markus Exp $	*/
+/*	$OpenBSD: kex.h,v 1.25 2001/06/26 06:32:53 itojun Exp $	*/
 
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
@@ -107,24 +107,24 @@
 	int	flags;
 	char	*client_version_string;
 	char	*server_version_string;
-	int	(*verify_host_key)(Key *hostkey);
-	Key	*(*load_host_key)(int type);
+	int	(*verify_host_key)(Key *);
+	Key	*(*load_host_key)(int);
 };
 
-Kex	*kex_setup(char *proposal[PROPOSAL_MAX]);
-void	kex_finish(Kex *kex);
+Kex	*kex_setup(char *[PROPOSAL_MAX]);
+void	kex_finish(Kex *);
 
-void	kex_send_kexinit(Kex *kex);
-void	kex_input_kexinit(int type, int plen, void *ctxt);
-void	kex_derive_keys(Kex *k, u_char *hash, BIGNUM *shared_secret);
+void	kex_send_kexinit(Kex *);
+void	kex_input_kexinit(int, int, void *);
+void	kex_derive_keys(Kex *, u_char *, BIGNUM *);
 
 void	kexdh(Kex *);
 void	kexgex(Kex *);
 
-Newkeys *kex_get_newkeys(int mode);
+Newkeys *kex_get_newkeys(int);
 
 #if defined(DEBUG_KEX) || defined(DEBUG_KEXDH)
-void	dump_digest(char *msg, u_char *digest, int len);
+void	dump_digest(char *, u_char *, int);
 #endif
 
 #endif
