X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fclientutil.c;h=818444dd3e52e636ef70f1998b2999478a8e5438;hb=fde8aa8c7b1952d14fe9275ae36836fe995ea943;hp=cdc0fc9ee3bb9fdd9bbccc4e33dcf3ae9991210a;hpb=4c0b87583da634b12c5745baa19c7ec42e30376c;p=silc.git diff --git a/apps/irssi/src/silc/core/clientutil.c b/apps/irssi/src/silc/core/clientutil.c index cdc0fc9e..818444dd 100644 --- a/apps/irssi/src/silc/core/clientutil.c +++ b/apps/irssi/src/silc/core/clientutil.c @@ -238,7 +238,7 @@ int silc_client_check_silc_dir() silc_create_key_pair(SILC_CLIENT_DEF_PKCS, SILC_CLIENT_DEF_PKCS_LEN, file_public_key, file_private_key, NULL, - NULL, NULL, NULL, FALSE); + NULL, NULL, NULL, NULL, FALSE); printf("Press to continue...\n"); getchar(); } else { @@ -260,7 +260,7 @@ int silc_client_check_silc_dir() silc_create_key_pair(SILC_CLIENT_DEF_PKCS, SILC_CLIENT_DEF_PKCS_LEN, file_public_key, file_private_key, NULL, - NULL, NULL, NULL, FALSE); + NULL, NULL, NULL, NULL, FALSE); printf("Press to continue...\n"); getchar(); } else { @@ -312,7 +312,7 @@ int silc_client_check_silc_dir() silc_create_key_pair(SILC_CLIENT_DEF_PKCS, SILC_CLIENT_DEF_PKCS_LEN, file_public_key, file_private_key, NULL, - NULL, NULL, NULL, FALSE); + NULL, NULL, NULL, NULL, FALSE); printf("Press to continue...\n"); getchar(); } else { @@ -335,6 +335,7 @@ int silc_client_load_keys(SilcClient client) { char pub[256], prv[256]; struct passwd *pw; + bool ret; SILC_LOG_DEBUG(("Loading public and private keys")); @@ -350,6 +351,13 @@ int silc_client_load_keys(SilcClient client) snprintf(pub, sizeof(pub) - 1, "%s/%s", get_irssi_dir(), SILC_CLIENT_PUBLIC_KEY_NAME); - return silc_load_key_pair(pub, prv, &client->pkcs, &client->public_key, - &client->private_key); + /* Try loading first with "" passphrase, for those that didn't set + passphrase for private key, and only if that fails let it prompt + for passphrase. */ + ret = silc_load_key_pair(pub, prv, "", &client->pkcs, &client->public_key, + &client->private_key); + if (!ret) + ret = silc_load_key_pair(pub, prv, NULL, &client->pkcs, + &client->public_key, &client->private_key); + return ret; }