diff options
author | beck <> | 2002-05-15 02:29:21 +0000 |
---|---|---|
committer | beck <> | 2002-05-15 02:29:21 +0000 |
commit | b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9 (patch) | |
tree | fa27cf82a1250b64ed3bf5f4a18c7354d470bbcc /src/lib/libcrypto/pkcs7/pk7_lib.c | |
parent | e471e1ea98d673597b182ea85f29e30c97cd08b5 (diff) | |
download | openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.tar.gz openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.tar.bz2 openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.zip |
OpenSSL 0.9.7 stable 2002 05 08 merge
Diffstat (limited to 'src/lib/libcrypto/pkcs7/pk7_lib.c')
-rw-r--r-- | src/lib/libcrypto/pkcs7/pk7_lib.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/lib/libcrypto/pkcs7/pk7_lib.c b/src/lib/libcrypto/pkcs7/pk7_lib.c index 45973fe850..c00ed6833a 100644 --- a/src/lib/libcrypto/pkcs7/pk7_lib.c +++ b/src/lib/libcrypto/pkcs7/pk7_lib.c | |||
@@ -84,7 +84,11 @@ long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) | |||
84 | case PKCS7_OP_GET_DETACHED_SIGNATURE: | 84 | case PKCS7_OP_GET_DETACHED_SIGNATURE: |
85 | if (nid == NID_pkcs7_signed) | 85 | if (nid == NID_pkcs7_signed) |
86 | { | 86 | { |
87 | ret=p7->detached; | 87 | if(!p7->d.sign || !p7->d.sign->contents->d.ptr) |
88 | ret = 1; | ||
89 | else ret = 0; | ||
90 | |||
91 | p7->detached = ret; | ||
88 | } | 92 | } |
89 | else | 93 | else |
90 | { | 94 | { |
@@ -144,7 +148,7 @@ int PKCS7_set_type(PKCS7 *p7, int type) | |||
144 | { | 148 | { |
145 | ASN1_OBJECT *obj; | 149 | ASN1_OBJECT *obj; |
146 | 150 | ||
147 | PKCS7_content_free(p7); | 151 | /*PKCS7_content_free(p7);*/ |
148 | obj=OBJ_nid2obj(type); /* will not fail */ | 152 | obj=OBJ_nid2obj(type); /* will not fail */ |
149 | 153 | ||
150 | switch (type) | 154 | switch (type) |
@@ -165,18 +169,24 @@ int PKCS7_set_type(PKCS7 *p7, int type) | |||
165 | if ((p7->d.signed_and_enveloped=PKCS7_SIGN_ENVELOPE_new()) | 169 | if ((p7->d.signed_and_enveloped=PKCS7_SIGN_ENVELOPE_new()) |
166 | == NULL) goto err; | 170 | == NULL) goto err; |
167 | ASN1_INTEGER_set(p7->d.signed_and_enveloped->version,1); | 171 | ASN1_INTEGER_set(p7->d.signed_and_enveloped->version,1); |
172 | p7->d.signed_and_enveloped->enc_data->content_type | ||
173 | = OBJ_nid2obj(NID_pkcs7_data); | ||
168 | break; | 174 | break; |
169 | case NID_pkcs7_enveloped: | 175 | case NID_pkcs7_enveloped: |
170 | p7->type=obj; | 176 | p7->type=obj; |
171 | if ((p7->d.enveloped=PKCS7_ENVELOPE_new()) | 177 | if ((p7->d.enveloped=PKCS7_ENVELOPE_new()) |
172 | == NULL) goto err; | 178 | == NULL) goto err; |
173 | ASN1_INTEGER_set(p7->d.enveloped->version,0); | 179 | ASN1_INTEGER_set(p7->d.enveloped->version,0); |
180 | p7->d.enveloped->enc_data->content_type | ||
181 | = OBJ_nid2obj(NID_pkcs7_data); | ||
174 | break; | 182 | break; |
175 | case NID_pkcs7_encrypted: | 183 | case NID_pkcs7_encrypted: |
176 | p7->type=obj; | 184 | p7->type=obj; |
177 | if ((p7->d.encrypted=PKCS7_ENCRYPT_new()) | 185 | if ((p7->d.encrypted=PKCS7_ENCRYPT_new()) |
178 | == NULL) goto err; | 186 | == NULL) goto err; |
179 | ASN1_INTEGER_set(p7->d.encrypted->version,0); | 187 | ASN1_INTEGER_set(p7->d.encrypted->version,0); |
188 | p7->d.encrypted->enc_data->content_type | ||
189 | = OBJ_nid2obj(NID_pkcs7_data); | ||
180 | break; | 190 | break; |
181 | 191 | ||
182 | case NID_pkcs7_digest: | 192 | case NID_pkcs7_digest: |
@@ -295,7 +305,7 @@ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl) | |||
295 | } | 305 | } |
296 | 306 | ||
297 | int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, | 307 | int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, |
298 | EVP_MD *dgst) | 308 | const EVP_MD *dgst) |
299 | { | 309 | { |
300 | char is_dsa; | 310 | char is_dsa; |
301 | if (pkey->type == EVP_PKEY_DSA) is_dsa = 1; | 311 | if (pkey->type == EVP_PKEY_DSA) is_dsa = 1; |
@@ -343,7 +353,7 @@ err: | |||
343 | } | 353 | } |
344 | 354 | ||
345 | PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey, | 355 | PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey, |
346 | EVP_MD *dgst) | 356 | const EVP_MD *dgst) |
347 | { | 357 | { |
348 | PKCS7_SIGNER_INFO *si; | 358 | PKCS7_SIGNER_INFO *si; |
349 | 359 | ||
@@ -415,9 +425,7 @@ int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509) | |||
415 | M_ASN1_INTEGER_dup(X509_get_serialNumber(x509)); | 425 | M_ASN1_INTEGER_dup(X509_get_serialNumber(x509)); |
416 | 426 | ||
417 | X509_ALGOR_free(p7i->key_enc_algor); | 427 | X509_ALGOR_free(p7i->key_enc_algor); |
418 | p7i->key_enc_algor=(X509_ALGOR *)ASN1_dup(i2d_X509_ALGOR, | 428 | p7i->key_enc_algor= X509_ALGOR_dup(x509->cert_info->key->algor); |
419 | (char *(*)())d2i_X509_ALGOR, | ||
420 | (char *)x509->cert_info->key->algor); | ||
421 | 429 | ||
422 | CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509); | 430 | CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509); |
423 | p7i->cert=x509; | 431 | p7i->cert=x509; |