diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-02 07:31:54 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-02 07:31:54 +0000 |
commit | 3a67aaa4284f785fa284b14a036d4913939cd170 (patch) | |
tree | b3b288a34b46a5ac5584411f18306caa30c03f8b /sample.c | |
parent | 4c84a3e0f22925b18731fb68583067f6f6e6fe58 (diff) | |
download | libssh-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.c | 18 |
1 files changed, 13 insertions, 5 deletions
@@ -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); |