aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/pkcs12
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2008-06-26 23:27:31 +0000
committerDr. Stephen Henson <steve@openssl.org>2008-06-26 23:27:31 +0000
commit8528128b2a740d34d3ae1d43c525d7e6ea6d7f37 (patch)
tree88ae9095ddcb99290be423fcf45112de7e9d3418 /crypto/pkcs12
parenta0f3679b52a803447acfd91d009df3fb3fbc1bb4 (diff)
downloadopenssl-8528128b2a740d34d3ae1d43c525d7e6ea6d7f37.tar.gz
Update from stable branch.
Diffstat (limited to 'crypto/pkcs12')
-rw-r--r--crypto/pkcs12/p12_crt.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/crypto/pkcs12/p12_crt.c b/crypto/pkcs12/p12_crt.c
index dbafda17b6..9748256b6f 100644
--- a/crypto/pkcs12/p12_crt.c
+++ b/crypto/pkcs12/p12_crt.c
@@ -63,6 +63,19 @@
static int pkcs12_add_bag(STACK_OF(PKCS12_SAFEBAG) **pbags, PKCS12_SAFEBAG *bag);
+static int copy_bag_attr(PKCS12_SAFEBAG *bag, EVP_PKEY *pkey, int nid)
+ {
+ int idx;
+ X509_ATTRIBUTE *attr;
+ idx = EVP_PKEY_get_attr_by_NID(pkey, nid, -1);
+ if (idx < 0)
+ return 1;
+ attr = EVP_PKEY_get_attr(pkey, idx);
+ if (!X509at_add1_attr(&bag->attrib, attr))
+ return 0;
+ return 1;
+ }
+
PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter,
int keytype)
@@ -122,20 +135,15 @@ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
if (pkey)
{
- int cspidx;
bag = PKCS12_add_key(&bags, pkey, keytype, iter, nid_key, pass);
if (!bag)
goto err;
- cspidx = EVP_PKEY_get_attr_by_NID(pkey, NID_ms_csp_name, -1);
- if (cspidx >= 0)
- {
- X509_ATTRIBUTE *cspattr;
- cspattr = EVP_PKEY_get_attr(pkey, cspidx);
- if (!X509at_add1_attr(&bag->attrib, cspattr))
- goto err;
- }
+ if (!copy_bag_attr(bag, pkey, NID_ms_csp_name))
+ goto err;
+ if (!copy_bag_attr(bag, pkey, NID_LocalKeySet))
+ goto err;
if(name && !PKCS12_add_friendlyname(bag, name, -1))
goto err;