aboutsummaryrefslogtreecommitdiffstats
path: root/apps/pkcs8.c
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2003-06-25 21:35:05 +0000
committerBodo Möller <bodo@openssl.org>2003-06-25 21:35:05 +0000
commit0fbffe7a7136950b3a83b619cbd21e7330fe3942 (patch)
tree27d870625cff56df56b671acd3666e10d0155766 /apps/pkcs8.c
parent037f6e73f17c1b322d49fc23bd2934b969ffdf79 (diff)
downloadopenssl-0fbffe7a7136950b3a83b619cbd21e7330fe3942.tar.gz
implement PKCS #8 / SEC1 private key format for ECC
Submitted by: Nils Larsch
Diffstat (limited to 'apps/pkcs8.c')
-rw-r--r--apps/pkcs8.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/apps/pkcs8.c b/apps/pkcs8.c
index ee8cf02813..43a8284847 100644
--- a/apps/pkcs8.c
+++ b/apps/pkcs8.c
@@ -232,11 +232,14 @@ int MAIN(int argc, char **argv)
pkey = load_key(bio_err, infile, informat, 1,
passin, e, "key");
if (!pkey) {
+ BIO_free_all(out);
return (1);
}
if (!(p8inf = EVP_PKEY2PKCS8_broken(pkey, p8_broken))) {
BIO_printf(bio_err, "Error converting key\n");
ERR_print_errors(bio_err);
+ EVP_PKEY_free(pkey);
+ BIO_free_all(out);
return (1);
}
if(nocrypt) {
@@ -246,6 +249,9 @@ int MAIN(int argc, char **argv)
i2d_PKCS8_PRIV_KEY_INFO_bio(out, p8inf);
else {
BIO_printf(bio_err, "Bad format specified for key\n");
+ PKCS8_PRIV_KEY_INFO_free(p8inf);
+ EVP_PKEY_free(pkey);
+ BIO_free_all(out);
return (1);
}
} else {
@@ -253,7 +259,12 @@ int MAIN(int argc, char **argv)
else {
p8pass = pass;
if (EVP_read_pw_string(pass, sizeof pass, "Enter Encryption Password:", 1))
+ {
+ PKCS8_PRIV_KEY_INFO_free(p8inf);
+ EVP_PKEY_free(pkey);
+ BIO_free_all(out);
return (1);
+ }
}
app_RAND_load_file(NULL, bio_err, 0);
if (!(p8 = PKCS8_encrypt(pbe_nid, cipher,
@@ -261,6 +272,9 @@ int MAIN(int argc, char **argv)
NULL, 0, iter, p8inf))) {
BIO_printf(bio_err, "Error encrypting key\n");
ERR_print_errors(bio_err);
+ PKCS8_PRIV_KEY_INFO_free(p8inf);
+ EVP_PKEY_free(pkey);
+ BIO_free_all(out);
return (1);
}
app_RAND_write_file(NULL, bio_err);
@@ -270,6 +284,9 @@ int MAIN(int argc, char **argv)
i2d_PKCS8_bio(out, p8);
else {
BIO_printf(bio_err, "Bad format specified for key\n");
+ PKCS8_PRIV_KEY_INFO_free(p8inf);
+ EVP_PKEY_free(pkey);
+ BIO_free_all(out);
return (1);
}
X509_SIG_free(p8);