- silc_pkcs_save_private_key(prvfile, *return_private_key,
- (const unsigned char *)pass, strlen(pass),
- SILC_PKCS_FILE_BIN, rng);
+ if (!silc_pkcs_save_private_key(prvfile, private_key,
+ (const unsigned char *)pass, strlen(pass),
+ SILC_PKCS_FILE_BIN, rng))
+ return FALSE;
+
+ 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);