X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilc%2Fsilc.c;h=e449af1d89883c03da6294b2bcbcd146017e7f21;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hp=0ff3e1ed0b7112a346e151dc8b43e5de1142ac24;hpb=4ef701725a4bcc06d5ef2db2d6a532d43ab9f832;p=silc.git diff --git a/apps/silc/silc.c b/apps/silc/silc.c index 0ff3e1ed..e449af1d 100644 --- a/apps/silc/silc.c +++ b/apps/silc/silc.c @@ -246,6 +246,10 @@ SILC Secure Internet Live Conferencing, version %s\n", if (opt_create_keypair == TRUE) { /* Create new key pair and exit */ + silc_cipher_register_default(); + silc_pkcs_register_default(); + silc_hash_register_default(); + silc_hmac_register_default(); silc_client_create_key_pair(opt_pkcs, opt_bits, NULL, NULL, NULL, NULL, NULL); silc_free(opt_pkcs); @@ -254,6 +258,10 @@ SILC Secure Internet Live Conferencing, version %s\n", if (opt_show_key == TRUE) { /* Dump the key */ + silc_cipher_register_default(); + silc_pkcs_register_default(); + silc_hash_register_default(); + silc_hmac_register_default(); silc_client_show_key(opt_keyfile); silc_free(opt_keyfile); exit(0); @@ -267,32 +275,42 @@ SILC Secure Internet Live Conferencing, version %s\n", app = silc_calloc(1, sizeof(*app)); /* Allocate new client */ - app->client = silc = silc_client_alloc(&ops, app); + app->client = silc = silc_client_alloc(&ops, app, silc_version_string); if (!silc) goto fail; /* Read global configuration file. */ app->config = silc_client_config_alloc(opt_config_file); - if (app->config == NULL) - goto fail; /* XXX Read local configuration file */ - /* Check ~/.silc directory and public and private keys */ - if (silc_client_check_silc_dir() == FALSE) - goto fail; - /* Get user information */ silc->username = silc_get_username(); silc->hostname = silc_net_localhost(); silc->realname = silc_get_real_name(); /* Register all configured ciphers, PKCS and hash functions. */ - app->config->client = (void *)app; - silc_client_config_register_ciphers(app->config); - silc_client_config_register_pkcs(app->config); - silc_client_config_register_hashfuncs(app->config); - silc_client_config_register_hmacs(app->config); + if (app->config) { + app->config->client = (void *)app; + if (!silc_client_config_register_ciphers(app->config)) + silc_cipher_register_default(); + if (!silc_client_config_register_pkcs(app->config)) + silc_pkcs_register_default(); + if (!silc_client_config_register_hashfuncs(app->config)) + silc_hash_register_default(); + if (!silc_client_config_register_hmacs(app->config)) + silc_hmac_register_default(); + } else { + /* Register default ciphers, pkcs, hash funtions and hmacs. */ + silc_cipher_register_default(); + silc_pkcs_register_default(); + silc_hash_register_default(); + silc_hmac_register_default(); + } + + /* Check ~/.silc directory and public and private keys */ + if (silc_client_check_silc_dir() == FALSE) + goto fail; /* Load public and private key */ if (silc_client_load_keys(silc) == FALSE) @@ -320,7 +338,7 @@ SILC Secure Internet Live Conferencing, version %s\n", SILC_TASK_TIMEOUT, SILC_TASK_PRI_LOW); - if (app->config->commands) { + if (app->config && app->config->commands) { /* Run user configured commands with timeout */ silc_task_register(silc->timeout_queue, 0, silc_client_run_commands, @@ -531,7 +549,7 @@ static void silc_client_clear_input(SilcClientInternal app) static void silc_client_process_message(SilcClientInternal app) { unsigned char *data; - uint32 len; + SilcUInt32 len; SILC_LOG_DEBUG(("Start")); @@ -540,9 +558,9 @@ static void silc_client_process_message(SilcClientInternal app) if (data[0] == '/' && data[1] != ' ') { /* Command */ - uint32 argc = 0; + SilcUInt32 argc = 0; unsigned char **argv, *tmpcmd; - uint32 *argv_lens, *argv_types; + SilcUInt32 *argv_lens, *argv_types; SilcClientCommand *cmd; SilcClientCommandContext ctx; @@ -640,9 +658,9 @@ SILC_TASK_CALLBACK(silc_client_run_commands) cs = app->config->commands; while(cs) { - uint32 argc = 0; + SilcUInt32 argc = 0; unsigned char **argv, *tmpcmd; - uint32 *argv_lens, *argv_types; + SilcUInt32 *argv_lens, *argv_types; SilcClientCommand *cmd; SilcClientCommandContext ctx;