}
if (!pass) {
- memset(line, 0, sizeof(line));
- snprintf(line, sizeof(line), "Private key passphrase: ");
- pass = silc_get_input(line, TRUE);
- if (!pass)
- pass = strdup("");
+ while (TRUE) {
+ char *pass2 = NULL;
+ pass = silc_get_input("Private key passphrase: ", TRUE);
+ if (!pass) {
+ pass = strdup("");
+ break;
+ } else {
+ bool match;
+ printf("\n");
+ pass2 = silc_get_input("Retype private key passphrase: ", TRUE);
+ if (!pass2)
+ pass2 = strdup("");
+ match = !strcmp(pass, pass2);
+ silc_free(pass2);
+ if (match)
+ break;
+ fprintf(stderr, "\nPassphrases do not match\n\n");
+ }
+ }
}
/* Generate keys */
SILC_PKCS_FILE_PEM) == FALSE)
if (silc_pkcs_load_public_key((char *)pub_filename, return_public_key,
SILC_PKCS_FILE_BIN) == FALSE) {
- memset(pass, 0, strlen(pass));
+ if (pass)
+ memset(pass, 0, strlen(pass));
silc_free(pass);
return FALSE;
}
pass = new_passphrase ? strdup(new_passphrase) : NULL;
if (!pass) {
+ char *pass2 = NULL;
fprintf(stdout, "\n");
pass = silc_get_input("New passphrase: ", TRUE);
- if (!pass)
+ if (!pass) {
pass = strdup("");
+ } else {
+ 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");
+ }
+ silc_free(pass2);
+ }
}
- silc_pkcs_save_private_key(prv_filename, private_key,
+ silc_pkcs_save_private_key((char *)prv_filename, private_key,
(unsigned char *)pass, strlen(pass),
base64 ? SILC_PKCS_FILE_PEM : SILC_PKCS_FILE_BIN);