diff options
| author | markus <> | 2004-04-08 08:03:15 +0000 |
|---|---|---|
| committer | markus <> | 2004-04-08 08:03:15 +0000 |
| commit | 40d673554117d24c9f46be721235d3e302c06e04 (patch) | |
| tree | 341e7f38b840f3e503afb6e471123c0f2ba082c3 /src/lib/libcrypto/ocsp | |
| parent | cbf88de39286be06cd20e0c65b6cb7633dce25a5 (diff) | |
| download | openbsd-40d673554117d24c9f46be721235d3e302c06e04.tar.gz openbsd-40d673554117d24c9f46be721235d3e302c06e04.tar.bz2 openbsd-40d673554117d24c9f46be721235d3e302c06e04.zip | |
merge 0.9.7d
Diffstat (limited to 'src/lib/libcrypto/ocsp')
| -rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_ext.c | 24 | ||||
| -rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_lib.c | 1 | ||||
| -rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_vfy.c | 6 |
3 files changed, 21 insertions, 10 deletions
diff --git a/src/lib/libcrypto/ocsp/ocsp_ext.c b/src/lib/libcrypto/ocsp/ocsp_ext.c index d6c8899f58..57399433fc 100644 --- a/src/lib/libcrypto/ocsp/ocsp_ext.c +++ b/src/lib/libcrypto/ocsp/ocsp_ext.c | |||
| @@ -305,6 +305,8 @@ err: | |||
| 305 | 305 | ||
| 306 | /* Add a nonce to an extension stack. A nonce can be specificed or if NULL | 306 | /* Add a nonce to an extension stack. A nonce can be specificed or if NULL |
| 307 | * a random nonce will be generated. | 307 | * a random nonce will be generated. |
| 308 | * Note: OpenSSL 0.9.7d and later create an OCTET STRING containing the | ||
| 309 | * nonce, previous versions used the raw nonce. | ||
| 308 | */ | 310 | */ |
| 309 | 311 | ||
| 310 | static int ocsp_add1_nonce(STACK_OF(X509_EXTENSION) **exts, unsigned char *val, int len) | 312 | static int ocsp_add1_nonce(STACK_OF(X509_EXTENSION) **exts, unsigned char *val, int len) |
| @@ -313,20 +315,28 @@ static int ocsp_add1_nonce(STACK_OF(X509_EXTENSION) **exts, unsigned char *val, | |||
| 313 | ASN1_OCTET_STRING os; | 315 | ASN1_OCTET_STRING os; |
| 314 | int ret = 0; | 316 | int ret = 0; |
| 315 | if (len <= 0) len = OCSP_DEFAULT_NONCE_LENGTH; | 317 | if (len <= 0) len = OCSP_DEFAULT_NONCE_LENGTH; |
| 316 | if (val) tmpval = val; | 318 | /* Create the OCTET STRING manually by writing out the header and |
| 319 | * appending the content octets. This avoids an extra memory allocation | ||
| 320 | * operation in some cases. Applications should *NOT* do this because | ||
| 321 | * it relies on library internals. | ||
| 322 | */ | ||
| 323 | os.length = ASN1_object_size(0, len, V_ASN1_OCTET_STRING); | ||
| 324 | os.data = OPENSSL_malloc(os.length); | ||
| 325 | if (os.data == NULL) | ||
| 326 | goto err; | ||
| 327 | tmpval = os.data; | ||
| 328 | ASN1_put_object(&tmpval, 0, len, V_ASN1_OCTET_STRING, V_ASN1_UNIVERSAL); | ||
| 329 | if (val) | ||
| 330 | memcpy(tmpval, val, len); | ||
| 317 | else | 331 | else |
| 318 | { | ||
| 319 | if (!(tmpval = OPENSSL_malloc(len))) goto err; | ||
| 320 | RAND_pseudo_bytes(tmpval, len); | 332 | RAND_pseudo_bytes(tmpval, len); |
| 321 | } | ||
| 322 | os.data = tmpval; | ||
| 323 | os.length = len; | ||
| 324 | if(!X509V3_add1_i2d(exts, NID_id_pkix_OCSP_Nonce, | 333 | if(!X509V3_add1_i2d(exts, NID_id_pkix_OCSP_Nonce, |
| 325 | &os, 0, X509V3_ADD_REPLACE)) | 334 | &os, 0, X509V3_ADD_REPLACE)) |
| 326 | goto err; | 335 | goto err; |
| 327 | ret = 1; | 336 | ret = 1; |
| 328 | err: | 337 | err: |
| 329 | if(!val) OPENSSL_free(tmpval); | 338 | if (os.data) |
| 339 | OPENSSL_free(os.data); | ||
| 330 | return ret; | 340 | return ret; |
| 331 | } | 341 | } |
| 332 | 342 | ||
diff --git a/src/lib/libcrypto/ocsp/ocsp_lib.c b/src/lib/libcrypto/ocsp/ocsp_lib.c index 3875af165c..9e87fc7895 100644 --- a/src/lib/libcrypto/ocsp/ocsp_lib.c +++ b/src/lib/libcrypto/ocsp/ocsp_lib.c | |||
| @@ -253,6 +253,7 @@ int OCSP_parse_url(char *url, char **phost, char **pport, char **ppath, int *pss | |||
| 253 | 253 | ||
| 254 | 254 | ||
| 255 | err: | 255 | err: |
| 256 | if (buf) OPENSSL_free(buf); | ||
| 256 | if (*ppath) OPENSSL_free(*ppath); | 257 | if (*ppath) OPENSSL_free(*ppath); |
| 257 | if (*pport) OPENSSL_free(*pport); | 258 | if (*pport) OPENSSL_free(*pport); |
| 258 | if (*phost) OPENSSL_free(*phost); | 259 | if (*phost) OPENSSL_free(*phost); |
diff --git a/src/lib/libcrypto/ocsp/ocsp_vfy.c b/src/lib/libcrypto/ocsp/ocsp_vfy.c index 1f5fda7ca3..3d58dfb06c 100644 --- a/src/lib/libcrypto/ocsp/ocsp_vfy.c +++ b/src/lib/libcrypto/ocsp/ocsp_vfy.c | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | * project 2000. | 3 | * project 2000. |
| 4 | */ | 4 | */ |
| 5 | /* ==================================================================== | 5 | /* ==================================================================== |
| 6 | * Copyright (c) 2000 The OpenSSL Project. All rights reserved. | 6 | * Copyright (c) 2000-2004 The OpenSSL Project. All rights reserved. |
| 7 | * | 7 | * |
| 8 | * Redistribution and use in source and binary forms, with or without | 8 | * Redistribution and use in source and binary forms, with or without |
| 9 | * modification, are permitted provided that the following conditions | 9 | * modification, are permitted provided that the following conditions |
| @@ -272,7 +272,7 @@ static int ocsp_check_ids(STACK_OF(OCSP_SINGLERESP) *sresp, OCSP_CERTID **ret) | |||
| 272 | 272 | ||
| 273 | for (i = 1; i < idcount; i++) | 273 | for (i = 1; i < idcount; i++) |
| 274 | { | 274 | { |
| 275 | tmpid = sk_OCSP_SINGLERESP_value(sresp, 0)->certId; | 275 | tmpid = sk_OCSP_SINGLERESP_value(sresp, i)->certId; |
| 276 | /* Check to see if IDs match */ | 276 | /* Check to see if IDs match */ |
| 277 | if (OCSP_id_issuer_cmp(cid, tmpid)) | 277 | if (OCSP_id_issuer_cmp(cid, tmpid)) |
| 278 | { | 278 | { |
| @@ -330,7 +330,7 @@ static int ocsp_match_issuerid(X509 *cert, OCSP_CERTID *cid, | |||
| 330 | OCSP_CERTID *tmpid; | 330 | OCSP_CERTID *tmpid; |
| 331 | for (i = 0; i < sk_OCSP_SINGLERESP_num(sresp); i++) | 331 | for (i = 0; i < sk_OCSP_SINGLERESP_num(sresp); i++) |
| 332 | { | 332 | { |
| 333 | tmpid = sk_OCSP_SINGLERESP_value(sresp, 0)->certId; | 333 | tmpid = sk_OCSP_SINGLERESP_value(sresp, i)->certId; |
| 334 | ret = ocsp_match_issuerid(cert, tmpid, NULL); | 334 | ret = ocsp_match_issuerid(cert, tmpid, NULL); |
| 335 | if (ret <= 0) return ret; | 335 | if (ret <= 0) return ret; |
| 336 | } | 336 | } |
