diff options
| author | djm <> | 2009-01-05 21:36:39 +0000 |
|---|---|---|
| committer | djm <> | 2009-01-05 21:36:39 +0000 |
| commit | 3be551b5922b665fd4e18cd65b857b9f92a0b6c8 (patch) | |
| tree | e0d2d687fbd4e4e9eb6bc4b178ea069817f0aba4 /src/lib/libcrypto/pkcs12/p12_crt.c | |
| parent | 822633f8798a6b4646a8b092e7c67f511cdbdba2 (diff) | |
| download | openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.tar.gz openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.tar.bz2 openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.zip | |
update to openssl-0.9.8i; tested by several, especially krw@
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_crt.c')
| -rw-r--r-- | src/lib/libcrypto/pkcs12/p12_crt.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/lib/libcrypto/pkcs12/p12_crt.c b/src/lib/libcrypto/pkcs12/p12_crt.c index dbafda17b6..9748256b6f 100644 --- a/src/lib/libcrypto/pkcs12/p12_crt.c +++ b/src/lib/libcrypto/pkcs12/p12_crt.c | |||
| @@ -63,6 +63,19 @@ | |||
| 63 | 63 | ||
| 64 | static int pkcs12_add_bag(STACK_OF(PKCS12_SAFEBAG) **pbags, PKCS12_SAFEBAG *bag); | 64 | static int pkcs12_add_bag(STACK_OF(PKCS12_SAFEBAG) **pbags, PKCS12_SAFEBAG *bag); |
| 65 | 65 | ||
| 66 | static int copy_bag_attr(PKCS12_SAFEBAG *bag, EVP_PKEY *pkey, int nid) | ||
| 67 | { | ||
| 68 | int idx; | ||
| 69 | X509_ATTRIBUTE *attr; | ||
| 70 | idx = EVP_PKEY_get_attr_by_NID(pkey, nid, -1); | ||
| 71 | if (idx < 0) | ||
| 72 | return 1; | ||
| 73 | attr = EVP_PKEY_get_attr(pkey, idx); | ||
| 74 | if (!X509at_add1_attr(&bag->attrib, attr)) | ||
| 75 | return 0; | ||
| 76 | return 1; | ||
| 77 | } | ||
| 78 | |||
| 66 | PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, | 79 | PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, |
| 67 | STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, | 80 | STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, |
| 68 | int keytype) | 81 | int keytype) |
| @@ -122,20 +135,15 @@ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, | |||
| 122 | 135 | ||
| 123 | if (pkey) | 136 | if (pkey) |
| 124 | { | 137 | { |
| 125 | int cspidx; | ||
| 126 | bag = PKCS12_add_key(&bags, pkey, keytype, iter, nid_key, pass); | 138 | bag = PKCS12_add_key(&bags, pkey, keytype, iter, nid_key, pass); |
| 127 | 139 | ||
| 128 | if (!bag) | 140 | if (!bag) |
| 129 | goto err; | 141 | goto err; |
| 130 | 142 | ||
| 131 | cspidx = EVP_PKEY_get_attr_by_NID(pkey, NID_ms_csp_name, -1); | 143 | if (!copy_bag_attr(bag, pkey, NID_ms_csp_name)) |
| 132 | if (cspidx >= 0) | 144 | goto err; |
| 133 | { | 145 | if (!copy_bag_attr(bag, pkey, NID_LocalKeySet)) |
| 134 | X509_ATTRIBUTE *cspattr; | 146 | goto err; |
| 135 | cspattr = EVP_PKEY_get_attr(pkey, cspidx); | ||
| 136 | if (!X509at_add1_attr(&bag->attrib, cspattr)) | ||
| 137 | goto err; | ||
| 138 | } | ||
| 139 | 147 | ||
| 140 | if(name && !PKCS12_add_friendlyname(bag, name, -1)) | 148 | if(name && !PKCS12_add_friendlyname(bag, name, -1)) |
| 141 | goto err; | 149 | goto err; |
