X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcssh%2Fsilcssh.c;h=927489c3ce2b1a08fe62a518adf1c5d98b24dc3c;hb=9b499de7f8fdbb24c32b8a0a84bb2fbbcdab782a;hp=0e4f606b05e04a17457701e840a6d2f2a5911c45;hpb=da3be98515423903e3dde1e3c287498f90c1147f;p=crypto.git diff --git a/lib/silcssh/silcssh.c b/lib/silcssh/silcssh.c index 0e4f606b..927489c3 100644 --- a/lib/silcssh/silcssh.c +++ b/lib/silcssh/silcssh.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 2007 Pekka Riikonen + Copyright (C) 2007 - 2008 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ */ -#include "silc.h" +#include "silccrypto.h" /************************* Static utility functions *************************/ @@ -71,8 +71,8 @@ SilcBool silc_ssh_parse_line(SilcBuffer key, SilcBuffer line, SilcHashTable silc_ssh_allocate_fields(void) { - return silc_hash_table_alloc(NULL, 0, silc_hash_string, NULL, - silc_hash_string_compare, NULL, + return silc_hash_table_alloc(NULL, 0, silc_hash_string_case, NULL, + silc_hash_string_case_compare, NULL, silc_ssh_field_dest, NULL, TRUE); } @@ -174,6 +174,7 @@ SilcHashTable silc_ssh_parse_headers(SilcBuffer key) SilcBool silc_ssh_generate_key(const char *algorithm, int bits_len, SilcRng rng, + const char *subject, SilcPublicKey *ret_public_key, SilcPrivateKey *ret_private_key) { @@ -249,6 +250,9 @@ SilcBool silc_ssh_generate_key(const char *algorithm, return FALSE; } + if (subject) + silc_ssh_public_key_add_field(pubkey, "Subject", subject); + return TRUE; } @@ -280,7 +284,7 @@ int silc_ssh_public_key_decode(unsigned char *key, SilcUInt32 key_len, SILC_STR_ADVANCE, SILC_STR_UI32_STRING_ALLOC(&type), SILC_STR_END) < 0) { - SILC_LOG_ERROR(("Malformed SSH2 public key")); + SILC_LOG_DEBUG(("Malformed SSH2 public key")); goto err; } @@ -379,6 +383,8 @@ void silc_ssh_public_key_free(SilcSshPublicKey public_key) { if (public_key->fields) silc_hash_table_free(public_key->fields); + public_key->pkcs->public_key_free(public_key->pkcs, + public_key->public_key); silc_free(public_key); } @@ -410,8 +416,8 @@ SilcBool silc_ssh_public_key_add_field(SilcSshPublicKey public_key, if (!public_key->fields) { public_key->fields = - silc_hash_table_alloc(NULL, 0, silc_hash_string, NULL, - silc_hash_string_compare, NULL, + silc_hash_table_alloc(NULL, 0, silc_hash_string_case, NULL, + silc_hash_string_case_compare, NULL, silc_ssh_field_dest, NULL, TRUE); if (!public_key->fields) return FALSE;