return NULL;
/* Create default email address, whether it is right or not */
- snprintf(email, sizeof(email), "%s@%s", username, hostname);
+ silc_snprintf(email, sizeof(email), "%s@%s", username, hostname);
ident = silc_pkcs_silc_encode_identifier(username, hostname, realname,
email, NULL, NULL);
char *alg = pkcs_name ? strdup(pkcs_name) : NULL;
char *identifier = pub_identifier ? strdup(pub_identifier) : NULL;
char *pass = passphrase ? strdup(passphrase) : NULL;
+ SilcPublicKey public_key;
+ SilcPrivateKey private_key;
if (interactive && (!alg || !pub_filename || !prv_filename))
printf("\
if (interactive) {
memset(line, 0, sizeof(line));
if (def)
- snprintf(line, sizeof(line), "Identifier [%s]: ", def);
+ silc_snprintf(line, sizeof(line), "Identifier [%s]: ", def);
else
- snprintf(line, sizeof(line),
+ silc_snprintf(line, sizeof(line),
"Identifier (eg. UN=jon, HN=jon.dummy.com, "
"RN=Jon Johnson, E=jon@dummy.com): ");
if (!pkfile) {
if (interactive) {
memset(line, 0, sizeof(line));
- snprintf(line, sizeof(line), "Public key filename [public_key.pub]: ");
+ silc_snprintf(line, sizeof(line), "Public key filename [public_key.pub]: ");
pkfile = silc_get_input(line, FALSE);
}
if (!pkfile)
if (!prvfile) {
if (interactive) {
memset(line, 0, sizeof(line));
- snprintf(line, sizeof(line), "Private key filename [private_key.prv]: ");
+ silc_snprintf(line, sizeof(line), "Private key filename [private_key.prv]: ");
prvfile = silc_get_input(line, FALSE);
}
if (!prvfile)
/* Generate keys */
if (!silc_pkcs_silc_generate_key(alg, "pkcs1-no-oid", key_len_bits,
- identifier, rng, return_public_key,
- return_private_key))
+ identifier, rng, &public_key,
+ &private_key))
return FALSE;
/* Save public key into file */
- silc_pkcs_save_public_key(pkfile, *return_public_key, SILC_PKCS_FILE_BASE64);
+ silc_pkcs_save_public_key(pkfile, public_key, SILC_PKCS_FILE_BASE64);
/* Save private key into file */
- silc_pkcs_save_private_key(prvfile, *return_private_key,
+ silc_pkcs_save_private_key(prvfile, private_key,
(const unsigned char *)pass, strlen(pass),
SILC_PKCS_FILE_BIN, rng);
+ if (return_public_key)
+ *return_public_key = public_key;
+ else
+ silc_pkcs_public_key_free(public_key);
+
+ if (return_private_key)
+ *return_private_key = private_key;
+ else
+ silc_pkcs_private_key_free(private_key);
+
printf("Public key has been saved into `%s'.\n", pkfile);
printf("Private key has been saved into `%s'.\n", prvfile);
if (interactive) {
/* Dump public key into stdout */
-SilcBool silc_show_public_key(const char *pub_filename)
+SilcBool silc_show_public_key(SilcPublicKey public_key)
{
- SilcPublicKey public_key;
SilcSILCPublicKey silc_pubkey;
SilcPublicKeyIdentifier ident;
char *fingerprint, *babbleprint;
SilcUInt32 pk_len;
SilcUInt32 key_len = 0;
- if (!silc_pkcs_load_public_key((char *)pub_filename, &public_key)) {
- fprintf(stderr, "Could not load public key file `%s'\n", pub_filename);
- return FALSE;
- }
-
silc_pubkey = silc_pkcs_get_context(SILC_PKCS_SILC, public_key);
if (!silc_pubkey) {
silc_pkcs_public_key_free(public_key);
fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
- printf("Public key file : %s\n", pub_filename);
printf("Algorithm : %s\n", silc_pkcs_get_name(public_key));
if (key_len)
printf("Key length (bits) : %d\n", (unsigned int)key_len);
silc_free(fingerprint);
silc_free(babbleprint);
silc_free(pk);
- silc_pkcs_public_key_free(public_key);
return TRUE;
}
+/* Dump public key into stdout */
+
+SilcBool silc_show_public_key_file(const char *pub_filename)
+{
+ SilcPublicKey public_key;
+ SilcBool ret;
+
+ if (!silc_pkcs_load_public_key((char *)pub_filename, &public_key)) {
+ fprintf(stderr, "Could not load public key file `%s'\n", pub_filename);
+ return FALSE;
+ }
+
+ printf("Public key file : %s\n", pub_filename);
+ ret = silc_show_public_key(public_key);
+ silc_pkcs_public_key_free(public_key);
+
+ return ret;
+}
+
/* Change private key passphrase */
SilcBool silc_change_private_key_passphrase(const char *prv_filename,
min = atoi(cp);
memset(buf, 0, sizeof(buf));
- snprintf(buf, sizeof(buf) - 1, "%d%d", maj, min);
+ silc_snprintf(buf, sizeof(buf) - 1, "%d%d", maj, min);
if (protocol_version)
*protocol_version = atoi(buf);
memset(buf, 0, sizeof(buf));
- snprintf(buf, sizeof(buf) - 1, "%d.%d", maj, min);
+ silc_snprintf(buf, sizeof(buf) - 1, "%d.%d", maj, min);
if (protocol_version_string)
*protocol_version_string = strdup(buf);
}
memset(buf, 0, sizeof(buf));
- snprintf(buf, sizeof(buf) - 1, "%d%d", maj, min);
+ silc_snprintf(buf, sizeof(buf) - 1, "%d%d", maj, min);
if (software_version)
*software_version = atoi(buf);
memset(buf, 0, sizeof(buf));
- snprintf(buf, sizeof(buf) - 1, "%d.%d", maj, min);
+ silc_snprintf(buf, sizeof(buf) - 1, "%d.%d", maj, min);
if (software_version_string)
*software_version_string = strdup(buf);
min = atoi(cp + 1);
memset(buf, 0, sizeof(buf));
- snprintf(buf, sizeof(buf) - 1, "%d%d", maj, min);
+ silc_snprintf(buf, sizeof(buf) - 1, "%d%d", maj, min);
return (SilcUInt32)atoi(buf);
}
}
memset(tmp, 0, sizeof(tmp));
- snprintf(tmp, sizeof(tmp) - 1, ",%d,", ntohs(server_id->port));
+ silc_snprintf(tmp, sizeof(tmp) - 1, ",%d,", ntohs(server_id->port));
_PUT_STRING(rid, tmp);
SILC_PUT16_MSB(server_id->rnd, tmps);
memset(tmp, 0, sizeof(tmp));
- snprintf(tmp, sizeof(tmp) - 1, "[%02x %02x]", tmps[0], tmps[1]);
+ silc_snprintf(tmp, sizeof(tmp) - 1, "[%02x %02x]", tmps[0], tmps[1]);
_PUT_STRING(rid, tmp);
}
break;
}
memset(tmp, 0, sizeof(tmp));
- snprintf(tmp, sizeof(tmp) - 1, ",%02x,", client_id->rnd);
+ silc_snprintf(tmp, sizeof(tmp) - 1, ",%02x,", client_id->rnd);
_PUT_STRING(rid, tmp);
memset(tmp, 0, sizeof(tmp));
- snprintf(tmp, sizeof(tmp) - 1, "[%02x %02x %02x %02x...]",
+ silc_snprintf(tmp, sizeof(tmp) - 1, "[%02x %02x %02x %02x...]",
client_id->hash[0], client_id->hash[1],
client_id->hash[2], client_id->hash[3]);
_PUT_STRING(rid, tmp);
}
memset(tmp, 0, sizeof(tmp));
- snprintf(tmp, sizeof(tmp) - 1, ",%d,", ntohs(channel_id->port));
+ silc_snprintf(tmp, sizeof(tmp) - 1, ",%d,", ntohs(channel_id->port));
_PUT_STRING(rid, tmp);
SILC_PUT16_MSB(channel_id->rnd, tmps);
memset(tmp, 0, sizeof(tmp));
- snprintf(tmp, sizeof(tmp) - 1, "[%02x %02x]", tmps[0], tmps[1]);
+ silc_snprintf(tmp, sizeof(tmp) - 1, "[%02x %02x]", tmps[0], tmps[1]);
_PUT_STRING(rid, tmp);
}
break;