/*
- silcapputil.c
+ silcapputil.c
Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2002 Pekka Riikonen
+ Copyright (C) 2002 - 2005 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
*/
/* $Id$ */
-#include "silcincludes.h"
+#include "silc.h"
static char *silc_create_pk_identifier(void)
{
char *username = NULL, *realname = NULL;
char *hostname, email[256];
char *ident;
-
+
/* Get realname */
realname = silc_get_real_name();
/* Generate key pair */
-bool silc_create_key_pair(const char *pkcs_name,
+SilcBool silc_create_key_pair(const char *pkcs_name,
SilcUInt32 key_len_bits,
const char *pub_filename,
const char *prv_filename,
SilcPKCS *return_pkcs,
SilcPublicKey *return_public_key,
SilcPrivateKey *return_private_key,
- bool interactive)
+ SilcBool interactive)
{
SilcPKCS pkcs;
SilcPublicKey pub_key;
alg = silc_get_input("PKCS name (l to list names) [rsa]: ", FALSE);
if (!alg)
alg = strdup("rsa");
-
+
if (*alg == 'l' || *alg == 'L') {
char *list = silc_pkcs_get_supported();
printf("%s\n", list);
}
if (!pass) {
- char *pass2 = NULL;
- pass = silc_get_input("Private key passphrase: ", TRUE);
- if (!pass) {
- pass = strdup("");
- } else {
- while (TRUE) {
+ while (TRUE) {
+ char *pass2 = NULL;
+ pass = silc_get_input("Private key passphrase: ", TRUE);
+ if (!pass) {
+ pass = strdup("");
+ break;
+ } else {
+ SilcBool match;
printf("\n");
pass2 = silc_get_input("Retype private key passphrase: ", TRUE);
- if (!strcmp(pass, pass2))
+ if (!pass2)
+ pass2 = strdup("");
+ match = !strcmp(pass, pass2);
+ silc_free(pass2);
+ if (match)
break;
- fprintf(stderr, "\nPassphrases do not match");
+ fprintf(stderr, "\nPassphrases do not match\n\n");
}
- silc_free(pass2);
}
}
/* Generate keys */
- silc_pkcs_alloc(alg, &pkcs);
+ silc_pkcs_alloc(alg, SILC_PKCS_SILC, &pkcs);
silc_pkcs_generate_key(pkcs, key_len_bits, rng);
/* Save public key into file */
/* Load key pair */
-bool silc_load_key_pair(const char *pub_filename,
+SilcBool silc_load_key_pair(const char *pub_filename,
const char *prv_filename,
const char *passphrase,
SilcPKCS *return_pkcs,
}
if (return_pkcs) {
- silc_pkcs_alloc((*return_public_key)->name, return_pkcs);
+ silc_pkcs_alloc((*return_public_key)->name, SILC_PKCS_SILC, return_pkcs);
silc_pkcs_public_key_set(*return_pkcs, *return_public_key);
silc_pkcs_private_key_set(*return_pkcs, *return_private_key);
}
/* Dump public key into stdout */
-bool silc_show_public_key(const char *pub_filename)
+SilcBool silc_show_public_key(const char *pub_filename)
{
SilcPublicKey public_key;
SilcPublicKeyIdentifier ident;
fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
- if (silc_pkcs_alloc(public_key->name, &pkcs)) {
+ if (silc_pkcs_alloc(public_key->name, SILC_PKCS_SILC, &pkcs)) {
key_len = silc_pkcs_public_key_set(pkcs, public_key);
silc_pkcs_free(pkcs);
}
printf("Organization : %s\n", ident->org);
if (ident->country)
printf("Country : %s\n", ident->country);
- printf("Fingerprint (SHA1) : %s\n", fingerprint);
- printf("Babbleprint (SHA1) : %s\n", babbleprint);
+ printf("Fingerprint (SHA1) : %s\n", fingerprint);
+ printf("Babbleprint (SHA1) : %s\n", babbleprint);
fflush(stdout);
/* Change private key passphrase */
-bool silc_change_private_key_passphrase(const char *prv_filename,
+SilcBool silc_change_private_key_passphrase(const char *prv_filename,
const char *old_passphrase,
const char *new_passphrase)
{
SilcPrivateKey private_key;
- bool base64 = FALSE;
+ SilcBool base64 = FALSE;
char *pass;
pass = old_passphrase ? strdup(old_passphrase) : NULL;
while (TRUE) {
printf("\n");
pass2 = silc_get_input("Retype new passphrase: ", TRUE);
+ if (!pass2)
+ pass2 = strdup("");
if (!strcmp(pass, pass2))
break;
fprintf(stderr, "\nPassphrases do not match");