aboutsummaryrefslogtreecommitdiff
path: root/sample.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-02 07:31:54 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-02 07:31:54 +0000
commit3a67aaa4284f785fa284b14a036d4913939cd170 (patch)
treeb3b288a34b46a5ac5584411f18306caa30c03f8b /sample.c
parent4c84a3e0f22925b18731fb68583067f6f6e6fe58 (diff)
downloadlibssh-3a67aaa4284f785fa284b14a036d4913939cd170.tar.gz
libssh-3a67aaa4284f785fa284b14a036d4913939cd170.tar.xz
libssh-3a67aaa4284f785fa284b14a036d4913939cd170.zip
Improve the ssh_get_pubkey_hash() function.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@337 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'sample.c')
-rw-r--r--sample.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/sample.c b/sample.c
index 43a33db4..002c326a 100644
--- a/sample.c
+++ b/sample.c
@@ -406,7 +406,8 @@ int main(int argc, char **argv){
char *hexa;
int state;
char buf[10];
- unsigned char hash[MD5_DIGEST_LEN];
+ unsigned char *hash = NULL;
+ int hlen;
options=ssh_options_new();
if(ssh_options_getopt(options,&argc, argv)){
@@ -427,13 +428,20 @@ int main(int argc, char **argv){
return 1;
}
state=ssh_is_server_known(session);
+
+ hlen = ssh_get_pubkey_hash(session, &hash);
+ if (hlen < 0) {
+ ssh_disconnect(session);
+ ssh_finalize();
+ return 1;
+ }
switch(state){
case SSH_SERVER_KNOWN_OK:
break; /* ok */
case SSH_SERVER_KNOWN_CHANGED:
fprintf(stderr,"Host key for server changed : server's one is now :\n");
- ssh_get_pubkey_hash(session,hash);
- ssh_print_hexa("Public key hash",hash,MD5_DIGEST_LEN);
+ ssh_print_hexa("Public key hash",hash, hlen);
+ free(hash);
fprintf(stderr,"For security reason, connection will be stopped\n");
ssh_disconnect(session);
ssh_finalize();
@@ -447,8 +455,8 @@ int main(int argc, char **argv){
ssh_finalize();
exit(-1);
case SSH_SERVER_NOT_KNOWN:
- ssh_get_pubkey_hash(session, hash);
- hexa = ssh_get_hexa(hash, MD5_DIGEST_LEN);
+ hexa = ssh_get_hexa(hash, hlen);
+ free(hash);
fprintf(stderr,"The server is unknown. Do you trust the host key ?\n");
fprintf(stderr, "Public key hash: %s\n", hexa);
free(hexa);