diff options
Diffstat (limited to 'src')
371 files changed, 6399 insertions, 1594 deletions
| diff --git a/src/lib/libcrypto/Attic/Makefile b/src/lib/libcrypto/Attic/Makefile index 05e3bb701e..6759b2e4d0 100644 --- a/src/lib/libcrypto/Attic/Makefile +++ b/src/lib/libcrypto/Attic/Makefile | |||
| @@ -34,8 +34,8 @@ SDIRS= md2 md5 sha mdc2 hmac ripemd \ | |||
| 34 | GENERAL=Makefile README crypto-lib.com install.com | 34 | GENERAL=Makefile README crypto-lib.com install.com | 
| 35 | 35 | ||
| 36 | LIB= $(TOP)/libcrypto.a | 36 | LIB= $(TOP)/libcrypto.a | 
| 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c | 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c | 
| 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o | 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o | 
| 39 | 39 | ||
| 40 | SRC= $(LIBSRC) | 40 | SRC= $(LIBSRC) | 
| 41 | 41 | ||
| @@ -90,7 +90,8 @@ links: | |||
| 90 | 90 | ||
| 91 | lib: $(LIBOBJ) | 91 | lib: $(LIBOBJ) | 
| 92 | $(AR) $(LIB) $(LIBOBJ) | 92 | $(AR) $(LIB) $(LIBOBJ) | 
| 93 | $(RANLIB) $(LIB) | 93 | @echo You may get an error following this line. Please ignore. | 
| 94 | - $(RANLIB) $(LIB) | ||
| 94 | @touch lib | 95 | @touch lib | 
| 95 | 96 | ||
| 96 | libs: | 97 | libs: | 
| @@ -197,3 +198,6 @@ tmdiff.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h | |||
| 197 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 198 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 
| 198 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 199 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 
| 199 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 200 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 
| 201 | uid.o: ../include/openssl/crypto.h ../include/openssl/opensslv.h | ||
| 202 | uid.o: ../include/openssl/safestack.h ../include/openssl/stack.h | ||
| 203 | uid.o: ../include/openssl/symhacks.h | ||
| diff --git a/src/lib/libcrypto/Makefile.ssl b/src/lib/libcrypto/Makefile.ssl index 05e3bb701e..6759b2e4d0 100644 --- a/src/lib/libcrypto/Makefile.ssl +++ b/src/lib/libcrypto/Makefile.ssl | |||
| @@ -34,8 +34,8 @@ SDIRS= md2 md5 sha mdc2 hmac ripemd \ | |||
| 34 | GENERAL=Makefile README crypto-lib.com install.com | 34 | GENERAL=Makefile README crypto-lib.com install.com | 
| 35 | 35 | ||
| 36 | LIB= $(TOP)/libcrypto.a | 36 | LIB= $(TOP)/libcrypto.a | 
| 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c | 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c | 
| 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o | 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o | 
| 39 | 39 | ||
| 40 | SRC= $(LIBSRC) | 40 | SRC= $(LIBSRC) | 
| 41 | 41 | ||
| @@ -90,7 +90,8 @@ links: | |||
| 90 | 90 | ||
| 91 | lib: $(LIBOBJ) | 91 | lib: $(LIBOBJ) | 
| 92 | $(AR) $(LIB) $(LIBOBJ) | 92 | $(AR) $(LIB) $(LIBOBJ) | 
| 93 | $(RANLIB) $(LIB) | 93 | @echo You may get an error following this line. Please ignore. | 
| 94 | - $(RANLIB) $(LIB) | ||
| 94 | @touch lib | 95 | @touch lib | 
| 95 | 96 | ||
| 96 | libs: | 97 | libs: | 
| @@ -197,3 +198,6 @@ tmdiff.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h | |||
| 197 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 198 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 
| 198 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 199 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 
| 199 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 200 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 
| 201 | uid.o: ../include/openssl/crypto.h ../include/openssl/opensslv.h | ||
| 202 | uid.o: ../include/openssl/safestack.h ../include/openssl/stack.h | ||
| 203 | uid.o: ../include/openssl/symhacks.h | ||
| diff --git a/src/lib/libcrypto/asn1/Makefile.ssl b/src/lib/libcrypto/asn1/Makefile.ssl index b8059ddffe..dace5be2bc 100644 --- a/src/lib/libcrypto/asn1/Makefile.ssl +++ b/src/lib/libcrypto/asn1/Makefile.ssl | |||
| @@ -75,7 +75,8 @@ all: lib | |||
| 75 | 75 | ||
| 76 | lib: $(LIBOBJ) | 76 | lib: $(LIBOBJ) | 
| 77 | $(AR) $(LIB) $(LIBOBJ) | 77 | $(AR) $(LIB) $(LIBOBJ) | 
| 78 | $(RANLIB) $(LIB) | 78 | @echo You may get an error following this line. Please ignore. | 
| 79 | - $(RANLIB) $(LIB) | ||
| 79 | @touch lib | 80 | @touch lib | 
| 80 | 81 | ||
| 81 | files: | 82 | files: | 
| diff --git a/src/lib/libcrypto/asn1/a_strnid.c b/src/lib/libcrypto/asn1/a_strnid.c index 6b10cff994..732e68fe46 100644 --- a/src/lib/libcrypto/asn1/a_strnid.c +++ b/src/lib/libcrypto/asn1/a_strnid.c | |||
| @@ -133,7 +133,7 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in, | |||
| 133 | if(tbl) { | 133 | if(tbl) { | 
| 134 | mask = tbl->mask; | 134 | mask = tbl->mask; | 
| 135 | if(!(tbl->flags & STABLE_NO_MASK)) mask &= global_mask; | 135 | if(!(tbl->flags & STABLE_NO_MASK)) mask &= global_mask; | 
| 136 | ret = ASN1_mbstring_ncopy(out, in, inlen, inform, tbl->mask, | 136 | ret = ASN1_mbstring_ncopy(out, in, inlen, inform, mask, | 
| 137 | tbl->minsize, tbl->maxsize); | 137 | tbl->minsize, tbl->maxsize); | 
| 138 | } else ret = ASN1_mbstring_copy(out, in, inlen, inform, DIRSTRING_TYPE & global_mask); | 138 | } else ret = ASN1_mbstring_copy(out, in, inlen, inform, DIRSTRING_TYPE & global_mask); | 
| 139 | if(ret <= 0) return NULL; | 139 | if(ret <= 0) return NULL; | 
| diff --git a/src/lib/libcrypto/asn1/asn1_lib.c b/src/lib/libcrypto/asn1/asn1_lib.c index 77447a5240..a8b651e54e 100644 --- a/src/lib/libcrypto/asn1/asn1_lib.c +++ b/src/lib/libcrypto/asn1/asn1_lib.c | |||
| @@ -301,7 +301,7 @@ int asn1_GetSequence(ASN1_CTX *c, long *length) | |||
| 301 | return(0); | 301 | return(0); | 
| 302 | } | 302 | } | 
| 303 | if (c->inf == (1|V_ASN1_CONSTRUCTED)) | 303 | if (c->inf == (1|V_ASN1_CONSTRUCTED)) | 
| 304 | c->slen= *length+ *(c->pp)-c->p; | 304 | c->slen= *length; | 
| 305 | c->eos=0; | 305 | c->eos=0; | 
| 306 | return(1); | 306 | return(1); | 
| 307 | } | 307 | } | 
| diff --git a/src/lib/libcrypto/asn1/asn1_mac.h b/src/lib/libcrypto/asn1/asn1_mac.h index 4512ba6cc6..af0e664b2d 100644 --- a/src/lib/libcrypto/asn1/asn1_mac.h +++ b/src/lib/libcrypto/asn1/asn1_mac.h | |||
| @@ -196,6 +196,9 @@ err:\ | |||
| 196 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 196 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 
| 197 | M_ASN1_I2D_put_SEQUENCE_type(type,a,f); | 197 | M_ASN1_I2D_put_SEQUENCE_type(type,a,f); | 
| 198 | 198 | ||
| 199 | #define M_ASN1_I2D_put_SEQUENCE_opt_ex_type(type,a,f) \ | ||
| 200 | if (a) M_ASN1_I2D_put_SEQUENCE_type(type,a,f); | ||
| 201 | |||
| 199 | #define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \ | 202 | #define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \ | 
| 200 | if ((c.slen != 0) && \ | 203 | if ((c.slen != 0) && \ | 
| 201 | (M_ASN1_next == \ | 204 | (M_ASN1_next == \ | 
| @@ -389,6 +392,9 @@ err:\ | |||
| 389 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 392 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 
| 390 | M_ASN1_I2D_len_SEQUENCE_type(type,a,f); | 393 | M_ASN1_I2D_len_SEQUENCE_type(type,a,f); | 
| 391 | 394 | ||
| 395 | #define M_ASN1_I2D_len_SEQUENCE_opt_ex_type(type,a,f) \ | ||
| 396 | if (a) M_ASN1_I2D_len_SEQUENCE_type(type,a,f); | ||
| 397 | |||
| 392 | #define M_ASN1_I2D_len_IMP_SET(a,f,x) \ | 398 | #define M_ASN1_I2D_len_IMP_SET(a,f,x) \ | 
| 393 | ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET); | 399 | ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET); | 
| 394 | 400 | ||
| @@ -452,6 +458,15 @@ err:\ | |||
| 452 | ret+=ASN1_object_size(1,v,mtag); \ | 458 | ret+=ASN1_object_size(1,v,mtag); \ | 
| 453 | } | 459 | } | 
| 454 | 460 | ||
| 461 | #define M_ASN1_I2D_len_EXP_SEQUENCE_opt_ex_type(type,a,f,mtag,tag,v) \ | ||
| 462 | if (a)\ | ||
| 463 | { \ | ||
| 464 | v=i2d_ASN1_SET_OF_##type(a,NULL,f,tag, \ | ||
| 465 | V_ASN1_UNIVERSAL, \ | ||
| 466 | IS_SEQUENCE); \ | ||
| 467 | ret+=ASN1_object_size(1,v,mtag); \ | ||
| 468 | } | ||
| 469 | |||
| 455 | /* Put Macros */ | 470 | /* Put Macros */ | 
| 456 | #define M_ASN1_I2D_put(a,f) f(a,&p) | 471 | #define M_ASN1_I2D_put(a,f) f(a,&p) | 
| 457 | 472 | ||
| @@ -536,6 +551,14 @@ err:\ | |||
| 536 | IS_SEQUENCE); \ | 551 | IS_SEQUENCE); \ | 
| 537 | } | 552 | } | 
| 538 | 553 | ||
| 554 | #define M_ASN1_I2D_put_EXP_SEQUENCE_opt_ex_type(type,a,f,mtag,tag,v) \ | ||
| 555 | if (a) \ | ||
| 556 | { \ | ||
| 557 | ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \ | ||
| 558 | i2d_ASN1_SET_OF_##type(a,&p,f,tag,V_ASN1_UNIVERSAL, \ | ||
| 559 | IS_SEQUENCE); \ | ||
| 560 | } | ||
| 561 | |||
| 539 | #define M_ASN1_I2D_seq_total() \ | 562 | #define M_ASN1_I2D_seq_total() \ | 
| 540 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); \ | 563 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); \ | 
| 541 | if (pp == NULL) return(r); \ | 564 | if (pp == NULL) return(r); \ | 
| diff --git a/src/lib/libcrypto/asn1/p7_lib.c b/src/lib/libcrypto/asn1/p7_lib.c index b1196ef581..8a340b0119 100644 --- a/src/lib/libcrypto/asn1/p7_lib.c +++ b/src/lib/libcrypto/asn1/p7_lib.c | |||
| @@ -307,12 +307,14 @@ PKCS7 *d2i_PKCS7(PKCS7 **a, unsigned char **pp, long length) | |||
| 307 | } | 307 | } | 
| 308 | if (Tinf == (1|V_ASN1_CONSTRUCTED)) | 308 | if (Tinf == (1|V_ASN1_CONSTRUCTED)) | 
| 309 | { | 309 | { | 
| 310 | c.q=c.p; | ||
| 310 | if (!ASN1_check_infinite_end(&c.p,c.slen)) | 311 | if (!ASN1_check_infinite_end(&c.p,c.slen)) | 
| 311 | { | 312 | { | 
| 312 | c.error=ERR_R_MISSING_ASN1_EOS; | 313 | c.error=ERR_R_MISSING_ASN1_EOS; | 
| 313 | c.line=__LINE__; | 314 | c.line=__LINE__; | 
| 314 | goto err; | 315 | goto err; | 
| 315 | } | 316 | } | 
| 317 | c.slen-=(c.p-c.q); | ||
| 316 | } | 318 | } | 
| 317 | } | 319 | } | 
| 318 | else | 320 | else | 
| diff --git a/src/lib/libcrypto/asn1/x_crl.c b/src/lib/libcrypto/asn1/x_crl.c index 1f302d0e01..51518cdf35 100644 --- a/src/lib/libcrypto/asn1/x_crl.c +++ b/src/lib/libcrypto/asn1/x_crl.c | |||
| @@ -71,14 +71,14 @@ int i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **pp) | |||
| 71 | 71 | ||
| 72 | M_ASN1_I2D_len(a->serialNumber,i2d_ASN1_INTEGER); | 72 | M_ASN1_I2D_len(a->serialNumber,i2d_ASN1_INTEGER); | 
| 73 | M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_TIME); | 73 | M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_TIME); | 
| 74 | M_ASN1_I2D_len_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 74 | M_ASN1_I2D_len_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 75 | i2d_X509_EXTENSION); | 75 | i2d_X509_EXTENSION); | 
| 76 | 76 | ||
| 77 | M_ASN1_I2D_seq_total(); | 77 | M_ASN1_I2D_seq_total(); | 
| 78 | 78 | ||
| 79 | M_ASN1_I2D_put(a->serialNumber,i2d_ASN1_INTEGER); | 79 | M_ASN1_I2D_put(a->serialNumber,i2d_ASN1_INTEGER); | 
| 80 | M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_TIME); | 80 | M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_TIME); | 
| 81 | M_ASN1_I2D_put_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 81 | M_ASN1_I2D_put_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 82 | i2d_X509_EXTENSION); | 82 | i2d_X509_EXTENSION); | 
| 83 | 83 | ||
| 84 | M_ASN1_I2D_finish(); | 84 | M_ASN1_I2D_finish(); | 
| @@ -121,7 +121,7 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp) | |||
| 121 | { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_TIME); } | 121 | { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_TIME); } | 
| 122 | M_ASN1_I2D_len_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 122 | M_ASN1_I2D_len_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 
| 123 | i2d_X509_REVOKED); | 123 | i2d_X509_REVOKED); | 
| 124 | M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 124 | M_ASN1_I2D_len_EXP_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 125 | i2d_X509_EXTENSION,0, | 125 | i2d_X509_EXTENSION,0, | 
| 126 | V_ASN1_SEQUENCE,v1); | 126 | V_ASN1_SEQUENCE,v1); | 
| 127 | 127 | ||
| @@ -138,7 +138,7 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp) | |||
| 138 | { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_TIME); } | 138 | { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_TIME); } | 
| 139 | M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 139 | M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 
| 140 | i2d_X509_REVOKED); | 140 | i2d_X509_REVOKED); | 
| 141 | M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 141 | M_ASN1_I2D_put_EXP_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 142 | i2d_X509_EXTENSION,0, | 142 | i2d_X509_EXTENSION,0, | 
| 143 | V_ASN1_SEQUENCE,v1); | 143 | V_ASN1_SEQUENCE,v1); | 
| 144 | 144 | ||
| @@ -260,7 +260,7 @@ X509_CRL_INFO *X509_CRL_INFO_new(void) | |||
| 260 | M_ASN1_New(ret->lastUpdate,M_ASN1_UTCTIME_new); | 260 | M_ASN1_New(ret->lastUpdate,M_ASN1_UTCTIME_new); | 
| 261 | ret->nextUpdate=NULL; | 261 | ret->nextUpdate=NULL; | 
| 262 | M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null); | 262 | M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null); | 
| 263 | M_ASN1_New(ret->extensions,sk_X509_EXTENSION_new_null); | 263 | ret->extensions = NULL; | 
| 264 | sk_X509_REVOKED_set_cmp_func(ret->revoked,X509_REVOKED_cmp); | 264 | sk_X509_REVOKED_set_cmp_func(ret->revoked,X509_REVOKED_cmp); | 
| 265 | return(ret); | 265 | return(ret); | 
| 266 | M_ASN1_New_Error(ASN1_F_X509_CRL_INFO_NEW); | 266 | M_ASN1_New_Error(ASN1_F_X509_CRL_INFO_NEW); | 
| diff --git a/src/lib/libcrypto/asn1/x_name.c b/src/lib/libcrypto/asn1/x_name.c index b832deb928..1885d699ef 100644 --- a/src/lib/libcrypto/asn1/x_name.c +++ b/src/lib/libcrypto/asn1/x_name.c | |||
| @@ -141,10 +141,12 @@ static int i2d_X509_NAME_entries(X509_NAME *a) | |||
| 141 | } | 141 | } | 
| 142 | size+=i2d_X509_NAME_ENTRY(ne,NULL); | 142 | size+=i2d_X509_NAME_ENTRY(ne,NULL); | 
| 143 | } | 143 | } | 
| 144 | |||
| 145 | ret+=ASN1_object_size(1,size,V_ASN1_SET); | ||
| 146 | if (fe != NULL) | 144 | if (fe != NULL) | 
| 145 | { | ||
| 146 | /* SET OF needed only if entries is non empty */ | ||
| 147 | ret+=ASN1_object_size(1,size,V_ASN1_SET); | ||
| 147 | fe->size=size; | 148 | fe->size=size; | 
| 149 | } | ||
| 148 | 150 | ||
| 149 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); | 151 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); | 
| 150 | 152 | ||
| diff --git a/src/lib/libcrypto/bf/Makefile.ssl b/src/lib/libcrypto/bf/Makefile.ssl index f4eb90f13f..9205ee7901 100644 --- a/src/lib/libcrypto/bf/Makefile.ssl +++ b/src/lib/libcrypto/bf/Makefile.ssl | |||
| @@ -44,7 +44,8 @@ all: lib | |||
| 44 | 44 | ||
| 45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) | 
| 46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(AR) $(LIB) $(LIBOBJ) | 
| 47 | $(RANLIB) $(LIB) | 47 | @echo You may get an error following this line. Please ignore. | 
| 48 | - $(RANLIB) $(LIB) | ||
| 48 | @touch lib | 49 | @touch lib | 
| 49 | 50 | ||
| 50 | # elf | 51 | # elf | 
| diff --git a/src/lib/libcrypto/bio/Makefile.ssl b/src/lib/libcrypto/bio/Makefile.ssl index 916d651d47..567d3fb870 100644 --- a/src/lib/libcrypto/bio/Makefile.ssl +++ b/src/lib/libcrypto/bio/Makefile.ssl | |||
| @@ -49,7 +49,8 @@ all: lib | |||
| 49 | 49 | ||
| 50 | lib: $(LIBOBJ) | 50 | lib: $(LIBOBJ) | 
| 51 | $(AR) $(LIB) $(LIBOBJ) | 51 | $(AR) $(LIB) $(LIBOBJ) | 
| 52 | $(RANLIB) $(LIB) | 52 | @echo You may get an error following this line. Please ignore. | 
| 53 | - $(RANLIB) $(LIB) | ||
| 53 | @touch lib | 54 | @touch lib | 
| 54 | 55 | ||
| 55 | files: | 56 | files: | 
| @@ -95,13 +96,13 @@ b_dump.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | |||
| 95 | b_dump.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | 96 | b_dump.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | 
| 96 | b_dump.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 97 | b_dump.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 
| 97 | b_dump.o: ../cryptlib.h | 98 | b_dump.o: ../cryptlib.h | 
| 98 | b_print.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 99 | b_print.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | 
| 99 | b_print.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h | 100 | b_print.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 
| 100 | b_print.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 101 | b_print.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | 
| 101 | b_print.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | 102 | b_print.o: ../../include/openssl/err.h ../../include/openssl/lhash.h | 
| 102 | b_print.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | 103 | b_print.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 
| 103 | b_print.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 104 | b_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 
| 104 | b_print.o: ../cryptlib.h | 105 | b_print.o: ../../include/openssl/symhacks.h ../cryptlib.h | 
| 105 | b_sock.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 106 | b_sock.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 
| 106 | b_sock.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h | 107 | b_sock.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h | 
| 107 | b_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 108 | b_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 
| diff --git a/src/lib/libcrypto/bio/b_print.c b/src/lib/libcrypto/bio/b_print.c index a62f551635..b4f7a85f2e 100644 --- a/src/lib/libcrypto/bio/b_print.c +++ b/src/lib/libcrypto/bio/b_print.c | |||
| @@ -69,6 +69,7 @@ | |||
| 69 | #ifndef NO_SYS_TYPES_H | 69 | #ifndef NO_SYS_TYPES_H | 
| 70 | #include <sys/types.h> | 70 | #include <sys/types.h> | 
| 71 | #endif | 71 | #endif | 
| 72 | #include <openssl/bn.h> /* To get BN_LLONG properly defined */ | ||
| 72 | #include <openssl/bio.h> | 73 | #include <openssl/bio.h> | 
| 73 | 74 | ||
| 74 | #ifdef BN_LLONG | 75 | #ifdef BN_LLONG | 
| diff --git a/src/lib/libcrypto/bio/b_sock.c b/src/lib/libcrypto/bio/b_sock.c index 64310058b4..62cc3f1a0c 100644 --- a/src/lib/libcrypto/bio/b_sock.c +++ b/src/lib/libcrypto/bio/b_sock.c | |||
| @@ -113,8 +113,8 @@ int BIO_get_host_ip(const char *str, unsigned char *ip) | |||
| 113 | 113 | ||
| 114 | /* At this point, we have something that is most probably correct | 114 | /* At this point, we have something that is most probably correct | 
| 115 | in some way, so let's init the socket. */ | 115 | in some way, so let's init the socket. */ | 
| 116 | if (!BIO_sock_init()) | 116 | if (BIO_sock_init() != 1) | 
| 117 | return(0); /* don't generate another error code here */ | 117 | return 0; /* don't generate another error code here */ | 
| 118 | 118 | ||
| 119 | /* If the string actually contained an IP address, we need not do | 119 | /* If the string actually contained an IP address, we need not do | 
| 120 | anything more */ | 120 | anything more */ | 
| @@ -519,15 +519,15 @@ int BIO_get_accept_socket(char *host, int bind_mode) | |||
| 519 | { | 519 | { | 
| 520 | int ret=0; | 520 | int ret=0; | 
| 521 | struct sockaddr_in server,client; | 521 | struct sockaddr_in server,client; | 
| 522 | int s= -1,cs; | 522 | int s=INVALID_SOCKET,cs; | 
| 523 | unsigned char ip[4]; | 523 | unsigned char ip[4]; | 
| 524 | unsigned short port; | 524 | unsigned short port; | 
| 525 | char *str,*e; | 525 | char *str=NULL,*e; | 
| 526 | const char *h,*p; | 526 | const char *h,*p; | 
| 527 | unsigned long l; | 527 | unsigned long l; | 
| 528 | int err_num; | 528 | int err_num; | 
| 529 | 529 | ||
| 530 | if (!BIO_sock_init()) return(INVALID_SOCKET); | 530 | if (BIO_sock_init() != 1) return(INVALID_SOCKET); | 
| 531 | 531 | ||
| 532 | if ((str=BUF_strdup(host)) == NULL) return(INVALID_SOCKET); | 532 | if ((str=BUF_strdup(host)) == NULL) return(INVALID_SOCKET); | 
| 533 | 533 | ||
| @@ -553,7 +553,7 @@ int BIO_get_accept_socket(char *host, int bind_mode) | |||
| 553 | h="*"; | 553 | h="*"; | 
| 554 | } | 554 | } | 
| 555 | 555 | ||
| 556 | if (!BIO_get_port(p,&port)) return(INVALID_SOCKET); | 556 | if (!BIO_get_port(p,&port)) goto err; | 
| 557 | 557 | ||
| 558 | memset((char *)&server,0,sizeof(server)); | 558 | memset((char *)&server,0,sizeof(server)); | 
| 559 | server.sin_family=AF_INET; | 559 | server.sin_family=AF_INET; | 
| @@ -563,7 +563,7 @@ int BIO_get_accept_socket(char *host, int bind_mode) | |||
| 563 | server.sin_addr.s_addr=INADDR_ANY; | 563 | server.sin_addr.s_addr=INADDR_ANY; | 
| 564 | else | 564 | else | 
| 565 | { | 565 | { | 
| 566 | if (!BIO_get_host_ip(h,&(ip[0]))) return(INVALID_SOCKET); | 566 | if (!BIO_get_host_ip(h,&(ip[0]))) goto err; | 
| 567 | l=(unsigned long) | 567 | l=(unsigned long) | 
| 568 | ((unsigned long)ip[0]<<24L)| | 568 | ((unsigned long)ip[0]<<24L)| | 
| 569 | ((unsigned long)ip[1]<<16L)| | 569 | ((unsigned long)ip[1]<<16L)| | 
| diff --git a/src/lib/libcrypto/bn/Makefile.ssl b/src/lib/libcrypto/bn/Makefile.ssl index 17b72d577f..526d7adb5c 100644 --- a/src/lib/libcrypto/bn/Makefile.ssl +++ b/src/lib/libcrypto/bn/Makefile.ssl | |||
| @@ -68,7 +68,8 @@ bnbug: bnbug.c ../../libcrypto.a top | |||
| 68 | 68 | ||
| 69 | lib: $(LIBOBJ) | 69 | lib: $(LIBOBJ) | 
| 70 | $(AR) $(LIB) $(LIBOBJ) | 70 | $(AR) $(LIB) $(LIBOBJ) | 
| 71 | $(RANLIB) $(LIB) | 71 | @echo You may get an error following this line. Please ignore. | 
| 72 | - $(RANLIB) $(LIB) | ||
| 72 | @touch lib | 73 | @touch lib | 
| 73 | 74 | ||
| 74 | # elf | 75 | # elf | 
| diff --git a/src/lib/libcrypto/bn/asm/mips3.s b/src/lib/libcrypto/bn/asm/mips3.s index 2df4dcd4b0..45786c00a5 100644 --- a/src/lib/libcrypto/bn/asm/mips3.s +++ b/src/lib/libcrypto/bn/asm/mips3.s | |||
| @@ -586,13 +586,13 @@ LEAF(bn_div_3_words) | |||
| 586 | ld a0,(a3) | 586 | ld a0,(a3) | 
| 587 | move ta2,a1 | 587 | move ta2,a1 | 
| 588 | ld a1,-8(a3) | 588 | ld a1,-8(a3) | 
| 589 | move ta3,ra | 589 | bne a0,a2,.L_bn_div_3_words_proceed | 
| 590 | move v1,zero | ||
| 591 | li v0,-1 | 590 | li v0,-1 | 
| 592 | beq a0,a2,.L_bn_div_3_words_skip_div | 591 | jr ra | 
| 592 | .L_bn_div_3_words_proceed: | ||
| 593 | move ta3,ra | ||
| 593 | bal bn_div_words | 594 | bal bn_div_words | 
| 594 | move ra,ta3 | 595 | move ra,ta3 | 
| 595 | .L_bn_div_3_words_skip_div: | ||
| 596 | dmultu ta2,v0 | 596 | dmultu ta2,v0 | 
| 597 | ld t2,-16(a3) | 597 | ld t2,-16(a3) | 
| 598 | move ta0,zero | 598 | move ta0,zero | 
| diff --git a/src/lib/libcrypto/bn/asm/pa-risc2.s b/src/lib/libcrypto/bn/asm/pa-risc2.s index 7239aa2c76..af9730d062 100644 --- a/src/lib/libcrypto/bn/asm/pa-risc2.s +++ b/src/lib/libcrypto/bn/asm/pa-risc2.s | |||
| @@ -1611,7 +1611,7 @@ bn_mul_comba4 | |||
| 1611 | .IMPORT $global$,DATA | 1611 | .IMPORT $global$,DATA | 
| 1612 | .SPACE $TEXT$ | 1612 | .SPACE $TEXT$ | 
| 1613 | .SUBSPA $CODE$ | 1613 | .SUBSPA $CODE$ | 
| 1614 | .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16 | 1614 | .SUBSPA $LIT$,ACCESS=0x2c | 
| 1615 | C$7 | 1615 | C$7 | 
| 1616 | .ALIGN 8 | 1616 | .ALIGN 8 | 
| 1617 | .STRINGZ "Division would overflow (%d)\n" | 1617 | .STRINGZ "Division would overflow (%d)\n" | 
| diff --git a/src/lib/libcrypto/bn/asm/pa-risc2W.s b/src/lib/libcrypto/bn/asm/pa-risc2W.s index 54b6606252..a99545754d 100644 --- a/src/lib/libcrypto/bn/asm/pa-risc2W.s +++ b/src/lib/libcrypto/bn/asm/pa-risc2W.s | |||
| @@ -1598,7 +1598,7 @@ bn_mul_comba4 | |||
| 1598 | .IMPORT $global$,DATA | 1598 | .IMPORT $global$,DATA | 
| 1599 | .SPACE $TEXT$ | 1599 | .SPACE $TEXT$ | 
| 1600 | .SUBSPA $CODE$ | 1600 | .SUBSPA $CODE$ | 
| 1601 | .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16 | 1601 | .SUBSPA $LIT$,ACCESS=0x2c | 
| 1602 | C$4 | 1602 | C$4 | 
| 1603 | .ALIGN 8 | 1603 | .ALIGN 8 | 
| 1604 | .STRINGZ "Division would overflow (%d)\n" | 1604 | .STRINGZ "Division would overflow (%d)\n" | 
| diff --git a/src/lib/libcrypto/bn/bn.h b/src/lib/libcrypto/bn/bn.h index 1eb8395b25..b232c2ceae 100644 --- a/src/lib/libcrypto/bn/bn.h +++ b/src/lib/libcrypto/bn/bn.h | |||
| @@ -239,7 +239,7 @@ typedef struct bignum_st | |||
| 239 | } BIGNUM; | 239 | } BIGNUM; | 
| 240 | 240 | ||
| 241 | /* Used for temp variables */ | 241 | /* Used for temp variables */ | 
| 242 | #define BN_CTX_NUM 12 | 242 | #define BN_CTX_NUM 16 | 
| 243 | #define BN_CTX_NUM_POS 12 | 243 | #define BN_CTX_NUM_POS 12 | 
| 244 | typedef struct bignum_ctx | 244 | typedef struct bignum_ctx | 
| 245 | { | 245 | { | 
| @@ -328,6 +328,7 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx); | |||
| 328 | void BN_CTX_end(BN_CTX *ctx); | 328 | void BN_CTX_end(BN_CTX *ctx); | 
| 329 | int BN_rand(BIGNUM *rnd, int bits, int top,int bottom); | 329 | int BN_rand(BIGNUM *rnd, int bits, int top,int bottom); | 
| 330 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top,int bottom); | 330 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top,int bottom); | 
| 331 | int BN_rand_range(BIGNUM *rnd, BIGNUM *range); | ||
| 331 | int BN_num_bits(const BIGNUM *a); | 332 | int BN_num_bits(const BIGNUM *a); | 
| 332 | int BN_num_bits_word(BN_ULONG); | 333 | int BN_num_bits_word(BN_ULONG); | 
| 333 | BIGNUM *BN_new(void); | 334 | BIGNUM *BN_new(void); | 
| @@ -467,6 +468,8 @@ BN_ULONG bn_sub_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num); | |||
| 467 | # define bn_dump(a,b) | 468 | # define bn_dump(a,b) | 
| 468 | #endif | 469 | #endif | 
| 469 | 470 | ||
| 471 | int BN_bntest_rand(BIGNUM *rnd, int bits, int top,int bottom); | ||
| 472 | |||
| 470 | /* BEGIN ERROR CODES */ | 473 | /* BEGIN ERROR CODES */ | 
| 471 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 474 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 
| 472 | * made after this point may be overwritten when the script is next run. | 475 | * made after this point may be overwritten when the script is next run. | 
| @@ -493,16 +496,19 @@ BN_ULONG bn_sub_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num); | |||
| 493 | #define BN_F_BN_MPI2BN 112 | 496 | #define BN_F_BN_MPI2BN 112 | 
| 494 | #define BN_F_BN_NEW 113 | 497 | #define BN_F_BN_NEW 113 | 
| 495 | #define BN_F_BN_RAND 114 | 498 | #define BN_F_BN_RAND 114 | 
| 499 | #define BN_F_BN_RAND_RANGE 122 | ||
| 496 | #define BN_F_BN_USUB 115 | 500 | #define BN_F_BN_USUB 115 | 
| 497 | 501 | ||
| 498 | /* Reason codes. */ | 502 | /* Reason codes. */ | 
| 499 | #define BN_R_ARG2_LT_ARG3 100 | 503 | #define BN_R_ARG2_LT_ARG3 100 | 
| 500 | #define BN_R_BAD_RECIPROCAL 101 | 504 | #define BN_R_BAD_RECIPROCAL 101 | 
| 505 | #define BN_R_BIGNUM_TOO_LONG 114 | ||
| 501 | #define BN_R_CALLED_WITH_EVEN_MODULUS 102 | 506 | #define BN_R_CALLED_WITH_EVEN_MODULUS 102 | 
| 502 | #define BN_R_DIV_BY_ZERO 103 | 507 | #define BN_R_DIV_BY_ZERO 103 | 
| 503 | #define BN_R_ENCODING_ERROR 104 | 508 | #define BN_R_ENCODING_ERROR 104 | 
| 504 | #define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 | 509 | #define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 | 
| 505 | #define BN_R_INVALID_LENGTH 106 | 510 | #define BN_R_INVALID_LENGTH 106 | 
| 511 | #define BN_R_INVALID_RANGE 115 | ||
| 506 | #define BN_R_NOT_INITIALIZED 107 | 512 | #define BN_R_NOT_INITIALIZED 107 | 
| 507 | #define BN_R_NO_INVERSE 108 | 513 | #define BN_R_NO_INVERSE 108 | 
| 508 | #define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 | 514 | #define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 | 
| diff --git a/src/lib/libcrypto/bn/bn_div.c b/src/lib/libcrypto/bn/bn_div.c index c3772c243b..c328b5b411 100644 --- a/src/lib/libcrypto/bn/bn_div.c +++ b/src/lib/libcrypto/bn/bn_div.c | |||
| @@ -180,13 +180,13 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, | |||
| 180 | 180 | ||
| 181 | BN_CTX_start(ctx); | 181 | BN_CTX_start(ctx); | 
| 182 | tmp=BN_CTX_get(ctx); | 182 | tmp=BN_CTX_get(ctx); | 
| 183 | tmp->neg=0; | ||
| 184 | snum=BN_CTX_get(ctx); | 183 | snum=BN_CTX_get(ctx); | 
| 185 | sdiv=BN_CTX_get(ctx); | 184 | sdiv=BN_CTX_get(ctx); | 
| 186 | if (dv == NULL) | 185 | if (dv == NULL) | 
| 187 | res=BN_CTX_get(ctx); | 186 | res=BN_CTX_get(ctx); | 
| 188 | else res=dv; | 187 | else res=dv; | 
| 189 | if (res == NULL) goto err; | 188 | if (sdiv==NULL || res == NULL) goto err; | 
| 189 | tmp->neg=0; | ||
| 190 | 190 | ||
| 191 | /* First we normalise the numbers */ | 191 | /* First we normalise the numbers */ | 
| 192 | norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2); | 192 | norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2); | 
| @@ -237,7 +237,8 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, | |||
| 237 | for (i=0; i<loop-1; i++) | 237 | for (i=0; i<loop-1; i++) | 
| 238 | { | 238 | { | 
| 239 | BN_ULONG q,l0; | 239 | BN_ULONG q,l0; | 
| 240 | #ifdef BN_DIV3W | 240 | #if defined(BN_DIV3W) && !defined(NO_ASM) | 
| 241 | BN_ULONG bn_div_3_words(BN_ULONG*,BN_ULONG,BN_ULONG); | ||
| 241 | q=bn_div_3_words(wnump,d1,d0); | 242 | q=bn_div_3_words(wnump,d1,d0); | 
| 242 | #else | 243 | #else | 
| 243 | BN_ULONG n0,n1,rem=0; | 244 | BN_ULONG n0,n1,rem=0; | 
| diff --git a/src/lib/libcrypto/bn/bn_err.c b/src/lib/libcrypto/bn/bn_err.c index 86550c4c21..adc6a214fc 100644 --- a/src/lib/libcrypto/bn/bn_err.c +++ b/src/lib/libcrypto/bn/bn_err.c | |||
| @@ -84,6 +84,7 @@ static ERR_STRING_DATA BN_str_functs[]= | |||
| 84 | {ERR_PACK(0,BN_F_BN_MPI2BN,0), "BN_mpi2bn"}, | 84 | {ERR_PACK(0,BN_F_BN_MPI2BN,0), "BN_mpi2bn"}, | 
| 85 | {ERR_PACK(0,BN_F_BN_NEW,0), "BN_new"}, | 85 | {ERR_PACK(0,BN_F_BN_NEW,0), "BN_new"}, | 
| 86 | {ERR_PACK(0,BN_F_BN_RAND,0), "BN_rand"}, | 86 | {ERR_PACK(0,BN_F_BN_RAND,0), "BN_rand"}, | 
| 87 | {ERR_PACK(0,BN_F_BN_RAND_RANGE,0), "BN_rand_range"}, | ||
| 87 | {ERR_PACK(0,BN_F_BN_USUB,0), "BN_usub"}, | 88 | {ERR_PACK(0,BN_F_BN_USUB,0), "BN_usub"}, | 
| 88 | {0,NULL} | 89 | {0,NULL} | 
| 89 | }; | 90 | }; | 
| @@ -92,11 +93,13 @@ static ERR_STRING_DATA BN_str_reasons[]= | |||
| 92 | { | 93 | { | 
| 93 | {BN_R_ARG2_LT_ARG3 ,"arg2 lt arg3"}, | 94 | {BN_R_ARG2_LT_ARG3 ,"arg2 lt arg3"}, | 
| 94 | {BN_R_BAD_RECIPROCAL ,"bad reciprocal"}, | 95 | {BN_R_BAD_RECIPROCAL ,"bad reciprocal"}, | 
| 96 | {BN_R_BIGNUM_TOO_LONG ,"bignum too long"}, | ||
| 95 | {BN_R_CALLED_WITH_EVEN_MODULUS ,"called with even modulus"}, | 97 | {BN_R_CALLED_WITH_EVEN_MODULUS ,"called with even modulus"}, | 
| 96 | {BN_R_DIV_BY_ZERO ,"div by zero"}, | 98 | {BN_R_DIV_BY_ZERO ,"div by zero"}, | 
| 97 | {BN_R_ENCODING_ERROR ,"encoding error"}, | 99 | {BN_R_ENCODING_ERROR ,"encoding error"}, | 
| 98 | {BN_R_EXPAND_ON_STATIC_BIGNUM_DATA ,"expand on static bignum data"}, | 100 | {BN_R_EXPAND_ON_STATIC_BIGNUM_DATA ,"expand on static bignum data"}, | 
| 99 | {BN_R_INVALID_LENGTH ,"invalid length"}, | 101 | {BN_R_INVALID_LENGTH ,"invalid length"}, | 
| 102 | {BN_R_INVALID_RANGE ,"invalid range"}, | ||
| 100 | {BN_R_NOT_INITIALIZED ,"not initialized"}, | 103 | {BN_R_NOT_INITIALIZED ,"not initialized"}, | 
| 101 | {BN_R_NO_INVERSE ,"no inverse"}, | 104 | {BN_R_NO_INVERSE ,"no inverse"}, | 
| 102 | {BN_R_TOO_MANY_TEMPORARY_VARIABLES ,"too many temporary variables"}, | 105 | {BN_R_TOO_MANY_TEMPORARY_VARIABLES ,"too many temporary variables"}, | 
| diff --git a/src/lib/libcrypto/bn/bn_lib.c b/src/lib/libcrypto/bn/bn_lib.c index b6b0ce4b3c..7767d65170 100644 --- a/src/lib/libcrypto/bn/bn_lib.c +++ b/src/lib/libcrypto/bn/bn_lib.c | |||
| @@ -62,6 +62,7 @@ | |||
| 62 | #endif | 62 | #endif | 
| 63 | 63 | ||
| 64 | #include <assert.h> | 64 | #include <assert.h> | 
| 65 | #include <limits.h> | ||
| 65 | #include <stdio.h> | 66 | #include <stdio.h> | 
| 66 | #include "cryptlib.h" | 67 | #include "cryptlib.h" | 
| 67 | #include "bn_lcl.h" | 68 | #include "bn_lcl.h" | 
| @@ -319,6 +320,12 @@ BIGNUM *bn_expand2(BIGNUM *b, int words) | |||
| 319 | 320 | ||
| 320 | if (words > b->dmax) | 321 | if (words > b->dmax) | 
| 321 | { | 322 | { | 
| 323 | if (words > (INT_MAX/(4*BN_BITS2))) | ||
| 324 | { | ||
| 325 | BNerr(BN_F_BN_EXPAND2,BN_R_BIGNUM_TOO_LONG); | ||
| 326 | return NULL; | ||
| 327 | } | ||
| 328 | |||
| 322 | bn_check_top(b); | 329 | bn_check_top(b); | 
| 323 | if (BN_get_flags(b,BN_FLG_STATIC_DATA)) | 330 | if (BN_get_flags(b,BN_FLG_STATIC_DATA)) | 
| 324 | { | 331 | { | 
| diff --git a/src/lib/libcrypto/bn/bn_rand.c b/src/lib/libcrypto/bn/bn_rand.c index 21ecbc04ed..acd0619921 100644 --- a/src/lib/libcrypto/bn/bn_rand.c +++ b/src/lib/libcrypto/bn/bn_rand.c | |||
| @@ -76,7 +76,7 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) | |||
| 76 | 76 | ||
| 77 | bytes=(bits+7)/8; | 77 | bytes=(bits+7)/8; | 
| 78 | bit=(bits-1)%8; | 78 | bit=(bits-1)%8; | 
| 79 | mask=0xff<<bit; | 79 | mask=0xff<<(bit+1); | 
| 80 | 80 | ||
| 81 | buf=(unsigned char *)OPENSSL_malloc(bytes); | 81 | buf=(unsigned char *)OPENSSL_malloc(bytes); | 
| 82 | if (buf == NULL) | 82 | if (buf == NULL) | 
| @@ -100,25 +100,48 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) | |||
| 100 | goto err; | 100 | goto err; | 
| 101 | } | 101 | } | 
| 102 | 102 | ||
| 103 | if (top) | 103 | #if 1 | 
| 104 | if (pseudorand == 2) | ||
| 104 | { | 105 | { | 
| 105 | if (bit == 0) | 106 | /* generate patterns that are more likely to trigger BN | 
| 107 | library bugs */ | ||
| 108 | int i; | ||
| 109 | unsigned char c; | ||
| 110 | |||
| 111 | for (i = 0; i < bytes; i++) | ||
| 112 | { | ||
| 113 | RAND_pseudo_bytes(&c, 1); | ||
| 114 | if (c >= 128 && i > 0) | ||
| 115 | buf[i] = buf[i-1]; | ||
| 116 | else if (c < 42) | ||
| 117 | buf[i] = 0; | ||
| 118 | else if (c < 84) | ||
| 119 | buf[i] = 255; | ||
| 120 | } | ||
| 121 | } | ||
| 122 | #endif | ||
| 123 | |||
| 124 | if (top != -1) | ||
| 125 | { | ||
| 126 | if (top) | ||
| 106 | { | 127 | { | 
| 107 | buf[0]=1; | 128 | if (bit == 0) | 
| 108 | buf[1]|=0x80; | 129 | { | 
| 130 | buf[0]=1; | ||
| 131 | buf[1]|=0x80; | ||
| 132 | } | ||
| 133 | else | ||
| 134 | { | ||
| 135 | buf[0]|=(3<<(bit-1)); | ||
| 136 | } | ||
| 109 | } | 137 | } | 
| 110 | else | 138 | else | 
| 111 | { | 139 | { | 
| 112 | buf[0]|=(3<<(bit-1)); | 140 | buf[0]|=(1<<bit); | 
| 113 | buf[0]&= ~(mask<<1); | ||
| 114 | } | 141 | } | 
| 115 | } | 142 | } | 
| 116 | else | 143 | buf[0] &= ~mask; | 
| 117 | { | 144 | if (bottom) /* set bottom bit if requested */ | 
| 118 | buf[0]|=(1<<bit); | ||
| 119 | buf[0]&= ~(mask<<1); | ||
| 120 | } | ||
| 121 | if (bottom) /* set bottom bits to whatever odd is */ | ||
| 122 | buf[bytes-1]|=1; | 145 | buf[bytes-1]|=1; | 
| 123 | if (!BN_bin2bn(buf,bytes,rnd)) goto err; | 146 | if (!BN_bin2bn(buf,bytes,rnd)) goto err; | 
| 124 | ret=1; | 147 | ret=1; | 
| @@ -140,3 +163,61 @@ int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom) | |||
| 140 | { | 163 | { | 
| 141 | return bnrand(1, rnd, bits, top, bottom); | 164 | return bnrand(1, rnd, bits, top, bottom); | 
| 142 | } | 165 | } | 
| 166 | |||
| 167 | #if 1 | ||
| 168 | int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom) | ||
| 169 | { | ||
| 170 | return bnrand(2, rnd, bits, top, bottom); | ||
| 171 | } | ||
| 172 | #endif | ||
| 173 | |||
| 174 | /* random number r: 0 <= r < range */ | ||
| 175 | int BN_rand_range(BIGNUM *r, BIGNUM *range) | ||
| 176 | { | ||
| 177 | int n; | ||
| 178 | |||
| 179 | if (range->neg || BN_is_zero(range)) | ||
| 180 | { | ||
| 181 | BNerr(BN_F_BN_RAND_RANGE, BN_R_INVALID_RANGE); | ||
| 182 | return 0; | ||
| 183 | } | ||
| 184 | |||
| 185 | n = BN_num_bits(range); /* n > 0 */ | ||
| 186 | |||
| 187 | if (n == 1) | ||
| 188 | { | ||
| 189 | if (!BN_zero(r)) return 0; | ||
| 190 | } | ||
| 191 | else if (BN_is_bit_set(range, n - 2)) | ||
| 192 | { | ||
| 193 | do | ||
| 194 | { | ||
| 195 | /* range = 11..._2, so each iteration succeeds with probability >= .75 */ | ||
| 196 | if (!BN_rand(r, n, -1, 0)) return 0; | ||
| 197 | } | ||
| 198 | while (BN_cmp(r, range) >= 0); | ||
| 199 | } | ||
| 200 | else | ||
| 201 | { | ||
| 202 | /* range = 10..._2, | ||
| 203 | * so 3*range (= 11..._2) is exactly one bit longer than range */ | ||
| 204 | do | ||
| 205 | { | ||
| 206 | if (!BN_rand(r, n + 1, -1, 0)) return 0; | ||
| 207 | /* If r < 3*range, use r := r MOD range | ||
| 208 | * (which is either r, r - range, or r - 2*range). | ||
| 209 | * Otherwise, iterate once more. | ||
| 210 | * Since 3*range = 11..._2, each iteration succeeds with | ||
| 211 | * probability >= .75. */ | ||
| 212 | if (BN_cmp(r ,range) >= 0) | ||
| 213 | { | ||
| 214 | if (!BN_sub(r, r, range)) return 0; | ||
| 215 | if (BN_cmp(r, range) >= 0) | ||
| 216 | if (!BN_sub(r, r, range)) return 0; | ||
| 217 | } | ||
| 218 | } | ||
| 219 | while (BN_cmp(r, range) >= 0); | ||
| 220 | } | ||
| 221 | |||
| 222 | return 1; | ||
| 223 | } | ||
| diff --git a/src/lib/libcrypto/bn/bn_shift.c b/src/lib/libcrypto/bn/bn_shift.c index 0883247384..c2608f9f4a 100644 --- a/src/lib/libcrypto/bn/bn_shift.c +++ b/src/lib/libcrypto/bn/bn_shift.c | |||
| @@ -172,6 +172,11 @@ int BN_rshift(BIGNUM *r, BIGNUM *a, int n) | |||
| 172 | r->neg=a->neg; | 172 | r->neg=a->neg; | 
| 173 | if (bn_wexpand(r,a->top-nw+1) == NULL) return(0); | 173 | if (bn_wexpand(r,a->top-nw+1) == NULL) return(0); | 
| 174 | } | 174 | } | 
| 175 | else | ||
| 176 | { | ||
| 177 | if (n == 0) | ||
| 178 | return 1; /* or the copying loop will go berserk */ | ||
| 179 | } | ||
| 175 | 180 | ||
| 176 | f= &(a->d[nw]); | 181 | f= &(a->d[nw]); | 
| 177 | t=r->d; | 182 | t=r->d; | 
| diff --git a/src/lib/libcrypto/bn/bntest.c b/src/lib/libcrypto/bn/bntest.c index 0a97af69c5..af0c2629e8 100644 --- a/src/lib/libcrypto/bn/bntest.c +++ b/src/lib/libcrypto/bn/bntest.c | |||
| @@ -107,11 +107,9 @@ static const char rnd_seed[] = "string to make the random number generator think | |||
| 107 | static void message(BIO *out, char *m) | 107 | static void message(BIO *out, char *m) | 
| 108 | { | 108 | { | 
| 109 | fprintf(stderr, "test %s\n", m); | 109 | fprintf(stderr, "test %s\n", m); | 
| 110 | #if defined(linux) || defined(__FreeBSD__) /* can we use GNU bc features? */ | ||
| 111 | BIO_puts(out, "print \"test "); | 110 | BIO_puts(out, "print \"test "); | 
| 112 | BIO_puts(out, m); | 111 | BIO_puts(out, m); | 
| 113 | BIO_puts(out, "\\n\"\n"); | 112 | BIO_puts(out, "\\n\"\n"); | 
| 114 | #endif | ||
| 115 | } | 113 | } | 
| 116 | 114 | ||
| 117 | int main(int argc, char *argv[]) | 115 | int main(int argc, char *argv[]) | 
| @@ -122,9 +120,7 @@ int main(int argc, char *argv[]) | |||
| 122 | 120 | ||
| 123 | results = 0; | 121 | results = 0; | 
| 124 | 122 | ||
| 125 | RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_rand may fail, and we don't | 123 | RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_generate_prime may fail */ | 
| 126 | * even check its return value | ||
| 127 | * (which we should) */ | ||
| 128 | 124 | ||
| 129 | argc--; | 125 | argc--; | 
| 130 | argv++; | 126 | argv++; | 
| @@ -253,10 +249,10 @@ int test_add(BIO *bp) | |||
| 253 | BN_init(&b); | 249 | BN_init(&b); | 
| 254 | BN_init(&c); | 250 | BN_init(&c); | 
| 255 | 251 | ||
| 256 | BN_rand(&a,512,0,0); | 252 | BN_bntest_rand(&a,512,0,0); | 
| 257 | for (i=0; i<num0; i++) | 253 | for (i=0; i<num0; i++) | 
| 258 | { | 254 | { | 
| 259 | BN_rand(&b,450+i,0,0); | 255 | BN_bntest_rand(&b,450+i,0,0); | 
| 260 | a.neg=rand_neg(); | 256 | a.neg=rand_neg(); | 
| 261 | b.neg=rand_neg(); | 257 | b.neg=rand_neg(); | 
| 262 | if (bp == NULL) | 258 | if (bp == NULL) | 
| @@ -305,14 +301,14 @@ int test_sub(BIO *bp) | |||
| 305 | { | 301 | { | 
| 306 | if (i < num1) | 302 | if (i < num1) | 
| 307 | { | 303 | { | 
| 308 | BN_rand(&a,512,0,0); | 304 | BN_bntest_rand(&a,512,0,0); | 
| 309 | BN_copy(&b,&a); | 305 | BN_copy(&b,&a); | 
| 310 | if (BN_set_bit(&a,i)==0) return(0); | 306 | if (BN_set_bit(&a,i)==0) return(0); | 
| 311 | BN_add_word(&b,i); | 307 | BN_add_word(&b,i); | 
| 312 | } | 308 | } | 
| 313 | else | 309 | else | 
| 314 | { | 310 | { | 
| 315 | BN_rand(&b,400+i-num1,0,0); | 311 | BN_bntest_rand(&b,400+i-num1,0,0); | 
| 316 | a.neg=rand_neg(); | 312 | a.neg=rand_neg(); | 
| 317 | b.neg=rand_neg(); | 313 | b.neg=rand_neg(); | 
| 318 | } | 314 | } | 
| @@ -362,13 +358,13 @@ int test_div(BIO *bp, BN_CTX *ctx) | |||
| 362 | { | 358 | { | 
| 363 | if (i < num1) | 359 | if (i < num1) | 
| 364 | { | 360 | { | 
| 365 | BN_rand(&a,400,0,0); | 361 | BN_bntest_rand(&a,400,0,0); | 
| 366 | BN_copy(&b,&a); | 362 | BN_copy(&b,&a); | 
| 367 | BN_lshift(&a,&a,i); | 363 | BN_lshift(&a,&a,i); | 
| 368 | BN_add_word(&a,i); | 364 | BN_add_word(&a,i); | 
| 369 | } | 365 | } | 
| 370 | else | 366 | else | 
| 371 | BN_rand(&b,50+3*(i-num1),0,0); | 367 | BN_bntest_rand(&b,50+3*(i-num1),0,0); | 
| 372 | a.neg=rand_neg(); | 368 | a.neg=rand_neg(); | 
| 373 | b.neg=rand_neg(); | 369 | b.neg=rand_neg(); | 
| 374 | if (bp == NULL) | 370 | if (bp == NULL) | 
| @@ -432,13 +428,13 @@ int test_div_recp(BIO *bp, BN_CTX *ctx) | |||
| 432 | { | 428 | { | 
| 433 | if (i < num1) | 429 | if (i < num1) | 
| 434 | { | 430 | { | 
| 435 | BN_rand(&a,400,0,0); | 431 | BN_bntest_rand(&a,400,0,0); | 
| 436 | BN_copy(&b,&a); | 432 | BN_copy(&b,&a); | 
| 437 | BN_lshift(&a,&a,i); | 433 | BN_lshift(&a,&a,i); | 
| 438 | BN_add_word(&a,i); | 434 | BN_add_word(&a,i); | 
| 439 | } | 435 | } | 
| 440 | else | 436 | else | 
| 441 | BN_rand(&b,50+3*(i-num1),0,0); | 437 | BN_bntest_rand(&b,50+3*(i-num1),0,0); | 
| 442 | a.neg=rand_neg(); | 438 | a.neg=rand_neg(); | 
| 443 | b.neg=rand_neg(); | 439 | b.neg=rand_neg(); | 
| 444 | BN_RECP_CTX_set(&recp,&b,ctx); | 440 | BN_RECP_CTX_set(&recp,&b,ctx); | 
| @@ -509,11 +505,11 @@ int test_mul(BIO *bp) | |||
| 509 | { | 505 | { | 
| 510 | if (i <= num1) | 506 | if (i <= num1) | 
| 511 | { | 507 | { | 
| 512 | BN_rand(&a,100,0,0); | 508 | BN_bntest_rand(&a,100,0,0); | 
| 513 | BN_rand(&b,100,0,0); | 509 | BN_bntest_rand(&b,100,0,0); | 
| 514 | } | 510 | } | 
| 515 | else | 511 | else | 
| 516 | BN_rand(&b,i-num1,0,0); | 512 | BN_bntest_rand(&b,i-num1,0,0); | 
| 517 | a.neg=rand_neg(); | 513 | a.neg=rand_neg(); | 
| 518 | b.neg=rand_neg(); | 514 | b.neg=rand_neg(); | 
| 519 | if (bp == NULL) | 515 | if (bp == NULL) | 
| @@ -562,7 +558,7 @@ int test_sqr(BIO *bp, BN_CTX *ctx) | |||
| 562 | 558 | ||
| 563 | for (i=0; i<num0; i++) | 559 | for (i=0; i<num0; i++) | 
| 564 | { | 560 | { | 
| 565 | BN_rand(&a,40+i*10,0,0); | 561 | BN_bntest_rand(&a,40+i*10,0,0); | 
| 566 | a.neg=rand_neg(); | 562 | a.neg=rand_neg(); | 
| 567 | if (bp == NULL) | 563 | if (bp == NULL) | 
| 568 | for (j=0; j<100; j++) | 564 | for (j=0; j<100; j++) | 
| @@ -613,15 +609,15 @@ int test_mont(BIO *bp, BN_CTX *ctx) | |||
| 613 | 609 | ||
| 614 | mont=BN_MONT_CTX_new(); | 610 | mont=BN_MONT_CTX_new(); | 
| 615 | 611 | ||
| 616 | BN_rand(&a,100,0,0); /**/ | 612 | BN_bntest_rand(&a,100,0,0); /**/ | 
| 617 | BN_rand(&b,100,0,0); /**/ | 613 | BN_bntest_rand(&b,100,0,0); /**/ | 
| 618 | for (i=0; i<num2; i++) | 614 | for (i=0; i<num2; i++) | 
| 619 | { | 615 | { | 
| 620 | int bits = (200*(i+1))/num2; | 616 | int bits = (200*(i+1))/num2; | 
| 621 | 617 | ||
| 622 | if (bits == 0) | 618 | if (bits == 0) | 
| 623 | continue; | 619 | continue; | 
| 624 | BN_rand(&n,bits,0,1); | 620 | BN_bntest_rand(&n,bits,0,1); | 
| 625 | BN_MONT_CTX_set(mont,&n,ctx); | 621 | BN_MONT_CTX_set(mont,&n,ctx); | 
| 626 | 622 | ||
| 627 | BN_to_montgomery(&A,&a,mont,ctx); | 623 | BN_to_montgomery(&A,&a,mont,ctx); | 
| @@ -683,10 +679,10 @@ int test_mod(BIO *bp, BN_CTX *ctx) | |||
| 683 | d=BN_new(); | 679 | d=BN_new(); | 
| 684 | e=BN_new(); | 680 | e=BN_new(); | 
| 685 | 681 | ||
| 686 | BN_rand(a,1024,0,0); /**/ | 682 | BN_bntest_rand(a,1024,0,0); /**/ | 
| 687 | for (i=0; i<num0; i++) | 683 | for (i=0; i<num0; i++) | 
| 688 | { | 684 | { | 
| 689 | BN_rand(b,450+i*10,0,0); /**/ | 685 | BN_bntest_rand(b,450+i*10,0,0); /**/ | 
| 690 | a->neg=rand_neg(); | 686 | a->neg=rand_neg(); | 
| 691 | b->neg=rand_neg(); | 687 | b->neg=rand_neg(); | 
| 692 | if (bp == NULL) | 688 | if (bp == NULL) | 
| @@ -732,11 +728,11 @@ int test_mod_mul(BIO *bp, BN_CTX *ctx) | |||
| 732 | d=BN_new(); | 728 | d=BN_new(); | 
| 733 | e=BN_new(); | 729 | e=BN_new(); | 
| 734 | 730 | ||
| 735 | BN_rand(c,1024,0,0); /**/ | 731 | BN_bntest_rand(c,1024,0,0); /**/ | 
| 736 | for (i=0; i<num0; i++) | 732 | for (i=0; i<num0; i++) | 
| 737 | { | 733 | { | 
| 738 | BN_rand(a,475+i*10,0,0); /**/ | 734 | BN_bntest_rand(a,475+i*10,0,0); /**/ | 
| 739 | BN_rand(b,425+i*11,0,0); /**/ | 735 | BN_bntest_rand(b,425+i*11,0,0); /**/ | 
| 740 | a->neg=rand_neg(); | 736 | a->neg=rand_neg(); | 
| 741 | b->neg=rand_neg(); | 737 | b->neg=rand_neg(); | 
| 742 | /* if (bp == NULL) | 738 | /* if (bp == NULL) | 
| @@ -794,11 +790,11 @@ int test_mod_exp(BIO *bp, BN_CTX *ctx) | |||
| 794 | d=BN_new(); | 790 | d=BN_new(); | 
| 795 | e=BN_new(); | 791 | e=BN_new(); | 
| 796 | 792 | ||
| 797 | BN_rand(c,30,0,1); /* must be odd for montgomery */ | 793 | BN_bntest_rand(c,30,0,1); /* must be odd for montgomery */ | 
| 798 | for (i=0; i<num2; i++) | 794 | for (i=0; i<num2; i++) | 
| 799 | { | 795 | { | 
| 800 | BN_rand(a,20+i*5,0,0); /**/ | 796 | BN_bntest_rand(a,20+i*5,0,0); /**/ | 
| 801 | BN_rand(b,2+i,0,0); /**/ | 797 | BN_bntest_rand(b,2+i,0,0); /**/ | 
| 802 | 798 | ||
| 803 | if (!BN_mod_exp(d,a,b,c,ctx)) | 799 | if (!BN_mod_exp(d,a,b,c,ctx)) | 
| 804 | return(00); | 800 | return(00); | 
| @@ -848,8 +844,8 @@ int test_exp(BIO *bp, BN_CTX *ctx) | |||
| 848 | 844 | ||
| 849 | for (i=0; i<num2; i++) | 845 | for (i=0; i<num2; i++) | 
| 850 | { | 846 | { | 
| 851 | BN_rand(a,20+i*5,0,0); /**/ | 847 | BN_bntest_rand(a,20+i*5,0,0); /**/ | 
| 852 | BN_rand(b,2+i,0,0); /**/ | 848 | BN_bntest_rand(b,2+i,0,0); /**/ | 
| 853 | 849 | ||
| 854 | if (!BN_exp(d,a,b,ctx)) | 850 | if (!BN_exp(d,a,b,ctx)) | 
| 855 | return(00); | 851 | return(00); | 
| @@ -899,7 +895,7 @@ int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_) | |||
| 899 | else | 895 | else | 
| 900 | { | 896 | { | 
| 901 | a=BN_new(); | 897 | a=BN_new(); | 
| 902 | BN_rand(a,200,0,0); /**/ | 898 | BN_bntest_rand(a,200,0,0); /**/ | 
| 903 | a->neg=rand_neg(); | 899 | a->neg=rand_neg(); | 
| 904 | } | 900 | } | 
| 905 | for (i=0; i<num0; i++) | 901 | for (i=0; i<num0; i++) | 
| @@ -951,7 +947,7 @@ int test_lshift1(BIO *bp) | |||
| 951 | b=BN_new(); | 947 | b=BN_new(); | 
| 952 | c=BN_new(); | 948 | c=BN_new(); | 
| 953 | 949 | ||
| 954 | BN_rand(a,200,0,0); /**/ | 950 | BN_bntest_rand(a,200,0,0); /**/ | 
| 955 | a->neg=rand_neg(); | 951 | a->neg=rand_neg(); | 
| 956 | for (i=0; i<num0; i++) | 952 | for (i=0; i<num0; i++) | 
| 957 | { | 953 | { | 
| @@ -995,7 +991,7 @@ int test_rshift(BIO *bp,BN_CTX *ctx) | |||
| 995 | e=BN_new(); | 991 | e=BN_new(); | 
| 996 | BN_one(c); | 992 | BN_one(c); | 
| 997 | 993 | ||
| 998 | BN_rand(a,200,0,0); /**/ | 994 | BN_bntest_rand(a,200,0,0); /**/ | 
| 999 | a->neg=rand_neg(); | 995 | a->neg=rand_neg(); | 
| 1000 | for (i=0; i<num0; i++) | 996 | for (i=0; i<num0; i++) | 
| 1001 | { | 997 | { | 
| @@ -1038,7 +1034,7 @@ int test_rshift1(BIO *bp) | |||
| 1038 | b=BN_new(); | 1034 | b=BN_new(); | 
| 1039 | c=BN_new(); | 1035 | c=BN_new(); | 
| 1040 | 1036 | ||
| 1041 | BN_rand(a,200,0,0); /**/ | 1037 | BN_bntest_rand(a,200,0,0); /**/ | 
| 1042 | a->neg=rand_neg(); | 1038 | a->neg=rand_neg(); | 
| 1043 | for (i=0; i<num0; i++) | 1039 | for (i=0; i<num0; i++) | 
| 1044 | { | 1040 | { | 
| diff --git a/src/lib/libcrypto/buffer/Makefile.ssl b/src/lib/libcrypto/buffer/Makefile.ssl index f473d1ab4b..a64681fd22 100644 --- a/src/lib/libcrypto/buffer/Makefile.ssl +++ b/src/lib/libcrypto/buffer/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/cast/Makefile.ssl b/src/lib/libcrypto/cast/Makefile.ssl index 4c70d1e3e8..1f8b898f7c 100644 --- a/src/lib/libcrypto/cast/Makefile.ssl +++ b/src/lib/libcrypto/cast/Makefile.ssl | |||
| @@ -47,7 +47,8 @@ all: lib | |||
| 47 | 47 | ||
| 48 | lib: $(LIBOBJ) | 48 | lib: $(LIBOBJ) | 
| 49 | $(AR) $(LIB) $(LIBOBJ) | 49 | $(AR) $(LIB) $(LIBOBJ) | 
| 50 | $(RANLIB) $(LIB) | 50 | @echo You may get an error following this line. Please ignore. | 
| 51 | - $(RANLIB) $(LIB) | ||
| 51 | @touch lib | 52 | @touch lib | 
| 52 | 53 | ||
| 53 | # elf | 54 | # elf | 
| diff --git a/src/lib/libcrypto/comp/Makefile.ssl b/src/lib/libcrypto/comp/Makefile.ssl index 39e7993416..b696ac75fe 100644 --- a/src/lib/libcrypto/comp/Makefile.ssl +++ b/src/lib/libcrypto/comp/Makefile.ssl | |||
| @@ -42,7 +42,8 @@ all: lib | |||
| 42 | 42 | ||
| 43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) | 
| 44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(AR) $(LIB) $(LIBOBJ) | 
| 45 | $(RANLIB) $(LIB) | 45 | @echo You may get an error following this line. Please ignore. | 
| 46 | - $(RANLIB) $(LIB) | ||
| 46 | @touch lib | 47 | @touch lib | 
| 47 | 48 | ||
| 48 | files: | 49 | files: | 
| diff --git a/src/lib/libcrypto/conf/Makefile.ssl b/src/lib/libcrypto/conf/Makefile.ssl index efbb578981..9df4fca877 100644 --- a/src/lib/libcrypto/conf/Makefile.ssl +++ b/src/lib/libcrypto/conf/Makefile.ssl | |||
| @@ -40,7 +40,8 @@ all: lib | |||
| 40 | 40 | ||
| 41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) | 
| 42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(AR) $(LIB) $(LIBOBJ) | 
| 43 | $(RANLIB) $(LIB) | 43 | @echo You may get an error following this line. Please ignore. | 
| 44 | - $(RANLIB) $(LIB) | ||
| 44 | @touch lib | 45 | @touch lib | 
| 45 | 46 | ||
| 46 | files: | 47 | files: | 
| diff --git a/src/lib/libcrypto/conf/conf.h b/src/lib/libcrypto/conf/conf.h index 2f70634455..cd40a0db21 100644 --- a/src/lib/libcrypto/conf/conf.h +++ b/src/lib/libcrypto/conf/conf.h | |||
| @@ -167,6 +167,8 @@ int NCONF_dump_bio(CONF *conf, BIO *out); | |||
| 167 | #define CONF_R_MISSING_EQUAL_SIGN 101 | 167 | #define CONF_R_MISSING_EQUAL_SIGN 101 | 
| 168 | #define CONF_R_NO_CLOSE_BRACE 102 | 168 | #define CONF_R_NO_CLOSE_BRACE 102 | 
| 169 | #define CONF_R_NO_CONF 105 | 169 | #define CONF_R_NO_CONF 105 | 
| 170 | #define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 | ||
| 171 | #define CONF_R_NO_SECTION 107 | ||
| 170 | #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 | 172 | #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 | 
| 171 | #define CONF_R_VARIABLE_HAS_NO_VALUE 104 | 173 | #define CONF_R_VARIABLE_HAS_NO_VALUE 104 | 
| 172 | 174 | ||
| diff --git a/src/lib/libcrypto/conf/conf_err.c b/src/lib/libcrypto/conf/conf_err.c index 06d3163573..8c2bc6f1c4 100644 --- a/src/lib/libcrypto/conf/conf_err.c +++ b/src/lib/libcrypto/conf/conf_err.c | |||
| @@ -87,6 +87,8 @@ static ERR_STRING_DATA CONF_str_reasons[]= | |||
| 87 | {CONF_R_MISSING_EQUAL_SIGN ,"missing equal sign"}, | 87 | {CONF_R_MISSING_EQUAL_SIGN ,"missing equal sign"}, | 
| 88 | {CONF_R_NO_CLOSE_BRACE ,"no close brace"}, | 88 | {CONF_R_NO_CLOSE_BRACE ,"no close brace"}, | 
| 89 | {CONF_R_NO_CONF ,"no conf"}, | 89 | {CONF_R_NO_CONF ,"no conf"}, | 
| 90 | {CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE ,"no conf or environment variable"}, | ||
| 91 | {CONF_R_NO_SECTION ,"no section"}, | ||
| 90 | {CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"}, | 92 | {CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"}, | 
| 91 | {CONF_R_VARIABLE_HAS_NO_VALUE ,"variable has no value"}, | 93 | {CONF_R_VARIABLE_HAS_NO_VALUE ,"variable has no value"}, | 
| 92 | {0,NULL} | 94 | {0,NULL} | 
| diff --git a/src/lib/libcrypto/conf/conf_lib.c b/src/lib/libcrypto/conf/conf_lib.c index 4c8ca9e9ae..11ec639732 100644 --- a/src/lib/libcrypto/conf/conf_lib.c +++ b/src/lib/libcrypto/conf/conf_lib.c | |||
| @@ -131,38 +131,59 @@ LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline) | |||
| 131 | 131 | ||
| 132 | STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,char *section) | 132 | STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,char *section) | 
| 133 | { | 133 | { | 
| 134 | CONF ctmp; | 134 | if (conf == NULL) | 
| 135 | { | ||
| 136 | return NULL; | ||
| 137 | } | ||
| 138 | else | ||
| 139 | { | ||
| 140 | CONF ctmp; | ||
| 135 | 141 | ||
| 136 | if (default_CONF_method == NULL) | 142 | if (default_CONF_method == NULL) | 
| 137 | default_CONF_method = NCONF_default(); | 143 | default_CONF_method = NCONF_default(); | 
| 138 | 144 | ||
| 139 | default_CONF_method->init(&ctmp); | 145 | default_CONF_method->init(&ctmp); | 
| 140 | ctmp.data = conf; | 146 | ctmp.data = conf; | 
| 141 | return NCONF_get_section(&ctmp, section); | 147 | return NCONF_get_section(&ctmp, section); | 
| 148 | } | ||
| 142 | } | 149 | } | 
| 143 | 150 | ||
| 144 | char *CONF_get_string(LHASH *conf,char *group,char *name) | 151 | char *CONF_get_string(LHASH *conf,char *group,char *name) | 
| 145 | { | 152 | { | 
| 146 | CONF ctmp; | 153 | if (conf == NULL) | 
| 154 | { | ||
| 155 | return NCONF_get_string(NULL, group, name); | ||
| 156 | } | ||
| 157 | else | ||
| 158 | { | ||
| 159 | CONF ctmp; | ||
| 147 | 160 | ||
| 148 | if (default_CONF_method == NULL) | 161 | if (default_CONF_method == NULL) | 
| 149 | default_CONF_method = NCONF_default(); | 162 | default_CONF_method = NCONF_default(); | 
| 150 | 163 | ||
| 151 | default_CONF_method->init(&ctmp); | 164 | default_CONF_method->init(&ctmp); | 
| 152 | ctmp.data = conf; | 165 | ctmp.data = conf; | 
| 153 | return NCONF_get_string(&ctmp, group, name); | 166 | return NCONF_get_string(&ctmp, group, name); | 
| 167 | } | ||
| 154 | } | 168 | } | 
| 155 | 169 | ||
| 156 | long CONF_get_number(LHASH *conf,char *group,char *name) | 170 | long CONF_get_number(LHASH *conf,char *group,char *name) | 
| 157 | { | 171 | { | 
| 158 | CONF ctmp; | 172 | if (conf == NULL) | 
| 173 | { | ||
| 174 | return NCONF_get_number(NULL, group, name); | ||
| 175 | } | ||
| 176 | else | ||
| 177 | { | ||
| 178 | CONF ctmp; | ||
| 159 | 179 | ||
| 160 | if (default_CONF_method == NULL) | 180 | if (default_CONF_method == NULL) | 
| 161 | default_CONF_method = NCONF_default(); | 181 | default_CONF_method = NCONF_default(); | 
| 162 | 182 | ||
| 163 | default_CONF_method->init(&ctmp); | 183 | default_CONF_method->init(&ctmp); | 
| 164 | ctmp.data = conf; | 184 | ctmp.data = conf; | 
| 165 | return NCONF_get_number(&ctmp, group, name); | 185 | return NCONF_get_number(&ctmp, group, name); | 
| 186 | } | ||
| 166 | } | 187 | } | 
| 167 | 188 | ||
| 168 | void CONF_free(LHASH *conf) | 189 | void CONF_free(LHASH *conf) | 
| @@ -299,27 +320,46 @@ STACK_OF(CONF_VALUE) *NCONF_get_section(CONF *conf,char *section) | |||
| 299 | return NULL; | 320 | return NULL; | 
| 300 | } | 321 | } | 
| 301 | 322 | ||
| 323 | if (section == NULL) | ||
| 324 | { | ||
| 325 | CONFerr(CONF_F_NCONF_GET_SECTION,CONF_R_NO_SECTION); | ||
| 326 | return NULL; | ||
| 327 | } | ||
| 328 | |||
| 302 | return _CONF_get_section_values(conf, section); | 329 | return _CONF_get_section_values(conf, section); | 
| 303 | } | 330 | } | 
| 304 | 331 | ||
| 305 | char *NCONF_get_string(CONF *conf,char *group,char *name) | 332 | char *NCONF_get_string(CONF *conf,char *group,char *name) | 
| 306 | { | 333 | { | 
| 334 | char *s = _CONF_get_string(conf, group, name); | ||
| 335 | |||
| 336 | /* Since we may get a value from an environment variable even | ||
| 337 | if conf is NULL, let's check the value first */ | ||
| 338 | if (s) return s; | ||
| 339 | |||
| 307 | if (conf == NULL) | 340 | if (conf == NULL) | 
| 308 | { | 341 | { | 
| 309 | CONFerr(CONF_F_NCONF_GET_STRING,CONF_R_NO_CONF); | 342 | CONFerr(CONF_F_NCONF_GET_STRING, | 
| 343 | CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE); | ||
| 310 | return NULL; | 344 | return NULL; | 
| 311 | } | 345 | } | 
| 312 | 346 | return NULL; | |
| 313 | return _CONF_get_string(conf, group, name); | ||
| 314 | } | 347 | } | 
| 315 | 348 | ||
| 316 | long NCONF_get_number(CONF *conf,char *group,char *name) | 349 | long NCONF_get_number(CONF *conf,char *group,char *name) | 
| 317 | { | 350 | { | 
| 351 | #if 0 /* As with _CONF_get_string(), we rely on the possibility of finding | ||
| 352 | an environment variable with a suitable name. Unfortunately, there's | ||
| 353 | no way with the current API to see if we found one or not... | ||
| 354 | The meaning of this is that if a number is not found anywhere, it | ||
| 355 | will always default to 0. */ | ||
| 318 | if (conf == NULL) | 356 | if (conf == NULL) | 
| 319 | { | 357 | { | 
| 320 | CONFerr(CONF_F_NCONF_GET_NUMBER,CONF_R_NO_CONF); | 358 | CONFerr(CONF_F_NCONF_GET_NUMBER, | 
| 359 | CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE); | ||
| 321 | return 0; | 360 | return 0; | 
| 322 | } | 361 | } | 
| 362 | #endif | ||
| 323 | 363 | ||
| 324 | return _CONF_get_number(conf, group, name); | 364 | return _CONF_get_number(conf, group, name); | 
| 325 | } | 365 | } | 
| diff --git a/src/lib/libcrypto/crypto-lib.com b/src/lib/libcrypto/crypto-lib.com index 21d56a4b50..482a136177 100644 --- a/src/lib/libcrypto/crypto-lib.com +++ b/src/lib/libcrypto/crypto-lib.com | |||
| @@ -174,7 +174,7 @@ $! | |||
| 174 | $ APPS_DES = "DES/DES,CBC3_ENC" | 174 | $ APPS_DES = "DES/DES,CBC3_ENC" | 
| 175 | $ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE" | 175 | $ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE" | 
| 176 | $ | 176 | $ | 
| 177 | $ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err" | 177 | $ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid" | 
| 178 | $ LIB_MD2 = "md2_dgst,md2_one" | 178 | $ LIB_MD2 = "md2_dgst,md2_one" | 
| 179 | $ LIB_MD4 = "md4_dgst,md4_one" | 179 | $ LIB_MD4 = "md4_dgst,md4_one" | 
| 180 | $ LIB_MD5 = "md5_dgst,md5_one" | 180 | $ LIB_MD5 = "md5_dgst,md5_one" | 
| diff --git a/src/lib/libcrypto/crypto.h b/src/lib/libcrypto/crypto.h index 52ee97b71a..9257673279 100644 --- a/src/lib/libcrypto/crypto.h +++ b/src/lib/libcrypto/crypto.h | |||
| @@ -278,6 +278,8 @@ int CRYPTO_is_mem_check_on(void); | |||
| 278 | const char *SSLeay_version(int type); | 278 | const char *SSLeay_version(int type); | 
| 279 | unsigned long SSLeay(void); | 279 | unsigned long SSLeay(void); | 
| 280 | 280 | ||
| 281 | int OPENSSL_issetugid(void); | ||
| 282 | |||
| 281 | int CRYPTO_get_ex_new_index(int idx, STACK_OF(CRYPTO_EX_DATA_FUNCS) **skp, long argl, void *argp, | 283 | int CRYPTO_get_ex_new_index(int idx, STACK_OF(CRYPTO_EX_DATA_FUNCS) **skp, long argl, void *argp, | 
| 282 | CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 284 | CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 
| 283 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); | 285 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); | 
| diff --git a/src/lib/libcrypto/des/Makefile.ssl b/src/lib/libcrypto/des/Makefile.ssl index 34a360b7ab..cc5379feb2 100644 --- a/src/lib/libcrypto/des/Makefile.ssl +++ b/src/lib/libcrypto/des/Makefile.ssl | |||
| @@ -57,7 +57,8 @@ all: lib | |||
| 57 | 57 | ||
| 58 | lib: $(LIBOBJ) | 58 | lib: $(LIBOBJ) | 
| 59 | $(AR) $(LIB) $(LIBOBJ) | 59 | $(AR) $(LIB) $(LIBOBJ) | 
| 60 | $(RANLIB) $(LIB) | 60 | @echo You may get an error following this line. Please ignore. | 
| 61 | - $(RANLIB) $(LIB) | ||
| 61 | @touch lib | 62 | @touch lib | 
| 62 | 63 | ||
| 63 | des: des.o cbc3_enc.o lib | 64 | des: des.o cbc3_enc.o lib | 
| diff --git a/src/lib/libcrypto/des/asm/des-586.pl b/src/lib/libcrypto/des/asm/des-586.pl index f054071077..c890766bc9 100644 --- a/src/lib/libcrypto/des/asm/des-586.pl +++ b/src/lib/libcrypto/des/asm/des-586.pl | |||
| @@ -20,11 +20,11 @@ $L="edi"; | |||
| 20 | $R="esi"; | 20 | $R="esi"; | 
| 21 | 21 | ||
| 22 | &external_label("des_SPtrans"); | 22 | &external_label("des_SPtrans"); | 
| 23 | &des_encrypt("des_encrypt",1); | 23 | &des_encrypt("des_encrypt1",1); | 
| 24 | &des_encrypt("des_encrypt2",0); | 24 | &des_encrypt("des_encrypt2",0); | 
| 25 | &des_encrypt3("des_encrypt3",1); | 25 | &des_encrypt3("des_encrypt3",1); | 
| 26 | &des_encrypt3("des_decrypt3",0); | 26 | &des_encrypt3("des_decrypt3",0); | 
| 27 | &cbc("des_ncbc_encrypt","des_encrypt","des_encrypt",0,4,5,3,5,-1); | 27 | &cbc("des_ncbc_encrypt","des_encrypt1","des_encrypt1",0,4,5,3,5,-1); | 
| 28 | &cbc("des_ede3_cbc_encrypt","des_encrypt3","des_decrypt3",0,6,7,3,4,5); | 28 | &cbc("des_ede3_cbc_encrypt","des_encrypt3","des_decrypt3",0,6,7,3,4,5); | 
| 29 | 29 | ||
| 30 | &asm_finish(); | 30 | &asm_finish(); | 
| diff --git a/src/lib/libcrypto/des/asm/des686.pl b/src/lib/libcrypto/des/asm/des686.pl index 77dc5b51cd..84c3e85438 100644 --- a/src/lib/libcrypto/des/asm/des686.pl +++ b/src/lib/libcrypto/des/asm/des686.pl | |||
| @@ -46,7 +46,7 @@ EOF | |||
| 46 | $L="edi"; | 46 | $L="edi"; | 
| 47 | $R="esi"; | 47 | $R="esi"; | 
| 48 | 48 | ||
| 49 | &des_encrypt("des_encrypt",1); | 49 | &des_encrypt("des_encrypt1",1); | 
| 50 | &des_encrypt("des_encrypt2",0); | 50 | &des_encrypt("des_encrypt2",0); | 
| 51 | 51 | ||
| 52 | &des_encrypt3("des_encrypt3",1); | 52 | &des_encrypt3("des_encrypt3",1); | 
| diff --git a/src/lib/libcrypto/des/asm/readme b/src/lib/libcrypto/des/asm/readme index f8529d9307..1beafe253b 100644 --- a/src/lib/libcrypto/des/asm/readme +++ b/src/lib/libcrypto/des/asm/readme | |||
| @@ -8,7 +8,7 @@ assembler for the inner DES routines in libdes :-). | |||
| 8 | 8 | ||
| 9 | The file to implement in assembler is des_enc.c. Replace the following | 9 | The file to implement in assembler is des_enc.c. Replace the following | 
| 10 | 4 functions | 10 | 4 functions | 
| 11 | des_encrypt(DES_LONG data[2],des_key_schedule ks, int encrypt); | 11 | des_encrypt1(DES_LONG data[2],des_key_schedule ks, int encrypt); | 
| 12 | des_encrypt2(DES_LONG data[2],des_key_schedule ks, int encrypt); | 12 | des_encrypt2(DES_LONG data[2],des_key_schedule ks, int encrypt); | 
| 13 | des_encrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 13 | des_encrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 
| 14 | des_decrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 14 | des_decrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 
| diff --git a/src/lib/libcrypto/des/cbc_cksm.c b/src/lib/libcrypto/des/cbc_cksm.c index 1e543cb2a1..b857df0985 100644 --- a/src/lib/libcrypto/des/cbc_cksm.c +++ b/src/lib/libcrypto/des/cbc_cksm.c | |||
| @@ -82,7 +82,7 @@ DES_LONG des_cbc_cksum(const unsigned char *in, des_cblock *output, | |||
| 82 | 82 | ||
| 83 | tin0^=tout0; tin[0]=tin0; | 83 | tin0^=tout0; tin[0]=tin0; | 
| 84 | tin1^=tout1; tin[1]=tin1; | 84 | tin1^=tout1; tin[1]=tin1; | 
| 85 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 85 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 86 | /* fix 15/10/91 eay - thanks to keithr@sco.COM */ | 86 | /* fix 15/10/91 eay - thanks to keithr@sco.COM */ | 
| 87 | tout0=tin[0]; | 87 | tout0=tin[0]; | 
| 88 | tout1=tin[1]; | 88 | tout1=tin[1]; | 
| diff --git a/src/lib/libcrypto/des/cfb64enc.c b/src/lib/libcrypto/des/cfb64enc.c index 389a232cb3..105530dfa3 100644 --- a/src/lib/libcrypto/des/cfb64enc.c +++ b/src/lib/libcrypto/des/cfb64enc.c | |||
| @@ -82,7 +82,7 @@ void des_cfb64_encrypt(const unsigned char *in, unsigned char *out, | |||
| 82 | { | 82 | { | 
| 83 | c2l(iv,v0); ti[0]=v0; | 83 | c2l(iv,v0); ti[0]=v0; | 
| 84 | c2l(iv,v1); ti[1]=v1; | 84 | c2l(iv,v1); ti[1]=v1; | 
| 85 | des_encrypt(ti,schedule,DES_ENCRYPT); | 85 | des_encrypt1(ti,schedule,DES_ENCRYPT); | 
| 86 | iv = &(*ivec)[0]; | 86 | iv = &(*ivec)[0]; | 
| 87 | v0=ti[0]; l2c(v0,iv); | 87 | v0=ti[0]; l2c(v0,iv); | 
| 88 | v0=ti[1]; l2c(v0,iv); | 88 | v0=ti[1]; l2c(v0,iv); | 
| @@ -102,7 +102,7 @@ void des_cfb64_encrypt(const unsigned char *in, unsigned char *out, | |||
| 102 | { | 102 | { | 
| 103 | c2l(iv,v0); ti[0]=v0; | 103 | c2l(iv,v0); ti[0]=v0; | 
| 104 | c2l(iv,v1); ti[1]=v1; | 104 | c2l(iv,v1); ti[1]=v1; | 
| 105 | des_encrypt(ti,schedule,DES_ENCRYPT); | 105 | des_encrypt1(ti,schedule,DES_ENCRYPT); | 
| 106 | iv = &(*ivec)[0]; | 106 | iv = &(*ivec)[0]; | 
| 107 | v0=ti[0]; l2c(v0,iv); | 107 | v0=ti[0]; l2c(v0,iv); | 
| 108 | v0=ti[1]; l2c(v0,iv); | 108 | v0=ti[1]; l2c(v0,iv); | 
| diff --git a/src/lib/libcrypto/des/cfb_enc.c b/src/lib/libcrypto/des/cfb_enc.c index cca34dd7c5..ec4fd4ea67 100644 --- a/src/lib/libcrypto/des/cfb_enc.c +++ b/src/lib/libcrypto/des/cfb_enc.c | |||
| @@ -100,7 +100,7 @@ void des_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, | |||
| 100 | l-=n; | 100 | l-=n; | 
| 101 | ti[0]=v0; | 101 | ti[0]=v0; | 
| 102 | ti[1]=v1; | 102 | ti[1]=v1; | 
| 103 | des_encrypt((DES_LONG *)ti,schedule,DES_ENCRYPT); | 103 | des_encrypt1((DES_LONG *)ti,schedule,DES_ENCRYPT); | 
| 104 | c2ln(in,d0,d1,n); | 104 | c2ln(in,d0,d1,n); | 
| 105 | in+=n; | 105 | in+=n; | 
| 106 | d0=(d0^ti[0])&mask0; | 106 | d0=(d0^ti[0])&mask0; | 
| @@ -132,7 +132,7 @@ void des_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, | |||
| 132 | l-=n; | 132 | l-=n; | 
| 133 | ti[0]=v0; | 133 | ti[0]=v0; | 
| 134 | ti[1]=v1; | 134 | ti[1]=v1; | 
| 135 | des_encrypt((DES_LONG *)ti,schedule,DES_ENCRYPT); | 135 | des_encrypt1((DES_LONG *)ti,schedule,DES_ENCRYPT); | 
| 136 | c2ln(in,d0,d1,n); | 136 | c2ln(in,d0,d1,n); | 
| 137 | in+=n; | 137 | in+=n; | 
| 138 | /* 30-08-94 - eay - changed because l>>32 and | 138 | /* 30-08-94 - eay - changed because l>>32 and | 
| diff --git a/src/lib/libcrypto/des/des.h b/src/lib/libcrypto/des/des.h index 2db9748cb4..6b8a7ee11b 100644 --- a/src/lib/libcrypto/des/des.h +++ b/src/lib/libcrypto/des/des.h | |||
| @@ -147,14 +147,14 @@ void des_ecb_encrypt(const_des_cblock *input,des_cblock *output, | |||
| 147 | Data is a pointer to 2 unsigned long's and ks is the | 147 | Data is a pointer to 2 unsigned long's and ks is the | 
| 148 | des_key_schedule to use. enc, is non zero specifies encryption, | 148 | des_key_schedule to use. enc, is non zero specifies encryption, | 
| 149 | zero if decryption. */ | 149 | zero if decryption. */ | 
| 150 | void des_encrypt(DES_LONG *data,des_key_schedule ks, int enc); | 150 | void des_encrypt1(DES_LONG *data,des_key_schedule ks, int enc); | 
| 151 | 151 | ||
| 152 | /* This functions is the same as des_encrypt() except that the DES | 152 | /* This functions is the same as des_encrypt1() except that the DES | 
| 153 | initial permutation (IP) and final permutation (FP) have been left | 153 | initial permutation (IP) and final permutation (FP) have been left | 
| 154 | out. As for des_encrypt(), you should not use this function. | 154 | out. As for des_encrypt1(), you should not use this function. | 
| 155 | It is used by the routines in the library that implement triple DES. | 155 | It is used by the routines in the library that implement triple DES. | 
| 156 | IP() des_encrypt2() des_encrypt2() des_encrypt2() FP() is the same | 156 | IP() des_encrypt2() des_encrypt2() des_encrypt2() FP() is the same | 
| 157 | as des_encrypt() des_encrypt() des_encrypt() except faster :-). */ | 157 | as des_encrypt1() des_encrypt1() des_encrypt1() except faster :-). */ | 
| 158 | void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc); | 158 | void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc); | 
| 159 | 159 | ||
| 160 | void des_encrypt3(DES_LONG *data, des_key_schedule ks1, | 160 | void des_encrypt3(DES_LONG *data, des_key_schedule ks1, | 
| diff --git a/src/lib/libcrypto/des/des_enc.c b/src/lib/libcrypto/des/des_enc.c index 8311e10628..0bd9fa39bc 100644 --- a/src/lib/libcrypto/des/des_enc.c +++ b/src/lib/libcrypto/des/des_enc.c | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | 58 | ||
| 59 | #include "des_locl.h" | 59 | #include "des_locl.h" | 
| 60 | 60 | ||
| 61 | void des_encrypt(DES_LONG *data, des_key_schedule ks, int enc) | 61 | void des_encrypt1(DES_LONG *data, des_key_schedule ks, int enc) | 
| 62 | { | 62 | { | 
| 63 | register DES_LONG l,r,t,u; | 63 | register DES_LONG l,r,t,u; | 
| 64 | #ifdef DES_PTR | 64 | #ifdef DES_PTR | 
| diff --git a/src/lib/libcrypto/des/des_opts.c b/src/lib/libcrypto/des/des_opts.c index b2ca7ac31d..138ee1c6b4 100644 --- a/src/lib/libcrypto/des/des_opts.c +++ b/src/lib/libcrypto/des/des_opts.c | |||
| @@ -118,7 +118,7 @@ extern void exit(); | |||
| 118 | #undef DES_RISC2 | 118 | #undef DES_RISC2 | 
| 119 | #undef DES_PTR | 119 | #undef DES_PTR | 
| 120 | #undef D_ENCRYPT | 120 | #undef D_ENCRYPT | 
| 121 | #define des_encrypt des_encrypt_u4_cisc_idx | 121 | #define des_encrypt1 des_encrypt_u4_cisc_idx | 
| 122 | #define des_encrypt2 des_encrypt2_u4_cisc_idx | 122 | #define des_encrypt2 des_encrypt2_u4_cisc_idx | 
| 123 | #define des_encrypt3 des_encrypt3_u4_cisc_idx | 123 | #define des_encrypt3 des_encrypt3_u4_cisc_idx | 
| 124 | #define des_decrypt3 des_decrypt3_u4_cisc_idx | 124 | #define des_decrypt3 des_decrypt3_u4_cisc_idx | 
| @@ -130,11 +130,11 @@ extern void exit(); | |||
| 130 | #undef DES_RISC2 | 130 | #undef DES_RISC2 | 
| 131 | #undef DES_PTR | 131 | #undef DES_PTR | 
| 132 | #undef D_ENCRYPT | 132 | #undef D_ENCRYPT | 
| 133 | #undef des_encrypt | 133 | #undef des_encrypt1 | 
| 134 | #undef des_encrypt2 | 134 | #undef des_encrypt2 | 
| 135 | #undef des_encrypt3 | 135 | #undef des_encrypt3 | 
| 136 | #undef des_decrypt3 | 136 | #undef des_decrypt3 | 
| 137 | #define des_encrypt des_encrypt_u16_cisc_idx | 137 | #define des_encrypt1 des_encrypt_u16_cisc_idx | 
| 138 | #define des_encrypt2 des_encrypt2_u16_cisc_idx | 138 | #define des_encrypt2 des_encrypt2_u16_cisc_idx | 
| 139 | #define des_encrypt3 des_encrypt3_u16_cisc_idx | 139 | #define des_encrypt3 des_encrypt3_u16_cisc_idx | 
| 140 | #define des_decrypt3 des_decrypt3_u16_cisc_idx | 140 | #define des_decrypt3 des_decrypt3_u16_cisc_idx | 
| @@ -146,11 +146,11 @@ extern void exit(); | |||
| 146 | #undef DES_RISC2 | 146 | #undef DES_RISC2 | 
| 147 | #undef DES_PTR | 147 | #undef DES_PTR | 
| 148 | #undef D_ENCRYPT | 148 | #undef D_ENCRYPT | 
| 149 | #undef des_encrypt | 149 | #undef des_encrypt1 | 
| 150 | #undef des_encrypt2 | 150 | #undef des_encrypt2 | 
| 151 | #undef des_encrypt3 | 151 | #undef des_encrypt3 | 
| 152 | #undef des_decrypt3 | 152 | #undef des_decrypt3 | 
| 153 | #define des_encrypt des_encrypt_u4_risc1_idx | 153 | #define des_encrypt1 des_encrypt_u4_risc1_idx | 
| 154 | #define des_encrypt2 des_encrypt2_u4_risc1_idx | 154 | #define des_encrypt2 des_encrypt2_u4_risc1_idx | 
| 155 | #define des_encrypt3 des_encrypt3_u4_risc1_idx | 155 | #define des_encrypt3 des_encrypt3_u4_risc1_idx | 
| 156 | #define des_decrypt3 des_decrypt3_u4_risc1_idx | 156 | #define des_decrypt3 des_decrypt3_u4_risc1_idx | 
| @@ -166,11 +166,11 @@ extern void exit(); | |||
| 166 | #define DES_RISC2 | 166 | #define DES_RISC2 | 
| 167 | #undef DES_PTR | 167 | #undef DES_PTR | 
| 168 | #undef D_ENCRYPT | 168 | #undef D_ENCRYPT | 
| 169 | #undef des_encrypt | 169 | #undef des_encrypt1 | 
| 170 | #undef des_encrypt2 | 170 | #undef des_encrypt2 | 
| 171 | #undef des_encrypt3 | 171 | #undef des_encrypt3 | 
| 172 | #undef des_decrypt3 | 172 | #undef des_decrypt3 | 
| 173 | #define des_encrypt des_encrypt_u4_risc2_idx | 173 | #define des_encrypt1 des_encrypt_u4_risc2_idx | 
| 174 | #define des_encrypt2 des_encrypt2_u4_risc2_idx | 174 | #define des_encrypt2 des_encrypt2_u4_risc2_idx | 
| 175 | #define des_encrypt3 des_encrypt3_u4_risc2_idx | 175 | #define des_encrypt3 des_encrypt3_u4_risc2_idx | 
| 176 | #define des_decrypt3 des_decrypt3_u4_risc2_idx | 176 | #define des_decrypt3 des_decrypt3_u4_risc2_idx | 
| @@ -182,11 +182,11 @@ extern void exit(); | |||
| 182 | #undef DES_RISC2 | 182 | #undef DES_RISC2 | 
| 183 | #undef DES_PTR | 183 | #undef DES_PTR | 
| 184 | #undef D_ENCRYPT | 184 | #undef D_ENCRYPT | 
| 185 | #undef des_encrypt | 185 | #undef des_encrypt1 | 
| 186 | #undef des_encrypt2 | 186 | #undef des_encrypt2 | 
| 187 | #undef des_encrypt3 | 187 | #undef des_encrypt3 | 
| 188 | #undef des_decrypt3 | 188 | #undef des_decrypt3 | 
| 189 | #define des_encrypt des_encrypt_u16_risc1_idx | 189 | #define des_encrypt1 des_encrypt_u16_risc1_idx | 
| 190 | #define des_encrypt2 des_encrypt2_u16_risc1_idx | 190 | #define des_encrypt2 des_encrypt2_u16_risc1_idx | 
| 191 | #define des_encrypt3 des_encrypt3_u16_risc1_idx | 191 | #define des_encrypt3 des_encrypt3_u16_risc1_idx | 
| 192 | #define des_decrypt3 des_decrypt3_u16_risc1_idx | 192 | #define des_decrypt3 des_decrypt3_u16_risc1_idx | 
| @@ -198,11 +198,11 @@ extern void exit(); | |||
| 198 | #define DES_RISC2 | 198 | #define DES_RISC2 | 
| 199 | #undef DES_PTR | 199 | #undef DES_PTR | 
| 200 | #undef D_ENCRYPT | 200 | #undef D_ENCRYPT | 
| 201 | #undef des_encrypt | 201 | #undef des_encrypt1 | 
| 202 | #undef des_encrypt2 | 202 | #undef des_encrypt2 | 
| 203 | #undef des_encrypt3 | 203 | #undef des_encrypt3 | 
| 204 | #undef des_decrypt3 | 204 | #undef des_decrypt3 | 
| 205 | #define des_encrypt des_encrypt_u16_risc2_idx | 205 | #define des_encrypt1 des_encrypt_u16_risc2_idx | 
| 206 | #define des_encrypt2 des_encrypt2_u16_risc2_idx | 206 | #define des_encrypt2 des_encrypt2_u16_risc2_idx | 
| 207 | #define des_encrypt3 des_encrypt3_u16_risc2_idx | 207 | #define des_encrypt3 des_encrypt3_u16_risc2_idx | 
| 208 | #define des_decrypt3 des_decrypt3_u16_risc2_idx | 208 | #define des_decrypt3 des_decrypt3_u16_risc2_idx | 
| @@ -218,11 +218,11 @@ extern void exit(); | |||
| 218 | #undef DES_RISC2 | 218 | #undef DES_RISC2 | 
| 219 | #define DES_PTR | 219 | #define DES_PTR | 
| 220 | #undef D_ENCRYPT | 220 | #undef D_ENCRYPT | 
| 221 | #undef des_encrypt | 221 | #undef des_encrypt1 | 
| 222 | #undef des_encrypt2 | 222 | #undef des_encrypt2 | 
| 223 | #undef des_encrypt3 | 223 | #undef des_encrypt3 | 
| 224 | #undef des_decrypt3 | 224 | #undef des_decrypt3 | 
| 225 | #define des_encrypt des_encrypt_u4_cisc_ptr | 225 | #define des_encrypt1 des_encrypt_u4_cisc_ptr | 
| 226 | #define des_encrypt2 des_encrypt2_u4_cisc_ptr | 226 | #define des_encrypt2 des_encrypt2_u4_cisc_ptr | 
| 227 | #define des_encrypt3 des_encrypt3_u4_cisc_ptr | 227 | #define des_encrypt3 des_encrypt3_u4_cisc_ptr | 
| 228 | #define des_decrypt3 des_decrypt3_u4_cisc_ptr | 228 | #define des_decrypt3 des_decrypt3_u4_cisc_ptr | 
| @@ -234,11 +234,11 @@ extern void exit(); | |||
| 234 | #undef DES_RISC2 | 234 | #undef DES_RISC2 | 
| 235 | #define DES_PTR | 235 | #define DES_PTR | 
| 236 | #undef D_ENCRYPT | 236 | #undef D_ENCRYPT | 
| 237 | #undef des_encrypt | 237 | #undef des_encrypt1 | 
| 238 | #undef des_encrypt2 | 238 | #undef des_encrypt2 | 
| 239 | #undef des_encrypt3 | 239 | #undef des_encrypt3 | 
| 240 | #undef des_decrypt3 | 240 | #undef des_decrypt3 | 
| 241 | #define des_encrypt des_encrypt_u16_cisc_ptr | 241 | #define des_encrypt1 des_encrypt_u16_cisc_ptr | 
| 242 | #define des_encrypt2 des_encrypt2_u16_cisc_ptr | 242 | #define des_encrypt2 des_encrypt2_u16_cisc_ptr | 
| 243 | #define des_encrypt3 des_encrypt3_u16_cisc_ptr | 243 | #define des_encrypt3 des_encrypt3_u16_cisc_ptr | 
| 244 | #define des_decrypt3 des_decrypt3_u16_cisc_ptr | 244 | #define des_decrypt3 des_decrypt3_u16_cisc_ptr | 
| @@ -250,11 +250,11 @@ extern void exit(); | |||
| 250 | #undef DES_RISC2 | 250 | #undef DES_RISC2 | 
| 251 | #define DES_PTR | 251 | #define DES_PTR | 
| 252 | #undef D_ENCRYPT | 252 | #undef D_ENCRYPT | 
| 253 | #undef des_encrypt | 253 | #undef des_encrypt1 | 
| 254 | #undef des_encrypt2 | 254 | #undef des_encrypt2 | 
| 255 | #undef des_encrypt3 | 255 | #undef des_encrypt3 | 
| 256 | #undef des_decrypt3 | 256 | #undef des_decrypt3 | 
| 257 | #define des_encrypt des_encrypt_u4_risc1_ptr | 257 | #define des_encrypt1 des_encrypt_u4_risc1_ptr | 
| 258 | #define des_encrypt2 des_encrypt2_u4_risc1_ptr | 258 | #define des_encrypt2 des_encrypt2_u4_risc1_ptr | 
| 259 | #define des_encrypt3 des_encrypt3_u4_risc1_ptr | 259 | #define des_encrypt3 des_encrypt3_u4_risc1_ptr | 
| 260 | #define des_decrypt3 des_decrypt3_u4_risc1_ptr | 260 | #define des_decrypt3 des_decrypt3_u4_risc1_ptr | 
| @@ -270,11 +270,11 @@ extern void exit(); | |||
| 270 | #define DES_RISC2 | 270 | #define DES_RISC2 | 
| 271 | #define DES_PTR | 271 | #define DES_PTR | 
| 272 | #undef D_ENCRYPT | 272 | #undef D_ENCRYPT | 
| 273 | #undef des_encrypt | 273 | #undef des_encrypt1 | 
| 274 | #undef des_encrypt2 | 274 | #undef des_encrypt2 | 
| 275 | #undef des_encrypt3 | 275 | #undef des_encrypt3 | 
| 276 | #undef des_decrypt3 | 276 | #undef des_decrypt3 | 
| 277 | #define des_encrypt des_encrypt_u4_risc2_ptr | 277 | #define des_encrypt1 des_encrypt_u4_risc2_ptr | 
| 278 | #define des_encrypt2 des_encrypt2_u4_risc2_ptr | 278 | #define des_encrypt2 des_encrypt2_u4_risc2_ptr | 
| 279 | #define des_encrypt3 des_encrypt3_u4_risc2_ptr | 279 | #define des_encrypt3 des_encrypt3_u4_risc2_ptr | 
| 280 | #define des_decrypt3 des_decrypt3_u4_risc2_ptr | 280 | #define des_decrypt3 des_decrypt3_u4_risc2_ptr | 
| @@ -286,11 +286,11 @@ extern void exit(); | |||
| 286 | #undef DES_RISC2 | 286 | #undef DES_RISC2 | 
| 287 | #define DES_PTR | 287 | #define DES_PTR | 
| 288 | #undef D_ENCRYPT | 288 | #undef D_ENCRYPT | 
| 289 | #undef des_encrypt | 289 | #undef des_encrypt1 | 
| 290 | #undef des_encrypt2 | 290 | #undef des_encrypt2 | 
| 291 | #undef des_encrypt3 | 291 | #undef des_encrypt3 | 
| 292 | #undef des_decrypt3 | 292 | #undef des_decrypt3 | 
| 293 | #define des_encrypt des_encrypt_u16_risc1_ptr | 293 | #define des_encrypt1 des_encrypt_u16_risc1_ptr | 
| 294 | #define des_encrypt2 des_encrypt2_u16_risc1_ptr | 294 | #define des_encrypt2 des_encrypt2_u16_risc1_ptr | 
| 295 | #define des_encrypt3 des_encrypt3_u16_risc1_ptr | 295 | #define des_encrypt3 des_encrypt3_u16_risc1_ptr | 
| 296 | #define des_decrypt3 des_decrypt3_u16_risc1_ptr | 296 | #define des_decrypt3 des_decrypt3_u16_risc1_ptr | 
| @@ -302,11 +302,11 @@ extern void exit(); | |||
| 302 | #define DES_RISC2 | 302 | #define DES_RISC2 | 
| 303 | #define DES_PTR | 303 | #define DES_PTR | 
| 304 | #undef D_ENCRYPT | 304 | #undef D_ENCRYPT | 
| 305 | #undef des_encrypt | 305 | #undef des_encrypt1 | 
| 306 | #undef des_encrypt2 | 306 | #undef des_encrypt2 | 
| 307 | #undef des_encrypt3 | 307 | #undef des_encrypt3 | 
| 308 | #undef des_decrypt3 | 308 | #undef des_decrypt3 | 
| 309 | #define des_encrypt des_encrypt_u16_risc2_ptr | 309 | #define des_encrypt1 des_encrypt_u16_risc2_ptr | 
| 310 | #define des_encrypt2 des_encrypt2_u16_risc2_ptr | 310 | #define des_encrypt2 des_encrypt2_u16_risc2_ptr | 
| 311 | #define des_encrypt3 des_encrypt3_u16_risc2_ptr | 311 | #define des_encrypt3 des_encrypt3_u16_risc2_ptr | 
| 312 | #define des_decrypt3 des_decrypt3_u16_risc2_ptr | 312 | #define des_decrypt3 des_decrypt3_u16_risc2_ptr | 
| @@ -453,7 +453,7 @@ int main(int argc, char **argv) | |||
| 453 | count*=2; | 453 | count*=2; | 
| 454 | Time_F(START); | 454 | Time_F(START); | 
| 455 | for (i=count; i; i--) | 455 | for (i=count; i; i--) | 
| 456 | des_encrypt(data,&(sch[0]),DES_ENCRYPT); | 456 | des_encrypt1(data,&(sch[0]),DES_ENCRYPT); | 
| 457 | d=Time_F(STOP); | 457 | d=Time_F(STOP); | 
| 458 | } while (d < 3.0); | 458 | } while (d < 3.0); | 
| 459 | ca=count; | 459 | ca=count; | 
| diff --git a/src/lib/libcrypto/des/dess.cpp b/src/lib/libcrypto/des/dess.cpp index 753e67ad9b..5549bab90a 100644 --- a/src/lib/libcrypto/des/dess.cpp +++ b/src/lib/libcrypto/des/dess.cpp | |||
| @@ -45,19 +45,19 @@ void main(int argc,char *argv[]) | |||
| 45 | { | 45 | { | 
| 46 | for (i=0; i<1000; i++) /**/ | 46 | for (i=0; i<1000; i++) /**/ | 
| 47 | { | 47 | { | 
| 48 | des_encrypt(&data[0],key,1); | 48 | des_encrypt1(&data[0],key,1); | 
| 49 | GetTSC(s1); | 49 | GetTSC(s1); | 
| 50 | des_encrypt(&data[0],key,1); | 50 | des_encrypt1(&data[0],key,1); | 
| 51 | des_encrypt(&data[0],key,1); | 51 | des_encrypt1(&data[0],key,1); | 
| 52 | des_encrypt(&data[0],key,1); | 52 | des_encrypt1(&data[0],key,1); | 
| 53 | GetTSC(e1); | 53 | GetTSC(e1); | 
| 54 | GetTSC(s2); | 54 | GetTSC(s2); | 
| 55 | des_encrypt(&data[0],key,1); | 55 | des_encrypt1(&data[0],key,1); | 
| 56 | des_encrypt(&data[0],key,1); | 56 | des_encrypt1(&data[0],key,1); | 
| 57 | des_encrypt(&data[0],key,1); | 57 | des_encrypt1(&data[0],key,1); | 
| 58 | des_encrypt(&data[0],key,1); | 58 | des_encrypt1(&data[0],key,1); | 
| 59 | GetTSC(e2); | 59 | GetTSC(e2); | 
| 60 | des_encrypt(&data[0],key,1); | 60 | des_encrypt1(&data[0],key,1); | 
| 61 | } | 61 | } | 
| 62 | 62 | ||
| 63 | printf("des %d %d (%d)\n", | 63 | printf("des %d %d (%d)\n", | 
| diff --git a/src/lib/libcrypto/des/ecb_enc.c b/src/lib/libcrypto/des/ecb_enc.c index b261a8aad9..d481327ef3 100644 --- a/src/lib/libcrypto/des/ecb_enc.c +++ b/src/lib/libcrypto/des/ecb_enc.c | |||
| @@ -114,7 +114,7 @@ void des_ecb_encrypt(const_des_cblock *input, des_cblock *output, | |||
| 114 | 114 | ||
| 115 | c2l(in,l); ll[0]=l; | 115 | c2l(in,l); ll[0]=l; | 
| 116 | c2l(in,l); ll[1]=l; | 116 | c2l(in,l); ll[1]=l; | 
| 117 | des_encrypt(ll,ks,enc); | 117 | des_encrypt1(ll,ks,enc); | 
| 118 | l=ll[0]; l2c(l,out); | 118 | l=ll[0]; l2c(l,out); | 
| 119 | l=ll[1]; l2c(l,out); | 119 | l=ll[1]; l2c(l,out); | 
| 120 | l=ll[0]=ll[1]=0; | 120 | l=ll[0]=ll[1]=0; | 
| diff --git a/src/lib/libcrypto/des/ede_cbcm_enc.c b/src/lib/libcrypto/des/ede_cbcm_enc.c index c53062481d..b98f7e17af 100644 --- a/src/lib/libcrypto/des/ede_cbcm_enc.c +++ b/src/lib/libcrypto/des/ede_cbcm_enc.c | |||
| @@ -95,7 +95,7 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 95 | { | 95 | { | 
| 96 | tin[0]=m0; | 96 | tin[0]=m0; | 
| 97 | tin[1]=m1; | 97 | tin[1]=m1; | 
| 98 | des_encrypt(tin,ks3,1); | 98 | des_encrypt1(tin,ks3,1); | 
| 99 | m0=tin[0]; | 99 | m0=tin[0]; | 
| 100 | m1=tin[1]; | 100 | m1=tin[1]; | 
| 101 | 101 | ||
| @@ -113,13 +113,13 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 113 | 113 | ||
| 114 | tin[0]=tin0; | 114 | tin[0]=tin0; | 
| 115 | tin[1]=tin1; | 115 | tin[1]=tin1; | 
| 116 | des_encrypt(tin,ks1,1); | 116 | des_encrypt1(tin,ks1,1); | 
| 117 | tin[0]^=m0; | 117 | tin[0]^=m0; | 
| 118 | tin[1]^=m1; | 118 | tin[1]^=m1; | 
| 119 | des_encrypt(tin,ks2,0); | 119 | des_encrypt1(tin,ks2,0); | 
| 120 | tin[0]^=m0; | 120 | tin[0]^=m0; | 
| 121 | tin[1]^=m1; | 121 | tin[1]^=m1; | 
| 122 | des_encrypt(tin,ks1,1); | 122 | des_encrypt1(tin,ks1,1); | 
| 123 | tout0=tin[0]; | 123 | tout0=tin[0]; | 
| 124 | tout1=tin[1]; | 124 | tout1=tin[1]; | 
| 125 | 125 | ||
| @@ -146,7 +146,7 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 146 | { | 146 | { | 
| 147 | tin[0]=m0; | 147 | tin[0]=m0; | 
| 148 | tin[1]=m1; | 148 | tin[1]=m1; | 
| 149 | des_encrypt(tin,ks3,1); | 149 | des_encrypt1(tin,ks3,1); | 
| 150 | m0=tin[0]; | 150 | m0=tin[0]; | 
| 151 | m1=tin[1]; | 151 | m1=tin[1]; | 
| 152 | 152 | ||
| @@ -158,13 +158,13 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 158 | 158 | ||
| 159 | tin[0]=tin0; | 159 | tin[0]=tin0; | 
| 160 | tin[1]=tin1; | 160 | tin[1]=tin1; | 
| 161 | des_encrypt(tin,ks1,0); | 161 | des_encrypt1(tin,ks1,0); | 
| 162 | tin[0]^=m0; | 162 | tin[0]^=m0; | 
| 163 | tin[1]^=m1; | 163 | tin[1]^=m1; | 
| 164 | des_encrypt(tin,ks2,1); | 164 | des_encrypt1(tin,ks2,1); | 
| 165 | tin[0]^=m0; | 165 | tin[0]^=m0; | 
| 166 | tin[1]^=m1; | 166 | tin[1]^=m1; | 
| 167 | des_encrypt(tin,ks1,0); | 167 | des_encrypt1(tin,ks1,0); | 
| 168 | tout0=tin[0]; | 168 | tout0=tin[0]; | 
| 169 | tout1=tin[1]; | 169 | tout1=tin[1]; | 
| 170 | 170 | ||
| diff --git a/src/lib/libcrypto/des/ncbc_enc.c b/src/lib/libcrypto/des/ncbc_enc.c index 3b681691a9..b8db07b199 100644 --- a/src/lib/libcrypto/des/ncbc_enc.c +++ b/src/lib/libcrypto/des/ncbc_enc.c | |||
| @@ -89,7 +89,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 89 | c2l(in,tin1); | 89 | c2l(in,tin1); | 
| 90 | tin0^=tout0; tin[0]=tin0; | 90 | tin0^=tout0; tin[0]=tin0; | 
| 91 | tin1^=tout1; tin[1]=tin1; | 91 | tin1^=tout1; tin[1]=tin1; | 
| 92 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 92 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 93 | tout0=tin[0]; l2c(tout0,out); | 93 | tout0=tin[0]; l2c(tout0,out); | 
| 94 | tout1=tin[1]; l2c(tout1,out); | 94 | tout1=tin[1]; l2c(tout1,out); | 
| 95 | } | 95 | } | 
| @@ -98,7 +98,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 98 | c2ln(in,tin0,tin1,l+8); | 98 | c2ln(in,tin0,tin1,l+8); | 
| 99 | tin0^=tout0; tin[0]=tin0; | 99 | tin0^=tout0; tin[0]=tin0; | 
| 100 | tin1^=tout1; tin[1]=tin1; | 100 | tin1^=tout1; tin[1]=tin1; | 
| 101 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 101 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 102 | tout0=tin[0]; l2c(tout0,out); | 102 | tout0=tin[0]; l2c(tout0,out); | 
| 103 | tout1=tin[1]; l2c(tout1,out); | 103 | tout1=tin[1]; l2c(tout1,out); | 
| 104 | } | 104 | } | 
| @@ -116,7 +116,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 116 | { | 116 | { | 
| 117 | c2l(in,tin0); tin[0]=tin0; | 117 | c2l(in,tin0); tin[0]=tin0; | 
| 118 | c2l(in,tin1); tin[1]=tin1; | 118 | c2l(in,tin1); tin[1]=tin1; | 
| 119 | des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT); | 119 | des_encrypt1((DES_LONG *)tin,schedule,DES_DECRYPT); | 
| 120 | tout0=tin[0]^xor0; | 120 | tout0=tin[0]^xor0; | 
| 121 | tout1=tin[1]^xor1; | 121 | tout1=tin[1]^xor1; | 
| 122 | l2c(tout0,out); | 122 | l2c(tout0,out); | 
| @@ -128,7 +128,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 128 | { | 128 | { | 
| 129 | c2l(in,tin0); tin[0]=tin0; | 129 | c2l(in,tin0); tin[0]=tin0; | 
| 130 | c2l(in,tin1); tin[1]=tin1; | 130 | c2l(in,tin1); tin[1]=tin1; | 
| 131 | des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT); | 131 | des_encrypt1((DES_LONG *)tin,schedule,DES_DECRYPT); | 
| 132 | tout0=tin[0]^xor0; | 132 | tout0=tin[0]^xor0; | 
| 133 | tout1=tin[1]^xor1; | 133 | tout1=tin[1]^xor1; | 
| 134 | l2cn(tout0,tout1,out,l+8); | 134 | l2cn(tout0,tout1,out,l+8); | 
| diff --git a/src/lib/libcrypto/des/ofb64enc.c b/src/lib/libcrypto/des/ofb64enc.c index 64953959ca..1a1d1f1ac4 100644 --- a/src/lib/libcrypto/des/ofb64enc.c +++ b/src/lib/libcrypto/des/ofb64enc.c | |||
| @@ -87,7 +87,7 @@ void des_ofb64_encrypt(register const unsigned char *in, | |||
| 87 | { | 87 | { | 
| 88 | if (n == 0) | 88 | if (n == 0) | 
| 89 | { | 89 | { | 
| 90 | des_encrypt(ti,schedule,DES_ENCRYPT); | 90 | des_encrypt1(ti,schedule,DES_ENCRYPT); | 
| 91 | dp=d; | 91 | dp=d; | 
| 92 | t=ti[0]; l2c(t,dp); | 92 | t=ti[0]; l2c(t,dp); | 
| 93 | t=ti[1]; l2c(t,dp); | 93 | t=ti[1]; l2c(t,dp); | 
| diff --git a/src/lib/libcrypto/des/ofb_enc.c b/src/lib/libcrypto/des/ofb_enc.c index a8f425a575..70493e632c 100644 --- a/src/lib/libcrypto/des/ofb_enc.c +++ b/src/lib/libcrypto/des/ofb_enc.c | |||
| @@ -101,7 +101,7 @@ void des_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, | |||
| 101 | { | 101 | { | 
| 102 | ti[0]=v0; | 102 | ti[0]=v0; | 
| 103 | ti[1]=v1; | 103 | ti[1]=v1; | 
| 104 | des_encrypt((DES_LONG *)ti,schedule,DES_ENCRYPT); | 104 | des_encrypt1((DES_LONG *)ti,schedule,DES_ENCRYPT); | 
| 105 | vv0=ti[0]; | 105 | vv0=ti[0]; | 
| 106 | vv1=ti[1]; | 106 | vv1=ti[1]; | 
| 107 | c2ln(in,d0,d1,n); | 107 | c2ln(in,d0,d1,n); | 
| diff --git a/src/lib/libcrypto/des/pcbc_enc.c b/src/lib/libcrypto/des/pcbc_enc.c index dd69a26d4a..5b987f074d 100644 --- a/src/lib/libcrypto/des/pcbc_enc.c +++ b/src/lib/libcrypto/des/pcbc_enc.c | |||
| @@ -85,7 +85,7 @@ void des_pcbc_encrypt(const unsigned char *input, unsigned char *output, | |||
| 85 | c2ln(in,sin0,sin1,length); | 85 | c2ln(in,sin0,sin1,length); | 
| 86 | tin[0]=sin0^xor0; | 86 | tin[0]=sin0^xor0; | 
| 87 | tin[1]=sin1^xor1; | 87 | tin[1]=sin1^xor1; | 
| 88 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 88 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 89 | tout0=tin[0]; | 89 | tout0=tin[0]; | 
| 90 | tout1=tin[1]; | 90 | tout1=tin[1]; | 
| 91 | xor0=sin0^tout0; | 91 | xor0=sin0^tout0; | 
| @@ -103,7 +103,7 @@ void des_pcbc_encrypt(const unsigned char *input, unsigned char *output, | |||
| 103 | c2l(in,sin1); | 103 | c2l(in,sin1); | 
| 104 | tin[0]=sin0; | 104 | tin[0]=sin0; | 
| 105 | tin[1]=sin1; | 105 | tin[1]=sin1; | 
| 106 | des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT); | 106 | des_encrypt1((DES_LONG *)tin,schedule,DES_DECRYPT); | 
| 107 | tout0=tin[0]^xor0; | 107 | tout0=tin[0]^xor0; | 
| 108 | tout1=tin[1]^xor1; | 108 | tout1=tin[1]^xor1; | 
| 109 | if (length >= 8) | 109 | if (length >= 8) | 
| diff --git a/src/lib/libcrypto/des/speed.c b/src/lib/libcrypto/des/speed.c index 814b86f4ae..1223edf290 100644 --- a/src/lib/libcrypto/des/speed.c +++ b/src/lib/libcrypto/des/speed.c | |||
| @@ -204,7 +204,7 @@ int main(int argc, char **argv) | |||
| 204 | count*=2; | 204 | count*=2; | 
| 205 | Time_F(START); | 205 | Time_F(START); | 
| 206 | for (i=count; i; i--) | 206 | for (i=count; i; i--) | 
| 207 | des_encrypt(data,&(sch[0]),DES_ENCRYPT); | 207 | des_encrypt1(data,&(sch[0]),DES_ENCRYPT); | 
| 208 | d=Time_F(STOP); | 208 | d=Time_F(STOP); | 
| 209 | } while (d < 3.0); | 209 | } while (d < 3.0); | 
| 210 | ca=count; | 210 | ca=count; | 
| @@ -241,7 +241,7 @@ int main(int argc, char **argv) | |||
| 241 | { | 241 | { | 
| 242 | DES_LONG data[2]; | 242 | DES_LONG data[2]; | 
| 243 | 243 | ||
| 244 | des_encrypt(data,&(sch[0]),DES_ENCRYPT); | 244 | des_encrypt1(data,&(sch[0]),DES_ENCRYPT); | 
| 245 | } | 245 | } | 
| 246 | d=Time_F(STOP); | 246 | d=Time_F(STOP); | 
| 247 | printf("%ld des_encrypt's in %.2f second\n",count,d); | 247 | printf("%ld des_encrypt's in %.2f second\n",count,d); | 
| diff --git a/src/lib/libcrypto/des/xcbc_enc.c b/src/lib/libcrypto/des/xcbc_enc.c index 51e17e6b8a..ccfede13ac 100644 --- a/src/lib/libcrypto/des/xcbc_enc.c +++ b/src/lib/libcrypto/des/xcbc_enc.c | |||
| @@ -138,7 +138,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 138 | c2l(in,tin1); | 138 | c2l(in,tin1); | 
| 139 | tin0^=tout0^inW0; tin[0]=tin0; | 139 | tin0^=tout0^inW0; tin[0]=tin0; | 
| 140 | tin1^=tout1^inW1; tin[1]=tin1; | 140 | tin1^=tout1^inW1; tin[1]=tin1; | 
| 141 | des_encrypt(tin,schedule,DES_ENCRYPT); | 141 | des_encrypt1(tin,schedule,DES_ENCRYPT); | 
| 142 | tout0=tin[0]^outW0; l2c(tout0,out); | 142 | tout0=tin[0]^outW0; l2c(tout0,out); | 
| 143 | tout1=tin[1]^outW1; l2c(tout1,out); | 143 | tout1=tin[1]^outW1; l2c(tout1,out); | 
| 144 | } | 144 | } | 
| @@ -147,7 +147,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 147 | c2ln(in,tin0,tin1,l+8); | 147 | c2ln(in,tin0,tin1,l+8); | 
| 148 | tin0^=tout0^inW0; tin[0]=tin0; | 148 | tin0^=tout0^inW0; tin[0]=tin0; | 
| 149 | tin1^=tout1^inW1; tin[1]=tin1; | 149 | tin1^=tout1^inW1; tin[1]=tin1; | 
| 150 | des_encrypt(tin,schedule,DES_ENCRYPT); | 150 | des_encrypt1(tin,schedule,DES_ENCRYPT); | 
| 151 | tout0=tin[0]^outW0; l2c(tout0,out); | 151 | tout0=tin[0]^outW0; l2c(tout0,out); | 
| 152 | tout1=tin[1]^outW1; l2c(tout1,out); | 152 | tout1=tin[1]^outW1; l2c(tout1,out); | 
| 153 | } | 153 | } | 
| @@ -163,7 +163,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 163 | { | 163 | { | 
| 164 | c2l(in,tin0); tin[0]=tin0^outW0; | 164 | c2l(in,tin0); tin[0]=tin0^outW0; | 
| 165 | c2l(in,tin1); tin[1]=tin1^outW1; | 165 | c2l(in,tin1); tin[1]=tin1^outW1; | 
| 166 | des_encrypt(tin,schedule,DES_DECRYPT); | 166 | des_encrypt1(tin,schedule,DES_DECRYPT); | 
| 167 | tout0=tin[0]^xor0^inW0; | 167 | tout0=tin[0]^xor0^inW0; | 
| 168 | tout1=tin[1]^xor1^inW1; | 168 | tout1=tin[1]^xor1^inW1; | 
| 169 | l2c(tout0,out); | 169 | l2c(tout0,out); | 
| @@ -175,7 +175,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 175 | { | 175 | { | 
| 176 | c2l(in,tin0); tin[0]=tin0^outW0; | 176 | c2l(in,tin0); tin[0]=tin0^outW0; | 
| 177 | c2l(in,tin1); tin[1]=tin1^outW1; | 177 | c2l(in,tin1); tin[1]=tin1^outW1; | 
| 178 | des_encrypt(tin,schedule,DES_DECRYPT); | 178 | des_encrypt1(tin,schedule,DES_DECRYPT); | 
| 179 | tout0=tin[0]^xor0^inW0; | 179 | tout0=tin[0]^xor0^inW0; | 
| 180 | tout1=tin[1]^xor1^inW1; | 180 | tout1=tin[1]^xor1^inW1; | 
| 181 | l2cn(tout0,tout1,out,l+8); | 181 | l2cn(tout0,tout1,out,l+8); | 
| diff --git a/src/lib/libcrypto/dh/Makefile.ssl b/src/lib/libcrypto/dh/Makefile.ssl index 88d0d1748b..bf4b47ca9a 100644 --- a/src/lib/libcrypto/dh/Makefile.ssl +++ b/src/lib/libcrypto/dh/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/dh/dh_key.c b/src/lib/libcrypto/dh/dh_key.c index 6915d79dcc..22b087b778 100644 --- a/src/lib/libcrypto/dh/dh_key.c +++ b/src/lib/libcrypto/dh/dh_key.c | |||
| @@ -100,7 +100,6 @@ DH_METHOD *DH_OpenSSL(void) | |||
| 100 | static int generate_key(DH *dh) | 100 | static int generate_key(DH *dh) | 
| 101 | { | 101 | { | 
| 102 | int ok=0; | 102 | int ok=0; | 
| 103 | unsigned int i; | ||
| 104 | BN_CTX ctx; | 103 | BN_CTX ctx; | 
| 105 | BN_MONT_CTX *mont; | 104 | BN_MONT_CTX *mont; | 
| 106 | BIGNUM *pub_key=NULL,*priv_key=NULL; | 105 | BIGNUM *pub_key=NULL,*priv_key=NULL; | 
| @@ -109,15 +108,11 @@ static int generate_key(DH *dh) | |||
| 109 | 108 | ||
| 110 | if (dh->priv_key == NULL) | 109 | if (dh->priv_key == NULL) | 
| 111 | { | 110 | { | 
| 112 | i=dh->length; | ||
| 113 | if (i == 0) | ||
| 114 | { | ||
| 115 | /* Make the number p-1 bits long */ | ||
| 116 | i=BN_num_bits(dh->p)-1; | ||
| 117 | } | ||
| 118 | priv_key=BN_new(); | 111 | priv_key=BN_new(); | 
| 119 | if (priv_key == NULL) goto err; | 112 | if (priv_key == NULL) goto err; | 
| 120 | if (!BN_rand(priv_key,i,0,0)) goto err; | 113 | do | 
| 114 | if (!BN_rand_range(priv_key, dh->p)) goto err; | ||
| 115 | while (BN_is_zero(priv_key)); | ||
| 121 | } | 116 | } | 
| 122 | else | 117 | else | 
| 123 | priv_key=dh->priv_key; | 118 | priv_key=dh->priv_key; | 
| diff --git a/src/lib/libcrypto/dh/dh_lib.c b/src/lib/libcrypto/dh/dh_lib.c index 66803b5565..96f118c153 100644 --- a/src/lib/libcrypto/dh/dh_lib.c +++ b/src/lib/libcrypto/dh/dh_lib.c | |||
| @@ -168,13 +168,13 @@ DH *DH_new_method(ENGINE *engine) | |||
| 168 | ret->method_mont_p=NULL; | 168 | ret->method_mont_p=NULL; | 
| 169 | ret->references = 1; | 169 | ret->references = 1; | 
| 170 | ret->flags=meth->flags; | 170 | ret->flags=meth->flags; | 
| 171 | CRYPTO_new_ex_data(dh_meth,ret,&ret->ex_data); | ||
| 171 | if ((meth->init != NULL) && !meth->init(ret)) | 172 | if ((meth->init != NULL) && !meth->init(ret)) | 
| 172 | { | 173 | { | 
| 174 | CRYPTO_free_ex_data(dh_meth,ret,&ret->ex_data); | ||
| 173 | OPENSSL_free(ret); | 175 | OPENSSL_free(ret); | 
| 174 | ret=NULL; | 176 | ret=NULL; | 
| 175 | } | 177 | } | 
| 176 | else | ||
| 177 | CRYPTO_new_ex_data(dh_meth,ret,&ret->ex_data); | ||
| 178 | return(ret); | 178 | return(ret); | 
| 179 | } | 179 | } | 
| 180 | 180 | ||
| @@ -196,12 +196,12 @@ void DH_free(DH *r) | |||
| 196 | } | 196 | } | 
| 197 | #endif | 197 | #endif | 
| 198 | 198 | ||
| 199 | CRYPTO_free_ex_data(dh_meth, r, &r->ex_data); | ||
| 200 | |||
| 201 | meth = ENGINE_get_DH(r->engine); | 199 | meth = ENGINE_get_DH(r->engine); | 
| 202 | if(meth->finish) meth->finish(r); | 200 | if(meth->finish) meth->finish(r); | 
| 203 | ENGINE_finish(r->engine); | 201 | ENGINE_finish(r->engine); | 
| 204 | 202 | ||
| 203 | CRYPTO_free_ex_data(dh_meth, r, &r->ex_data); | ||
| 204 | |||
| 205 | if (r->p != NULL) BN_clear_free(r->p); | 205 | if (r->p != NULL) BN_clear_free(r->p); | 
| 206 | if (r->g != NULL) BN_clear_free(r->g); | 206 | if (r->g != NULL) BN_clear_free(r->g); | 
| 207 | if (r->q != NULL) BN_clear_free(r->q); | 207 | if (r->q != NULL) BN_clear_free(r->q); | 
| diff --git a/src/lib/libcrypto/doc/RAND_load_file.pod b/src/lib/libcrypto/doc/RAND_load_file.pod index 8dd700ca3d..d8c134e621 100644 --- a/src/lib/libcrypto/doc/RAND_load_file.pod +++ b/src/lib/libcrypto/doc/RAND_load_file.pod | |||
| @@ -8,7 +8,7 @@ RAND_load_file, RAND_write_file, RAND_file_name - PRNG seed file | |||
| 8 | 8 | ||
| 9 | #include <openssl/rand.h> | 9 | #include <openssl/rand.h> | 
| 10 | 10 | ||
| 11 | const char *RAND_file_name(char *buf, int num); | 11 | const char *RAND_file_name(char *buf, size_t num); | 
| 12 | 12 | ||
| 13 | int RAND_load_file(const char *filename, long max_bytes); | 13 | int RAND_load_file(const char *filename, long max_bytes); | 
| 14 | 14 | ||
| diff --git a/src/lib/libcrypto/doc/bn.pod b/src/lib/libcrypto/doc/bn.pod index 1504a1c92d..d183028d61 100644 --- a/src/lib/libcrypto/doc/bn.pod +++ b/src/lib/libcrypto/doc/bn.pod | |||
| @@ -60,6 +60,7 @@ bn - multiprecision integer arithmetics | |||
| 60 | 60 | ||
| 61 | int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); | 61 | int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); | 
| 62 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); | 62 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); | 
| 63 | int BN_rand_range(BIGNUM *rnd, BIGNUM *range); | ||
| 63 | 64 | ||
| 64 | BIGNUM *BN_generate_prime(BIGNUM *ret, int bits,int safe, BIGNUM *add, | 65 | BIGNUM *BN_generate_prime(BIGNUM *ret, int bits,int safe, BIGNUM *add, | 
| 65 | BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg); | 66 | BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg); | 
| diff --git a/src/lib/libcrypto/doc/evp.pod b/src/lib/libcrypto/doc/evp.pod index f089dd49a2..edf47dbde6 100644 --- a/src/lib/libcrypto/doc/evp.pod +++ b/src/lib/libcrypto/doc/evp.pod | |||
| @@ -10,7 +10,7 @@ evp - high-level cryptographic functions | |||
| 10 | 10 | ||
| 11 | =head1 DESCRIPTION | 11 | =head1 DESCRIPTION | 
| 12 | 12 | ||
| 13 | The EVP library provided a high-level interface to cryptographic | 13 | The EVP library provides a high-level interface to cryptographic | 
| 14 | functions. | 14 | functions. | 
| 15 | 15 | ||
| 16 | B<EVP_Seal>I<...> and B<EVP_Open>I<...> provide public key encryption | 16 | B<EVP_Seal>I<...> and B<EVP_Open>I<...> provide public key encryption | 
| diff --git a/src/lib/libcrypto/dsa/Makefile.ssl b/src/lib/libcrypto/dsa/Makefile.ssl index dac582be00..d88f596364 100644 --- a/src/lib/libcrypto/dsa/Makefile.ssl +++ b/src/lib/libcrypto/dsa/Makefile.ssl | |||
| @@ -41,7 +41,8 @@ all: lib | |||
| 41 | 41 | ||
| 42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) | 
| 43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(AR) $(LIB) $(LIBOBJ) | 
| 44 | $(RANLIB) $(LIB) | 44 | @echo You may get an error following this line. Please ignore. | 
| 45 | - $(RANLIB) $(LIB) | ||
| 45 | @touch lib | 46 | @touch lib | 
| 46 | 47 | ||
| 47 | files: | 48 | files: | 
| diff --git a/src/lib/libcrypto/dso/Makefile.ssl b/src/lib/libcrypto/dso/Makefile.ssl index a37f547482..48b36c8330 100644 --- a/src/lib/libcrypto/dso/Makefile.ssl +++ b/src/lib/libcrypto/dso/Makefile.ssl | |||
| @@ -41,7 +41,8 @@ all: lib | |||
| 41 | 41 | ||
| 42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) | 
| 43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(AR) $(LIB) $(LIBOBJ) | 
| 44 | $(RANLIB) $(LIB) | 44 | @echo You may get an error following this line. Please ignore. | 
| 45 | - $(RANLIB) $(LIB) | ||
| 45 | @touch lib | 46 | @touch lib | 
| 46 | 47 | ||
| 47 | files: | 48 | files: | 
| diff --git a/src/lib/libcrypto/dso/dso_dl.c b/src/lib/libcrypto/dso/dso_dl.c index 69810fc3bb..455bd66ecf 100644 --- a/src/lib/libcrypto/dso/dso_dl.c +++ b/src/lib/libcrypto/dso/dso_dl.c | |||
| @@ -82,7 +82,7 @@ static int dl_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr); | |||
| 82 | static int dl_init(DSO *dso); | 82 | static int dl_init(DSO *dso); | 
| 83 | static int dl_finish(DSO *dso); | 83 | static int dl_finish(DSO *dso); | 
| 84 | #endif | 84 | #endif | 
| 85 | static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg); | 85 | static long dl_ctrl(DSO *dso, int cmd, long larg, void *parg); | 
| 86 | 86 | ||
| 87 | static DSO_METHOD dso_meth_dl = { | 87 | static DSO_METHOD dso_meth_dl = { | 
| 88 | "OpenSSL 'dl' shared library method", | 88 | "OpenSSL 'dl' shared library method", | 
| @@ -111,6 +111,11 @@ DSO_METHOD *DSO_METHOD_dl(void) | |||
| 111 | * type so the cast is safe. | 111 | * type so the cast is safe. | 
| 112 | */ | 112 | */ | 
| 113 | 113 | ||
| 114 | #if defined(__hpux) | ||
| 115 | static const char extension[] = ".sl"; | ||
| 116 | #else | ||
| 117 | static const char extension[] = ".so"; | ||
| 118 | #endif | ||
| 114 | static int dl_load(DSO *dso, const char *filename) | 119 | static int dl_load(DSO *dso, const char *filename) | 
| 115 | { | 120 | { | 
| 116 | shl_t ptr; | 121 | shl_t ptr; | 
| @@ -118,12 +123,12 @@ static int dl_load(DSO *dso, const char *filename) | |||
| 118 | int len; | 123 | int len; | 
| 119 | 124 | ||
| 120 | /* The same comment as in dlfcn_load applies here. bleurgh. */ | 125 | /* The same comment as in dlfcn_load applies here. bleurgh. */ | 
| 121 | len = strlen(filename); | 126 | len = strlen(filename) + strlen(extension); | 
| 122 | if((dso->flags & DSO_FLAG_NAME_TRANSLATION) && | 127 | if((dso->flags & DSO_FLAG_NAME_TRANSLATION) && | 
| 123 | (len + 6 < DSO_MAX_TRANSLATED_SIZE) && | 128 | (len + 3 < DSO_MAX_TRANSLATED_SIZE) && | 
| 124 | (strstr(filename, "/") == NULL)) | 129 | (strstr(filename, "/") == NULL)) | 
| 125 | { | 130 | { | 
| 126 | sprintf(translated, "lib%s.so", filename); | 131 | sprintf(translated, "lib%s%s", filename, extension); | 
| 127 | ptr = shl_load(translated, BIND_IMMEDIATE, NULL); | 132 | ptr = shl_load(translated, BIND_IMMEDIATE, NULL); | 
| 128 | } | 133 | } | 
| 129 | else | 134 | else | 
| @@ -187,7 +192,7 @@ static void *dl_bind_var(DSO *dso, const char *symname) | |||
| 187 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_NULL_HANDLE); | 192 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_NULL_HANDLE); | 
| 188 | return(NULL); | 193 | return(NULL); | 
| 189 | } | 194 | } | 
| 190 | if (shl_findsym(ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 195 | if (shl_findsym(&ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 
| 191 | { | 196 | { | 
| 192 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_SYM_FAILURE); | 197 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_SYM_FAILURE); | 
| 193 | return(NULL); | 198 | return(NULL); | 
| @@ -216,7 +221,7 @@ static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname) | |||
| 216 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_NULL_HANDLE); | 221 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_NULL_HANDLE); | 
| 217 | return(NULL); | 222 | return(NULL); | 
| 218 | } | 223 | } | 
| 219 | if (shl_findsym(ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 224 | if (shl_findsym(&ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 
| 220 | { | 225 | { | 
| 221 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_SYM_FAILURE); | 226 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_SYM_FAILURE); | 
| 222 | return(NULL); | 227 | return(NULL); | 
| @@ -224,7 +229,7 @@ static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname) | |||
| 224 | return((DSO_FUNC_TYPE)sym); | 229 | return((DSO_FUNC_TYPE)sym); | 
| 225 | } | 230 | } | 
| 226 | 231 | ||
| 227 | static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg) | 232 | static long dl_ctrl(DSO *dso, int cmd, long larg, void *parg) | 
| 228 | { | 233 | { | 
| 229 | if(dso == NULL) | 234 | if(dso == NULL) | 
| 230 | { | 235 | { | 
| @@ -236,10 +241,10 @@ static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg) | |||
| 236 | case DSO_CTRL_GET_FLAGS: | 241 | case DSO_CTRL_GET_FLAGS: | 
| 237 | return dso->flags; | 242 | return dso->flags; | 
| 238 | case DSO_CTRL_SET_FLAGS: | 243 | case DSO_CTRL_SET_FLAGS: | 
| 239 | dso->flags = (int)larg; | 244 | dso->flags = larg; | 
| 240 | return(0); | 245 | return(0); | 
| 241 | case DSO_CTRL_OR_FLAGS: | 246 | case DSO_CTRL_OR_FLAGS: | 
| 242 | dso->flags |= (int)larg; | 247 | dso->flags |= larg; | 
| 243 | return(0); | 248 | return(0); | 
| 244 | default: | 249 | default: | 
| 245 | break; | 250 | break; | 
| diff --git a/src/lib/libcrypto/dso/dso_vms.c b/src/lib/libcrypto/dso/dso_vms.c index 8ff7090129..ab48b63eb7 100644 --- a/src/lib/libcrypto/dso/dso_vms.c +++ b/src/lib/libcrypto/dso/dso_vms.c | |||
| @@ -62,7 +62,6 @@ | |||
| 62 | #ifdef VMS | 62 | #ifdef VMS | 
| 63 | #pragma message disable DOLLARID | 63 | #pragma message disable DOLLARID | 
| 64 | #include <lib$routines.h> | 64 | #include <lib$routines.h> | 
| 65 | #include <libfisdef.h> | ||
| 66 | #include <stsdef.h> | 65 | #include <stsdef.h> | 
| 67 | #include <descrip.h> | 66 | #include <descrip.h> | 
| 68 | #include <starlet.h> | 67 | #include <starlet.h> | 
| @@ -260,7 +259,8 @@ void vms_bind_sym(DSO *dso, const char *symname, void **sym) | |||
| 260 | { | 259 | { | 
| 261 | DSO_VMS_INTERNAL *ptr; | 260 | DSO_VMS_INTERNAL *ptr; | 
| 262 | int status; | 261 | int status; | 
| 263 | int flags = LIB$M_FIS_MIXEDCASE; | 262 | int flags = (1<<4); /* LIB$M_FIS_MIXEDCASE, but this symbol isn't | 
| 263 | defined in VMS older than 7.0 or so */ | ||
| 264 | struct dsc$descriptor_s symname_dsc; | 264 | struct dsc$descriptor_s symname_dsc; | 
| 265 | *sym = NULL; | 265 | *sym = NULL; | 
| 266 | 266 | ||
| diff --git a/src/lib/libcrypto/ebcdic.c b/src/lib/libcrypto/ebcdic.c index 31397b2add..91a7a8bcb4 100644 --- a/src/lib/libcrypto/ebcdic.c +++ b/src/lib/libcrypto/ebcdic.c | |||
| @@ -211,7 +211,7 @@ ascii2ebcdic(void *dest, const void *srce, size_t count) | |||
| 211 | } | 211 | } | 
| 212 | 212 | ||
| 213 | #else /*CHARSET_EBCDIC*/ | 213 | #else /*CHARSET_EBCDIC*/ | 
| 214 | #ifdef PEDANTIC | 214 | #if defined(PEDANTIC) || defined(VMS) || defined(__VMS) | 
| 215 | static void *dummy=&dummy; | 215 | static void *dummy=&dummy; | 
| 216 | #endif | 216 | #endif | 
| 217 | #endif | 217 | #endif | 
| diff --git a/src/lib/libcrypto/engine/engine_lib.c b/src/lib/libcrypto/engine/engine_lib.c index 1df07af03a..d6e9109f6e 100644 --- a/src/lib/libcrypto/engine/engine_lib.c +++ b/src/lib/libcrypto/engine/engine_lib.c | |||
| @@ -230,17 +230,18 @@ EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, | |||
| 230 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 230 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 
| 231 | if(e->funct_ref == 0) | 231 | if(e->funct_ref == 0) | 
| 232 | { | 232 | { | 
| 233 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 233 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 234 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 
| 234 | ENGINE_R_NOT_INITIALISED); | 235 | ENGINE_R_NOT_INITIALISED); | 
| 235 | return 0; | 236 | return 0; | 
| 236 | } | 237 | } | 
| 238 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 237 | if (!e->load_privkey) | 239 | if (!e->load_privkey) | 
| 238 | { | 240 | { | 
| 239 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 241 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 
| 240 | ENGINE_R_NO_LOAD_FUNCTION); | 242 | ENGINE_R_NO_LOAD_FUNCTION); | 
| 241 | return 0; | 243 | return 0; | 
| 242 | } | 244 | } | 
| 243 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 244 | pkey = e->load_privkey(key_id, passphrase); | 245 | pkey = e->load_privkey(key_id, passphrase); | 
| 245 | if (!pkey) | 246 | if (!pkey) | 
| 246 | { | 247 | { | 
| @@ -265,17 +266,18 @@ EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, | |||
| 265 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 266 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 
| 266 | if(e->funct_ref == 0) | 267 | if(e->funct_ref == 0) | 
| 267 | { | 268 | { | 
| 269 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 268 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 270 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 
| 269 | ENGINE_R_NOT_INITIALISED); | 271 | ENGINE_R_NOT_INITIALISED); | 
| 270 | return 0; | 272 | return 0; | 
| 271 | } | 273 | } | 
| 274 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 272 | if (!e->load_pubkey) | 275 | if (!e->load_pubkey) | 
| 273 | { | 276 | { | 
| 274 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 277 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 
| 275 | ENGINE_R_NO_LOAD_FUNCTION); | 278 | ENGINE_R_NO_LOAD_FUNCTION); | 
| 276 | return 0; | 279 | return 0; | 
| 277 | } | 280 | } | 
| 278 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 279 | pkey = e->load_pubkey(key_id, passphrase); | 281 | pkey = e->load_pubkey(key_id, passphrase); | 
| 280 | if (!pkey) | 282 | if (!pkey) | 
| 281 | { | 283 | { | 
| @@ -286,8 +288,6 @@ EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, | |||
| 286 | return pkey; | 288 | return pkey; | 
| 287 | } | 289 | } | 
| 288 | 290 | ||
| 289 | /* Initialise a engine type for use (or up its functional reference count | ||
| 290 | * if it's already in use). */ | ||
| 291 | int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) | 291 | int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) | 
| 292 | { | 292 | { | 
| 293 | if(e == NULL) | 293 | if(e == NULL) | 
| @@ -298,15 +298,16 @@ int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) | |||
| 298 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 298 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 
| 299 | if(e->struct_ref == 0) | 299 | if(e->struct_ref == 0) | 
| 300 | { | 300 | { | 
| 301 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 301 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_REFERENCE); | 302 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_REFERENCE); | 
| 302 | return 0; | 303 | return 0; | 
| 303 | } | 304 | } | 
| 305 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 304 | if (!e->ctrl) | 306 | if (!e->ctrl) | 
| 305 | { | 307 | { | 
| 306 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_CONTROL_FUNCTION); | 308 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_CONTROL_FUNCTION); | 
| 307 | return 0; | 309 | return 0; | 
| 308 | } | 310 | } | 
| 309 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 310 | return e->ctrl(cmd, i, p, f); | 311 | return e->ctrl(cmd, i, p, f); | 
| 311 | } | 312 | } | 
| 312 | 313 | ||
| diff --git a/src/lib/libcrypto/err/Makefile.ssl b/src/lib/libcrypto/err/Makefile.ssl index cf94f406e4..58218d1cea 100644 --- a/src/lib/libcrypto/err/Makefile.ssl +++ b/src/lib/libcrypto/err/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/err/err.c b/src/lib/libcrypto/err/err.c index 99272e437c..839f4ab81a 100644 --- a/src/lib/libcrypto/err/err.c +++ b/src/lib/libcrypto/err/err.c | |||
| @@ -389,20 +389,18 @@ void ERR_put_error(int lib, int func, int reason, const char *file, | |||
| 389 | 389 | ||
| 390 | void ERR_clear_error(void) | 390 | void ERR_clear_error(void) | 
| 391 | { | 391 | { | 
| 392 | int i; | ||
| 392 | ERR_STATE *es; | 393 | ERR_STATE *es; | 
| 393 | 394 | ||
| 394 | es=ERR_get_state(); | 395 | es=ERR_get_state(); | 
| 395 | 396 | ||
| 396 | #if 0 | ||
| 397 | /* hmm... is this needed */ | ||
| 398 | for (i=0; i<ERR_NUM_ERRORS; i++) | 397 | for (i=0; i<ERR_NUM_ERRORS; i++) | 
| 399 | { | 398 | { | 
| 400 | es->err_buffer[i]=0; | 399 | es->err_buffer[i]=0; | 
| 400 | err_clear_data(es,i); | ||
| 401 | es->err_file[i]=NULL; | 401 | es->err_file[i]=NULL; | 
| 402 | es->err_line[i]= -1; | 402 | es->err_line[i]= -1; | 
| 403 | err_clear_data(es,i); | ||
| 404 | } | 403 | } | 
| 405 | #endif | ||
| 406 | es->top=es->bottom=0; | 404 | es->top=es->bottom=0; | 
| 407 | } | 405 | } | 
| 408 | 406 | ||
| @@ -464,7 +462,14 @@ static unsigned long get_error_values(int inc, const char **file, int *line, | |||
| 464 | } | 462 | } | 
| 465 | } | 463 | } | 
| 466 | 464 | ||
| 467 | if (data != NULL) | 465 | if (data == NULL) | 
| 466 | { | ||
| 467 | if (inc) | ||
| 468 | { | ||
| 469 | err_clear_data(es, i); | ||
| 470 | } | ||
| 471 | } | ||
| 472 | else | ||
| 468 | { | 473 | { | 
| 469 | if (es->err_data[i] == NULL) | 474 | if (es->err_data[i] == NULL) | 
| 470 | { | 475 | { | 
| @@ -749,8 +754,9 @@ void ERR_set_error_data(char *data, int flags) | |||
| 749 | if (i == 0) | 754 | if (i == 0) | 
| 750 | i=ERR_NUM_ERRORS-1; | 755 | i=ERR_NUM_ERRORS-1; | 
| 751 | 756 | ||
| 757 | err_clear_data(es,i); | ||
| 752 | es->err_data[i]=data; | 758 | es->err_data[i]=data; | 
| 753 | es->err_data_flags[es->top]=flags; | 759 | es->err_data_flags[i]=flags; | 
| 754 | } | 760 | } | 
| 755 | 761 | ||
| 756 | void ERR_add_error_data(int num, ...) | 762 | void ERR_add_error_data(int num, ...) | 
| @@ -759,7 +765,7 @@ void ERR_add_error_data(int num, ...) | |||
| 759 | int i,n,s; | 765 | int i,n,s; | 
| 760 | char *str,*p,*a; | 766 | char *str,*p,*a; | 
| 761 | 767 | ||
| 762 | s=64; | 768 | s=80; | 
| 763 | str=OPENSSL_malloc(s+1); | 769 | str=OPENSSL_malloc(s+1); | 
| 764 | if (str == NULL) return; | 770 | if (str == NULL) return; | 
| 765 | str[0]='\0'; | 771 | str[0]='\0'; | 
| diff --git a/src/lib/libcrypto/evp/Makefile.ssl b/src/lib/libcrypto/evp/Makefile.ssl index ad39fcc9e7..624168031d 100644 --- a/src/lib/libcrypto/evp/Makefile.ssl +++ b/src/lib/libcrypto/evp/Makefile.ssl | |||
| @@ -58,7 +58,8 @@ all: lib | |||
| 58 | 58 | ||
| 59 | lib: $(LIBOBJ) | 59 | lib: $(LIBOBJ) | 
| 60 | $(AR) $(LIB) $(LIBOBJ) | 60 | $(AR) $(LIB) $(LIBOBJ) | 
| 61 | $(RANLIB) $(LIB) | 61 | @echo You may get an error following this line. Please ignore. | 
| 62 | - $(RANLIB) $(LIB) | ||
| 62 | @touch lib | 63 | @touch lib | 
| 63 | 64 | ||
| 64 | files: | 65 | files: | 
| diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h index 62350dfd69..76d417b44a 100644 --- a/src/lib/libcrypto/evp/evp.h +++ b/src/lib/libcrypto/evp/evp.h | |||
| @@ -462,12 +462,20 @@ typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
| 462 | ASN1_TYPE *param, EVP_CIPHER *cipher, | 462 | ASN1_TYPE *param, EVP_CIPHER *cipher, | 
| 463 | EVP_MD *md, int en_de); | 463 | EVP_MD *md, int en_de); | 
| 464 | 464 | ||
| 465 | #ifndef NO_RSA | ||
| 465 | #define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ | 466 | #define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ | 
| 466 | (char *)(rsa)) | 467 | (char *)(rsa)) | 
| 468 | #endif | ||
| 469 | |||
| 470 | #ifndef NO_DSA | ||
| 467 | #define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ | 471 | #define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ | 
| 468 | (char *)(dsa)) | 472 | (char *)(dsa)) | 
| 473 | #endif | ||
| 474 | |||
| 475 | #ifndef NO_DH | ||
| 469 | #define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ | 476 | #define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ | 
| 470 | (char *)(dh)) | 477 | (char *)(dh)) | 
| 478 | #endif | ||
| 471 | 479 | ||
| 472 | /* Add some extra combinations */ | 480 | /* Add some extra combinations */ | 
| 473 | #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) | 481 | #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) | 
| @@ -611,17 +619,29 @@ void BIO_set_cipher(BIO *b,const EVP_CIPHER *c,unsigned char *k, | |||
| 611 | #endif | 619 | #endif | 
| 612 | 620 | ||
| 613 | EVP_MD *EVP_md_null(void); | 621 | EVP_MD *EVP_md_null(void); | 
| 622 | #ifndef NO_MD2 | ||
| 614 | EVP_MD *EVP_md2(void); | 623 | EVP_MD *EVP_md2(void); | 
| 624 | #endif | ||
| 625 | #ifndef NO_MD4 | ||
| 615 | EVP_MD *EVP_md4(void); | 626 | EVP_MD *EVP_md4(void); | 
| 627 | #endif | ||
| 628 | #ifndef NO_MD5 | ||
| 616 | EVP_MD *EVP_md5(void); | 629 | EVP_MD *EVP_md5(void); | 
| 630 | #endif | ||
| 631 | #ifndef NO_SHA | ||
| 617 | EVP_MD *EVP_sha(void); | 632 | EVP_MD *EVP_sha(void); | 
| 618 | EVP_MD *EVP_sha1(void); | 633 | EVP_MD *EVP_sha1(void); | 
| 619 | EVP_MD *EVP_dss(void); | 634 | EVP_MD *EVP_dss(void); | 
| 620 | EVP_MD *EVP_dss1(void); | 635 | EVP_MD *EVP_dss1(void); | 
| 636 | #endif | ||
| 637 | #ifndef NO_MDC2 | ||
| 621 | EVP_MD *EVP_mdc2(void); | 638 | EVP_MD *EVP_mdc2(void); | 
| 639 | #endif | ||
| 640 | #ifndef NO_RIPEMD | ||
| 622 | EVP_MD *EVP_ripemd160(void); | 641 | EVP_MD *EVP_ripemd160(void); | 
| 623 | 642 | #endif | |
| 624 | EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ | 643 | EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ | 
| 644 | #ifndef NO_DES | ||
| 625 | EVP_CIPHER *EVP_des_ecb(void); | 645 | EVP_CIPHER *EVP_des_ecb(void); | 
| 626 | EVP_CIPHER *EVP_des_ede(void); | 646 | EVP_CIPHER *EVP_des_ede(void); | 
| 627 | EVP_CIPHER *EVP_des_ede3(void); | 647 | EVP_CIPHER *EVP_des_ede3(void); | 
| @@ -635,31 +655,43 @@ EVP_CIPHER *EVP_des_cbc(void); | |||
| 635 | EVP_CIPHER *EVP_des_ede_cbc(void); | 655 | EVP_CIPHER *EVP_des_ede_cbc(void); | 
| 636 | EVP_CIPHER *EVP_des_ede3_cbc(void); | 656 | EVP_CIPHER *EVP_des_ede3_cbc(void); | 
| 637 | EVP_CIPHER *EVP_desx_cbc(void); | 657 | EVP_CIPHER *EVP_desx_cbc(void); | 
| 658 | #endif | ||
| 659 | #ifndef NO_RC4 | ||
| 638 | EVP_CIPHER *EVP_rc4(void); | 660 | EVP_CIPHER *EVP_rc4(void); | 
| 639 | EVP_CIPHER *EVP_rc4_40(void); | 661 | EVP_CIPHER *EVP_rc4_40(void); | 
| 662 | #endif | ||
| 663 | #ifndef NO_IDEA | ||
| 640 | EVP_CIPHER *EVP_idea_ecb(void); | 664 | EVP_CIPHER *EVP_idea_ecb(void); | 
| 641 | EVP_CIPHER *EVP_idea_cfb(void); | 665 | EVP_CIPHER *EVP_idea_cfb(void); | 
| 642 | EVP_CIPHER *EVP_idea_ofb(void); | 666 | EVP_CIPHER *EVP_idea_ofb(void); | 
| 643 | EVP_CIPHER *EVP_idea_cbc(void); | 667 | EVP_CIPHER *EVP_idea_cbc(void); | 
| 668 | #endif | ||
| 669 | #ifndef NO_RC2 | ||
| 644 | EVP_CIPHER *EVP_rc2_ecb(void); | 670 | EVP_CIPHER *EVP_rc2_ecb(void); | 
| 645 | EVP_CIPHER *EVP_rc2_cbc(void); | 671 | EVP_CIPHER *EVP_rc2_cbc(void); | 
| 646 | EVP_CIPHER *EVP_rc2_40_cbc(void); | 672 | EVP_CIPHER *EVP_rc2_40_cbc(void); | 
| 647 | EVP_CIPHER *EVP_rc2_64_cbc(void); | 673 | EVP_CIPHER *EVP_rc2_64_cbc(void); | 
| 648 | EVP_CIPHER *EVP_rc2_cfb(void); | 674 | EVP_CIPHER *EVP_rc2_cfb(void); | 
| 649 | EVP_CIPHER *EVP_rc2_ofb(void); | 675 | EVP_CIPHER *EVP_rc2_ofb(void); | 
| 676 | #endif | ||
| 677 | #ifndef NO_BF | ||
| 650 | EVP_CIPHER *EVP_bf_ecb(void); | 678 | EVP_CIPHER *EVP_bf_ecb(void); | 
| 651 | EVP_CIPHER *EVP_bf_cbc(void); | 679 | EVP_CIPHER *EVP_bf_cbc(void); | 
| 652 | EVP_CIPHER *EVP_bf_cfb(void); | 680 | EVP_CIPHER *EVP_bf_cfb(void); | 
| 653 | EVP_CIPHER *EVP_bf_ofb(void); | 681 | EVP_CIPHER *EVP_bf_ofb(void); | 
| 682 | #endif | ||
| 683 | #ifndef NO_CAST | ||
| 654 | EVP_CIPHER *EVP_cast5_ecb(void); | 684 | EVP_CIPHER *EVP_cast5_ecb(void); | 
| 655 | EVP_CIPHER *EVP_cast5_cbc(void); | 685 | EVP_CIPHER *EVP_cast5_cbc(void); | 
| 656 | EVP_CIPHER *EVP_cast5_cfb(void); | 686 | EVP_CIPHER *EVP_cast5_cfb(void); | 
| 657 | EVP_CIPHER *EVP_cast5_ofb(void); | 687 | EVP_CIPHER *EVP_cast5_ofb(void); | 
| 688 | #endif | ||
| 689 | #ifndef NO_RC5 | ||
| 658 | EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); | 690 | EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); | 
| 659 | EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); | 691 | EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); | 
| 660 | EVP_CIPHER *EVP_rc5_32_12_16_cfb(void); | 692 | EVP_CIPHER *EVP_rc5_32_12_16_cfb(void); | 
| 661 | EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); | 693 | EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); | 
| 662 | 694 | #endif | |
| 663 | void OpenSSL_add_all_algorithms(void); | 695 | void OpenSSL_add_all_algorithms(void); | 
| 664 | void OpenSSL_add_all_ciphers(void); | 696 | void OpenSSL_add_all_ciphers(void); | 
| 665 | void OpenSSL_add_all_digests(void); | 697 | void OpenSSL_add_all_digests(void); | 
| diff --git a/src/lib/libcrypto/ex_data.c b/src/lib/libcrypto/ex_data.c index 1ee88da2a8..739e543d78 100644 --- a/src/lib/libcrypto/ex_data.c +++ b/src/lib/libcrypto/ex_data.c | |||
| @@ -101,7 +101,7 @@ int CRYPTO_get_ex_new_index(int idx, STACK_OF(CRYPTO_EX_DATA_FUNCS) **skp, long | |||
| 101 | ret=idx; | 101 | ret=idx; | 
| 102 | err: | 102 | err: | 
| 103 | MemCheck_on(); | 103 | MemCheck_on(); | 
| 104 | return(idx); | 104 | return(ret); | 
| 105 | } | 105 | } | 
| 106 | 106 | ||
| 107 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val) | 107 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val) | 
| diff --git a/src/lib/libcrypto/hmac/Makefile.ssl b/src/lib/libcrypto/hmac/Makefile.ssl index cf57311973..326339a90d 100644 --- a/src/lib/libcrypto/hmac/Makefile.ssl +++ b/src/lib/libcrypto/hmac/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/idea/Makefile.ssl b/src/lib/libcrypto/idea/Makefile.ssl index 5b334ce921..30302e0b9f 100644 --- a/src/lib/libcrypto/idea/Makefile.ssl +++ b/src/lib/libcrypto/idea/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/lhash/Makefile.ssl b/src/lib/libcrypto/lhash/Makefile.ssl index 6c3d442e22..79849d7d6e 100644 --- a/src/lib/libcrypto/lhash/Makefile.ssl +++ b/src/lib/libcrypto/lhash/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/md2/Makefile.ssl b/src/lib/libcrypto/md2/Makefile.ssl index d46c73a9b9..269628d739 100644 --- a/src/lib/libcrypto/md2/Makefile.ssl +++ b/src/lib/libcrypto/md2/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/md4/Makefile.ssl b/src/lib/libcrypto/md4/Makefile.ssl index 6ee3ca88ed..646607274e 100644 --- a/src/lib/libcrypto/md4/Makefile.ssl +++ b/src/lib/libcrypto/md4/Makefile.ssl | |||
| @@ -40,7 +40,8 @@ all: lib | |||
| 40 | 40 | ||
| 41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) | 
| 42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(AR) $(LIB) $(LIBOBJ) | 
| 43 | $(RANLIB) $(LIB) | 43 | @echo You may get an error following this line. Please ignore. | 
| 44 | - $(RANLIB) $(LIB) | ||
| 44 | @touch lib | 45 | @touch lib | 
| 45 | 46 | ||
| 46 | files: | 47 | files: | 
| diff --git a/src/lib/libcrypto/md5/Makefile.ssl b/src/lib/libcrypto/md5/Makefile.ssl index e8d0cced7f..784215579b 100644 --- a/src/lib/libcrypto/md5/Makefile.ssl +++ b/src/lib/libcrypto/md5/Makefile.ssl | |||
| @@ -50,7 +50,8 @@ all: lib | |||
| 50 | 50 | ||
| 51 | lib: $(LIBOBJ) | 51 | lib: $(LIBOBJ) | 
| 52 | $(AR) $(LIB) $(LIBOBJ) | 52 | $(AR) $(LIB) $(LIBOBJ) | 
| 53 | $(RANLIB) $(LIB) | 53 | @echo You may get an error following this line. Please ignore. | 
| 54 | - $(RANLIB) $(LIB) | ||
| 54 | @touch lib | 55 | @touch lib | 
| 55 | 56 | ||
| 56 | # elf | 57 | # elf | 
| diff --git a/src/lib/libcrypto/mdc2/Makefile.ssl b/src/lib/libcrypto/mdc2/Makefile.ssl index da11c4edea..a9b06b02bd 100644 --- a/src/lib/libcrypto/mdc2/Makefile.ssl +++ b/src/lib/libcrypto/mdc2/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/mem_dbg.c b/src/lib/libcrypto/mem_dbg.c index 866c53e73a..ef19d8f844 100644 --- a/src/lib/libcrypto/mem_dbg.c +++ b/src/lib/libcrypto/mem_dbg.c | |||
| @@ -81,7 +81,8 @@ static int mh_mode=CRYPTO_MEM_CHECK_OFF; | |||
| 81 | */ | 81 | */ | 
| 82 | 82 | ||
| 83 | static unsigned long order = 0; /* number of memory requests */ | 83 | static unsigned long order = 0; /* number of memory requests */ | 
| 84 | static LHASH *mh=NULL; /* hash-table of memory requests (address as key) */ | 84 | static LHASH *mh=NULL; /* hash-table of memory requests (address as key); | 
| 85 | * access requires MALLOC2 lock */ | ||
| 85 | 86 | ||
| 86 | 87 | ||
| 87 | typedef struct app_mem_info_st | 88 | typedef struct app_mem_info_st | 
| @@ -103,7 +104,8 @@ typedef struct app_mem_info_st | |||
| 103 | 104 | ||
| 104 | static LHASH *amih=NULL; /* hash-table with those app_mem_info_st's | 105 | static LHASH *amih=NULL; /* hash-table with those app_mem_info_st's | 
| 105 | * that are at the top of their thread's stack | 106 | * that are at the top of their thread's stack | 
| 106 | * (with `thread' as key) */ | 107 | * (with `thread' as key); | 
| 108 | * access requires MALLOC2 lock */ | ||
| 107 | 109 | ||
| 108 | typedef struct mem_st | 110 | typedef struct mem_st | 
| 109 | /* memory-block description */ | 111 | /* memory-block description */ | 
| @@ -128,7 +130,15 @@ static long options = /* extra information to be recorded */ | |||
| 128 | 0; | 130 | 0; | 
| 129 | 131 | ||
| 130 | 132 | ||
| 131 | static unsigned long disabling_thread = 0; | 133 | static unsigned int num_disable = 0; /* num_disable > 0 | 
| 134 | * iff | ||
| 135 | * mh_mode == CRYPTO_MEM_CHECK_ON (w/o ..._ENABLE) | ||
| 136 | */ | ||
| 137 | static unsigned long disabling_thread = 0; /* Valid iff num_disable > 0. | ||
| 138 | * CRYPTO_LOCK_MALLOC2 is locked | ||
| 139 | * exactly in this case (by the | ||
| 140 | * thread named in disabling_thread). | ||
| 141 | */ | ||
| 132 | 142 | ||
| 133 | int CRYPTO_mem_ctrl(int mode) | 143 | int CRYPTO_mem_ctrl(int mode) | 
| 134 | { | 144 | { | 
| @@ -137,22 +147,23 @@ int CRYPTO_mem_ctrl(int mode) | |||
| 137 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 147 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 
| 138 | switch (mode) | 148 | switch (mode) | 
| 139 | { | 149 | { | 
| 140 | /* for applications: */ | 150 | /* for applications (not to be called while multiple threads | 
| 151 | * use the library): */ | ||
| 141 | case CRYPTO_MEM_CHECK_ON: /* aka MemCheck_start() */ | 152 | case CRYPTO_MEM_CHECK_ON: /* aka MemCheck_start() */ | 
| 142 | mh_mode = CRYPTO_MEM_CHECK_ON|CRYPTO_MEM_CHECK_ENABLE; | 153 | mh_mode = CRYPTO_MEM_CHECK_ON|CRYPTO_MEM_CHECK_ENABLE; | 
| 143 | disabling_thread = 0; | 154 | num_disable = 0; | 
| 144 | break; | 155 | break; | 
| 145 | case CRYPTO_MEM_CHECK_OFF: /* aka MemCheck_stop() */ | 156 | case CRYPTO_MEM_CHECK_OFF: /* aka MemCheck_stop() */ | 
| 146 | mh_mode = 0; | 157 | mh_mode = 0; | 
| 147 | disabling_thread = 0; | 158 | num_disable = 0; /* should be true *before* MemCheck_stop is used, | 
| 159 | or there'll be a lot of confusion */ | ||
| 148 | break; | 160 | break; | 
| 149 | 161 | ||
| 150 | /* switch off temporarily (for library-internal use): */ | 162 | /* switch off temporarily (for library-internal use): */ | 
| 151 | case CRYPTO_MEM_CHECK_DISABLE: /* aka MemCheck_off() */ | 163 | case CRYPTO_MEM_CHECK_DISABLE: /* aka MemCheck_off() */ | 
| 152 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 164 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 
| 153 | { | 165 | { | 
| 154 | mh_mode&= ~CRYPTO_MEM_CHECK_ENABLE; | 166 | if (!num_disable || (disabling_thread != CRYPTO_thread_id())) /* otherwise we already have the MALLOC2 lock */ | 
| 155 | if (disabling_thread != CRYPTO_thread_id()) /* otherwise we already have the MALLOC2 lock */ | ||
| 156 | { | 167 | { | 
| 157 | /* Long-time lock CRYPTO_LOCK_MALLOC2 must not be claimed while | 168 | /* Long-time lock CRYPTO_LOCK_MALLOC2 must not be claimed while | 
| 158 | * we're holding CRYPTO_LOCK_MALLOC, or we'll deadlock if | 169 | * we're holding CRYPTO_LOCK_MALLOC, or we'll deadlock if | 
| @@ -169,18 +180,23 @@ int CRYPTO_mem_ctrl(int mode) | |||
| 169 | * OpenSSL threads. */ | 180 | * OpenSSL threads. */ | 
| 170 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2); | 181 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2); | 
| 171 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 182 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 
| 183 | mh_mode &= ~CRYPTO_MEM_CHECK_ENABLE; | ||
| 172 | disabling_thread=CRYPTO_thread_id(); | 184 | disabling_thread=CRYPTO_thread_id(); | 
| 173 | } | 185 | } | 
| 186 | num_disable++; | ||
| 174 | } | 187 | } | 
| 175 | break; | 188 | break; | 
| 176 | case CRYPTO_MEM_CHECK_ENABLE: /* aka MemCheck_on() */ | 189 | case CRYPTO_MEM_CHECK_ENABLE: /* aka MemCheck_on() */ | 
| 177 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 190 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 
| 178 | { | 191 | { | 
| 179 | mh_mode|=CRYPTO_MEM_CHECK_ENABLE; | 192 | if (num_disable) /* always true, or something is going wrong */ | 
| 180 | if (disabling_thread != 0) | ||
| 181 | { | 193 | { | 
| 182 | disabling_thread=0; | 194 | num_disable--; | 
| 183 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC2); | 195 | if (num_disable == 0) | 
| 196 | { | ||
| 197 | mh_mode|=CRYPTO_MEM_CHECK_ENABLE; | ||
| 198 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC2); | ||
| 199 | } | ||
| 184 | } | 200 | } | 
| 185 | } | 201 | } | 
| 186 | break; | 202 | break; | 
| @@ -198,12 +214,12 @@ int CRYPTO_is_mem_check_on(void) | |||
| 198 | 214 | ||
| 199 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 215 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 
| 200 | { | 216 | { | 
| 201 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 217 | CRYPTO_r_lock(CRYPTO_LOCK_MALLOC); | 
| 202 | 218 | ||
| 203 | ret = (mh_mode & CRYPTO_MEM_CHECK_ENABLE) | 219 | ret = (mh_mode & CRYPTO_MEM_CHECK_ENABLE) | 
| 204 | && disabling_thread != CRYPTO_thread_id(); | 220 | || (disabling_thread != CRYPTO_thread_id()); | 
| 205 | 221 | ||
| 206 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC); | 222 | CRYPTO_r_unlock(CRYPTO_LOCK_MALLOC); | 
| 207 | } | 223 | } | 
| 208 | return(ret); | 224 | return(ret); | 
| 209 | } | 225 | } | 
| @@ -293,7 +309,7 @@ int CRYPTO_push_info_(const char *info, const char *file, int line) | |||
| 293 | 309 | ||
| 294 | if (is_MemCheck_on()) | 310 | if (is_MemCheck_on()) | 
| 295 | { | 311 | { | 
| 296 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 312 | MemCheck_off(); /* obtain MALLOC2 lock */ | 
| 297 | 313 | ||
| 298 | if ((ami = (APP_INFO *)OPENSSL_malloc(sizeof(APP_INFO))) == NULL) | 314 | if ((ami = (APP_INFO *)OPENSSL_malloc(sizeof(APP_INFO))) == NULL) | 
| 299 | { | 315 | { | 
| @@ -330,7 +346,7 @@ int CRYPTO_push_info_(const char *info, const char *file, int line) | |||
| 330 | ami->next=amim; | 346 | ami->next=amim; | 
| 331 | } | 347 | } | 
| 332 | err: | 348 | err: | 
| 333 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 349 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 334 | } | 350 | } | 
| 335 | 351 | ||
| 336 | return(ret); | 352 | return(ret); | 
| @@ -342,11 +358,11 @@ int CRYPTO_pop_info(void) | |||
| 342 | 358 | ||
| 343 | if (is_MemCheck_on()) /* _must_ be true, or something went severely wrong */ | 359 | if (is_MemCheck_on()) /* _must_ be true, or something went severely wrong */ | 
| 344 | { | 360 | { | 
| 345 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 361 | MemCheck_off(); /* obtain MALLOC2 lock */ | 
| 346 | 362 | ||
| 347 | ret=(pop_info() != NULL); | 363 | ret=(pop_info() != NULL); | 
| 348 | 364 | ||
| 349 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 365 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 350 | } | 366 | } | 
| 351 | return(ret); | 367 | return(ret); | 
| 352 | } | 368 | } | 
| @@ -357,12 +373,12 @@ int CRYPTO_remove_all_info(void) | |||
| 357 | 373 | ||
| 358 | if (is_MemCheck_on()) /* _must_ be true */ | 374 | if (is_MemCheck_on()) /* _must_ be true */ | 
| 359 | { | 375 | { | 
| 360 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 376 | MemCheck_off(); /* obtain MALLOC2 lock */ | 
| 361 | 377 | ||
| 362 | while(pop_info() != NULL) | 378 | while(pop_info() != NULL) | 
| 363 | ret++; | 379 | ret++; | 
| 364 | 380 | ||
| 365 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 381 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 366 | } | 382 | } | 
| 367 | return(ret); | 383 | return(ret); | 
| 368 | } | 384 | } | 
| @@ -385,11 +401,12 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line, | |||
| 385 | 401 | ||
| 386 | if (is_MemCheck_on()) | 402 | if (is_MemCheck_on()) | 
| 387 | { | 403 | { | 
| 388 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 404 | MemCheck_off(); /* make sure we hold MALLOC2 lock */ | 
| 389 | if ((m=(MEM *)OPENSSL_malloc(sizeof(MEM))) == NULL) | 405 | if ((m=(MEM *)OPENSSL_malloc(sizeof(MEM))) == NULL) | 
| 390 | { | 406 | { | 
| 391 | OPENSSL_free(addr); | 407 | OPENSSL_free(addr); | 
| 392 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 408 | MemCheck_on(); /* release MALLOC2 lock | 
| 409 | * if num_disabled drops to 0 */ | ||
| 393 | return; | 410 | return; | 
| 394 | } | 411 | } | 
| 395 | if (mh == NULL) | 412 | if (mh == NULL) | 
| @@ -448,7 +465,8 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line, | |||
| 448 | OPENSSL_free(mm); | 465 | OPENSSL_free(mm); | 
| 449 | } | 466 | } | 
| 450 | err: | 467 | err: | 
| 451 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 468 | MemCheck_on(); /* release MALLOC2 lock | 
| 469 | * if num_disabled drops to 0 */ | ||
| 452 | } | 470 | } | 
| 453 | break; | 471 | break; | 
| 454 | } | 472 | } | 
| @@ -467,7 +485,7 @@ void CRYPTO_dbg_free(void *addr, int before_p) | |||
| 467 | 485 | ||
| 468 | if (is_MemCheck_on() && (mh != NULL)) | 486 | if (is_MemCheck_on() && (mh != NULL)) | 
| 469 | { | 487 | { | 
| 470 | MemCheck_off(); | 488 | MemCheck_off(); /* make sure we hold MALLOC2 lock */ | 
| 471 | 489 | ||
| 472 | m.addr=addr; | 490 | m.addr=addr; | 
| 473 | mp=(MEM *)lh_delete(mh,(char *)&m); | 491 | mp=(MEM *)lh_delete(mh,(char *)&m); | 
| @@ -484,7 +502,8 @@ void CRYPTO_dbg_free(void *addr, int before_p) | |||
| 484 | OPENSSL_free(mp); | 502 | OPENSSL_free(mp); | 
| 485 | } | 503 | } | 
| 486 | 504 | ||
| 487 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 505 | MemCheck_on(); /* release MALLOC2 lock | 
| 506 | * if num_disabled drops to 0 */ | ||
| 488 | } | 507 | } | 
| 489 | break; | 508 | break; | 
| 490 | case 1: | 509 | case 1: | 
| @@ -518,7 +537,7 @@ void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, | |||
| 518 | 537 | ||
| 519 | if (is_MemCheck_on()) | 538 | if (is_MemCheck_on()) | 
| 520 | { | 539 | { | 
| 521 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 540 | MemCheck_off(); /* make sure we hold MALLOC2 lock */ | 
| 522 | 541 | ||
| 523 | m.addr=addr1; | 542 | m.addr=addr1; | 
| 524 | mp=(MEM *)lh_delete(mh,(char *)&m); | 543 | mp=(MEM *)lh_delete(mh,(char *)&m); | 
| @@ -535,7 +554,8 @@ void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, | |||
| 535 | lh_insert(mh,(char *)mp); | 554 | lh_insert(mh,(char *)mp); | 
| 536 | } | 555 | } | 
| 537 | 556 | ||
| 538 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 557 | MemCheck_on(); /* release MALLOC2 lock | 
| 558 | * if num_disabled drops to 0 */ | ||
| 539 | } | 559 | } | 
| 540 | break; | 560 | break; | 
| 541 | } | 561 | } | 
| @@ -642,10 +662,12 @@ void CRYPTO_mem_leaks(BIO *b) | |||
| 642 | 662 | ||
| 643 | if (mh == NULL && amih == NULL) | 663 | if (mh == NULL && amih == NULL) | 
| 644 | return; | 664 | return; | 
| 665 | |||
| 666 | MemCheck_off(); /* obtain MALLOC2 lock */ | ||
| 667 | |||
| 645 | ml.bio=b; | 668 | ml.bio=b; | 
| 646 | ml.bytes=0; | 669 | ml.bytes=0; | 
| 647 | ml.chunks=0; | 670 | ml.chunks=0; | 
| 648 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | ||
| 649 | if (mh != NULL) | 671 | if (mh != NULL) | 
| 650 | lh_doall_arg(mh,(void (*)())print_leak,(char *)&ml); | 672 | lh_doall_arg(mh,(void (*)())print_leak,(char *)&ml); | 
| 651 | if (ml.chunks != 0) | 673 | if (ml.chunks != 0) | 
| @@ -671,7 +693,15 @@ void CRYPTO_mem_leaks(BIO *b) | |||
| 671 | * void_fn_to_char kludge in CRYPTO_mem_leaks_cb. | 693 | * void_fn_to_char kludge in CRYPTO_mem_leaks_cb. | 
| 672 | * Otherwise the code police will come and get us.) | 694 | * Otherwise the code police will come and get us.) | 
| 673 | */ | 695 | */ | 
| 696 | int old_mh_mode; | ||
| 697 | |||
| 674 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 698 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 
| 699 | |||
| 700 | /* avoid deadlock when lh_free() uses CRYPTO_dbg_free(), | ||
| 701 | * which uses CRYPTO_is_mem_check_on */ | ||
| 702 | old_mh_mode = mh_mode; | ||
| 703 | mh_mode = CRYPTO_MEM_CHECK_OFF; | ||
| 704 | |||
| 675 | if (mh != NULL) | 705 | if (mh != NULL) | 
| 676 | { | 706 | { | 
| 677 | lh_free(mh); | 707 | lh_free(mh); | 
| @@ -685,15 +715,11 @@ void CRYPTO_mem_leaks(BIO *b) | |||
| 685 | amih = NULL; | 715 | amih = NULL; | 
| 686 | } | 716 | } | 
| 687 | } | 717 | } | 
| 718 | |||
| 719 | mh_mode = old_mh_mode; | ||
| 688 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC); | 720 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC); | 
| 689 | } | 721 | } | 
| 690 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 722 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 691 | |||
| 692 | #if 0 | ||
| 693 | lh_stats_bio(mh,b); | ||
| 694 | lh_node_stats_bio(mh,b); | ||
| 695 | lh_node_usage_stats_bio(mh,b); | ||
| 696 | #endif | ||
| 697 | } | 723 | } | 
| 698 | 724 | ||
| 699 | #ifndef NO_FP_API | 725 | #ifndef NO_FP_API | 
| diff --git a/src/lib/libcrypto/objects/Makefile.ssl b/src/lib/libcrypto/objects/Makefile.ssl index bdb7aa94dc..6746ad21e7 100644 --- a/src/lib/libcrypto/objects/Makefile.ssl +++ b/src/lib/libcrypto/objects/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: obj_dat.h lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/opensslv.h b/src/lib/libcrypto/opensslv.h index 6b5aedeea6..dc50f6d7da 100644 --- a/src/lib/libcrypto/opensslv.h +++ b/src/lib/libcrypto/opensslv.h | |||
| @@ -25,8 +25,8 @@ | |||
| 25 | * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for | 25 | * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for | 
| 26 | * major minor fix final patch/beta) | 26 | * major minor fix final patch/beta) | 
| 27 | */ | 27 | */ | 
| 28 | #define OPENSSL_VERSION_NUMBER 0x0090600fL | 28 | #define OPENSSL_VERSION_NUMBER 0x0090601fL | 
| 29 | #define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6 [engine] 24 Sep 2000" | 29 | #define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6a [engine] 5 Apr 2001" | 
| 30 | #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT | 30 | #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT | 
| 31 | 31 | ||
| 32 | 32 | ||
| diff --git a/src/lib/libcrypto/pem/Makefile.ssl b/src/lib/libcrypto/pem/Makefile.ssl index 97af8255a3..31db6b65a1 100644 --- a/src/lib/libcrypto/pem/Makefile.ssl +++ b/src/lib/libcrypto/pem/Makefile.ssl | |||
| @@ -40,7 +40,8 @@ all: lib | |||
| 40 | 40 | ||
| 41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) | 
| 42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(AR) $(LIB) $(LIBOBJ) | 
| 43 | $(RANLIB) $(LIB) | 43 | @echo You may get an error following this line. Please ignore. | 
| 44 | - $(RANLIB) $(LIB) | ||
| 44 | @touch lib | 45 | @touch lib | 
| 45 | 46 | ||
| 46 | files: | 47 | files: | 
| diff --git a/src/lib/libcrypto/pem/pem_info.c b/src/lib/libcrypto/pem/pem_info.c index 1c5c6dea00..f1694f1125 100644 --- a/src/lib/libcrypto/pem/pem_info.c +++ b/src/lib/libcrypto/pem/pem_info.c | |||
| @@ -305,7 +305,7 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, | |||
| 305 | { | 305 | { | 
| 306 | if ( (xi->enc_data!=NULL) && (xi->enc_len>0) ) | 306 | if ( (xi->enc_data!=NULL) && (xi->enc_len>0) ) | 
| 307 | { | 307 | { | 
| 308 | /* copy from wierdo names into more normal things */ | 308 | /* copy from weirdo names into more normal things */ | 
| 309 | iv=xi->enc_cipher.iv; | 309 | iv=xi->enc_cipher.iv; | 
| 310 | data=(unsigned char *)xi->enc_data; | 310 | data=(unsigned char *)xi->enc_data; | 
| 311 | i=xi->enc_len; | 311 | i=xi->enc_len; | 
| diff --git a/src/lib/libcrypto/pkcs12/Makefile.ssl b/src/lib/libcrypto/pkcs12/Makefile.ssl index 67869f204f..d745c53621 100644 --- a/src/lib/libcrypto/pkcs12/Makefile.ssl +++ b/src/lib/libcrypto/pkcs12/Makefile.ssl | |||
| @@ -45,7 +45,8 @@ all: lib | |||
| 45 | 45 | ||
| 46 | lib: $(LIBOBJ) | 46 | lib: $(LIBOBJ) | 
| 47 | $(AR) $(LIB) $(LIBOBJ) | 47 | $(AR) $(LIB) $(LIBOBJ) | 
| 48 | $(RANLIB) $(LIB) | 48 | @echo You may get an error following this line. Please ignore. | 
| 49 | - $(RANLIB) $(LIB) | ||
| 49 | @touch lib | 50 | @touch lib | 
| 50 | 51 | ||
| 51 | files: | 52 | files: | 
| diff --git a/src/lib/libcrypto/pkcs12/p12_attr.c b/src/lib/libcrypto/pkcs12/p12_attr.c index f1a210b5d2..a16a97d03d 100644 --- a/src/lib/libcrypto/pkcs12/p12_attr.c +++ b/src/lib/libcrypto/pkcs12/p12_attr.c | |||
| @@ -151,7 +151,7 @@ int PKCS12_add_friendlyname_asc (PKCS12_SAFEBAG *bag, const char *name, | |||
| 151 | { | 151 | { | 
| 152 | unsigned char *uniname; | 152 | unsigned char *uniname; | 
| 153 | int ret, unilen; | 153 | int ret, unilen; | 
| 154 | if (!asc2uni(name, &uniname, &unilen)) { | 154 | if (!asc2uni(name, namelen, &uniname, &unilen)) { | 
| 155 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC, | 155 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC, | 
| 156 | ERR_R_MALLOC_FAILURE); | 156 | ERR_R_MALLOC_FAILURE); | 
| 157 | return 0; | 157 | return 0; | 
| diff --git a/src/lib/libcrypto/pkcs12/p12_key.c b/src/lib/libcrypto/pkcs12/p12_key.c index b042dcf05c..a4fd5b98ec 100644 --- a/src/lib/libcrypto/pkcs12/p12_key.c +++ b/src/lib/libcrypto/pkcs12/p12_key.c | |||
| @@ -84,7 +84,7 @@ int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, | |||
| 84 | if(!pass) { | 84 | if(!pass) { | 
| 85 | unipass = NULL; | 85 | unipass = NULL; | 
| 86 | uniplen = 0; | 86 | uniplen = 0; | 
| 87 | } else if (!asc2uni(pass, &unipass, &uniplen)) { | 87 | } else if (!asc2uni(pass, passlen, &unipass, &uniplen)) { | 
| 88 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE); | 88 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE); | 
| 89 | return 0; | 89 | return 0; | 
| 90 | } | 90 | } | 
| @@ -102,7 +102,7 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, | |||
| 102 | const EVP_MD *md_type) | 102 | const EVP_MD *md_type) | 
| 103 | { | 103 | { | 
| 104 | unsigned char *B, *D, *I, *p, *Ai; | 104 | unsigned char *B, *D, *I, *p, *Ai; | 
| 105 | int Slen, Plen, Ilen; | 105 | int Slen, Plen, Ilen, Ijlen; | 
| 106 | int i, j, u, v; | 106 | int i, j, u, v; | 
| 107 | BIGNUM *Ij, *Bpl1; /* These hold Ij and B + 1 */ | 107 | BIGNUM *Ij, *Bpl1; /* These hold Ij and B + 1 */ | 
| 108 | EVP_MD_CTX ctx; | 108 | EVP_MD_CTX ctx; | 
| @@ -180,10 +180,17 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, | |||
| 180 | BN_bin2bn (I + j, v, Ij); | 180 | BN_bin2bn (I + j, v, Ij); | 
| 181 | BN_add (Ij, Ij, Bpl1); | 181 | BN_add (Ij, Ij, Bpl1); | 
| 182 | BN_bn2bin (Ij, B); | 182 | BN_bn2bin (Ij, B); | 
| 183 | Ijlen = BN_num_bytes (Ij); | ||
| 183 | /* If more than 2^(v*8) - 1 cut off MSB */ | 184 | /* If more than 2^(v*8) - 1 cut off MSB */ | 
| 184 | if (BN_num_bytes (Ij) > v) { | 185 | if (Ijlen > v) { | 
| 185 | BN_bn2bin (Ij, B); | 186 | BN_bn2bin (Ij, B); | 
| 186 | memcpy (I + j, B + 1, v); | 187 | memcpy (I + j, B + 1, v); | 
| 188 | #ifndef PKCS12_BROKEN_KEYGEN | ||
| 189 | /* If less than v bytes pad with zeroes */ | ||
| 190 | } else if (Ijlen < v) { | ||
| 191 | memset(I + j, 0, v - Ijlen); | ||
| 192 | BN_bn2bin(Ij, I + j + v - Ijlen); | ||
| 193 | #endif | ||
| 187 | } else BN_bn2bin (Ij, I + j); | 194 | } else BN_bn2bin (Ij, I + j); | 
| 188 | } | 195 | } | 
| 189 | } | 196 | } | 
| diff --git a/src/lib/libcrypto/pkcs12/p12_kiss.c b/src/lib/libcrypto/pkcs12/p12_kiss.c index 1fbbd6c99f..5d67f19b45 100644 --- a/src/lib/libcrypto/pkcs12/p12_kiss.c +++ b/src/lib/libcrypto/pkcs12/p12_kiss.c | |||
| @@ -264,6 +264,7 @@ static int parse_bag(PKCS12_SAFEBAG *bag, const char *pass, int passlen, | |||
| 264 | if (lkey) { | 264 | if (lkey) { | 
| 265 | *keymatch |= MATCH_CERT; | 265 | *keymatch |= MATCH_CERT; | 
| 266 | if (cert) *cert = x509; | 266 | if (cert) *cert = x509; | 
| 267 | else X509_free(x509); | ||
| 267 | } else { | 268 | } else { | 
| 268 | if(ca) sk_X509_push (*ca, x509); | 269 | if(ca) sk_X509_push (*ca, x509); | 
| 269 | else X509_free(x509); | 270 | else X509_free(x509); | 
| diff --git a/src/lib/libcrypto/pkcs12/p12_utl.c b/src/lib/libcrypto/pkcs12/p12_utl.c index 17f41b4549..2f1d1e534f 100644 --- a/src/lib/libcrypto/pkcs12/p12_utl.c +++ b/src/lib/libcrypto/pkcs12/p12_utl.c | |||
| @@ -62,30 +62,34 @@ | |||
| 62 | 62 | ||
| 63 | /* Cheap and nasty Unicode stuff */ | 63 | /* Cheap and nasty Unicode stuff */ | 
| 64 | 64 | ||
| 65 | unsigned char *asc2uni (const char *asc, unsigned char **uni, int *unilen) | 65 | unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen) | 
| 66 | { | 66 | { | 
| 67 | int ulen, i; | 67 | int ulen, i; | 
| 68 | unsigned char *unitmp; | 68 | unsigned char *unitmp; | 
| 69 | ulen = strlen(asc)*2 + 2; | 69 | if (asclen == -1) asclen = strlen(asc); | 
| 70 | if (!(unitmp = OPENSSL_malloc (ulen))) return NULL; | 70 | ulen = asclen*2 + 2; | 
| 71 | for (i = 0; i < ulen; i+=2) { | 71 | if (!(unitmp = OPENSSL_malloc(ulen))) return NULL; | 
| 72 | for (i = 0; i < ulen - 2; i+=2) { | ||
| 72 | unitmp[i] = 0; | 73 | unitmp[i] = 0; | 
| 73 | unitmp[i + 1] = asc[i>>1]; | 74 | unitmp[i + 1] = asc[i>>1]; | 
| 74 | } | 75 | } | 
| 76 | /* Make result double null terminated */ | ||
| 77 | unitmp[ulen - 2] = 0; | ||
| 78 | unitmp[ulen - 1] = 0; | ||
| 75 | if (unilen) *unilen = ulen; | 79 | if (unilen) *unilen = ulen; | 
| 76 | if (uni) *uni = unitmp; | 80 | if (uni) *uni = unitmp; | 
| 77 | return unitmp; | 81 | return unitmp; | 
| 78 | } | 82 | } | 
| 79 | 83 | ||
| 80 | char *uni2asc (unsigned char *uni, int unilen) | 84 | char *uni2asc(unsigned char *uni, int unilen) | 
| 81 | { | 85 | { | 
| 82 | int asclen, i; | 86 | int asclen, i; | 
| 83 | char *asctmp; | 87 | char *asctmp; | 
| 84 | asclen = unilen / 2; | 88 | asclen = unilen / 2; | 
| 85 | /* If no terminating zero allow for one */ | 89 | /* If no terminating zero allow for one */ | 
| 86 | if (uni[unilen - 1]) asclen++; | 90 | if (!unilen || uni[unilen - 1]) asclen++; | 
| 87 | uni++; | 91 | uni++; | 
| 88 | if (!(asctmp = OPENSSL_malloc (asclen))) return NULL; | 92 | if (!(asctmp = OPENSSL_malloc(asclen))) return NULL; | 
| 89 | for (i = 0; i < unilen; i+=2) asctmp[i>>1] = uni[i]; | 93 | for (i = 0; i < unilen; i+=2) asctmp[i>>1] = uni[i]; | 
| 90 | asctmp[asclen - 1] = 0; | 94 | asctmp[asclen - 1] = 0; | 
| 91 | return asctmp; | 95 | return asctmp; | 
| diff --git a/src/lib/libcrypto/pkcs12/pkcs12.h b/src/lib/libcrypto/pkcs12/pkcs12.h index 502fceff95..e529154f26 100644 --- a/src/lib/libcrypto/pkcs12/pkcs12.h +++ b/src/lib/libcrypto/pkcs12/pkcs12.h | |||
| @@ -247,7 +247,7 @@ int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, | |||
| 247 | EVP_MD *md_type); | 247 | EVP_MD *md_type); | 
| 248 | int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, | 248 | int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, | 
| 249 | int saltlen, EVP_MD *md_type); | 249 | int saltlen, EVP_MD *md_type); | 
| 250 | unsigned char *asc2uni(const char *asc, unsigned char **uni, int *unilen); | 250 | unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen); | 
| 251 | char *uni2asc(unsigned char *uni, int unilen); | 251 | char *uni2asc(unsigned char *uni, int unilen); | 
| 252 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp); | 252 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp); | 
| 253 | PKCS12_BAGS *PKCS12_BAGS_new(void); | 253 | PKCS12_BAGS *PKCS12_BAGS_new(void); | 
| diff --git a/src/lib/libcrypto/pkcs7/Makefile.ssl b/src/lib/libcrypto/pkcs7/Makefile.ssl index 6cd18b671e..37b72f0890 100644 --- a/src/lib/libcrypto/pkcs7/Makefile.ssl +++ b/src/lib/libcrypto/pkcs7/Makefile.ssl | |||
| @@ -58,7 +58,8 @@ verify: verify.o example.o lib | |||
| 58 | 58 | ||
| 59 | lib: $(LIBOBJ) | 59 | lib: $(LIBOBJ) | 
| 60 | $(AR) $(LIB) $(LIBOBJ) | 60 | $(AR) $(LIB) $(LIBOBJ) | 
| 61 | $(RANLIB) $(LIB) | 61 | @echo You may get an error following this line. Please ignore. | 
| 62 | - $(RANLIB) $(LIB) | ||
| 62 | @touch lib | 63 | @touch lib | 
| 63 | 64 | ||
| 64 | files: | 65 | files: | 
| diff --git a/src/lib/libcrypto/pkcs7/pk7_doit.c b/src/lib/libcrypto/pkcs7/pk7_doit.c index 099e9651c1..bf43d030ad 100644 --- a/src/lib/libcrypto/pkcs7/pk7_doit.c +++ b/src/lib/libcrypto/pkcs7/pk7_doit.c | |||
| @@ -370,7 +370,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert) | |||
| 370 | if (ri == NULL) { | 370 | if (ri == NULL) { | 
| 371 | PKCS7err(PKCS7_F_PKCS7_DATADECODE, | 371 | PKCS7err(PKCS7_F_PKCS7_DATADECODE, | 
| 372 | PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE); | 372 | PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE); | 
| 373 | return(NULL); | 373 | goto err; | 
| 374 | } | 374 | } | 
| 375 | 375 | ||
| 376 | jj=EVP_PKEY_size(pkey); | 376 | jj=EVP_PKEY_size(pkey); | 
| @@ -393,7 +393,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert) | |||
| 393 | BIO_get_cipher_ctx(etmp,&evp_ctx); | 393 | BIO_get_cipher_ctx(etmp,&evp_ctx); | 
| 394 | EVP_CipherInit(evp_ctx,evp_cipher,NULL,NULL,0); | 394 | EVP_CipherInit(evp_ctx,evp_cipher,NULL,NULL,0); | 
| 395 | if (EVP_CIPHER_asn1_to_param(evp_ctx,enc_alg->parameter) < 0) | 395 | if (EVP_CIPHER_asn1_to_param(evp_ctx,enc_alg->parameter) < 0) | 
| 396 | return(NULL); | 396 | goto err; | 
| 397 | 397 | ||
| 398 | if (jj != EVP_CIPHER_CTX_key_length(evp_ctx)) { | 398 | if (jj != EVP_CIPHER_CTX_key_length(evp_ctx)) { | 
| 399 | /* Some S/MIME clients don't use the same key | 399 | /* Some S/MIME clients don't use the same key | 
| @@ -588,8 +588,10 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) | |||
| 588 | pp=NULL; | 588 | pp=NULL; | 
| 589 | } | 589 | } | 
| 590 | 590 | ||
| 591 | #ifndef NO_DSA | ||
| 591 | if (si->pkey->type == EVP_PKEY_DSA) | 592 | if (si->pkey->type == EVP_PKEY_DSA) | 
| 592 | ctx_tmp.digest=EVP_dss1(); | 593 | ctx_tmp.digest=EVP_dss1(); | 
| 594 | #endif | ||
| 593 | 595 | ||
| 594 | if (!EVP_SignFinal(&ctx_tmp,(unsigned char *)buf->data, | 596 | if (!EVP_SignFinal(&ctx_tmp,(unsigned char *)buf->data, | 
| 595 | (unsigned int *)&buf->length,si->pkey)) | 597 | (unsigned int *)&buf->length,si->pkey)) | 
| @@ -783,7 +785,14 @@ for (ii=0; ii<md_len; ii++) printf("%02X",md_dat[ii]); printf(" calc\n"); | |||
| 783 | 785 | ||
| 784 | os=si->enc_digest; | 786 | os=si->enc_digest; | 
| 785 | pkey = X509_get_pubkey(x509); | 787 | pkey = X509_get_pubkey(x509); | 
| 788 | if (!pkey) | ||
| 789 | { | ||
| 790 | ret = -1; | ||
| 791 | goto err; | ||
| 792 | } | ||
| 793 | #ifndef NO_DSA | ||
| 786 | if(pkey->type == EVP_PKEY_DSA) mdc_tmp.digest=EVP_dss1(); | 794 | if(pkey->type == EVP_PKEY_DSA) mdc_tmp.digest=EVP_dss1(); | 
| 795 | #endif | ||
| 787 | 796 | ||
| 788 | i=EVP_VerifyFinal(&mdc_tmp,os->data,os->length, pkey); | 797 | i=EVP_VerifyFinal(&mdc_tmp,os->data,os->length, pkey); | 
| 789 | EVP_PKEY_free(pkey); | 798 | EVP_PKEY_free(pkey); | 
| diff --git a/src/lib/libcrypto/pkcs7/pk7_mime.c b/src/lib/libcrypto/pkcs7/pk7_mime.c index 994473c0bd..086d394270 100644 --- a/src/lib/libcrypto/pkcs7/pk7_mime.c +++ b/src/lib/libcrypto/pkcs7/pk7_mime.c | |||
| @@ -165,9 +165,9 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags) | |||
| 165 | } | 165 | } | 
| 166 | bound[32] = 0; | 166 | bound[32] = 0; | 
| 167 | BIO_printf(bio, "MIME-Version: 1.0\n"); | 167 | BIO_printf(bio, "MIME-Version: 1.0\n"); | 
| 168 | BIO_printf(bio, "Content-Type: multipart/signed ; "); | 168 | BIO_printf(bio, "Content-Type: multipart/signed;"); | 
| 169 | BIO_printf(bio, "protocol=\"application/x-pkcs7-signature\" ; "); | 169 | BIO_printf(bio, " protocol=\"application/x-pkcs7-signature\";"); | 
| 170 | BIO_printf(bio, "micalg=sha1 ; boundary=\"----%s\"\n\n", bound); | 170 | BIO_printf(bio, " micalg=sha1; boundary=\"----%s\"\n\n", bound); | 
| 171 | BIO_printf(bio, "This is an S/MIME signed message\n\n"); | 171 | BIO_printf(bio, "This is an S/MIME signed message\n\n"); | 
| 172 | /* Now write out the first part */ | 172 | /* Now write out the first part */ | 
| 173 | BIO_printf(bio, "------%s\n", bound); | 173 | BIO_printf(bio, "------%s\n", bound); | 
| diff --git a/src/lib/libcrypto/pkcs7/pk7_smime.c b/src/lib/libcrypto/pkcs7/pk7_smime.c index d716f9faeb..3d3214f5ee 100644 --- a/src/lib/libcrypto/pkcs7/pk7_smime.c +++ b/src/lib/libcrypto/pkcs7/pk7_smime.c | |||
| @@ -153,7 +153,7 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, | |||
| 153 | PKCS7_SIGNER_INFO *si; | 153 | PKCS7_SIGNER_INFO *si; | 
| 154 | X509_STORE_CTX cert_ctx; | 154 | X509_STORE_CTX cert_ctx; | 
| 155 | char buf[4096]; | 155 | char buf[4096]; | 
| 156 | int i, j=0, k; | 156 | int i, j=0, k, ret = 0; | 
| 157 | BIO *p7bio; | 157 | BIO *p7bio; | 
| 158 | BIO *tmpout; | 158 | BIO *tmpout; | 
| 159 | 159 | ||
| @@ -258,18 +258,15 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, | |||
| 258 | } | 258 | } | 
| 259 | } | 259 | } | 
| 260 | 260 | ||
| 261 | sk_X509_free(signers); | 261 | ret = 1; | 
| 262 | if(indata) BIO_pop(p7bio); | ||
| 263 | BIO_free_all(p7bio); | ||
| 264 | |||
| 265 | return 1; | ||
| 266 | 262 | ||
| 267 | err: | 263 | err: | 
| 268 | 264 | ||
| 265 | if(indata) BIO_pop(p7bio); | ||
| 266 | BIO_free_all(p7bio); | ||
| 269 | sk_X509_free(signers); | 267 | sk_X509_free(signers); | 
| 270 | BIO_free(p7bio); | ||
| 271 | 268 | ||
| 272 | return 0; | 269 | return ret; | 
| 273 | } | 270 | } | 
| 274 | 271 | ||
| 275 | STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags) | 272 | STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags) | 
| diff --git a/src/lib/libcrypto/rand/Makefile.ssl b/src/lib/libcrypto/rand/Makefile.ssl index 5f6199a35f..707eaac678 100644 --- a/src/lib/libcrypto/rand/Makefile.ssl +++ b/src/lib/libcrypto/rand/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/rand/md_rand.c b/src/lib/libcrypto/rand/md_rand.c index d167dea77d..567838f6c3 100644 --- a/src/lib/libcrypto/rand/md_rand.c +++ b/src/lib/libcrypto/rand/md_rand.c | |||
| @@ -482,12 +482,12 @@ static int ssleay_rand_bytes(unsigned char *buf, int num) | |||
| 482 | unpredictable */ | 482 | unpredictable */ | 
| 483 | static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) | 483 | static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) | 
| 484 | { | 484 | { | 
| 485 | int ret, err; | 485 | int ret; | 
| 486 | 486 | ||
| 487 | ret = RAND_bytes(buf, num); | 487 | ret = RAND_bytes(buf, num); | 
| 488 | if (ret == 0) | 488 | if (ret == 0) | 
| 489 | { | 489 | { | 
| 490 | err = ERR_peek_error(); | 490 | long err = ERR_peek_error(); | 
| 491 | if (ERR_GET_LIB(err) == ERR_LIB_RAND && | 491 | if (ERR_GET_LIB(err) == ERR_LIB_RAND && | 
| 492 | ERR_GET_REASON(err) == RAND_R_PRNG_NOT_SEEDED) | 492 | ERR_GET_REASON(err) == RAND_R_PRNG_NOT_SEEDED) | 
| 493 | (void)ERR_get_error(); | 493 | (void)ERR_get_error(); | 
| diff --git a/src/lib/libcrypto/rand/rand.h b/src/lib/libcrypto/rand/rand.h index eb9c8c034d..9c6052733e 100644 --- a/src/lib/libcrypto/rand/rand.h +++ b/src/lib/libcrypto/rand/rand.h | |||
| @@ -59,6 +59,8 @@ | |||
| 59 | #ifndef HEADER_RAND_H | 59 | #ifndef HEADER_RAND_H | 
| 60 | #define HEADER_RAND_H | 60 | #define HEADER_RAND_H | 
| 61 | 61 | ||
| 62 | #include <stdlib.h> | ||
| 63 | |||
| 62 | #ifdef __cplusplus | 64 | #ifdef __cplusplus | 
| 63 | extern "C" { | 65 | extern "C" { | 
| 64 | #endif | 66 | #endif | 
| @@ -89,7 +91,7 @@ void RAND_seed(const void *buf,int num); | |||
| 89 | void RAND_add(const void *buf,int num,double entropy); | 91 | void RAND_add(const void *buf,int num,double entropy); | 
| 90 | int RAND_load_file(const char *file,long max_bytes); | 92 | int RAND_load_file(const char *file,long max_bytes); | 
| 91 | int RAND_write_file(const char *file); | 93 | int RAND_write_file(const char *file); | 
| 92 | const char *RAND_file_name(char *file,int num); | 94 | const char *RAND_file_name(char *file,size_t num); | 
| 93 | int RAND_status(void); | 95 | int RAND_status(void); | 
| 94 | int RAND_egd(const char *path); | 96 | int RAND_egd(const char *path); | 
| 95 | int RAND_egd_bytes(const char *path,int bytes); | 97 | int RAND_egd_bytes(const char *path,int bytes); | 
| diff --git a/src/lib/libcrypto/rand/rand_egd.c b/src/lib/libcrypto/rand/rand_egd.c index 02a0d86fa3..79b5e6fa57 100644 --- a/src/lib/libcrypto/rand/rand_egd.c +++ b/src/lib/libcrypto/rand/rand_egd.c | |||
| @@ -74,7 +74,14 @@ int RAND_egd_bytes(const char *path,int bytes) | |||
| 74 | #include OPENSSL_UNISTD | 74 | #include OPENSSL_UNISTD | 
| 75 | #include <sys/types.h> | 75 | #include <sys/types.h> | 
| 76 | #include <sys/socket.h> | 76 | #include <sys/socket.h> | 
| 77 | #ifndef NO_SYS_UN_H | ||
| 77 | #include <sys/un.h> | 78 | #include <sys/un.h> | 
| 79 | #else | ||
| 80 | struct sockaddr_un { | ||
| 81 | short sun_family; /* AF_UNIX */ | ||
| 82 | char sun_path[108]; /* path name (gag) */ | ||
| 83 | }; | ||
| 84 | #endif /* NO_SYS_UN_H */ | ||
| 78 | #include <string.h> | 85 | #include <string.h> | 
| 79 | 86 | ||
| 80 | #ifndef offsetof | 87 | #ifndef offsetof | 
| diff --git a/src/lib/libcrypto/rand/rand_win.c b/src/lib/libcrypto/rand/rand_win.c index 9f2dcff9a9..3d137badd0 100644 --- a/src/lib/libcrypto/rand/rand_win.c +++ b/src/lib/libcrypto/rand/rand_win.c | |||
| @@ -570,14 +570,15 @@ static void readtimer(void) | |||
| 570 | DWORD w; | 570 | DWORD w; | 
| 571 | LARGE_INTEGER l; | 571 | LARGE_INTEGER l; | 
| 572 | static int have_perfc = 1; | 572 | static int have_perfc = 1; | 
| 573 | #ifndef __GNUC__ | 573 | #ifdef _MSC_VER | 
| 574 | static int have_tsc = 1; | 574 | static int have_tsc = 1; | 
| 575 | DWORD cyclecount; | 575 | DWORD cyclecount; | 
| 576 | 576 | ||
| 577 | if (have_tsc) { | 577 | if (have_tsc) { | 
| 578 | __try { | 578 | __try { | 
| 579 | __asm { | 579 | __asm { | 
| 580 | rdtsc | 580 | _emit 0x0f | 
| 581 | _emit 0x31 | ||
| 581 | mov cyclecount, eax | 582 | mov cyclecount, eax | 
| 582 | } | 583 | } | 
| 583 | RAND_add(&cyclecount, sizeof(cyclecount), 1); | 584 | RAND_add(&cyclecount, sizeof(cyclecount), 1); | 
| @@ -725,8 +726,9 @@ int RAND_poll(void) | |||
| 725 | 726 | ||
| 726 | #ifdef DEVRANDOM | 727 | #ifdef DEVRANDOM | 
| 727 | return 1; | 728 | return 1; | 
| 728 | #endif | 729 | #else | 
| 729 | return 0; | 730 | return 0; | 
| 731 | #endif | ||
| 730 | } | 732 | } | 
| 731 | 733 | ||
| 732 | #endif | 734 | #endif | 
| diff --git a/src/lib/libcrypto/rand/randfile.c b/src/lib/libcrypto/rand/randfile.c index 663a36cb70..f4376cf8cc 100644 --- a/src/lib/libcrypto/rand/randfile.c +++ b/src/lib/libcrypto/rand/randfile.c | |||
| @@ -73,7 +73,7 @@ | |||
| 73 | # include <sys/stat.h> | 73 | # include <sys/stat.h> | 
| 74 | #endif | 74 | #endif | 
| 75 | 75 | ||
| 76 | #include <openssl/e_os.h> | 76 | #include "openssl/e_os.h" | 
| 77 | #include <openssl/crypto.h> | 77 | #include <openssl/crypto.h> | 
| 78 | #include <openssl/rand.h> | 78 | #include <openssl/rand.h> | 
| 79 | 79 | ||
| @@ -83,6 +83,9 @@ | |||
| 83 | 83 | ||
| 84 | /* #define RFILE ".rnd" - defined in ../../e_os.h */ | 84 | /* #define RFILE ".rnd" - defined in ../../e_os.h */ | 
| 85 | 85 | ||
| 86 | /* Note that these functions are intended for seed files only. | ||
| 87 | * Entropy devices and EGD sockets are handled in rand_unix.c */ | ||
| 88 | |||
| 86 | int RAND_load_file(const char *file, long bytes) | 89 | int RAND_load_file(const char *file, long bytes) | 
| 87 | { | 90 | { | 
| 88 | /* If bytes >= 0, read up to 'bytes' bytes. | 91 | /* If bytes >= 0, read up to 'bytes' bytes. | 
| @@ -213,7 +216,7 @@ err: | |||
| 213 | return (rand_err ? -1 : ret); | 216 | return (rand_err ? -1 : ret); | 
| 214 | } | 217 | } | 
| 215 | 218 | ||
| 216 | const char *RAND_file_name(char *buf, int size) | 219 | const char *RAND_file_name(char *buf, size_t size) | 
| 217 | { | 220 | { | 
| 218 | char *s = NULL; | 221 | char *s = NULL; | 
| 219 | char *ret=NULL; | 222 | char *ret=NULL; | 
| @@ -239,6 +242,8 @@ const char *RAND_file_name(char *buf, int size) | |||
| 239 | strlcat(buf,RFILE,size); | 242 | strlcat(buf,RFILE,size); | 
| 240 | ret=buf; | 243 | ret=buf; | 
| 241 | } | 244 | } | 
| 245 | else | ||
| 246 | buf[0] = '\0'; /* no file name */ | ||
| 242 | } | 247 | } | 
| 243 | 248 | ||
| 244 | #ifdef DEVRANDOM | 249 | #ifdef DEVRANDOM | 
| @@ -257,3 +262,4 @@ const char *RAND_file_name(char *buf, int size) | |||
| 257 | #endif | 262 | #endif | 
| 258 | return(ret); | 263 | return(ret); | 
| 259 | } | 264 | } | 
| 265 | |||
| diff --git a/src/lib/libcrypto/rc2/Makefile.ssl b/src/lib/libcrypto/rc2/Makefile.ssl index 9e94051cd7..39813d68be 100644 --- a/src/lib/libcrypto/rc2/Makefile.ssl +++ b/src/lib/libcrypto/rc2/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/rc4/Makefile.ssl b/src/lib/libcrypto/rc4/Makefile.ssl index 8d2a795c22..e75858d3b9 100644 --- a/src/lib/libcrypto/rc4/Makefile.ssl +++ b/src/lib/libcrypto/rc4/Makefile.ssl | |||
| @@ -47,7 +47,8 @@ all: lib | |||
| 47 | 47 | ||
| 48 | lib: $(LIBOBJ) | 48 | lib: $(LIBOBJ) | 
| 49 | $(AR) $(LIB) $(LIBOBJ) | 49 | $(AR) $(LIB) $(LIBOBJ) | 
| 50 | $(RANLIB) $(LIB) | 50 | @echo You may get an error following this line. Please ignore. | 
| 51 | - $(RANLIB) $(LIB) | ||
| 51 | @touch lib | 52 | @touch lib | 
| 52 | 53 | ||
| 53 | # elf | 54 | # elf | 
| diff --git a/src/lib/libcrypto/rc5/Makefile.ssl b/src/lib/libcrypto/rc5/Makefile.ssl index 5a54a162ba..c8ee124776 100644 --- a/src/lib/libcrypto/rc5/Makefile.ssl +++ b/src/lib/libcrypto/rc5/Makefile.ssl | |||
| @@ -44,7 +44,8 @@ all: lib | |||
| 44 | 44 | ||
| 45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) | 
| 46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(AR) $(LIB) $(LIBOBJ) | 
| 47 | $(RANLIB) $(LIB) | 47 | @echo You may get an error following this line. Please ignore. | 
| 48 | - $(RANLIB) $(LIB) | ||
| 48 | @touch lib | 49 | @touch lib | 
| 49 | 50 | ||
| 50 | # elf | 51 | # elf | 
| diff --git a/src/lib/libcrypto/ripemd/Makefile.ssl b/src/lib/libcrypto/ripemd/Makefile.ssl index de01a953ec..1550c32ca1 100644 --- a/src/lib/libcrypto/ripemd/Makefile.ssl +++ b/src/lib/libcrypto/ripemd/Makefile.ssl | |||
| @@ -42,7 +42,8 @@ all: lib | |||
| 42 | 42 | ||
| 43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) | 
| 44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(AR) $(LIB) $(LIBOBJ) | 
| 45 | $(RANLIB) $(LIB) | 45 | @echo You may get an error following this line. Please ignore. | 
| 46 | - $(RANLIB) $(LIB) | ||
| 46 | @touch lib | 47 | @touch lib | 
| 47 | 48 | ||
| 48 | # elf | 49 | # elf | 
| diff --git a/src/lib/libcrypto/rsa/Makefile.ssl b/src/lib/libcrypto/rsa/Makefile.ssl index c159eedafe..2bee181d4e 100644 --- a/src/lib/libcrypto/rsa/Makefile.ssl +++ b/src/lib/libcrypto/rsa/Makefile.ssl | |||
| @@ -41,7 +41,8 @@ all: lib | |||
| 41 | 41 | ||
| 42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) | 
| 43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(AR) $(LIB) $(LIBOBJ) | 
| 44 | $(RANLIB) $(LIB) | 44 | @echo You may get an error following this line. Please ignore. | 
| 45 | - $(RANLIB) $(LIB) | ||
| 45 | @touch lib | 46 | @touch lib | 
| 46 | 47 | ||
| 47 | files: | 48 | files: | 
| diff --git a/src/lib/libcrypto/rsa/rsa_eay.c b/src/lib/libcrypto/rsa/rsa_eay.c index ccaa62b239..cde5ca27d5 100644 --- a/src/lib/libcrypto/rsa/rsa_eay.c +++ b/src/lib/libcrypto/rsa/rsa_eay.c | |||
| @@ -141,9 +141,26 @@ static int RSA_eay_public_encrypt(int flen, unsigned char *from, | |||
| 141 | 141 | ||
| 142 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 142 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 
| 143 | { | 143 | { | 
| 144 | if ((rsa->_method_mod_n=BN_MONT_CTX_new()) != NULL) | 144 | BN_MONT_CTX* bn_mont_ctx; | 
| 145 | if (!BN_MONT_CTX_set(rsa->_method_mod_n,rsa->n,ctx)) | 145 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 146 | goto err; | 146 | goto err; | 
| 147 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx)) | ||
| 148 | { | ||
| 149 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 150 | goto err; | ||
| 151 | } | ||
| 152 | if (rsa->_method_mod_n == NULL) /* other thread may have finished first */ | ||
| 153 | { | ||
| 154 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 155 | if (rsa->_method_mod_n == NULL) | ||
| 156 | { | ||
| 157 | rsa->_method_mod_n = bn_mont_ctx; | ||
| 158 | bn_mont_ctx = NULL; | ||
| 159 | } | ||
| 160 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 161 | } | ||
| 162 | if (bn_mont_ctx) | ||
| 163 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 147 | } | 164 | } | 
| 148 | 165 | ||
| 149 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 166 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 
| @@ -378,9 +395,26 @@ static int RSA_eay_public_decrypt(int flen, unsigned char *from, | |||
| 378 | /* do the decrypt */ | 395 | /* do the decrypt */ | 
| 379 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 396 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 
| 380 | { | 397 | { | 
| 381 | if ((rsa->_method_mod_n=BN_MONT_CTX_new()) != NULL) | 398 | BN_MONT_CTX* bn_mont_ctx; | 
| 382 | if (!BN_MONT_CTX_set(rsa->_method_mod_n,rsa->n,ctx)) | 399 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 383 | goto err; | 400 | goto err; | 
| 401 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx)) | ||
| 402 | { | ||
| 403 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 404 | goto err; | ||
| 405 | } | ||
| 406 | if (rsa->_method_mod_n == NULL) /* other thread may have finished first */ | ||
| 407 | { | ||
| 408 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 409 | if (rsa->_method_mod_n == NULL) | ||
| 410 | { | ||
| 411 | rsa->_method_mod_n = bn_mont_ctx; | ||
| 412 | bn_mont_ctx = NULL; | ||
| 413 | } | ||
| 414 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 415 | } | ||
| 416 | if (bn_mont_ctx) | ||
| 417 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 384 | } | 418 | } | 
| 385 | 419 | ||
| 386 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 420 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 
| @@ -433,20 +467,53 @@ static int RSA_eay_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa) | |||
| 433 | { | 467 | { | 
| 434 | if (rsa->_method_mod_p == NULL) | 468 | if (rsa->_method_mod_p == NULL) | 
| 435 | { | 469 | { | 
| 436 | if ((rsa->_method_mod_p=BN_MONT_CTX_new()) != NULL) | 470 | BN_MONT_CTX* bn_mont_ctx; | 
| 437 | if (!BN_MONT_CTX_set(rsa->_method_mod_p,rsa->p, | 471 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 438 | ctx)) | 472 | goto err; | 
| 439 | goto err; | 473 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->p,ctx)) | 
| 474 | { | ||
| 475 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 476 | goto err; | ||
| 477 | } | ||
| 478 | if (rsa->_method_mod_p == NULL) /* other thread may have finished first */ | ||
| 479 | { | ||
| 480 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 481 | if (rsa->_method_mod_p == NULL) | ||
| 482 | { | ||
| 483 | rsa->_method_mod_p = bn_mont_ctx; | ||
| 484 | bn_mont_ctx = NULL; | ||
| 485 | } | ||
| 486 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 487 | } | ||
| 488 | if (bn_mont_ctx) | ||
| 489 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 440 | } | 490 | } | 
| 491 | |||
| 441 | if (rsa->_method_mod_q == NULL) | 492 | if (rsa->_method_mod_q == NULL) | 
| 442 | { | 493 | { | 
| 443 | if ((rsa->_method_mod_q=BN_MONT_CTX_new()) != NULL) | 494 | BN_MONT_CTX* bn_mont_ctx; | 
| 444 | if (!BN_MONT_CTX_set(rsa->_method_mod_q,rsa->q, | 495 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 445 | ctx)) | 496 | goto err; | 
| 446 | goto err; | 497 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->q,ctx)) | 
| 498 | { | ||
| 499 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 500 | goto err; | ||
| 501 | } | ||
| 502 | if (rsa->_method_mod_q == NULL) /* other thread may have finished first */ | ||
| 503 | { | ||
| 504 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 505 | if (rsa->_method_mod_q == NULL) | ||
| 506 | { | ||
| 507 | rsa->_method_mod_q = bn_mont_ctx; | ||
| 508 | bn_mont_ctx = NULL; | ||
| 509 | } | ||
| 510 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 511 | } | ||
| 512 | if (bn_mont_ctx) | ||
| 513 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 447 | } | 514 | } | 
| 448 | } | 515 | } | 
| 449 | 516 | ||
| 450 | if (!BN_mod(&r1,I,rsa->q,ctx)) goto err; | 517 | if (!BN_mod(&r1,I,rsa->q,ctx)) goto err; | 
| 451 | if (!meth->bn_mod_exp(&m1,&r1,rsa->dmq1,rsa->q,ctx, | 518 | if (!meth->bn_mod_exp(&m1,&r1,rsa->dmq1,rsa->q,ctx, | 
| 452 | rsa->_method_mod_q)) goto err; | 519 | rsa->_method_mod_q)) goto err; | 
| diff --git a/src/lib/libcrypto/rsa/rsa_lib.c b/src/lib/libcrypto/rsa/rsa_lib.c index 5e1e8fcdf3..94395cc22c 100644 --- a/src/lib/libcrypto/rsa/rsa_lib.c +++ b/src/lib/libcrypto/rsa/rsa_lib.c | |||
| @@ -191,13 +191,13 @@ RSA *RSA_new_method(ENGINE *engine) | |||
| 191 | ret->blinding=NULL; | 191 | ret->blinding=NULL; | 
| 192 | ret->bignum_data=NULL; | 192 | ret->bignum_data=NULL; | 
| 193 | ret->flags=meth->flags; | 193 | ret->flags=meth->flags; | 
| 194 | CRYPTO_new_ex_data(rsa_meth,ret,&ret->ex_data); | ||
| 194 | if ((meth->init != NULL) && !meth->init(ret)) | 195 | if ((meth->init != NULL) && !meth->init(ret)) | 
| 195 | { | 196 | { | 
| 197 | CRYPTO_free_ex_data(rsa_meth,ret,&ret->ex_data); | ||
| 196 | OPENSSL_free(ret); | 198 | OPENSSL_free(ret); | 
| 197 | ret=NULL; | 199 | ret=NULL; | 
| 198 | } | 200 | } | 
| 199 | else | ||
| 200 | CRYPTO_new_ex_data(rsa_meth,ret,&ret->ex_data); | ||
| 201 | return(ret); | 201 | return(ret); | 
| 202 | } | 202 | } | 
| 203 | 203 | ||
| @@ -221,13 +221,13 @@ void RSA_free(RSA *r) | |||
| 221 | } | 221 | } | 
| 222 | #endif | 222 | #endif | 
| 223 | 223 | ||
| 224 | CRYPTO_free_ex_data(rsa_meth,r,&r->ex_data); | ||
| 225 | |||
| 226 | meth = ENGINE_get_RSA(r->engine); | 224 | meth = ENGINE_get_RSA(r->engine); | 
| 227 | if (meth->finish != NULL) | 225 | if (meth->finish != NULL) | 
| 228 | meth->finish(r); | 226 | meth->finish(r); | 
| 229 | ENGINE_finish(r->engine); | 227 | ENGINE_finish(r->engine); | 
| 230 | 228 | ||
| 229 | CRYPTO_free_ex_data(rsa_meth,r,&r->ex_data); | ||
| 230 | |||
| 231 | if (r->n != NULL) BN_clear_free(r->n); | 231 | if (r->n != NULL) BN_clear_free(r->n); | 
| 232 | if (r->e != NULL) BN_clear_free(r->e); | 232 | if (r->e != NULL) BN_clear_free(r->e); | 
| 233 | if (r->d != NULL) BN_clear_free(r->d); | 233 | if (r->d != NULL) BN_clear_free(r->d); | 
| @@ -325,7 +325,7 @@ int RSA_blinding_on(RSA *rsa, BN_CTX *p_ctx) | |||
| 325 | 325 | ||
| 326 | BN_CTX_start(ctx); | 326 | BN_CTX_start(ctx); | 
| 327 | A = BN_CTX_get(ctx); | 327 | A = BN_CTX_get(ctx); | 
| 328 | if (!BN_rand(A,BN_num_bits(rsa->n)-1,1,0)) goto err; | 328 | if (!BN_rand_range(A,rsa->n)) goto err; | 
| 329 | if ((Ai=BN_mod_inverse(NULL,A,rsa->n,ctx)) == NULL) goto err; | 329 | if ((Ai=BN_mod_inverse(NULL,A,rsa->n,ctx)) == NULL) goto err; | 
| 330 | 330 | ||
| 331 | if (!ENGINE_get_RSA(rsa->engine)->bn_mod_exp(A,A, | 331 | if (!ENGINE_get_RSA(rsa->engine)->bn_mod_exp(A,A, | 
| diff --git a/src/lib/libcrypto/sha/Makefile.ssl b/src/lib/libcrypto/sha/Makefile.ssl index 72acd8f046..790e572fa2 100644 --- a/src/lib/libcrypto/sha/Makefile.ssl +++ b/src/lib/libcrypto/sha/Makefile.ssl | |||
| @@ -42,7 +42,8 @@ all: lib | |||
| 42 | 42 | ||
| 43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) | 
| 44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(AR) $(LIB) $(LIBOBJ) | 
| 45 | $(RANLIB) $(LIB) | 45 | @echo You may get an error following this line. Please ignore. | 
| 46 | - $(RANLIB) $(LIB) | ||
| 46 | @touch lib | 47 | @touch lib | 
| 47 | 48 | ||
| 48 | # elf | 49 | # elf | 
| diff --git a/src/lib/libcrypto/sha/asm/sha1-586.pl b/src/lib/libcrypto/sha/asm/sha1-586.pl index 09df993ecd..fe51fd0794 100644 --- a/src/lib/libcrypto/sha/asm/sha1-586.pl +++ b/src/lib/libcrypto/sha/asm/sha1-586.pl | |||
| @@ -317,7 +317,7 @@ sub BODY_60_79 | |||
| 317 | 317 | ||
| 318 | sub sha1_block_host | 318 | sub sha1_block_host | 
| 319 | { | 319 | { | 
| 320 | local($name)=@_; | 320 | local($name, $sclabel)=@_; | 
| 321 | 321 | ||
| 322 | &function_begin_B($name,""); | 322 | &function_begin_B($name,""); | 
| 323 | 323 | ||
| @@ -352,7 +352,7 @@ sub sha1_block_host | |||
| 352 | &mov(&swtmp($i+0),$A); | 352 | &mov(&swtmp($i+0),$A); | 
| 353 | &mov(&swtmp($i+1),$B); | 353 | &mov(&swtmp($i+1),$B); | 
| 354 | } | 354 | } | 
| 355 | &jmp(&label("shortcut")); | 355 | &jmp($sclabel); | 
| 356 | &function_end_B($name); | 356 | &function_end_B($name); | 
| 357 | } | 357 | } | 
| 358 | 358 | ||
| @@ -529,10 +529,12 @@ sub sha1_block_data | |||
| 529 | &pop("esi"); | 529 | &pop("esi"); | 
| 530 | &ret(); | 530 | &ret(); | 
| 531 | 531 | ||
| 532 | # it has to reside within sha1_block_asm_host_order body | 532 | # keep a note of shortcut label so it can be used outside | 
| 533 | # because it calls &jmp(&label("shortcut")); | 533 | # block. | 
| 534 | &sha1_block_host("sha1_block_asm_host_order"); | 534 | my $sclabel = &label("shortcut"); | 
| 535 | 535 | ||
| 536 | &function_end_B($name); | 536 | &function_end_B($name); | 
| 537 | # Putting this here avoids problems with MASM in debugging mode | ||
| 538 | &sha1_block_host("sha1_block_asm_host_order", $sclabel); | ||
| 537 | } | 539 | } | 
| 538 | 540 | ||
| diff --git a/src/lib/libcrypto/stack/Makefile.ssl b/src/lib/libcrypto/stack/Makefile.ssl index 86ed928750..c916fd5451 100644 --- a/src/lib/libcrypto/stack/Makefile.ssl +++ b/src/lib/libcrypto/stack/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/txt_db/Makefile.ssl b/src/lib/libcrypto/txt_db/Makefile.ssl index cb54d53323..ee054e91f2 100644 --- a/src/lib/libcrypto/txt_db/Makefile.ssl +++ b/src/lib/libcrypto/txt_db/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libcrypto/uid.c b/src/lib/libcrypto/uid.c new file mode 100644 index 0000000000..b5b61b76d4 --- /dev/null +++ b/src/lib/libcrypto/uid.c | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | /* crypto/uid.c */ | ||
| 2 | /* ==================================================================== | ||
| 3 | * Copyright (c) 2001 The OpenSSL Project. All rights reserved. | ||
| 4 | * | ||
| 5 | * Redistribution and use in source and binary forms, with or without | ||
| 6 | * modification, are permitted provided that the following conditions | ||
| 7 | * are met: | ||
| 8 | * | ||
| 9 | * 1. Redistributions of source code must retain the above copyright | ||
| 10 | * notice, this list of conditions and the following disclaimer. | ||
| 11 | * | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in | ||
| 14 | * the documentation and/or other materials provided with the | ||
| 15 | * distribution. | ||
| 16 | * | ||
| 17 | * 3. All advertising materials mentioning features or use of this | ||
| 18 | * software must display the following acknowledgment: | ||
| 19 | * "This product includes software developed by the OpenSSL Project | ||
| 20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
| 21 | * | ||
| 22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
| 23 | * endorse or promote products derived from this software without | ||
| 24 | * prior written permission. For written permission, please contact | ||
| 25 | * licensing@OpenSSL.org. | ||
| 26 | * | ||
| 27 | * 5. Products derived from this software may not be called "OpenSSL" | ||
| 28 | * nor may "OpenSSL" appear in their names without prior written | ||
| 29 | * permission of the OpenSSL Project. | ||
| 30 | * | ||
| 31 | * 6. Redistributions of any form whatsoever must retain the following | ||
| 32 | * acknowledgment: | ||
| 33 | * "This product includes software developed by the OpenSSL Project | ||
| 34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
| 35 | * | ||
| 36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
| 37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
| 40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
| 45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
| 47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 48 | * ==================================================================== | ||
| 49 | * | ||
| 50 | * This product includes cryptographic software written by Eric Young | ||
| 51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
| 52 | * Hudson (tjh@cryptsoft.com). | ||
| 53 | * | ||
| 54 | */ | ||
| 55 | |||
| 56 | #include <openssl/crypto.h> | ||
| 57 | |||
| 58 | #if defined(__OpenBSD__) || (defined(__FreeBSD__) && __FreeBSD__ > 2) | ||
| 59 | |||
| 60 | #include <unistd.h> | ||
| 61 | |||
| 62 | int OPENSSL_issetugid(void) | ||
| 63 | { | ||
| 64 | return issetugid(); | ||
| 65 | } | ||
| 66 | |||
| 67 | #elif defined(WIN32) | ||
| 68 | |||
| 69 | int OPENSSL_issetugid(void) | ||
| 70 | { | ||
| 71 | return 0; | ||
| 72 | } | ||
| 73 | |||
| 74 | #else | ||
| 75 | |||
| 76 | #include <unistd.h> | ||
| 77 | #include <sys/types.h> | ||
| 78 | |||
| 79 | int OPENSSL_issetugid(void) | ||
| 80 | { | ||
| 81 | if (getuid() != geteuid()) return 1; | ||
| 82 | if (getgid() != getegid()) return 1; | ||
| 83 | return 0; | ||
| 84 | } | ||
| 85 | #endif | ||
| 86 | |||
| 87 | |||
| 88 | |||
| diff --git a/src/lib/libcrypto/util/clean-depend.pl b/src/lib/libcrypto/util/clean-depend.pl index af676af751..0193e726fe 100644 --- a/src/lib/libcrypto/util/clean-depend.pl +++ b/src/lib/libcrypto/util/clean-depend.pl | |||
| @@ -15,8 +15,8 @@ while(<STDIN>) { | |||
| 15 | my ($file,$deps)=/^(.*): (.*)$/; | 15 | my ($file,$deps)=/^(.*): (.*)$/; | 
| 16 | next if !defined $deps; | 16 | next if !defined $deps; | 
| 17 | my @deps=split ' ',$deps; | 17 | my @deps=split ' ',$deps; | 
| 18 | @deps=grep(!/^\/usr\/include/,@deps); | 18 | @deps=grep(!/^\//,@deps); | 
| 19 | @deps=grep(!/^\/usr\/lib\/gcc-lib/,@deps); | 19 | @deps=grep(!/^\\$/,@deps); | 
| 20 | push @{$files{$file}},@deps; | 20 | push @{$files{$file}},@deps; | 
| 21 | } | 21 | } | 
| 22 | 22 | ||
| diff --git a/src/lib/libcrypto/util/libeay.num b/src/lib/libcrypto/util/libeay.num index e8eebbf50c..84ae840804 100644 --- a/src/lib/libcrypto/util/libeay.num +++ b/src/lib/libcrypto/util/libeay.num | |||
| @@ -301,8 +301,8 @@ EVP_des_ede_cfb 308 EXIST::FUNCTION:DES | |||
| 301 | EVP_des_ede_ofb 309 EXIST::FUNCTION:DES | 301 | EVP_des_ede_ofb 309 EXIST::FUNCTION:DES | 
| 302 | EVP_des_ofb 310 EXIST::FUNCTION:DES | 302 | EVP_des_ofb 310 EXIST::FUNCTION:DES | 
| 303 | EVP_desx_cbc 311 EXIST::FUNCTION:DES | 303 | EVP_desx_cbc 311 EXIST::FUNCTION:DES | 
| 304 | EVP_dss 312 EXIST::FUNCTION:DSA | 304 | EVP_dss 312 EXIST::FUNCTION:DSA,SHA | 
| 305 | EVP_dss1 313 EXIST::FUNCTION:DSA | 305 | EVP_dss1 313 EXIST::FUNCTION:DSA,SHA | 
| 306 | EVP_enc_null 314 EXIST::FUNCTION: | 306 | EVP_enc_null 314 EXIST::FUNCTION: | 
| 307 | EVP_get_cipherbyname 315 EXIST::FUNCTION: | 307 | EVP_get_cipherbyname 315 EXIST::FUNCTION: | 
| 308 | EVP_get_digestbyname 316 EXIST::FUNCTION: | 308 | EVP_get_digestbyname 316 EXIST::FUNCTION: | 
| @@ -779,7 +779,7 @@ des_ede3_cfb64_encrypt 786 EXIST::FUNCTION:DES | |||
| 779 | des_ede3_ofb64_encrypt 787 EXIST::FUNCTION:DES | 779 | des_ede3_ofb64_encrypt 787 EXIST::FUNCTION:DES | 
| 780 | des_enc_read 788 EXIST::FUNCTION:DES | 780 | des_enc_read 788 EXIST::FUNCTION:DES | 
| 781 | des_enc_write 789 EXIST::FUNCTION:DES | 781 | des_enc_write 789 EXIST::FUNCTION:DES | 
| 782 | des_encrypt 790 EXIST::FUNCTION:DES | 782 | des_encrypt1 790 EXIST::FUNCTION:DES | 
| 783 | des_encrypt2 791 EXIST::FUNCTION:DES | 783 | des_encrypt2 791 EXIST::FUNCTION:DES | 
| 784 | des_encrypt3 792 EXIST::FUNCTION:DES | 784 | des_encrypt3 792 EXIST::FUNCTION:DES | 
| 785 | des_fcrypt 793 EXIST::FUNCTION:DES | 785 | des_fcrypt 793 EXIST::FUNCTION:DES | 
| @@ -926,7 +926,7 @@ PKCS7_add_signature 938 EXIST::FUNCTION: | |||
| 926 | PKCS7_cert_from_signer_info 939 EXIST::FUNCTION: | 926 | PKCS7_cert_from_signer_info 939 EXIST::FUNCTION: | 
| 927 | PKCS7_get_signer_info 940 EXIST::FUNCTION: | 927 | PKCS7_get_signer_info 940 EXIST::FUNCTION: | 
| 928 | EVP_delete_alias 941 NOEXIST::FUNCTION: | 928 | EVP_delete_alias 941 NOEXIST::FUNCTION: | 
| 929 | EVP_mdc2 942 EXIST::FUNCTION: | 929 | EVP_mdc2 942 EXIST::FUNCTION:MDC2 | 
| 930 | PEM_read_bio_RSAPublicKey 943 EXIST::FUNCTION:RSA | 930 | PEM_read_bio_RSAPublicKey 943 EXIST::FUNCTION:RSA | 
| 931 | PEM_write_bio_RSAPublicKey 944 EXIST::FUNCTION:RSA | 931 | PEM_write_bio_RSAPublicKey 944 EXIST::FUNCTION:RSA | 
| 932 | d2i_RSAPublicKey_bio 945 EXIST::FUNCTION:RSA | 932 | d2i_RSAPublicKey_bio 945 EXIST::FUNCTION:RSA | 
| @@ -1870,61 +1870,64 @@ X509_keyid_set1 2460 EXIST::FUNCTION: | |||
| 1870 | BIO_next 2461 EXIST::FUNCTION: | 1870 | BIO_next 2461 EXIST::FUNCTION: | 
| 1871 | DSO_METHOD_vms 2462 EXIST::FUNCTION: | 1871 | DSO_METHOD_vms 2462 EXIST::FUNCTION: | 
| 1872 | BIO_f_linebuffer 2463 EXIST:VMS:FUNCTION: | 1872 | BIO_f_linebuffer 2463 EXIST:VMS:FUNCTION: | 
| 1873 | ERR_load_ENGINE_strings 2464 EXIST::FUNCTION: | 1873 | BN_bntest_rand 2464 EXIST::FUNCTION: | 
| 1874 | ENGINE_set_DSA 2465 EXIST::FUNCTION: | 1874 | OPENSSL_issetugid 2465 EXIST::FUNCTION: | 
| 1875 | ENGINE_get_finish_function 2466 EXIST::FUNCTION: | 1875 | BN_rand_range 2466 EXIST::FUNCTION: | 
| 1876 | ENGINE_get_default_RSA 2467 EXIST::FUNCTION: | 1876 | ERR_load_ENGINE_strings 2467 EXIST::FUNCTION: | 
| 1877 | ENGINE_get_BN_mod_exp 2468 EXIST::FUNCTION: | 1877 | ENGINE_set_DSA 2468 EXIST::FUNCTION: | 
| 1878 | DSA_get_default_openssl_method 2469 EXIST::FUNCTION:DSA | 1878 | ENGINE_get_finish_function 2469 EXIST::FUNCTION: | 
| 1879 | ENGINE_set_DH 2470 EXIST::FUNCTION: | 1879 | ENGINE_get_default_RSA 2470 EXIST::FUNCTION: | 
| 1880 | ENGINE_set_default_BN_mod_exp_crt 2471 EXIST:!VMS:FUNCTION: | 1880 | ENGINE_get_BN_mod_exp 2471 EXIST::FUNCTION: | 
| 1881 | ENGINE_set_def_BN_mod_exp_crt 2471 EXIST:VMS:FUNCTION: | 1881 | DSA_get_default_openssl_method 2472 EXIST::FUNCTION:DSA | 
| 1882 | ENGINE_init 2472 EXIST::FUNCTION: | 1882 | ENGINE_set_DH 2473 EXIST::FUNCTION: | 
| 1883 | DH_get_default_openssl_method 2473 EXIST::FUNCTION:DH | 1883 | ENGINE_set_default_BN_mod_exp_crt 2474 EXIST:!VMS:FUNCTION: | 
| 1884 | RSA_set_default_openssl_method 2474 EXIST::FUNCTION:RSA | 1884 | ENGINE_set_def_BN_mod_exp_crt 2474 EXIST:VMS:FUNCTION: | 
| 1885 | ENGINE_finish 2475 EXIST::FUNCTION: | 1885 | ENGINE_init 2475 EXIST::FUNCTION: | 
| 1886 | ENGINE_load_public_key 2476 EXIST::FUNCTION: | 1886 | DH_get_default_openssl_method 2476 EXIST::FUNCTION:DH | 
| 1887 | ENGINE_get_DH 2477 EXIST::FUNCTION: | 1887 | RSA_set_default_openssl_method 2477 EXIST::FUNCTION:RSA | 
| 1888 | ENGINE_ctrl 2478 EXIST::FUNCTION: | 1888 | ENGINE_finish 2478 EXIST::FUNCTION: | 
| 1889 | ENGINE_get_init_function 2479 EXIST::FUNCTION: | 1889 | ENGINE_load_public_key 2479 EXIST::FUNCTION: | 
| 1890 | ENGINE_set_init_function 2480 EXIST::FUNCTION: | 1890 | ENGINE_get_DH 2480 EXIST::FUNCTION: | 
| 1891 | ENGINE_set_default_DSA 2481 EXIST::FUNCTION: | 1891 | ENGINE_ctrl 2481 EXIST::FUNCTION: | 
| 1892 | ENGINE_get_name 2482 EXIST::FUNCTION: | 1892 | ENGINE_get_init_function 2482 EXIST::FUNCTION: | 
| 1893 | ENGINE_get_last 2483 EXIST::FUNCTION: | 1893 | ENGINE_set_init_function 2483 EXIST::FUNCTION: | 
| 1894 | ENGINE_get_prev 2484 EXIST::FUNCTION: | 1894 | ENGINE_set_default_DSA 2484 EXIST::FUNCTION: | 
| 1895 | ENGINE_get_default_DH 2485 EXIST::FUNCTION: | 1895 | ENGINE_get_name 2485 EXIST::FUNCTION: | 
| 1896 | ENGINE_get_RSA 2486 EXIST::FUNCTION: | 1896 | ENGINE_get_last 2486 EXIST::FUNCTION: | 
| 1897 | ENGINE_set_default 2487 EXIST::FUNCTION: | 1897 | ENGINE_get_prev 2487 EXIST::FUNCTION: | 
| 1898 | ENGINE_get_RAND 2488 EXIST::FUNCTION: | 1898 | ENGINE_get_default_DH 2488 EXIST::FUNCTION: | 
| 1899 | ENGINE_get_first 2489 EXIST::FUNCTION: | 1899 | ENGINE_get_RSA 2489 EXIST::FUNCTION: | 
| 1900 | ENGINE_by_id 2490 EXIST::FUNCTION: | 1900 | ENGINE_set_default 2490 EXIST::FUNCTION: | 
| 1901 | ENGINE_set_finish_function 2491 EXIST::FUNCTION: | 1901 | ENGINE_get_RAND 2491 EXIST::FUNCTION: | 
| 1902 | ENGINE_get_default_BN_mod_exp_crt 2492 EXIST:!VMS:FUNCTION: | 1902 | ENGINE_get_first 2492 EXIST::FUNCTION: | 
| 1903 | ENGINE_get_def_BN_mod_exp_crt 2492 EXIST:VMS:FUNCTION: | 1903 | ENGINE_by_id 2493 EXIST::FUNCTION: | 
| 1904 | RSA_get_default_openssl_method 2493 EXIST::FUNCTION:RSA | 1904 | ENGINE_set_finish_function 2494 EXIST::FUNCTION: | 
| 1905 | ENGINE_set_RSA 2494 EXIST::FUNCTION: | 1905 | ENGINE_get_default_BN_mod_exp_crt 2495 EXIST:!VMS:FUNCTION: | 
| 1906 | ENGINE_load_private_key 2495 EXIST::FUNCTION: | 1906 | ENGINE_get_def_BN_mod_exp_crt 2495 EXIST:VMS:FUNCTION: | 
| 1907 | ENGINE_set_default_RAND 2496 EXIST::FUNCTION: | 1907 | RSA_get_default_openssl_method 2496 EXIST::FUNCTION:RSA | 
| 1908 | ENGINE_set_BN_mod_exp 2497 EXIST::FUNCTION: | 1908 | ENGINE_set_RSA 2497 EXIST::FUNCTION: | 
| 1909 | ENGINE_remove 2498 EXIST::FUNCTION: | 1909 | ENGINE_load_private_key 2498 EXIST::FUNCTION: | 
| 1910 | ENGINE_free 2499 EXIST::FUNCTION: | 1910 | ENGINE_set_default_RAND 2499 EXIST::FUNCTION: | 
| 1911 | ENGINE_get_BN_mod_exp_crt 2500 EXIST::FUNCTION: | 1911 | ENGINE_set_BN_mod_exp 2500 EXIST::FUNCTION: | 
| 1912 | ENGINE_get_next 2501 EXIST::FUNCTION: | 1912 | ENGINE_remove 2501 EXIST::FUNCTION: | 
| 1913 | ENGINE_set_name 2502 EXIST::FUNCTION: | 1913 | ENGINE_free 2502 EXIST::FUNCTION: | 
| 1914 | ENGINE_get_default_DSA 2503 EXIST::FUNCTION: | 1914 | ENGINE_get_BN_mod_exp_crt 2503 EXIST::FUNCTION: | 
| 1915 | ENGINE_set_default_BN_mod_exp 2504 EXIST::FUNCTION: | 1915 | ENGINE_get_next 2504 EXIST::FUNCTION: | 
| 1916 | ENGINE_set_default_RSA 2505 EXIST::FUNCTION: | 1916 | ENGINE_set_name 2505 EXIST::FUNCTION: | 
| 1917 | ENGINE_get_default_RAND 2506 EXIST::FUNCTION: | 1917 | ENGINE_get_default_DSA 2506 EXIST::FUNCTION: | 
| 1918 | ENGINE_get_default_BN_mod_exp 2507 EXIST::FUNCTION: | 1918 | ENGINE_set_default_BN_mod_exp 2507 EXIST::FUNCTION: | 
| 1919 | ENGINE_set_RAND 2508 EXIST::FUNCTION: | 1919 | ENGINE_set_default_RSA 2508 EXIST::FUNCTION: | 
| 1920 | ENGINE_set_id 2509 EXIST::FUNCTION: | 1920 | ENGINE_get_default_RAND 2509 EXIST::FUNCTION: | 
| 1921 | ENGINE_set_BN_mod_exp_crt 2510 EXIST::FUNCTION: | 1921 | ENGINE_get_default_BN_mod_exp 2510 EXIST::FUNCTION: | 
| 1922 | ENGINE_set_default_DH 2511 EXIST::FUNCTION: | 1922 | ENGINE_set_RAND 2511 EXIST::FUNCTION: | 
| 1923 | ENGINE_new 2512 EXIST::FUNCTION: | 1923 | ENGINE_set_id 2512 EXIST::FUNCTION: | 
| 1924 | ENGINE_get_id 2513 EXIST::FUNCTION: | 1924 | ENGINE_set_BN_mod_exp_crt 2513 EXIST::FUNCTION: | 
| 1925 | DSA_set_default_openssl_method 2514 EXIST::FUNCTION:DSA | 1925 | ENGINE_set_default_DH 2514 EXIST::FUNCTION: | 
| 1926 | ENGINE_add 2515 EXIST::FUNCTION: | 1926 | ENGINE_new 2515 EXIST::FUNCTION: | 
| 1927 | DH_set_default_openssl_method 2516 EXIST::FUNCTION:DH | 1927 | ENGINE_get_id 2516 EXIST::FUNCTION: | 
| 1928 | ENGINE_get_DSA 2517 EXIST::FUNCTION: | 1928 | DSA_set_default_openssl_method 2517 EXIST::FUNCTION:DSA | 
| 1929 | ENGINE_get_ctrl_function 2518 EXIST::FUNCTION: | 1929 | ENGINE_add 2518 EXIST::FUNCTION: | 
| 1930 | ENGINE_set_ctrl_function 2519 EXIST::FUNCTION: | 1930 | DH_set_default_openssl_method 2519 EXIST::FUNCTION:DH | 
| 1931 | ENGINE_get_DSA 2520 EXIST::FUNCTION: | ||
| 1932 | ENGINE_get_ctrl_function 2521 EXIST::FUNCTION: | ||
| 1933 | ENGINE_set_ctrl_function 2522 EXIST::FUNCTION: | ||
| diff --git a/src/lib/libcrypto/util/mkdef.pl b/src/lib/libcrypto/util/mkdef.pl index cc41a1813e..ba453358cf 100644 --- a/src/lib/libcrypto/util/mkdef.pl +++ b/src/lib/libcrypto/util/mkdef.pl | |||
| @@ -119,7 +119,7 @@ foreach (@ARGV, split(/ /, $options)) | |||
| 119 | elsif (/^no-rc4$/) { $no_rc4=1; } | 119 | elsif (/^no-rc4$/) { $no_rc4=1; } | 
| 120 | elsif (/^no-rc5$/) { $no_rc5=1; } | 120 | elsif (/^no-rc5$/) { $no_rc5=1; } | 
| 121 | elsif (/^no-idea$/) { $no_idea=1; } | 121 | elsif (/^no-idea$/) { $no_idea=1; } | 
| 122 | elsif (/^no-des$/) { $no_des=1; } | 122 | elsif (/^no-des$/) { $no_des=1; $no_mdc2=1; } | 
| 123 | elsif (/^no-bf$/) { $no_bf=1; } | 123 | elsif (/^no-bf$/) { $no_bf=1; } | 
| 124 | elsif (/^no-cast$/) { $no_cast=1; } | 124 | elsif (/^no-cast$/) { $no_cast=1; } | 
| 125 | elsif (/^no-md2$/) { $no_md2=1; } | 125 | elsif (/^no-md2$/) { $no_md2=1; } | 
| @@ -705,7 +705,8 @@ EOF | |||
| 705 | } else { | 705 | } else { | 
| 706 | (my $n, my $i) = split /\\/, $nums{$s}; | 706 | (my $n, my $i) = split /\\/, $nums{$s}; | 
| 707 | my %pf = (); | 707 | my %pf = (); | 
| 708 | my @p = split(/,/, ($i =~ /^.*?:(.*?):/,$1)); | 708 | my @p = split(/,/, ($i =~ /^[^:]*:([^:]*):/,$1)); | 
| 709 | my @a = split(/,/, ($i =~ /^[^:]*:[^:]*:[^:]*:([^:]*)/,$1)); | ||
| 709 | # @p_purged must contain hardware platforms only | 710 | # @p_purged must contain hardware platforms only | 
| 710 | my @p_purged = (); | 711 | my @p_purged = (); | 
| 711 | foreach $ptmp (@p) { | 712 | foreach $ptmp (@p) { | 
| @@ -727,7 +728,26 @@ EOF | |||
| 727 | || (!$negatives | 728 | || (!$negatives | 
| 728 | && ($rsaref || !grep(/^RSAREF$/,@p))) | 729 | && ($rsaref || !grep(/^RSAREF$/,@p))) | 
| 729 | || ($negatives | 730 | || ($negatives | 
| 730 | && (!$rsaref || !grep(/^!RSAREF$/,@p))))) { | 731 | && (!$rsaref || !grep(/^!RSAREF$/,@p)))) | 
| 732 | && (!@a || (!$no_rc2 || !grep(/^RC2$/,@a))) | ||
| 733 | && (!@a || (!$no_rc4 || !grep(/^RC4$/,@a))) | ||
| 734 | && (!@a || (!$no_rc5 || !grep(/^RC5$/,@a))) | ||
| 735 | && (!@a || (!$no_idea || !grep(/^IDEA$/,@a))) | ||
| 736 | && (!@a || (!$no_des || !grep(/^DES$/,@a))) | ||
| 737 | && (!@a || (!$no_bf || !grep(/^BF$/,@a))) | ||
| 738 | && (!@a || (!$no_cast || !grep(/^CAST$/,@a))) | ||
| 739 | && (!@a || (!$no_md2 || !grep(/^MD2$/,@a))) | ||
| 740 | && (!@a || (!$no_md4 || !grep(/^MD4$/,@a))) | ||
| 741 | && (!@a || (!$no_md5 || !grep(/^MD5$/,@a))) | ||
| 742 | && (!@a || (!$no_sha || !grep(/^SHA$/,@a))) | ||
| 743 | && (!@a || (!$no_ripemd || !grep(/^RIPEMD$/,@a))) | ||
| 744 | && (!@a || (!$no_mdc2 || !grep(/^MDC2$/,@a))) | ||
| 745 | && (!@a || (!$no_rsa || !grep(/^RSA$/,@a))) | ||
| 746 | && (!@a || (!$no_dsa || !grep(/^DSA$/,@a))) | ||
| 747 | && (!@a || (!$no_dh || !grep(/^DH$/,@a))) | ||
| 748 | && (!@a || (!$no_hmac || !grep(/^HMAC$/,@a))) | ||
| 749 | && (!@a || (!$no_fp_api || !grep(/^FP_API$/,@a))) | ||
| 750 | ) { | ||
| 731 | printf OUT " %s%-40s@%d\n",($W32)?"":"_",$s,$n; | 751 | printf OUT " %s%-40s@%d\n",($W32)?"":"_",$s,$n; | 
| 732 | # } else { | 752 | # } else { | 
| 733 | # print STDERR "DEBUG: \"$sym\" (@p):", | 753 | # print STDERR "DEBUG: \"$sym\" (@p):", | 
| diff --git a/src/lib/libcrypto/util/mklink.pl b/src/lib/libcrypto/util/mklink.pl index d7b997ada7..9e9c9a5146 100644 --- a/src/lib/libcrypto/util/mklink.pl +++ b/src/lib/libcrypto/util/mklink.pl | |||
| @@ -48,8 +48,13 @@ foreach $dirname (@from_path) { | |||
| 48 | my $to = join('/', @to_path); | 48 | my $to = join('/', @to_path); | 
| 49 | 49 | ||
| 50 | my $file; | 50 | my $file; | 
| 51 | $symlink_exists=eval {symlink("",""); 1}; | ||
| 51 | foreach $file (@files) { | 52 | foreach $file (@files) { | 
| 52 | my $err = ""; | 53 | my $err = ""; | 
| 53 | symlink("$to/$file", "$from/$file") or $err = " [$!]"; | 54 | if ($symlink_exists) { | 
| 55 | symlink("$to/$file", "$from/$file") or $err = " [$!]"; | ||
| 56 | } else { | ||
| 57 | system ("cp", "$file", "$from/$file") and $err = " [$!]"; | ||
| 58 | } | ||
| 54 | print $file . " => $from/$file$err\n"; | 59 | print $file . " => $from/$file$err\n"; | 
| 55 | } | 60 | } | 
| diff --git a/src/lib/libcrypto/util/pod2man.pl b/src/lib/libcrypto/util/pod2man.pl index f5ec0767ed..c6b64add60 100644 --- a/src/lib/libcrypto/util/pod2man.pl +++ b/src/lib/libcrypto/util/pod2man.pl | |||
| @@ -416,6 +416,8 @@ if ($name ne 'something') { | |||
| 416 | warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n" | 416 | warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n" | 
| 417 | } | 417 | } | 
| 418 | else { | 418 | else { | 
| 419 | $n[0] =~ s/\n/ /; | ||
| 420 | $n[1] =~ s/\n/ /; | ||
| 419 | %namedesc = @n; | 421 | %namedesc = @n; | 
| 420 | } | 422 | } | 
| 421 | } | 423 | } | 
| diff --git a/src/lib/libcrypto/x509/Makefile.ssl b/src/lib/libcrypto/x509/Makefile.ssl index 4619693733..79f09d4f71 100644 --- a/src/lib/libcrypto/x509/Makefile.ssl +++ b/src/lib/libcrypto/x509/Makefile.ssl | |||
| @@ -49,7 +49,8 @@ all: lib | |||
| 49 | 49 | ||
| 50 | lib: $(LIBOBJ) | 50 | lib: $(LIBOBJ) | 
| 51 | $(AR) $(LIB) $(LIBOBJ) | 51 | $(AR) $(LIB) $(LIBOBJ) | 
| 52 | $(RANLIB) $(LIB) | 52 | @echo You may get an error following this line. Please ignore. | 
| 53 | - $(RANLIB) $(LIB) | ||
| 53 | @touch lib | 54 | @touch lib | 
| 54 | 55 | ||
| 55 | files: | 56 | files: | 
| diff --git a/src/lib/libcrypto/x509/by_dir.c b/src/lib/libcrypto/x509/by_dir.c index cac64a6f40..448bd7e69c 100644 --- a/src/lib/libcrypto/x509/by_dir.c +++ b/src/lib/libcrypto/x509/by_dir.c | |||
| @@ -327,7 +327,7 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, | |||
| 327 | * it out again */ | 327 | * it out again */ | 
| 328 | CRYPTO_r_lock(CRYPTO_LOCK_X509_STORE); | 328 | CRYPTO_r_lock(CRYPTO_LOCK_X509_STORE); | 
| 329 | j = sk_X509_OBJECT_find(xl->store_ctx->objs,&stmp); | 329 | j = sk_X509_OBJECT_find(xl->store_ctx->objs,&stmp); | 
| 330 | if(j != -1) tmp=sk_X509_OBJECT_value(xl->store_ctx->objs,i); | 330 | if(j != -1) tmp=sk_X509_OBJECT_value(xl->store_ctx->objs,j); | 
| 331 | else tmp = NULL; | 331 | else tmp = NULL; | 
| 332 | CRYPTO_r_unlock(CRYPTO_LOCK_X509_STORE); | 332 | CRYPTO_r_unlock(CRYPTO_LOCK_X509_STORE); | 
| 333 | 333 | ||
| diff --git a/src/lib/libcrypto/x509/x509_cmp.c b/src/lib/libcrypto/x509/x509_cmp.c index b147d573d2..3f9f9b3d47 100644 --- a/src/lib/libcrypto/x509/x509_cmp.c +++ b/src/lib/libcrypto/x509/x509_cmp.c | |||
| @@ -199,19 +199,13 @@ unsigned long X509_NAME_hash(X509_NAME *x) | |||
| 199 | { | 199 | { | 
| 200 | unsigned long ret=0; | 200 | unsigned long ret=0; | 
| 201 | unsigned char md[16]; | 201 | unsigned char md[16]; | 
| 202 | unsigned char str[256],*p,*pp; | ||
| 203 | int i; | ||
| 204 | |||
| 205 | i=i2d_X509_NAME(x,NULL); | ||
| 206 | if (i > sizeof(str)) | ||
| 207 | p=OPENSSL_malloc(i); | ||
| 208 | else | ||
| 209 | p=str; | ||
| 210 | 202 | ||
| 211 | pp=p; | 203 | /* Ensure cached version is up to date */ | 
| 212 | i2d_X509_NAME(x,&pp); | 204 | i2d_X509_NAME(x,NULL); | 
| 213 | MD5((unsigned char *)p,i,&(md[0])); | 205 | /* Use cached encoding directly rather than copying: this should | 
| 214 | if (p != str) OPENSSL_free(p); | 206 | * keep libsafe happy. | 
| 207 | */ | ||
| 208 | MD5((unsigned char *)x->bytes->data,x->bytes->length,&(md[0])); | ||
| 215 | 209 | ||
| 216 | ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)| | 210 | ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)| | 
| 217 | ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L) | 211 | ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L) | 
| diff --git a/src/lib/libcrypto/x509v3/Makefile.ssl b/src/lib/libcrypto/x509v3/Makefile.ssl index f7c3a6ca13..236e13af4e 100644 --- a/src/lib/libcrypto/x509v3/Makefile.ssl +++ b/src/lib/libcrypto/x509v3/Makefile.ssl | |||
| @@ -43,7 +43,8 @@ all: lib | |||
| 43 | 43 | ||
| 44 | lib: $(LIBOBJ) | 44 | lib: $(LIBOBJ) | 
| 45 | $(AR) $(LIB) $(LIBOBJ) | 45 | $(AR) $(LIB) $(LIBOBJ) | 
| 46 | $(RANLIB) $(LIB) | 46 | @echo You may get an error following this line. Please ignore. | 
| 47 | - $(RANLIB) $(LIB) | ||
| 47 | @touch lib | 48 | @touch lib | 
| 48 | 49 | ||
| 49 | files: | 50 | files: | 
| diff --git a/src/lib/libcrypto/x509v3/v3_alt.c b/src/lib/libcrypto/x509v3/v3_alt.c index 733919f250..94bebcd448 100644 --- a/src/lib/libcrypto/x509v3/v3_alt.c +++ b/src/lib/libcrypto/x509v3/v3_alt.c | |||
| @@ -270,7 +270,7 @@ static int copy_email(X509V3_CTX *ctx, STACK_OF(GENERAL_NAME) *gens) | |||
| 270 | /* Now add any email address(es) to STACK */ | 270 | /* Now add any email address(es) to STACK */ | 
| 271 | i = -1; | 271 | i = -1; | 
| 272 | while((i = X509_NAME_get_index_by_NID(nm, | 272 | while((i = X509_NAME_get_index_by_NID(nm, | 
| 273 | NID_pkcs9_emailAddress, i)) > 0) { | 273 | NID_pkcs9_emailAddress, i)) >= 0) { | 
| 274 | ne = X509_NAME_get_entry(nm, i); | 274 | ne = X509_NAME_get_entry(nm, i); | 
| 275 | email = M_ASN1_IA5STRING_dup(X509_NAME_ENTRY_get_data(ne)); | 275 | email = M_ASN1_IA5STRING_dup(X509_NAME_ENTRY_get_data(ne)); | 
| 276 | if(!email || !(gen = GENERAL_NAME_new())) { | 276 | if(!email || !(gen = GENERAL_NAME_new())) { | 
| diff --git a/src/lib/libcrypto/x509v3/v3_prn.c b/src/lib/libcrypto/x509v3/v3_prn.c index dbc4fb1f16..14b804c4ad 100644 --- a/src/lib/libcrypto/x509v3/v3_prn.c +++ b/src/lib/libcrypto/x509v3/v3_prn.c | |||
| @@ -85,9 +85,16 @@ void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, int ml) | |||
| 85 | else BIO_printf(out, "%s:%s", nval->name, nval->value); | 85 | else BIO_printf(out, "%s:%s", nval->name, nval->value); | 
| 86 | #else | 86 | #else | 
| 87 | else { | 87 | else { | 
| 88 | char tmp[10240]; /* 10k is BIO_printf's limit anyway */ | 88 | int len; | 
| 89 | ascii2ebcdic(tmp, nval->value, strlen(nval->value)+1); | 89 | char *tmp; | 
| 90 | BIO_printf(out, "%s:%s", nval->name, tmp); | 90 | len = strlen(nval->value)+1; | 
| 91 | tmp = OPENSSL_malloc(len); | ||
| 92 | if (tmp) | ||
| 93 | { | ||
| 94 | ascii2ebcdic(tmp, nval->value, len); | ||
| 95 | BIO_printf(out, "%s:%s", nval->name, tmp); | ||
| 96 | OPENSSL_free(tmp); | ||
| 97 | } | ||
| 91 | } | 98 | } | 
| 92 | #endif | 99 | #endif | 
| 93 | if(ml) BIO_puts(out, "\n"); | 100 | if(ml) BIO_puts(out, "\n"); | 
| @@ -115,9 +122,16 @@ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, int flag, int indent) | |||
| 115 | BIO_printf(out, "%*s%s", indent, "", value); | 122 | BIO_printf(out, "%*s%s", indent, "", value); | 
| 116 | #else | 123 | #else | 
| 117 | { | 124 | { | 
| 118 | char tmp[10240]; /* 10k is BIO_printf's limit anyway */ | 125 | int len; | 
| 119 | ascii2ebcdic(tmp, value, strlen(value)+1); | 126 | char *tmp; | 
| 120 | BIO_printf(out, "%*s%s", indent, "", tmp); | 127 | len = strlen(value)+1; | 
| 128 | tmp = OPENSSL_malloc(len); | ||
| 129 | if (tmp) | ||
| 130 | { | ||
| 131 | ascii2ebcdic(tmp, value, len); | ||
| 132 | BIO_printf(out, "%*s%s", indent, "", tmp); | ||
| 133 | OPENSSL_free(tmp); | ||
| 134 | } | ||
| 121 | } | 135 | } | 
| 122 | #endif | 136 | #endif | 
| 123 | } else if(method->i2v) { | 137 | } else if(method->i2v) { | 
| diff --git a/src/lib/libcrypto/x509v3/v3_purp.c b/src/lib/libcrypto/x509v3/v3_purp.c index 867699b26f..8aecd00e63 100644 --- a/src/lib/libcrypto/x509v3/v3_purp.c +++ b/src/lib/libcrypto/x509v3/v3_purp.c | |||
| @@ -362,6 +362,8 @@ static int ca_check(const X509 *x) | |||
| 362 | else return 0; | 362 | else return 0; | 
| 363 | } else { | 363 | } else { | 
| 364 | if((x->ex_flags & V1_ROOT) == V1_ROOT) return 3; | 364 | if((x->ex_flags & V1_ROOT) == V1_ROOT) return 3; | 
| 365 | /* If key usage present it must have certSign so tolerate it */ | ||
| 366 | else if (x->ex_flags & EXFLAG_KUSAGE) return 3; | ||
| 365 | else return 2; | 367 | else return 2; | 
| 366 | } | 368 | } | 
| 367 | } | 369 | } | 
| @@ -380,7 +382,7 @@ static int check_ssl_ca(const X509 *x) | |||
| 380 | if(ca_ret != 2) return ca_ret; | 382 | if(ca_ret != 2) return ca_ret; | 
| 381 | else return 0; | 383 | else return 0; | 
| 382 | } | 384 | } | 
| 383 | 385 | ||
| 384 | 386 | ||
| 385 | static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x, int ca) | 387 | static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x, int ca) | 
| 386 | { | 388 | { | 
| @@ -446,7 +448,7 @@ static int check_purpose_smime_sign(const X509_PURPOSE *xp, const X509 *x, int c | |||
| 446 | int ret; | 448 | int ret; | 
| 447 | ret = purpose_smime(x, ca); | 449 | ret = purpose_smime(x, ca); | 
| 448 | if(!ret || ca) return ret; | 450 | if(!ret || ca) return ret; | 
| 449 | if(ku_reject(x, KU_DIGITAL_SIGNATURE)) return 0; | 451 | if(ku_reject(x, KU_DIGITAL_SIGNATURE|KU_NON_REPUDIATION)) return 0; | 
| 450 | return ret; | 452 | return ret; | 
| 451 | } | 453 | } | 
| 452 | 454 | ||
| diff --git a/src/lib/libssl/LICENSE b/src/lib/libssl/LICENSE index bdd5f7bdd0..3fd259ac32 100644 --- a/src/lib/libssl/LICENSE +++ b/src/lib/libssl/LICENSE | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | --------------- | 12 | --------------- | 
| 13 | 13 | ||
| 14 | /* ==================================================================== | 14 | /* ==================================================================== | 
| 15 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | 15 | * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. | 
| 16 | * | 16 | * | 
| 17 | * Redistribution and use in source and binary forms, with or without | 17 | * Redistribution and use in source and binary forms, with or without | 
| 18 | * modification, are permitted provided that the following conditions | 18 | * modification, are permitted provided that the following conditions | 
| diff --git a/src/lib/libssl/crypto/Makefile b/src/lib/libssl/crypto/Makefile index a44392a9bd..a05ac78e0e 100644 --- a/src/lib/libssl/crypto/Makefile +++ b/src/lib/libssl/crypto/Makefile | |||
| @@ -29,7 +29,7 @@ CFLAGS+= -DNO_RC5 | |||
| 29 | CFLAGS+= -I${.CURDIR}/../${SSLEAYDIST} | 29 | CFLAGS+= -I${.CURDIR}/../${SSLEAYDIST} | 
| 30 | CFLAGS+= -I${LCRYPTO_SRC} | 30 | CFLAGS+= -I${LCRYPTO_SRC} | 
| 31 | CFLAGS+= -I${LCRYPTO_INC} | 31 | CFLAGS+= -I${LCRYPTO_INC} | 
| 32 | SRCS+= cryptlib.c ex_data.c cpt_err.c mem.c mem_dbg.c tmdiff.c cversion.c | 32 | SRCS+= cryptlib.c ex_data.c cpt_err.c mem.c mem_dbg.c tmdiff.c cversion.c uid.c | 
| 33 | CFLAGS+= -I${LCRYPTO_SRC}/md2 | 33 | CFLAGS+= -I${LCRYPTO_SRC}/md2 | 
| 34 | SRCS+= md2_dgst.c md2_one.c | 34 | SRCS+= md2_dgst.c md2_one.c | 
| 35 | CFLAGS+= -I${LCRYPTO_SRC}/md5 | 35 | CFLAGS+= -I${LCRYPTO_SRC}/md5 | 
| diff --git a/src/lib/libssl/crypto/shlib_version b/src/lib/libssl/crypto/shlib_version index 890c57389b..3066b9771e 100644 --- a/src/lib/libssl/crypto/shlib_version +++ b/src/lib/libssl/crypto/shlib_version | |||
| @@ -1,2 +1,2 @@ | |||
| 1 | major=4 | 1 | major=5 | 
| 2 | minor=1 | 2 | minor=0 | 
| diff --git a/src/lib/libssl/s23_lib.c b/src/lib/libssl/s23_lib.c index dded7a19c5..ad2d8dadf7 100644 --- a/src/lib/libssl/s23_lib.c +++ b/src/lib/libssl/s23_lib.c | |||
| @@ -63,6 +63,7 @@ | |||
| 63 | static int ssl23_num_ciphers(void ); | 63 | static int ssl23_num_ciphers(void ); | 
| 64 | static SSL_CIPHER *ssl23_get_cipher(unsigned int u); | 64 | static SSL_CIPHER *ssl23_get_cipher(unsigned int u); | 
| 65 | static int ssl23_read(SSL *s, void *buf, int len); | 65 | static int ssl23_read(SSL *s, void *buf, int len); | 
| 66 | static int ssl23_peek(SSL *s, void *buf, int len); | ||
| 66 | static int ssl23_write(SSL *s, const void *buf, int len); | 67 | static int ssl23_write(SSL *s, const void *buf, int len); | 
| 67 | static long ssl23_default_timeout(void ); | 68 | static long ssl23_default_timeout(void ); | 
| 68 | static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); | 69 | static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); | 
| @@ -77,7 +78,7 @@ static SSL_METHOD SSLv23_data= { | |||
| 77 | ssl_undefined_function, | 78 | ssl_undefined_function, | 
| 78 | ssl_undefined_function, | 79 | ssl_undefined_function, | 
| 79 | ssl23_read, | 80 | ssl23_read, | 
| 80 | (int (*)(struct ssl_st *, char *, int))ssl_undefined_function, | 81 | ssl23_peek, | 
| 81 | ssl23_write, | 82 | ssl23_write, | 
| 82 | ssl_undefined_function, | 83 | ssl_undefined_function, | 
| 83 | ssl_undefined_function, | 84 | ssl_undefined_function, | 
| @@ -169,13 +170,6 @@ static int ssl23_read(SSL *s, void *buf, int len) | |||
| 169 | { | 170 | { | 
| 170 | int n; | 171 | int n; | 
| 171 | 172 | ||
| 172 | #if 0 | ||
| 173 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | ||
| 174 | { | ||
| 175 | s->rwstate=SSL_NOTHING; | ||
| 176 | return(0); | ||
| 177 | } | ||
| 178 | #endif | ||
| 179 | clear_sys_error(); | 173 | clear_sys_error(); | 
| 180 | if (SSL_in_init(s) && (!s->in_handshake)) | 174 | if (SSL_in_init(s) && (!s->in_handshake)) | 
| 181 | { | 175 | { | 
| @@ -195,17 +189,33 @@ static int ssl23_read(SSL *s, void *buf, int len) | |||
| 195 | } | 189 | } | 
| 196 | } | 190 | } | 
| 197 | 191 | ||
| 198 | static int ssl23_write(SSL *s, const void *buf, int len) | 192 | static int ssl23_peek(SSL *s, void *buf, int len) | 
| 199 | { | 193 | { | 
| 200 | int n; | 194 | int n; | 
| 201 | 195 | ||
| 202 | #if 0 | 196 | clear_sys_error(); | 
| 203 | if (s->shutdown & SSL_SENT_SHUTDOWN) | 197 | if (SSL_in_init(s) && (!s->in_handshake)) | 
| 198 | { | ||
| 199 | n=s->handshake_func(s); | ||
| 200 | if (n < 0) return(n); | ||
| 201 | if (n == 0) | ||
| 202 | { | ||
| 203 | SSLerr(SSL_F_SSL23_PEEK,SSL_R_SSL_HANDSHAKE_FAILURE); | ||
| 204 | return(-1); | ||
| 205 | } | ||
| 206 | return(SSL_peek(s,buf,len)); | ||
| 207 | } | ||
| 208 | else | ||
| 204 | { | 209 | { | 
| 205 | s->rwstate=SSL_NOTHING; | 210 | ssl_undefined_function(s); | 
| 206 | return(0); | 211 | return(-1); | 
| 207 | } | 212 | } | 
| 208 | #endif | 213 | } | 
| 214 | |||
| 215 | static int ssl23_write(SSL *s, const void *buf, int len) | ||
| 216 | { | ||
| 217 | int n; | ||
| 218 | |||
| 209 | clear_sys_error(); | 219 | clear_sys_error(); | 
| 210 | if (SSL_in_init(s) && (!s->in_handshake)) | 220 | if (SSL_in_init(s) && (!s->in_handshake)) | 
| 211 | { | 221 | { | 
| diff --git a/src/lib/libssl/s3_both.c b/src/lib/libssl/s3_both.c index d92c164b0f..10d8d3b15a 100644 --- a/src/lib/libssl/s3_both.c +++ b/src/lib/libssl/s3_both.c | |||
| @@ -365,7 +365,7 @@ long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 365 | while (s->init_num < 4) | 365 | while (s->init_num < 4) | 
| 366 | { | 366 | { | 
| 367 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num], | 367 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num], | 
| 368 | 4 - s->init_num); | 368 | 4 - s->init_num, 0); | 
| 369 | if (i <= 0) | 369 | if (i <= 0) | 
| 370 | { | 370 | { | 
| 371 | s->rwstate=SSL_READING; | 371 | s->rwstate=SSL_READING; | 
| @@ -434,7 +434,7 @@ long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 434 | n=s->s3->tmp.message_size; | 434 | n=s->s3->tmp.message_size; | 
| 435 | while (n > 0) | 435 | while (n > 0) | 
| 436 | { | 436 | { | 
| 437 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],n); | 437 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],n,0); | 
| 438 | if (i <= 0) | 438 | if (i <= 0) | 
| 439 | { | 439 | { | 
| 440 | s->rwstate=SSL_READING; | 440 | s->rwstate=SSL_READING; | 
| diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c index 62040f9f1d..eec45cfa48 100644 --- a/src/lib/libssl/s3_clnt.c +++ b/src/lib/libssl/s3_clnt.c | |||
| @@ -815,6 +815,7 @@ static int ssl3_get_server_certificate(SSL *s) | |||
| 815 | X509_free(s->session->peer); | 815 | X509_free(s->session->peer); | 
| 816 | CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509); | 816 | CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509); | 
| 817 | s->session->peer=x; | 817 | s->session->peer=x; | 
| 818 | s->session->verify_result = s->verify_result; | ||
| 818 | 819 | ||
| 819 | x=NULL; | 820 | x=NULL; | 
| 820 | ret=1; | 821 | ret=1; | 
| diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index cee2021b6b..c32c06de32 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
| @@ -55,6 +55,59 @@ | |||
| 55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence | 
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] | 
| 57 | */ | 57 | */ | 
| 58 | /* ==================================================================== | ||
| 59 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | ||
| 60 | * | ||
| 61 | * Redistribution and use in source and binary forms, with or without | ||
| 62 | * modification, are permitted provided that the following conditions | ||
| 63 | * are met: | ||
| 64 | * | ||
| 65 | * 1. Redistributions of source code must retain the above copyright | ||
| 66 | * notice, this list of conditions and the following disclaimer. | ||
| 67 | * | ||
| 68 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 69 | * notice, this list of conditions and the following disclaimer in | ||
| 70 | * the documentation and/or other materials provided with the | ||
| 71 | * distribution. | ||
| 72 | * | ||
| 73 | * 3. All advertising materials mentioning features or use of this | ||
| 74 | * software must display the following acknowledgment: | ||
| 75 | * "This product includes software developed by the OpenSSL Project | ||
| 76 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
| 77 | * | ||
| 78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
| 79 | * endorse or promote products derived from this software without | ||
| 80 | * prior written permission. For written permission, please contact | ||
| 81 | * openssl-core@openssl.org. | ||
| 82 | * | ||
| 83 | * 5. Products derived from this software may not be called "OpenSSL" | ||
| 84 | * nor may "OpenSSL" appear in their names without prior written | ||
| 85 | * permission of the OpenSSL Project. | ||
| 86 | * | ||
| 87 | * 6. Redistributions of any form whatsoever must retain the following | ||
| 88 | * acknowledgment: | ||
| 89 | * "This product includes software developed by the OpenSSL Project | ||
| 90 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
| 91 | * | ||
| 92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
| 93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
| 96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
| 101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
| 103 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 104 | * ==================================================================== | ||
| 105 | * | ||
| 106 | * This product includes cryptographic software written by Eric Young | ||
| 107 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
| 108 | * Hudson (tjh@cryptsoft.com). | ||
| 109 | * | ||
| 110 | */ | ||
| 58 | 111 | ||
| 59 | #include <stdio.h> | 112 | #include <stdio.h> | 
| 60 | #include <openssl/md5.h> | 113 | #include <openssl/md5.h> | 
| @@ -638,10 +691,9 @@ SSL_CIPHER *ssl3_get_cipher(unsigned int u) | |||
| 638 | return(NULL); | 691 | return(NULL); | 
| 639 | } | 692 | } | 
| 640 | 693 | ||
| 641 | /* The problem is that it may not be the correct record type */ | ||
| 642 | int ssl3_pending(SSL *s) | 694 | int ssl3_pending(SSL *s) | 
| 643 | { | 695 | { | 
| 644 | return(s->s3->rrec.length); | 696 | return (s->s3->rrec.type == SSL3_RT_APPLICATION_DATA) ? s->s3->rrec.length : 0; | 
| 645 | } | 697 | } | 
| 646 | 698 | ||
| 647 | int ssl3_new(SSL *s) | 699 | int ssl3_new(SSL *s) | 
| @@ -1189,7 +1241,7 @@ int ssl3_shutdown(SSL *s) | |||
| 1189 | else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) | 1241 | else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) | 
| 1190 | { | 1242 | { | 
| 1191 | /* If we are waiting for a close from our peer, we are closed */ | 1243 | /* If we are waiting for a close from our peer, we are closed */ | 
| 1192 | ssl3_read_bytes(s,0,NULL,0); | 1244 | ssl3_read_bytes(s,0,NULL,0,0); | 
| 1193 | } | 1245 | } | 
| 1194 | 1246 | ||
| 1195 | if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) && | 1247 | if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) && | 
| @@ -1252,14 +1304,14 @@ int ssl3_write(SSL *s, const void *buf, int len) | |||
| 1252 | return(ret); | 1304 | return(ret); | 
| 1253 | } | 1305 | } | 
| 1254 | 1306 | ||
| 1255 | int ssl3_read(SSL *s, void *buf, int len) | 1307 | static int ssl3_read_internal(SSL *s, void *buf, int len, int peek) | 
| 1256 | { | 1308 | { | 
| 1257 | int ret; | 1309 | int ret; | 
| 1258 | 1310 | ||
| 1259 | clear_sys_error(); | 1311 | clear_sys_error(); | 
| 1260 | if (s->s3->renegotiate) ssl3_renegotiate_check(s); | 1312 | if (s->s3->renegotiate) ssl3_renegotiate_check(s); | 
| 1261 | s->s3->in_read_app_data=1; | 1313 | s->s3->in_read_app_data=1; | 
| 1262 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len); | 1314 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek); | 
| 1263 | if ((ret == -1) && (s->s3->in_read_app_data == 0)) | 1315 | if ((ret == -1) && (s->s3->in_read_app_data == 0)) | 
| 1264 | { | 1316 | { | 
| 1265 | /* ssl3_read_bytes decided to call s->handshake_func, which | 1317 | /* ssl3_read_bytes decided to call s->handshake_func, which | 
| @@ -1269,7 +1321,7 @@ int ssl3_read(SSL *s, void *buf, int len) | |||
| 1269 | * by resetting 'in_read_app_data', strangely); so disable | 1321 | * by resetting 'in_read_app_data', strangely); so disable | 
| 1270 | * handshake processing and try to read application data again. */ | 1322 | * handshake processing and try to read application data again. */ | 
| 1271 | s->in_handshake++; | 1323 | s->in_handshake++; | 
| 1272 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len); | 1324 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek); | 
| 1273 | s->in_handshake--; | 1325 | s->in_handshake--; | 
| 1274 | } | 1326 | } | 
| 1275 | else | 1327 | else | 
| @@ -1278,26 +1330,14 @@ int ssl3_read(SSL *s, void *buf, int len) | |||
| 1278 | return(ret); | 1330 | return(ret); | 
| 1279 | } | 1331 | } | 
| 1280 | 1332 | ||
| 1281 | int ssl3_peek(SSL *s, char *buf, int len) | 1333 | int ssl3_read(SSL *s, void *buf, int len) | 
| 1282 | { | 1334 | { | 
| 1283 | SSL3_RECORD *rr; | 1335 | return ssl3_read_internal(s, buf, len, 0); | 
| 1284 | int n; | 1336 | } | 
| 1285 | |||
| 1286 | rr= &(s->s3->rrec); | ||
| 1287 | if ((rr->length == 0) || (rr->type != SSL3_RT_APPLICATION_DATA)) | ||
| 1288 | { | ||
| 1289 | n=ssl3_read(s,buf,1); | ||
| 1290 | if (n <= 0) return(n); | ||
| 1291 | rr->length++; | ||
| 1292 | rr->off--; | ||
| 1293 | } | ||
| 1294 | 1337 | ||
| 1295 | if ((unsigned int)len > rr->length) | 1338 | int ssl3_peek(SSL *s, void *buf, int len) | 
| 1296 | n=rr->length; | 1339 | { | 
| 1297 | else | 1340 | return ssl3_read_internal(s, buf, len, 1); | 
| 1298 | n=len; | ||
| 1299 | memcpy(buf,&(rr->data[rr->off]),(unsigned int)n); | ||
| 1300 | return(n); | ||
| 1301 | } | 1341 | } | 
| 1302 | 1342 | ||
| 1303 | int ssl3_renegotiate(SSL *s) | 1343 | int ssl3_renegotiate(SSL *s) | 
| diff --git a/src/lib/libssl/s3_pkt.c b/src/lib/libssl/s3_pkt.c index 1414079853..9ab76604a6 100644 --- a/src/lib/libssl/s3_pkt.c +++ b/src/lib/libssl/s3_pkt.c | |||
| @@ -704,7 +704,7 @@ static int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, | |||
| 704 | * Application data protocol | 704 | * Application data protocol | 
| 705 | * none of our business | 705 | * none of our business | 
| 706 | */ | 706 | */ | 
| 707 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len) | 707 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | 
| 708 | { | 708 | { | 
| 709 | int al,i,j,ret; | 709 | int al,i,j,ret; | 
| 710 | unsigned int n; | 710 | unsigned int n; | 
| @@ -715,7 +715,8 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len) | |||
| 715 | if (!ssl3_setup_buffers(s)) | 715 | if (!ssl3_setup_buffers(s)) | 
| 716 | return(-1); | 716 | return(-1); | 
| 717 | 717 | ||
| 718 | if ((type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) | 718 | if ((type && (type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) || | 
| 719 | (peek && (type != SSL3_RT_APPLICATION_DATA))) | ||
| 719 | { | 720 | { | 
| 720 | SSLerr(SSL_F_SSL3_READ_BYTES, SSL_R_INTERNAL_ERROR); | 721 | SSLerr(SSL_F_SSL3_READ_BYTES, SSL_R_INTERNAL_ERROR); | 
| 721 | return -1; | 722 | return -1; | 
| @@ -728,6 +729,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len) | |||
| 728 | unsigned char *dst = buf; | 729 | unsigned char *dst = buf; | 
| 729 | unsigned int k; | 730 | unsigned int k; | 
| 730 | 731 | ||
| 732 | /* peek == 0 */ | ||
| 731 | n = 0; | 733 | n = 0; | 
| 732 | while ((len > 0) && (s->s3->handshake_fragment_len > 0)) | 734 | while ((len > 0) && (s->s3->handshake_fragment_len > 0)) | 
| 733 | { | 735 | { | 
| @@ -763,7 +765,7 @@ start: | |||
| 763 | * s->s3->rrec.length, - number of bytes. */ | 765 | * s->s3->rrec.length, - number of bytes. */ | 
| 764 | rr = &(s->s3->rrec); | 766 | rr = &(s->s3->rrec); | 
| 765 | 767 | ||
| 766 | /* get new packet */ | 768 | /* get new packet if necessary */ | 
| 767 | if ((rr->length == 0) || (s->rstate == SSL_ST_READ_BODY)) | 769 | if ((rr->length == 0) || (s->rstate == SSL_ST_READ_BODY)) | 
| 768 | { | 770 | { | 
| 769 | ret=ssl3_get_record(s); | 771 | ret=ssl3_get_record(s); | 
| @@ -781,7 +783,8 @@ start: | |||
| 781 | goto err; | 783 | goto err; | 
| 782 | } | 784 | } | 
| 783 | 785 | ||
| 784 | /* If the other end has shutdown, throw anything we read away */ | 786 | /* If the other end has shut down, throw anything we read away | 
| 787 | * (even in 'peek' mode) */ | ||
| 785 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 788 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 
| 786 | { | 789 | { | 
| 787 | rr->length=0; | 790 | rr->length=0; | 
| @@ -810,12 +813,15 @@ start: | |||
| 810 | n = (unsigned int)len; | 813 | n = (unsigned int)len; | 
| 811 | 814 | ||
| 812 | memcpy(buf,&(rr->data[rr->off]),n); | 815 | memcpy(buf,&(rr->data[rr->off]),n); | 
| 813 | rr->length-=n; | 816 | if (!peek) | 
| 814 | rr->off+=n; | ||
| 815 | if (rr->length == 0) | ||
| 816 | { | 817 | { | 
| 817 | s->rstate=SSL_ST_READ_HEADER; | 818 | rr->length-=n; | 
| 818 | rr->off=0; | 819 | rr->off+=n; | 
| 820 | if (rr->length == 0) | ||
| 821 | { | ||
| 822 | s->rstate=SSL_ST_READ_HEADER; | ||
| 823 | rr->off=0; | ||
| 824 | } | ||
| 819 | } | 825 | } | 
| 820 | return(n); | 826 | return(n); | 
| 821 | } | 827 | } | 
| diff --git a/src/lib/libssl/shlib_version b/src/lib/libssl/shlib_version index 890c57389b..3066b9771e 100644 --- a/src/lib/libssl/shlib_version +++ b/src/lib/libssl/shlib_version | |||
| @@ -1,2 +1,2 @@ | |||
| 1 | major=4 | 1 | major=5 | 
| 2 | minor=1 | 2 | minor=0 | 
| diff --git a/src/lib/libssl/src/CHANGES b/src/lib/libssl/src/CHANGES index 87853c3b29..08ef8508d8 100644 --- a/src/lib/libssl/src/CHANGES +++ b/src/lib/libssl/src/CHANGES | |||
| @@ -2,6 +2,291 @@ | |||
| 2 | OpenSSL CHANGES | 2 | OpenSSL CHANGES | 
| 3 | _______________ | 3 | _______________ | 
| 4 | 4 | ||
| 5 | Changes between 0.9.6 and 0.9.6a [5 Apr 2001] | ||
| 6 | |||
| 7 | *) Fix a couple of memory leaks in PKCS7_dataDecode() | ||
| 8 | [Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>] | ||
| 9 | |||
| 10 | *) Change Configure and Makefiles to provide EXE_EXT, which will contain | ||
| 11 | the default extension for executables, if any. Also, make the perl | ||
| 12 | scripts that use symlink() to test if it really exists and use "cp" | ||
| 13 | if it doesn't. All this made OpenSSL compilable and installable in | ||
| 14 | CygWin. | ||
| 15 | [Richard Levitte] | ||
| 16 | |||
| 17 | *) Fix for asn1_GetSequence() for indefinite length constructed data. | ||
| 18 | If SEQUENCE is length is indefinite just set c->slen to the total | ||
| 19 | amount of data available. | ||
| 20 | [Steve Henson, reported by shige@FreeBSD.org] | ||
| 21 | [This change does not apply to 0.9.7.] | ||
| 22 | |||
| 23 | *) Change bctest to avoid here-documents inside command substitution | ||
| 24 | (workaround for FreeBSD /bin/sh bug). | ||
| 25 | For compatibility with Ultrix, avoid shell functions (introduced | ||
| 26 | in the bctest version that searches along $PATH). | ||
| 27 | [Bodo Moeller] | ||
| 28 | |||
| 29 | *) Rename 'des_encrypt' to 'des_encrypt1'. This avoids the clashes | ||
| 30 | with des_encrypt() defined on some operating systems, like Solaris | ||
| 31 | and UnixWare. | ||
| 32 | [Richard Levitte] | ||
| 33 | |||
| 34 | *) Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton: | ||
| 35 | On the Importance of Eliminating Errors in Cryptographic | ||
| 36 | Computations, J. Cryptology 14 (2001) 2, 101-119, | ||
| 37 | http://theory.stanford.edu/~dabo/papers/faults.ps.gz). | ||
| 38 | [Ulf Moeller] | ||
| 39 | |||
| 40 | *) MIPS assembler BIGNUM division bug fix. | ||
| 41 | [Andy Polyakov] | ||
| 42 | |||
| 43 | *) Disabled incorrect Alpha assembler code. | ||
| 44 | [Richard Levitte] | ||
| 45 | |||
| 46 | *) Fix PKCS#7 decode routines so they correctly update the length | ||
| 47 | after reading an EOC for the EXPLICIT tag. | ||
| 48 | [Steve Henson] | ||
| 49 | [This change does not apply to 0.9.7.] | ||
| 50 | |||
| 51 | *) Fix bug in PKCS#12 key generation routines. This was triggered | ||
| 52 | if a 3DES key was generated with a 0 initial byte. Include | ||
| 53 | PKCS12_BROKEN_KEYGEN compilation option to retain the old | ||
| 54 | (but broken) behaviour. | ||
| 55 | [Steve Henson] | ||
| 56 | |||
| 57 | *) Enhance bctest to search for a working bc along $PATH and print | ||
| 58 | it when found. | ||
| 59 | [Tim Rice <tim@multitalents.net> via Richard Levitte] | ||
| 60 | |||
| 61 | *) Fix memory leaks in err.c: free err_data string if necessary; | ||
| 62 | don't write to the wrong index in ERR_set_error_data. | ||
| 63 | [Bodo Moeller] | ||
| 64 | |||
| 65 | *) Implement ssl23_peek (analogous to ssl23_read), which previously | ||
| 66 | did not exist. | ||
| 67 | [Bodo Moeller] | ||
| 68 | |||
| 69 | *) Replace rdtsc with _emit statements for VC++ version 5. | ||
| 70 | [Jeremy Cooper <jeremy@baymoo.org>] | ||
| 71 | |||
| 72 | *) Make it possible to reuse SSLv2 sessions. | ||
| 73 | [Richard Levitte] | ||
| 74 | |||
| 75 | *) In copy_email() check for >= 0 as a return value for | ||
| 76 | X509_NAME_get_index_by_NID() since 0 is a valid index. | ||
| 77 | [Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>] | ||
| 78 | |||
| 79 | *) Avoid coredump with unsupported or invalid public keys by checking if | ||
| 80 | X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when | ||
| 81 | PKCS7_verify() fails with non detached data. | ||
| 82 | [Steve Henson] | ||
| 83 | |||
| 84 | *) Don't use getenv in library functions when run as setuid/setgid. | ||
| 85 | New function OPENSSL_issetugid(). | ||
| 86 | [Ulf Moeller] | ||
| 87 | |||
| 88 | *) Avoid false positives in memory leak detection code (crypto/mem_dbg.c) | ||
| 89 | due to incorrect handling of multi-threading: | ||
| 90 | |||
| 91 | 1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl(). | ||
| 92 | |||
| 93 | 2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on(). | ||
| 94 | |||
| 95 | 3. Count how many times MemCheck_off() has been called so that | ||
| 96 | nested use can be treated correctly. This also avoids | ||
| 97 | inband-signalling in the previous code (which relied on the | ||
| 98 | assumption that thread ID 0 is impossible). | ||
| 99 | [Bodo Moeller] | ||
| 100 | |||
| 101 | *) Add "-rand" option also to s_client and s_server. | ||
| 102 | [Lutz Jaenicke] | ||
| 103 | |||
| 104 | *) Fix CPU detection on Irix 6.x. | ||
| 105 | [Kurt Hockenbury <khockenb@stevens-tech.edu> and | ||
| 106 | "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>] | ||
| 107 | |||
| 108 | *) Fix X509_NAME bug which produced incorrect encoding if X509_NAME | ||
| 109 | was empty. | ||
| 110 | [Steve Henson] | ||
| 111 | [This change does not apply to 0.9.7.] | ||
| 112 | |||
| 113 | *) Use the cached encoding of an X509_NAME structure rather than | ||
| 114 | copying it. This is apparently the reason for the libsafe "errors" | ||
| 115 | but the code is actually correct. | ||
| 116 | [Steve Henson] | ||
| 117 | |||
| 118 | *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent | ||
| 119 | Bleichenbacher's DSA attack. | ||
| 120 | Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits | ||
| 121 | to be set and top=0 forces the highest bit to be set; top=-1 is new | ||
| 122 | and leaves the highest bit random. | ||
| 123 | [Ulf Moeller, Bodo Moeller] | ||
| 124 | |||
| 125 | *) In the NCONF_...-based implementations for CONF_... queries | ||
| 126 | (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using | ||
| 127 | a temporary CONF structure with the data component set to NULL | ||
| 128 | (which gives segmentation faults in lh_retrieve). | ||
| 129 | Instead, use NULL for the CONF pointer in CONF_get_string and | ||
| 130 | CONF_get_number (which may use environment variables) and directly | ||
| 131 | return NULL from CONF_get_section. | ||
| 132 | [Bodo Moeller] | ||
| 133 | |||
| 134 | *) Fix potential buffer overrun for EBCDIC. | ||
| 135 | [Ulf Moeller] | ||
| 136 | |||
| 137 | *) Tolerate nonRepudiation as being valid for S/MIME signing and certSign | ||
| 138 | keyUsage if basicConstraints absent for a CA. | ||
| 139 | [Steve Henson] | ||
| 140 | |||
| 141 | *) Make SMIME_write_PKCS7() write mail header values with a format that | ||
| 142 | is more generally accepted (no spaces before the semicolon), since | ||
| 143 | some programs can't parse those values properly otherwise. Also make | ||
| 144 | sure BIO's that break lines after each write do not create invalid | ||
| 145 | headers. | ||
| 146 | [Richard Levitte] | ||
| 147 | |||
| 148 | *) Make the CRL encoding routines work with empty SEQUENCE OF. The | ||
| 149 | macros previously used would not encode an empty SEQUENCE OF | ||
| 150 | and break the signature. | ||
| 151 | [Steve Henson] | ||
| 152 | [This change does not apply to 0.9.7.] | ||
| 153 | |||
| 154 | *) Zero the premaster secret after deriving the master secret in | ||
| 155 | DH ciphersuites. | ||
| 156 | [Steve Henson] | ||
| 157 | |||
| 158 | *) Add some EVP_add_digest_alias registrations (as found in | ||
| 159 | OpenSSL_add_all_digests()) to SSL_library_init() | ||
| 160 | aka OpenSSL_add_ssl_algorithms(). This provides improved | ||
| 161 | compatibility with peers using X.509 certificates | ||
| 162 | with unconventional AlgorithmIdentifier OIDs. | ||
| 163 | [Bodo Moeller] | ||
| 164 | |||
| 165 | *) Fix for Irix with NO_ASM. | ||
| 166 | ["Bruce W. Forsberg" <bruce.forsberg@baesystems.com>] | ||
| 167 | |||
| 168 | *) ./config script fixes. | ||
| 169 | [Ulf Moeller, Richard Levitte] | ||
| 170 | |||
| 171 | *) Fix 'openssl passwd -1'. | ||
| 172 | [Bodo Moeller] | ||
| 173 | |||
| 174 | *) Change PKCS12_key_gen_asc() so it can cope with non null | ||
| 175 | terminated strings whose length is passed in the passlen | ||
| 176 | parameter, for example from PEM callbacks. This was done | ||
| 177 | by adding an extra length parameter to asc2uni(). | ||
| 178 | [Steve Henson, reported by <oddissey@samsung.co.kr>] | ||
| 179 | |||
| 180 | *) Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn | ||
| 181 | call failed, free the DSA structure. | ||
| 182 | [Bodo Moeller] | ||
| 183 | |||
| 184 | *) Fix to uni2asc() to cope with zero length Unicode strings. | ||
| 185 | These are present in some PKCS#12 files. | ||
| 186 | [Steve Henson] | ||
| 187 | |||
| 188 | *) Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c). | ||
| 189 | Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits | ||
| 190 | when writing a 32767 byte record. | ||
| 191 | [Bodo Moeller; problem reported by Eric Day <eday@concentric.net>] | ||
| 192 | |||
| 193 | *) In RSA_eay_public_{en,ed}crypt and RSA_eay_mod_exp (rsa_eay.c), | ||
| 194 | obtain lock CRYPTO_LOCK_RSA before setting rsa->_method_mod_{n,p,q}. | ||
| 195 | |||
| 196 | (RSA objects have a reference count access to which is protected | ||
| 197 | by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c], | ||
| 198 | so they are meant to be shared between threads.) | ||
| 199 | [Bodo Moeller, Geoff Thorpe; original patch submitted by | ||
| 200 | "Reddie, Steven" <Steven.Reddie@ca.com>] | ||
| 201 | |||
| 202 | *) Fix a deadlock in CRYPTO_mem_leaks(). | ||
| 203 | [Bodo Moeller] | ||
| 204 | |||
| 205 | *) Use better test patterns in bntest. | ||
| 206 | [Ulf Möller] | ||
| 207 | |||
| 208 | *) rand_win.c fix for Borland C. | ||
| 209 | [Ulf Möller] | ||
| 210 | |||
| 211 | *) BN_rshift bugfix for n == 0. | ||
| 212 | [Bodo Moeller] | ||
| 213 | |||
| 214 | *) Add a 'bctest' script that checks for some known 'bc' bugs | ||
| 215 | so that 'make test' does not abort just because 'bc' is broken. | ||
| 216 | [Bodo Moeller] | ||
| 217 | |||
| 218 | *) Store verify_result within SSL_SESSION also for client side to | ||
| 219 | avoid potential security hole. (Re-used sessions on the client side | ||
| 220 | always resulted in verify_result==X509_V_OK, not using the original | ||
| 221 | result of the server certificate verification.) | ||
| 222 | [Lutz Jaenicke] | ||
| 223 | |||
| 224 | *) Fix ssl3_pending: If the record in s->s3->rrec is not of type | ||
| 225 | SSL3_RT_APPLICATION_DATA, return 0. | ||
| 226 | Similarly, change ssl2_pending to return 0 if SSL_in_init(s) is true. | ||
| 227 | [Bodo Moeller] | ||
| 228 | |||
| 229 | *) Fix SSL_peek: | ||
| 230 | Both ssl2_peek and ssl3_peek, which were totally broken in earlier | ||
| 231 | releases, have been re-implemented by renaming the previous | ||
| 232 | implementations of ssl2_read and ssl3_read to ssl2_read_internal | ||
| 233 | and ssl3_read_internal, respectively, and adding 'peek' parameters | ||
| 234 | to them. The new ssl[23]_{read,peek} functions are calls to | ||
| 235 | ssl[23]_read_internal with the 'peek' flag set appropriately. | ||
| 236 | A 'peek' parameter has also been added to ssl3_read_bytes, which | ||
| 237 | does the actual work for ssl3_read_internal. | ||
| 238 | [Bodo Moeller] | ||
| 239 | |||
| 240 | *) Initialise "ex_data" member of RSA/DSA/DH structures prior to calling | ||
| 241 | the method-specific "init()" handler. Also clean up ex_data after | ||
| 242 | calling the method-specific "finish()" handler. Previously, this was | ||
| 243 | happening the other way round. | ||
| 244 | [Geoff Thorpe] | ||
| 245 | |||
| 246 | *) Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16. | ||
| 247 | The previous value, 12, was not always sufficient for BN_mod_exp(). | ||
| 248 | [Bodo Moeller] | ||
| 249 | |||
| 250 | *) Make sure that shared libraries get the internal name engine with | ||
| 251 | the full version number and not just 0. This should mark the | ||
| 252 | shared libraries as not backward compatible. Of course, this should | ||
| 253 | be changed again when we can guarantee backward binary compatibility. | ||
| 254 | [Richard Levitte] | ||
| 255 | |||
| 256 | *) Fix typo in get_cert_by_subject() in by_dir.c | ||
| 257 | [Jean-Marc Desperrier <jean-marc.desperrier@certplus.com>] | ||
| 258 | |||
| 259 | *) Rework the system to generate shared libraries: | ||
| 260 | |||
| 261 | - Make note of the expected extension for the shared libraries and | ||
| 262 | if there is a need for symbolic links from for example libcrypto.so.0 | ||
| 263 | to libcrypto.so.0.9.7. There is extended info in Configure for | ||
| 264 | that. | ||
| 265 | |||
| 266 | - Make as few rebuilds of the shared libraries as possible. | ||
| 267 | |||
| 268 | - Still avoid linking the OpenSSL programs with the shared libraries. | ||
| 269 | |||
| 270 | - When installing, install the shared libraries separately from the | ||
| 271 | static ones. | ||
| 272 | [Richard Levitte] | ||
| 273 | |||
| 274 | *) Fix SSL_CTX_set_read_ahead macro to actually use its argument. | ||
| 275 | |||
| 276 | Copy SSL_CTX's read_ahead flag to SSL object directly in SSL_new | ||
| 277 | and not in SSL_clear because the latter is also used by the | ||
| 278 | accept/connect functions; previously, the settings made by | ||
| 279 | SSL_set_read_ahead would be lost during the handshake. | ||
| 280 | [Bodo Moeller; problems reported by Anders Gertz <gertz@epact.se>] | ||
| 281 | |||
| 282 | *) Correct util/mkdef.pl to be selective about disabled algorithms. | ||
| 283 | Previously, it would create entries for disableed algorithms no | ||
| 284 | matter what. | ||
| 285 | [Richard Levitte] | ||
| 286 | |||
| 287 | *) Added several new manual pages for SSL_* function. | ||
| 288 | [Lutz Jaenicke] | ||
| 289 | |||
| 5 | Changes between 0.9.5a and 0.9.6 [24 Sep 2000] | 290 | Changes between 0.9.5a and 0.9.6 [24 Sep 2000] | 
| 6 | 291 | ||
| 7 | *) In ssl23_get_client_hello, generate an error message when faced | 292 | *) In ssl23_get_client_hello, generate an error message when faced | 
| diff --git a/src/lib/libssl/src/Configure b/src/lib/libssl/src/Configure index eed48cfd3c..98bc46bf87 100644 --- a/src/lib/libssl/src/Configure +++ b/src/lib/libssl/src/Configure | |||
| @@ -98,6 +98,11 @@ my $x86_elf_asm="asm/bn86-elf.o asm/co86-elf.o:asm/dx86-elf.o asm/yx86-elf.o:asm | |||
| 98 | my $x86_out_asm="asm/bn86-out.o asm/co86-out.o:asm/dx86-out.o asm/yx86-out.o:asm/bx86-out.o:asm/mx86-out.o:asm/sx86-out.o:asm/cx86-out.o:asm/rx86-out.o:asm/rm86-out.o:asm/r586-out.o"; | 98 | my $x86_out_asm="asm/bn86-out.o asm/co86-out.o:asm/dx86-out.o asm/yx86-out.o:asm/bx86-out.o:asm/mx86-out.o:asm/sx86-out.o:asm/cx86-out.o:asm/rx86-out.o:asm/rm86-out.o:asm/r586-out.o"; | 
| 99 | my $x86_bsdi_asm="asm/bn86bsdi.o asm/co86bsdi.o:asm/dx86bsdi.o asm/yx86bsdi.o:asm/bx86bsdi.o:asm/mx86bsdi.o:asm/sx86bsdi.o:asm/cx86bsdi.o:asm/rx86bsdi.o:asm/rm86bsdi.o:asm/r586bsdi.o"; | 99 | my $x86_bsdi_asm="asm/bn86bsdi.o asm/co86bsdi.o:asm/dx86bsdi.o asm/yx86bsdi.o:asm/bx86bsdi.o:asm/mx86bsdi.o:asm/sx86bsdi.o:asm/cx86bsdi.o:asm/rx86bsdi.o:asm/rm86bsdi.o:asm/r586bsdi.o"; | 
| 100 | 100 | ||
| 101 | my $mips3_irix_asm="asm/mips3.o::::::::"; | ||
| 102 | # There seems to be boundary faults in asm/alpha.s. | ||
| 103 | #my $alpha_asm="asm/alpha.o::::::::"; | ||
| 104 | my $alpha_asm="::::::::"; | ||
| 105 | |||
| 101 | # -DB_ENDIAN slows things down on a sparc for md5, but helps sha1. | 106 | # -DB_ENDIAN slows things down on a sparc for md5, but helps sha1. | 
| 102 | # So the md5_locl.h file has an undef B_ENDIAN if sun is defined | 107 | # So the md5_locl.h file has an undef B_ENDIAN if sun is defined | 
| 103 | 108 | ||
| @@ -136,32 +141,32 @@ my %table=( | |||
| 136 | # surrounds it with #APP #NO_APP comment pair which (at least Solaris | 141 | # surrounds it with #APP #NO_APP comment pair which (at least Solaris | 
| 137 | # 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic" | 142 | # 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic" | 
| 138 | # error message. | 143 | # error message. | 
| 139 | "solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -m486 -Wall -DL_ENDIAN -DNO_INLINE_ASM::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_sol_asm}:dlfcn:solaris-shared:-fPIC", | 144 | "solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -m486 -Wall -DL_ENDIAN -DNO_INLINE_ASM::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_sol_asm}:dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 140 | 145 | ||
| 141 | #### SPARC Solaris with GNU C setups | 146 | #### SPARC Solaris with GNU C setups | 
| 142 | "solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-fPIC", | 147 | "solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 143 | "solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-fPIC", | 148 | "solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 144 | "solaris-sparcv9-gcc","gcc:-mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-fPIC", | 149 | "solaris-sparcv9-gcc","gcc:-mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 145 | # gcc pre-2.8 doesn't understand -mcpu=ultrasparc, so fall down to -mv8 | 150 | # gcc pre-2.8 doesn't understand -mcpu=ultrasparc, so fall down to -mv8 | 
| 146 | # but keep the assembler modules. | 151 | # but keep the assembler modules. | 
| 147 | "solaris-sparcv9-gcc27","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus-gcc27.o:::asm/md5-sparcv8plus-gcc27.o::::::dlfcn:solaris-shared:-fPIC", | 152 | "solaris-sparcv9-gcc27","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus-gcc27.o:::asm/md5-sparcv8plus-gcc27.o::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 148 | #### | 153 | #### | 
| 149 | "debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-fPIC", | 154 | "debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 150 | "debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mcpu=ultrasparc -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::::::::dlfcn:solaris-shared:-fPIC", | 155 | "debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mcpu=ultrasparc -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 151 | 156 | ||
| 152 | #### SPARC Solaris with Sun C setups | 157 | #### SPARC Solaris with Sun C setups | 
| 153 | # DO NOT use /xO[34] on sparc with SC3.0. It is broken, and will not pass the tests | 158 | # DO NOT use /xO[34] on sparc with SC3.0. It is broken, and will not pass the tests | 
| 154 | "solaris-sparc-sc3","cc:-fast -O -Xa -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC", | 159 | "solaris-sparc-sc3","cc:-fast -O -Xa -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 155 | # SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2. | 160 | # SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2. | 
| 156 | # SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8 | 161 | # SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8 | 
| 157 | # SC5.0 note: Compiler common patch 107357-01 or later is required! | 162 | # SC5.0 note: Compiler common patch 107357-01 or later is required! | 
| 158 | "solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC", | 163 | "solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 159 | "solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC", | 164 | "solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 160 | "solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC", | 165 | "solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 161 | "solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::asm/md5-sparcv9.o::::::dlfcn:solaris-shared:-KPIC", | 166 | "solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::asm/md5-sparcv9.o::::::dlfcn:solaris-shared:-KPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs", | 
| 162 | #### | 167 | #### | 
| 163 | "debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC", | 168 | "debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 164 | "debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC", | 169 | "debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 165 | 170 | ||
| 166 | #### SPARC Linux setups | 171 | #### SPARC Linux setups | 
| 167 | "linux-sparcv7","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::", | 172 | "linux-sparcv7","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::", | 
| @@ -187,11 +192,11 @@ my %table=( | |||
| 187 | # Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke | 192 | # Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke | 
| 188 | # './Configure irix-[g]cc' manually. | 193 | # './Configure irix-[g]cc' manually. | 
| 189 | # -mips4 flag is added by ./config when appropriate. | 194 | # -mips4 flag is added by ./config when appropriate. | 
| 190 | "irix-mips3-gcc","gcc:-mabi=n32 -mmips-as -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:asm/mips3.o::", | 195 | "irix-mips3-gcc","gcc:-mabi=n32 -mmips-as -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${mips3_irix_asm}", | 
| 191 | "irix-mips3-cc", "cc:-n32 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:asm/mips3.o::", | 196 | "irix-mips3-cc", "cc:-n32 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${mips3_irix_asm}", | 
| 192 | # N64 ABI builds. | 197 | # N64 ABI builds. | 
| 193 | "irix64-mips4-gcc","gcc:-mabi=64 -mips4 -mmips-as -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:asm/mips3.o::", | 198 | "irix64-mips4-gcc","gcc:-mabi=64 -mips4 -mmips-as -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_irix_asm}", | 
| 194 | "irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:asm/mips3.o::", | 199 | "irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_irix_asm}", | 
| 195 | 200 | ||
| 196 | #### Unified HP-UX ANSI C configs. | 201 | #### Unified HP-UX ANSI C configs. | 
| 197 | # Special notes: | 202 | # Special notes: | 
| @@ -271,10 +276,10 @@ my %table=( | |||
| 271 | # Dec Alpha, OSF/1 - the alpha164-cc is the flags for a 21164A with | 276 | # Dec Alpha, OSF/1 - the alpha164-cc is the flags for a 21164A with | 
| 272 | # the new compiler | 277 | # the new compiler | 
| 273 | # For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version | 278 | # For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version | 
| 274 | "alpha-gcc","gcc:-O3::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:asm/alpha.o:::::::::dlfcn:true64-shared", | 279 | "alpha-gcc","gcc:-O3::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:tru64-shared::.so", | 
| 275 | "alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:asm/alpha.o:::::::::dlfcn:true64-shared", | 280 | "alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared::.so", | 
| 276 | "alpha164-cc", "cc:-std1 -tune host -fast -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:asm/alpha.o:::::::::dlfcn:true64-shared", | 281 | "alpha164-cc", "cc:-std1 -tune host -fast -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared::.so", | 
| 277 | "FreeBSD-alpha","gcc:-DTERMIOS -O -fomit-frame-pointer::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2:::", | 282 | "FreeBSD-alpha","gcc:-DTERMIOS -O -fomit-frame-pointer::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 278 | 283 | ||
| 279 | #### Alpha Linux with GNU C and Compaq C setups | 284 | #### Alpha Linux with GNU C and Compaq C setups | 
| 280 | # Special notes: | 285 | # Special notes: | 
| @@ -289,31 +294,32 @@ my %table=( | |||
| 289 | # | 294 | # | 
| 290 | # <appro@fy.chalmers.se> | 295 | # <appro@fy.chalmers.se> | 
| 291 | # | 296 | # | 
| 292 | "linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:asm/alpha.o::", | 297 | "linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 293 | "linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:asm/alpha.o::", | 298 | "linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 294 | "linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:asm/alpha.o::", | 299 | "linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", | 
| 295 | "linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:asm/alpha.o::", | 300 | "linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", | 
| 296 | 301 | ||
| 297 | # assembler versions -- currently defunct: | 302 | # assembler versions -- currently defunct: | 
| 298 | ##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:asm/alpha.o::", | 303 | ##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${alpha_asm}", | 
| 299 | 304 | ||
| 300 | # The intel boxes :-), It would be worth seeing if bsdi-gcc can use the | 305 | # The intel boxes :-), It would be worth seeing if bsdi-gcc can use the | 
| 301 | # bn86-elf.o file file since it is hand tweaked assembler. | 306 | # bn86-elf.o file file since it is hand tweaked assembler. | 
| 302 | "linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT:-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC", | 307 | "linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT:-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 303 | "debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -Wall::-D_REENTRANT:-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", | 308 | "debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -Wall::-D_REENTRANT:-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", | 
| 304 | "debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -Wall::-D_REENTRANT:-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", | 309 | "debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -Wall::-D_REENTRANT:-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", | 
| 305 | "linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", | 310 | "linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", | 
| 306 | "linux-mips", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::(unknown)::BN_LLONG:::", | 311 | "linux-mips", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::(unknown)::BN_LLONG:::", | 
| 307 | "linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG::", | 312 | "linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG::", | 
| 308 | "linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG::", | 313 | "linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG::", | 
| 314 | "linux-s390", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG::", | ||
| 309 | "linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::(unknown)::SIXTY_FOUR_BIT_LONG::", | 315 | "linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::(unknown)::SIXTY_FOUR_BIT_LONG::", | 
| 310 | "NetBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:::", | 316 | "NetBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 311 | "NetBSD-m68", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:::", | 317 | "NetBSD-m68", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 312 | "NetBSD-x86", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:", | 318 | "NetBSD-x86", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 313 | "FreeBSD-elf", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", | 319 | "FreeBSD-elf", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 314 | "FreeBSD", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", | 320 | "FreeBSD", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", | 
| 315 | "bsdi-gcc", "gcc:-O3 -ffast-math -DL_ENDIAN -DPERL5 -m486::(unknown)::RSA_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_bsdi_asm}", | 321 | "bsdi-gcc", "gcc:-O3 -ffast-math -DL_ENDIAN -DPERL5 -m486::(unknown)::RSA_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_bsdi_asm}", | 
| 316 | "bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", | 322 | "bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 317 | "nextstep", "cc:-O -Wall:<libc.h>:(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", | 323 | "nextstep", "cc:-O -Wall:<libc.h>:(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", | 
| 318 | "nextstep3.3", "cc:-O3 -Wall:<libc.h>:(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", | 324 | "nextstep3.3", "cc:-O3 -Wall:<libc.h>:(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", | 
| 319 | # NCR MP-RAS UNIX ver 02.03.01 | 325 | # NCR MP-RAS UNIX ver 02.03.01 | 
| @@ -323,18 +329,27 @@ my %table=( | |||
| 323 | "qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown)::${x86_gcc_des} ${x86_gcc_opts}:", | 329 | "qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown)::${x86_gcc_des} ${x86_gcc_opts}:", | 
| 324 | 330 | ||
| 325 | # Linux on ARM | 331 | # Linux on ARM | 
| 326 | "linux-elf-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG::::::::::dlfcn:linux-shared:-fPIC", | 332 | "linux-elf-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::BN_LLONG::::::::::dlfcn:linux-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 333 | |||
| 334 | # UnixWare 2.0x fails destest with -O | ||
| 335 | "unixware-2.0","cc:-DFILIO_H::-Kthread:-lsocket -lnsl -lx:${x86_gcc_des} ${x86_gcc_opts}:::", | ||
| 336 | "unixware-2.0-pentium","cc:-DFILIO_H -Kpentium::-Kthread:-lsocket -lnsl -lx:MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | ||
| 327 | 337 | ||
| 328 | # UnixWare 2.0 | 338 | # UnixWare 2.1 | 
| 329 | "unixware-2.0","cc:-O -DFILIO_H::(unknown):-lsocket -lnsl:${x86_gcc_des} ${x86_gcc_opts}:::", | 339 | "unixware-2.1","cc:-O -DFILIO_H::-Kthread:-lsocket -lnsl -lx:${x86_gcc_des} ${x86_gcc_opts}:::", | 
| 330 | "unixware-2.0-pentium","cc:-O -DFILIO_H -Kpentium -Kthread::(unknown):-lsocket -lnsl:MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | 340 | "unixware-2.1-pentium","cc:-O -DFILIO_H -Kpentium::-Kthread:-lsocket -lnsl -lx:MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | 
| 341 | "unixware-2.1-p6","cc:-O -DFILIO_H -Kp6::-Kthread:-lsocket -lnsl -lx:MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | ||
| 331 | 342 | ||
| 332 | # UnixWare 7 | 343 | # UnixWare 7 | 
| 333 | "unixware-7","cc:-O -DFILIO_H -Kalloca::-Kthread:-lsocket -lnsl:MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | 344 | "unixware-7","cc:-O -DFILIO_H -Kalloca::-Kthread:-lsocket -lnsl:BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | 
| 345 | "unixware-7-pentium","cc:-O -DFILIO_H -Kalloca -Kpentium::-Kthread:-lsocket -lnsl:BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | ||
| 346 | "unixware-7-pentium_pro","cc:-O -DFILIO_H -Kalloca -Kpentium_pro::-Kthread:-lsocket -lnsl:BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}::", | ||
| 334 | 347 | ||
| 335 | # IBM's AIX. | 348 | # IBM's AIX. | 
| 336 | "aix-cc", "cc:-O -DAIX -DB_ENDIAN -qmaxmem=16384::(unknown)::BN_LLONG RC4_CHAR:::", | 349 | "aix-cc", "cc:-O -DAIX -DB_ENDIAN -qmaxmem=16384::(unknown)::BN_LLONG RC4_CHAR:::", | 
| 337 | "aix-gcc", "gcc:-O3 -DAIX -DB_ENDIAN::(unknown)::BN_LLONG RC4_CHAR:::", | 350 | "aix-gcc", "gcc:-O3 -DAIX -DB_ENDIAN::(unknown)::BN_LLONG RC4_CHAR:::", | 
| 351 | "aix43-cc", "cc:-O -DAIX -DB_ENDIAN -qmaxmem=16384::(unknown)::BN_LLONG RC4_CHAR::::::::::dlfcn:", | ||
| 352 | "aix43-gcc", "gcc:-O3 -DAIX -DB_ENDIAN::(unknown)::BN_LLONG RC4_CHAR::::::::::dlfcn:", | ||
| 338 | 353 | ||
| 339 | # | 354 | # | 
| 340 | # Cray T90 (SDSC) | 355 | # Cray T90 (SDSC) | 
| @@ -361,12 +376,16 @@ my %table=( | |||
| 361 | 376 | ||
| 362 | # DGUX, 88100. | 377 | # DGUX, 88100. | 
| 363 | "dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::RC4_INDEX DES_UNROLL:::", | 378 | "dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::RC4_INDEX DES_UNROLL:::", | 
| 364 | "dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):-lnsl -lsocket:RC4_INDEX:RC4_INDEX DES_UNROLL:::", | 379 | "dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):-lnsl -lsocket:RC4_INDEX DES_UNROLL:::", | 
| 365 | "dgux-R4-x86-gcc", "gcc:-O3 -fomit-frame-pointer -DL_ENDIAN::(unknown):-lnsl -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", | 380 | "dgux-R4-x86-gcc", "gcc:-O3 -fomit-frame-pointer -DL_ENDIAN::(unknown):-lnsl -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", | 
| 366 | 381 | ||
| 382 | # SCO 3 - Tim Rice <tim@multitalents.net> | ||
| 383 | "sco3-gcc", "gcc:-O3 -fomit-frame-pointer -Dssize_t=int -DNO_SYS_UN_H::(unknown):-lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", # the SCO assembler doesn't seem to like our assembler files ... | ||
| 384 | |||
| 367 | # SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the | 385 | # SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the | 
| 368 | # SCO cc. | 386 | # SCO cc. | 
| 369 | "sco5-cc", "cc:::(unknown):-lsocket:${x86_gcc_des} ${x86_gcc_opts}:::", # des options? | 387 | "sco5-cc", "cc:::(unknown):-lsocket:${x86_gcc_des} ${x86_gcc_opts}:::", # des options? | 
| 388 | "sco5-cc-pentium", "cc:-Kpentium::(unknown):-lsocket:${x86_gcc_des} ${x86_gcc_opts}:::", # des options? | ||
| 370 | "sco5-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):-lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", # the SCO assembler doesn't seem to like our assembler files ... | 389 | "sco5-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):-lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", # the SCO assembler doesn't seem to like our assembler files ... | 
| 371 | 390 | ||
| 372 | # Sinix/ReliantUNIX RM400 | 391 | # Sinix/ReliantUNIX RM400 | 
| @@ -406,12 +425,12 @@ my %table=( | |||
| 406 | ##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown)::::::", | 425 | ##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown)::::::", | 
| 407 | 426 | ||
| 408 | # Some OpenBSD from Bob Beck <beck@obtuse.com> | 427 | # Some OpenBSD from Bob Beck <beck@obtuse.com> | 
| 409 | "OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:::", | 428 | "OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 410 | "OpenBSD-vax", "gcc:-DL_ENDIAN -DTERMIOS -O2 -fomit-frame-pointer::(unknown)::BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL:::", | 429 | "OpenBSD-vax", "gcc:-DL_ENDIAN -DTERMIOS -O2 -fomit-frame-pointer::(unknown)::BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL:::", | 
| 411 | "OpenBSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn", | 430 | "OpenBSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486::(unknown)::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 412 | "OpenBSD-m68k", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::RC2_CHAR RC4_INDEX DES_UNROLL:::", | 431 | "OpenBSD-m68k", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::RC2_CHAR RC4_INDEX DES_UNROLL:::", | 
| 413 | "OpenBSD", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL:::", | 432 | "OpenBSD", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 414 | "OpenBSD-mips","gcc:-O2 -DL_ENDIAN::(unknown):BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR::::", | 433 | "OpenBSD-mips","gcc:-O2 -DL_ENDIAN::(unknown):BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR:::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", | 
| 415 | 434 | ||
| 416 | ##### MacOS X (a.k.a. Rhapsody) setup | 435 | ##### MacOS X (a.k.a. Rhapsody) setup | 
| 417 | "rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown)::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", | 436 | "rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown)::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", | 
| @@ -426,6 +445,7 @@ my @WinTargets=qw(VC-NT VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS BC-32 | |||
| 426 | 445 | ||
| 427 | my $prefix=""; | 446 | my $prefix=""; | 
| 428 | my $openssldir=""; | 447 | my $openssldir=""; | 
| 448 | my $exe_ext=""; | ||
| 429 | my $install_prefix=""; | 449 | my $install_prefix=""; | 
| 430 | my $no_threads=0; | 450 | my $no_threads=0; | 
| 431 | my $no_shared=1; | 451 | my $no_shared=1; | 
| @@ -453,10 +473,10 @@ my $md5_obj=""; | |||
| 453 | my $sha1_obj=""; | 473 | my $sha1_obj=""; | 
| 454 | my $rmd160_obj=""; | 474 | my $rmd160_obj=""; | 
| 455 | my $processor=""; | 475 | my $processor=""; | 
| 456 | my $ranlib; | 476 | my $default_ranlib; | 
| 457 | my $perl; | 477 | my $perl; | 
| 458 | 478 | ||
| 459 | $ranlib=&which("ranlib") or $ranlib="true"; | 479 | $default_ranlib= &which("ranlib") or $default_ranlib="true"; | 
| 460 | $perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl") | 480 | $perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl") | 
| 461 | or $perl="perl"; | 481 | or $perl="perl"; | 
| 462 | 482 | ||
| @@ -642,6 +662,7 @@ print "Configuring for $target\n"; | |||
| 642 | 662 | ||
| 643 | my $IsWindows=scalar grep /^$target$/,@WinTargets; | 663 | my $IsWindows=scalar grep /^$target$/,@WinTargets; | 
| 644 | 664 | ||
| 665 | $exe_ext=".exe" if ($target eq "CygWin32"); | ||
| 645 | $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); | 666 | $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); | 
| 646 | $prefix=$openssldir if $prefix eq ""; | 667 | $prefix=$openssldir if $prefix eq ""; | 
| 647 | 668 | ||
| @@ -655,8 +676,8 @@ $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /^\//; | |||
| 655 | print "IsWindows=$IsWindows\n"; | 676 | print "IsWindows=$IsWindows\n"; | 
| 656 | 677 | ||
| 657 | (my $cc,my $cflags,my $unistd,my $thread_cflag,my $lflags,my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj, | 678 | (my $cc,my $cflags,my $unistd,my $thread_cflag,my $lflags,my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj, | 
| 658 | $md5_obj,$sha1_obj,my $cast_obj,my $rc4_obj,$rmd160_obj,my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag)= | 679 | $md5_obj,$sha1_obj,my $cast_obj,my $rc4_obj,$rmd160_obj,my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag,my $shared_extension,my $ranlib)= | 
| 659 | split(/\s*:\s*/,$table{$target} . ":" x 22 , -1); | 680 | split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); | 
| 660 | $cflags="$flags$cflags" if ($flags ne ""); | 681 | $cflags="$flags$cflags" if ($flags ne ""); | 
| 661 | 682 | ||
| 662 | # The DSO code currently always implements all functions so that no | 683 | # The DSO code currently always implements all functions so that no | 
| @@ -731,17 +752,27 @@ if ($threads) | |||
| 731 | } | 752 | } | 
| 732 | 753 | ||
| 733 | # You will find shlib_mark1 and shlib_mark2 explained in Makefile.org | 754 | # You will find shlib_mark1 and shlib_mark2 explained in Makefile.org | 
| 734 | my $shared_mark1 = ""; | 755 | my $shared_mark = ""; | 
| 735 | my $shared_mark2 = ""; | 756 | if ($shared_target ne "") | 
| 736 | if ($shared_cflag ne "") | ||
| 737 | { | 757 | { | 
| 738 | $cflags = "$shared_cflag $cflags"; | 758 | if ($shared_cflag ne "") | 
| 759 | { | ||
| 760 | $cflags = "$shared_cflag $cflags"; | ||
| 761 | } | ||
| 739 | if (!$no_shared) | 762 | if (!$no_shared) | 
| 740 | { | 763 | { | 
| 741 | $shared_mark1 = ".shlib-clean."; | 764 | #$shared_mark = "\$(SHARED_LIBS)"; | 
| 742 | $shared_mark2 = ".shlib."; | ||
| 743 | } | 765 | } | 
| 744 | } | 766 | } | 
| 767 | else | ||
| 768 | { | ||
| 769 | $no_shared = 1; | ||
| 770 | } | ||
| 771 | |||
| 772 | if ($ranlib eq "") | ||
| 773 | { | ||
| 774 | $ranlib = $default_ranlib; | ||
| 775 | } | ||
| 745 | 776 | ||
| 746 | #my ($bn1)=split(/\s+/,$bn_obj); | 777 | #my ($bn1)=split(/\s+/,$bn_obj); | 
| 747 | #$bn1 = "" unless defined $bn1; | 778 | #$bn1 = "" unless defined $bn1; | 
| @@ -823,6 +854,7 @@ while (<IN>) | |||
| 823 | s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/; | 854 | s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/; | 
| 824 | s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/; | 855 | s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/; | 
| 825 | s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/; | 856 | s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/; | 
| 857 | s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/; | ||
| 826 | s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/; | 858 | s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/; | 
| 827 | s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; | 859 | s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; | 
| 828 | s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; | 860 | s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; | 
| @@ -833,6 +865,7 @@ while (<IN>) | |||
| 833 | s/^CFLAG=.*$/CFLAG= $cflags/; | 865 | s/^CFLAG=.*$/CFLAG= $cflags/; | 
| 834 | s/^DEPFLAG=.*$/DEPFLAG= $depflags/; | 866 | s/^DEPFLAG=.*$/DEPFLAG= $depflags/; | 
| 835 | s/^EX_LIBS=.*$/EX_LIBS= $lflags/; | 867 | s/^EX_LIBS=.*$/EX_LIBS= $lflags/; | 
| 868 | s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/; | ||
| 836 | s/^BN_ASM=.*$/BN_ASM= $bn_obj/; | 869 | s/^BN_ASM=.*$/BN_ASM= $bn_obj/; | 
| 837 | s/^DES_ENC=.*$/DES_ENC= $des_obj/; | 870 | s/^DES_ENC=.*$/DES_ENC= $des_obj/; | 
| 838 | s/^BF_ENC=.*$/BF_ENC= $bf_obj/; | 871 | s/^BF_ENC=.*$/BF_ENC= $bf_obj/; | 
| @@ -846,9 +879,9 @@ while (<IN>) | |||
| 846 | s/^RANLIB=.*/RANLIB= $ranlib/; | 879 | s/^RANLIB=.*/RANLIB= $ranlib/; | 
| 847 | s/^PERL=.*/PERL= $perl/; | 880 | s/^PERL=.*/PERL= $perl/; | 
| 848 | s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; | 881 | s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; | 
| 849 | s/^SHLIB_MARK1=.*/SHLIB_MARK1=$shared_mark1/; | 882 | s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/; | 
| 850 | s/^SHLIB_MARK2=.*/SHLIB_MARK2=$shared_mark2/; | 883 | s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared); | 
| 851 | s/^LIBS=.*/LIBS=libcrypto\.so\* libssl\.so\*/ if (!$no_shared); | 884 | s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.so.\$(SHLIB_MAJOR) .so/ if ($shared_extension ne "" && $shared_extension !~ /^\.s[ol]$/); | 
| 852 | print OUT $_."\n"; | 885 | print OUT $_."\n"; | 
| 853 | } | 886 | } | 
| 854 | close(IN); | 887 | close(IN); | 
| @@ -1135,8 +1168,9 @@ sub print_table_entry | |||
| 1135 | (my $cc,my $cflags,my $unistd,my $thread_cflag,my $lflags,my $bn_ops, | 1168 | (my $cc,my $cflags,my $unistd,my $thread_cflag,my $lflags,my $bn_ops, | 
| 1136 | my $bn_obj,my $des_obj,my $bf_obj, | 1169 | my $bn_obj,my $des_obj,my $bf_obj, | 
| 1137 | my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, | 1170 | my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, | 
| 1138 | my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag)= | 1171 | my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag, | 
| 1139 | split(/\s*:\s*/,$table{$target} . ":" x 22 , -1); | 1172 | my $shared_extension,my $ranlib)= | 
| 1173 | split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); | ||
| 1140 | 1174 | ||
| 1141 | print <<EOF | 1175 | print <<EOF | 
| 1142 | 1176 | ||
| @@ -1159,5 +1193,7 @@ sub print_table_entry | |||
| 1159 | \$dso_scheme = $dso_scheme | 1193 | \$dso_scheme = $dso_scheme | 
| 1160 | \$shared_target= $shared_target | 1194 | \$shared_target= $shared_target | 
| 1161 | \$shared_cflag = $shared_cflag | 1195 | \$shared_cflag = $shared_cflag | 
| 1196 | \$shared_extension = $shared_extension | ||
| 1197 | \$ranlib = $ranlib | ||
| 1162 | EOF | 1198 | EOF | 
| 1163 | } | 1199 | } | 
| diff --git a/src/lib/libssl/src/FAQ b/src/lib/libssl/src/FAQ index 29acc8afdf..cd759e0202 100644 --- a/src/lib/libssl/src/FAQ +++ b/src/lib/libssl/src/FAQ | |||
| @@ -1,20 +1,22 @@ | |||
| 1 | OpenSSL - Frequently Asked Questions | 1 | OpenSSL - Frequently Asked Questions | 
| 2 | -------------------------------------- | 2 | -------------------------------------- | 
| 3 | 3 | ||
| 4 | [MISC] Miscellaneous questions | ||
| 5 | |||
| 4 | * Which is the current version of OpenSSL? | 6 | * Which is the current version of OpenSSL? | 
| 5 | * Where is the documentation? | 7 | * Where is the documentation? | 
| 6 | * How can I contact the OpenSSL developers? | 8 | * How can I contact the OpenSSL developers? | 
| 9 | * Where can I get a compiled version of OpenSSL? | ||
| 10 | * Why aren't tools like 'autoconf' and 'libtool' used? | ||
| 11 | |||
| 12 | [LEGAL] Legal questions | ||
| 13 | |||
| 7 | * Do I need patent licenses to use OpenSSL? | 14 | * Do I need patent licenses to use OpenSSL? | 
| 8 | * Is OpenSSL thread-safe? | 15 | * Can I use OpenSSL with GPL software? | 
| 16 | |||
| 17 | [USER] Questions on using the OpenSSL applications | ||
| 18 | |||
| 9 | * Why do I get a "PRNG not seeded" error message? | 19 | * Why do I get a "PRNG not seeded" error message? | 
| 10 | * Why does the linker complain about undefined symbols? | ||
| 11 | * Where can I get a compiled version of OpenSSL? | ||
| 12 | * I've compiled a program under Windows and it crashes: why? | ||
| 13 | * How do I read or write a DER encoded buffer using the ASN1 functions? | ||
| 14 | * I've tried using <M_some_evil_pkcs12_macro> and I get errors why? | ||
| 15 | * I've called <some function> and it fails, why? | ||
| 16 | * I just get a load of numbers for the error output, what do they mean? | ||
| 17 | * Why do I get errors about unknown algorithms? | ||
| 18 | * How do I create certificates or certificate requests? | 20 | * How do I create certificates or certificate requests? | 
| 19 | * Why can't I create certificate requests? | 21 | * Why can't I create certificate requests? | 
| 20 | * Why does <SSL program> fail with a certificate verify error? | 22 | * Why does <SSL program> fail with a certificate verify error? | 
| @@ -22,17 +24,38 @@ OpenSSL - Frequently Asked Questions | |||
| 22 | * How can I create DSA certificates? | 24 | * How can I create DSA certificates? | 
| 23 | * Why can't I make an SSL connection using a DSA certificate? | 25 | * Why can't I make an SSL connection using a DSA certificate? | 
| 24 | * How can I remove the passphrase on a private key? | 26 | * How can I remove the passphrase on a private key? | 
| 25 | * Why can't the OpenSSH configure script detect OpenSSL? | 27 | * Why can't I use OpenSSL certificates with SSL client authentication? | 
| 28 | * Why does my browser give a warning about a mismatched hostname? | ||
| 29 | |||
| 30 | [BUILD] Questions about building and testing OpenSSL | ||
| 31 | |||
| 32 | * Why does the linker complain about undefined symbols? | ||
| 26 | * Why does the OpenSSL test fail with "bc: command not found"? | 33 | * Why does the OpenSSL test fail with "bc: command not found"? | 
| 27 | * Why does the OpenSSL test fail with "bc: 1 no implemented"? | 34 | * Why does the OpenSSL test fail with "bc: 1 no implemented"? | 
| 28 | * Why does the OpenSSL compilation fail on Alpha True64 Unix? | 35 | * Why does the OpenSSL compilation fail on Alpha True64 Unix? | 
| 29 | * Why does the OpenSSL compilation fail with "ar: command not found"? | 36 | * Why does the OpenSSL compilation fail with "ar: command not found"? | 
| 37 | * Why does the OpenSSL compilation fail on Win32 with VC++? | ||
| 38 | |||
| 39 | [PROG] Questions about programming with OpenSSL | ||
| 40 | |||
| 41 | * Is OpenSSL thread-safe? | ||
| 42 | * I've compiled a program under Windows and it crashes: why? | ||
| 43 | * How do I read or write a DER encoded buffer using the ASN1 functions? | ||
| 44 | * I've tried using <M_some_evil_pkcs12_macro> and I get errors why? | ||
| 45 | * I've called <some function> and it fails, why? | ||
| 46 | * I just get a load of numbers for the error output, what do they mean? | ||
| 47 | * Why do I get errors about unknown algorithms? | ||
| 48 | * Why can't the OpenSSH configure script detect OpenSSL? | ||
| 49 | * Can I use OpenSSL's SSL library with non-blocking I/O? | ||
| 50 | |||
| 51 | =============================================================================== | ||
| 30 | 52 | ||
| 53 | [MISC] ======================================================================== | ||
| 31 | 54 | ||
| 32 | * Which is the current version of OpenSSL? | 55 | * Which is the current version of OpenSSL? | 
| 33 | 56 | ||
| 34 | The current version is available from <URL: http://www.openssl.org>. | 57 | The current version is available from <URL: http://www.openssl.org>. | 
| 35 | OpenSSL 0.9.6 was released on September 24th, 2000. | 58 | OpenSSL 0.9.6a was released on April 5th, 2001. | 
| 36 | 59 | ||
| 37 | In addition to the current stable release, you can also access daily | 60 | In addition to the current stable release, you can also access daily | 
| 38 | snapshots of the OpenSSL development version at <URL: | 61 | snapshots of the OpenSSL development version at <URL: | 
| @@ -78,6 +101,27 @@ OpenSSL. Information on the OpenSSL mailing lists is available from | |||
| 78 | <URL: http://www.openssl.org>. | 101 | <URL: http://www.openssl.org>. | 
| 79 | 102 | ||
| 80 | 103 | ||
| 104 | * Where can I get a compiled version of OpenSSL? | ||
| 105 | |||
| 106 | Some applications that use OpenSSL are distributed in binary form. | ||
| 107 | When using such an application, you don't need to install OpenSSL | ||
| 108 | yourself; the application will include the required parts (e.g. DLLs). | ||
| 109 | |||
| 110 | If you want to install OpenSSL on a Windows system and you don't have | ||
| 111 | a C compiler, read the "Mingw32" section of INSTALL.W32 for information | ||
| 112 | on how to obtain and install the free GNU C compiler. | ||
| 113 | |||
| 114 | A number of Linux and *BSD distributions include OpenSSL. | ||
| 115 | |||
| 116 | |||
| 117 | * Why aren't tools like 'autoconf' and 'libtool' used? | ||
| 118 | |||
| 119 | autoconf will probably be used in future OpenSSL versions. If it was | ||
| 120 | less Unix-centric, it might have been used much earlier. | ||
| 121 | |||
| 122 | |||
| 123 | [LEGAL] ======================================================================= | ||
| 124 | |||
| 81 | * Do I need patent licenses to use OpenSSL? | 125 | * Do I need patent licenses to use OpenSSL? | 
| 82 | 126 | ||
| 83 | The patents section of the README file lists patents that may apply to | 127 | The patents section of the README file lists patents that may apply to | 
| @@ -89,18 +133,26 @@ You can configure OpenSSL so as not to use RC5 and IDEA by using | |||
| 89 | ./config no-rc5 no-idea | 133 | ./config no-rc5 no-idea | 
| 90 | 134 | ||
| 91 | 135 | ||
| 92 | * Is OpenSSL thread-safe? | 136 | * Can I use OpenSSL with GPL software? | 
| 93 | 137 | ||
| 94 | Yes (with limitations: an SSL connection may not concurrently be used | 138 | On many systems including the major Linux and BSD distributions, yes (the | 
| 95 | by multiple threads). On Windows and many Unix systems, OpenSSL | 139 | GPL does not place restrictions on using libraries that are part of the | 
| 96 | automatically uses the multi-threaded versions of the standard | 140 | normal operating system distribution). | 
| 97 | libraries. If your platform is not one of these, consult the INSTALL | ||
| 98 | file. | ||
| 99 | 141 | ||
| 100 | Multi-threaded applications must provide two callback functions to | 142 | On other systems, the situation is less clear. Some GPL software copyright | 
| 101 | OpenSSL. This is described in the threads(3) manpage. | 143 | holders claim that you infringe on their rights if you use OpenSSL with | 
| 144 | their software on operating systems that don't normally include OpenSSL. | ||
| 145 | |||
| 146 | If you develop open source software that uses OpenSSL, you may find it | ||
| 147 | useful to choose an other license than the GPL, or state explicitely that | ||
| 148 | "This program is released under the GPL with the additional exemption that | ||
| 149 | compiling, linking, and/or using OpenSSL is allowed." If you are using | ||
| 150 | GPL software developed by others, you may want to ask the copyright holder | ||
| 151 | for permission to use their software with OpenSSL. | ||
| 102 | 152 | ||
| 103 | 153 | ||
| 154 | [USER] ======================================================================== | ||
| 155 | |||
| 104 | * Why do I get a "PRNG not seeded" error message? | 156 | * Why do I get a "PRNG not seeded" error message? | 
| 105 | 157 | ||
| 106 | Cryptographic software needs a source of unpredictable data to work | 158 | Cryptographic software needs a source of unpredictable data to work | 
| @@ -138,6 +190,101 @@ versions. However, be warned that /dev/random is usually a blocking | |||
| 138 | device, which may have some effects on OpenSSL. | 190 | device, which may have some effects on OpenSSL. | 
| 139 | 191 | ||
| 140 | 192 | ||
| 193 | * How do I create certificates or certificate requests? | ||
| 194 | |||
| 195 | Check out the CA.pl(1) manual page. This provides a simple wrapper round | ||
| 196 | the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check | ||
| 197 | out the manual pages for the individual utilities and the certificate | ||
| 198 | extensions documentation (currently in doc/openssl.txt). | ||
| 199 | |||
| 200 | |||
| 201 | * Why can't I create certificate requests? | ||
| 202 | |||
| 203 | You typically get the error: | ||
| 204 | |||
| 205 | unable to find 'distinguished_name' in config | ||
| 206 | problems making Certificate Request | ||
| 207 | |||
| 208 | This is because it can't find the configuration file. Check out the | ||
| 209 | DIAGNOSTICS section of req(1) for more information. | ||
| 210 | |||
| 211 | |||
| 212 | * Why does <SSL program> fail with a certificate verify error? | ||
| 213 | |||
| 214 | This problem is usually indicated by log messages saying something like | ||
| 215 | "unable to get local issuer certificate" or "self signed certificate". | ||
| 216 | When a certificate is verified its root CA must be "trusted" by OpenSSL | ||
| 217 | this typically means that the CA certificate must be placed in a directory | ||
| 218 | or file and the relevant program configured to read it. The OpenSSL program | ||
| 219 | 'verify' behaves in a similar way and issues similar error messages: check | ||
| 220 | the verify(1) program manual page for more information. | ||
| 221 | |||
| 222 | |||
| 223 | * Why can I only use weak ciphers when I connect to a server using OpenSSL? | ||
| 224 | |||
| 225 | This is almost certainly because you are using an old "export grade" browser | ||
| 226 | which only supports weak encryption. Upgrade your browser to support 128 bit | ||
| 227 | ciphers. | ||
| 228 | |||
| 229 | |||
| 230 | * How can I create DSA certificates? | ||
| 231 | |||
| 232 | Check the CA.pl(1) manual page for a DSA certificate example. | ||
| 233 | |||
| 234 | |||
| 235 | * Why can't I make an SSL connection to a server using a DSA certificate? | ||
| 236 | |||
| 237 | Typically you'll see a message saying there are no shared ciphers when | ||
| 238 | the same setup works fine with an RSA certificate. There are two possible | ||
| 239 | causes. The client may not support connections to DSA servers most web | ||
| 240 | browsers (including Netscape and MSIE) only support connections to servers | ||
| 241 | supporting RSA cipher suites. The other cause is that a set of DH parameters | ||
| 242 | has not been supplied to the server. DH parameters can be created with the | ||
| 243 | dhparam(1) command and loaded using the SSL_CTX_set_tmp_dh() for example: | ||
| 244 | check the source to s_server in apps/s_server.c for an example. | ||
| 245 | |||
| 246 | |||
| 247 | * How can I remove the passphrase on a private key? | ||
| 248 | |||
| 249 | Firstly you should be really *really* sure you want to do this. Leaving | ||
| 250 | a private key unencrypted is a major security risk. If you decide that | ||
| 251 | you do have to do this check the EXAMPLES sections of the rsa(1) and | ||
| 252 | dsa(1) manual pages. | ||
| 253 | |||
| 254 | |||
| 255 | * Why can't I use OpenSSL certificates with SSL client authentication? | ||
| 256 | |||
| 257 | What will typically happen is that when a server requests authentication | ||
| 258 | it will either not include your certificate or tell you that you have | ||
| 259 | no client certificates (Netscape) or present you with an empty list box | ||
| 260 | (MSIE). The reason for this is that when a server requests a client | ||
| 261 | certificate it includes a list of CAs names which it will accept. Browsers | ||
| 262 | will only let you select certificates from the list on the grounds that | ||
| 263 | there is little point presenting a certificate which the server will | ||
| 264 | reject. | ||
| 265 | |||
| 266 | The solution is to add the relevant CA certificate to your servers "trusted | ||
| 267 | CA list". How you do this depends on the server sofware in uses. You can | ||
| 268 | print out the servers list of acceptable CAs using the OpenSSL s_client tool: | ||
| 269 | |||
| 270 | openssl s_client -connect www.some.host:443 -prexit | ||
| 271 | |||
| 272 | If your server only requests certificates on certain URLs then you may need | ||
| 273 | to manually issue an HTTP GET command to get the list when s_client connects: | ||
| 274 | |||
| 275 | GET /some/page/needing/a/certificate.html | ||
| 276 | |||
| 277 | If your CA does not appear in the list then this confirms the problem. | ||
| 278 | |||
| 279 | |||
| 280 | * Why does my browser give a warning about a mismatched hostname? | ||
| 281 | |||
| 282 | Browsers expect the server's hostname to match the value in the commonName | ||
| 283 | (CN) field of the certificate. If it does not then you get a warning. | ||
| 284 | |||
| 285 | |||
| 286 | [BUILD] ======================================================================= | ||
| 287 | |||
| 141 | * Why does the linker complain about undefined symbols? | 288 | * Why does the linker complain about undefined symbols? | 
| 142 | 289 | ||
| 143 | Maybe the compilation was interrupted, and make doesn't notice that | 290 | Maybe the compilation was interrupted, and make doesn't notice that | 
| @@ -162,17 +309,99 @@ If none of these helps, you may want to try using the current snapshot. | |||
| 162 | If the problem persists, please submit a bug report. | 309 | If the problem persists, please submit a bug report. | 
| 163 | 310 | ||
| 164 | 311 | ||
| 165 | * Where can I get a compiled version of OpenSSL? | 312 | * Why does the OpenSSL test fail with "bc: command not found"? | 
| 166 | 313 | ||
| 167 | Some applications that use OpenSSL are distributed in binary form. | 314 | You didn't install "bc", the Unix calculator. If you want to run the | 
| 168 | When using such an application, you don't need to install OpenSSL | 315 | tests, get GNU bc from ftp://ftp.gnu.org or from your OS distributor. | 
| 169 | yourself; the application will include the required parts (e.g. DLLs). | ||
| 170 | 316 | ||
| 171 | If you want to install OpenSSL on a Windows system and you don't have | ||
| 172 | a C compiler, read the "Mingw32" section of INSTALL.W32 for information | ||
| 173 | on how to obtain and install the free GNU C compiler. | ||
| 174 | 317 | ||
| 175 | A number of Linux and *BSD distributions include OpenSSL. | 318 | * Why does the OpenSSL test fail with "bc: 1 no implemented"? | 
| 319 | |||
| 320 | On some SCO installations or versions, bc has a bug that gets triggered | ||
| 321 | when you run the test suite (using "make test"). The message returned is | ||
| 322 | "bc: 1 not implemented". | ||
| 323 | |||
| 324 | The best way to deal with this is to find another implementation of bc | ||
| 325 | and compile/install it. GNU bc (see http://www.gnu.org/software/software.html | ||
| 326 | for download instructions) can be safely used, for example. | ||
| 327 | |||
| 328 | |||
| 329 | * Why does the OpenSSL compilation fail on Alpha True64 Unix? | ||
| 330 | |||
| 331 | On some Alpha installations running True64 Unix and Compaq C, the compilation | ||
| 332 | of crypto/sha/sha_dgst.c fails with the message 'Fatal: Insufficient virtual | ||
| 333 | memory to continue compilation.' As far as the tests have shown, this may be | ||
| 334 | a compiler bug. What happens is that it eats up a lot of resident memory | ||
| 335 | to build something, probably a table. The problem is clearly in the | ||
| 336 | optimization code, because if one eliminates optimization completely (-O0), | ||
| 337 | the compilation goes through (and the compiler consumes about 2MB of resident | ||
| 338 | memory instead of 240MB or whatever one's limit is currently). | ||
| 339 | |||
| 340 | There are three options to solve this problem: | ||
| 341 | |||
| 342 | 1. set your current data segment size soft limit higher. Experience shows | ||
| 343 | that about 241000 kbytes seems to be enough on an AlphaServer DS10. You do | ||
| 344 | this with the command 'ulimit -Sd nnnnnn', where 'nnnnnn' is the number of | ||
| 345 | kbytes to set the limit to. | ||
| 346 | |||
| 347 | 2. If you have a hard limit that is lower than what you need and you can't | ||
| 348 | get it changed, you can compile all of OpenSSL with -O0 as optimization | ||
| 349 | level. This is however not a very nice thing to do for those who expect to | ||
| 350 | get the best result from OpenSSL. A bit more complicated solution is the | ||
| 351 | following: | ||
| 352 | |||
| 353 | ----- snip:start ----- | ||
| 354 | make DIRS=crypto SDIRS=sha "`grep '^CFLAG=' Makefile.ssl | \ | ||
| 355 | sed -e 's/ -O[0-9] / -O0 /'`" | ||
| 356 | rm `ls crypto/*.o crypto/sha/*.o | grep -v 'sha_dgst\.o'` | ||
| 357 | make | ||
| 358 | ----- snip:end ----- | ||
| 359 | |||
| 360 | This will only compile sha_dgst.c with -O0, the rest with the optimization | ||
| 361 | level chosen by the configuration process. When the above is done, do the | ||
| 362 | test and installation and you're set. | ||
| 363 | |||
| 364 | |||
| 365 | * Why does the OpenSSL compilation fail with "ar: command not found"? | ||
| 366 | |||
| 367 | Getting this message is quite usual on Solaris 2, because Sun has hidden | ||
| 368 | away 'ar' and other development commands in directories that aren't in | ||
| 369 | $PATH by default. One of those directories is '/usr/ccs/bin'. The | ||
| 370 | quickest way to fix this is to do the following (it assumes you use sh | ||
| 371 | or any sh-compatible shell): | ||
| 372 | |||
| 373 | ----- snip:start ----- | ||
| 374 | PATH=${PATH}:/usr/ccs/bin; export PATH | ||
| 375 | ----- snip:end ----- | ||
| 376 | |||
| 377 | and then redo the compilation. What you should really do is make sure | ||
| 378 | '/usr/ccs/bin' is permanently in your $PATH, for example through your | ||
| 379 | '.profile' (again, assuming you use a sh-compatible shell). | ||
| 380 | |||
| 381 | |||
| 382 | * Why does the OpenSSL compilation fail on Win32 with VC++? | ||
| 383 | |||
| 384 | Sometimes, you may get reports from VC++ command line (cl) that it | ||
| 385 | can't find standard include files like stdio.h and other weirdnesses. | ||
| 386 | One possible cause is that the environment isn't correctly set up. | ||
| 387 | To solve that problem, one should run VCVARS32.BAT which is found in | ||
| 388 | the 'bin' subdirectory of the VC++ installation directory (somewhere | ||
| 389 | under 'Program Files'). This needs to be done prior to running NMAKE, | ||
| 390 | and the changes are only valid for the current DOS session. | ||
| 391 | |||
| 392 | |||
| 393 | [PROG] ======================================================================== | ||
| 394 | |||
| 395 | * Is OpenSSL thread-safe? | ||
| 396 | |||
| 397 | Yes (with limitations: an SSL connection may not concurrently be used | ||
| 398 | by multiple threads). On Windows and many Unix systems, OpenSSL | ||
| 399 | automatically uses the multi-threaded versions of the standard | ||
| 400 | libraries. If your platform is not one of these, consult the INSTALL | ||
| 401 | file. | ||
| 402 | |||
| 403 | Multi-threaded applications must provide two callback functions to | ||
| 404 | OpenSSL. This is described in the threads(3) manpage. | ||
| 176 | 405 | ||
| 177 | 406 | ||
| 178 | * I've compiled a program under Windows and it crashes: why? | 407 | * I've compiled a program under Windows and it crashes: why? | 
| @@ -259,68 +488,6 @@ is forgetting to load OpenSSL's table of algorithms with | |||
| 259 | OpenSSL_add_all_algorithms(). See the manual page for more information. | 488 | OpenSSL_add_all_algorithms(). See the manual page for more information. | 
| 260 | 489 | ||
| 261 | 490 | ||
| 262 | * How do I create certificates or certificate requests? | ||
| 263 | |||
| 264 | Check out the CA.pl(1) manual page. This provides a simple wrapper round | ||
| 265 | the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check | ||
| 266 | out the manual pages for the individual utilities and the certificate | ||
| 267 | extensions documentation (currently in doc/openssl.txt). | ||
| 268 | |||
| 269 | |||
| 270 | * Why can't I create certificate requests? | ||
| 271 | |||
| 272 | You typically get the error: | ||
| 273 | |||
| 274 | unable to find 'distinguished_name' in config | ||
| 275 | problems making Certificate Request | ||
| 276 | |||
| 277 | This is because it can't find the configuration file. Check out the | ||
| 278 | DIAGNOSTICS section of req(1) for more information. | ||
| 279 | |||
| 280 | |||
| 281 | * Why does <SSL program> fail with a certificate verify error? | ||
| 282 | |||
| 283 | This problem is usually indicated by log messages saying something like | ||
| 284 | "unable to get local issuer certificate" or "self signed certificate". | ||
| 285 | When a certificate is verified its root CA must be "trusted" by OpenSSL | ||
| 286 | this typically means that the CA certificate must be placed in a directory | ||
| 287 | or file and the relevant program configured to read it. The OpenSSL program | ||
| 288 | 'verify' behaves in a similar way and issues similar error messages: check | ||
| 289 | the verify(1) program manual page for more information. | ||
| 290 | |||
| 291 | |||
| 292 | * Why can I only use weak ciphers when I connect to a server using OpenSSL? | ||
| 293 | |||
| 294 | This is almost certainly because you are using an old "export grade" browser | ||
| 295 | which only supports weak encryption. Upgrade your browser to support 128 bit | ||
| 296 | ciphers. | ||
| 297 | |||
| 298 | |||
| 299 | * How can I create DSA certificates? | ||
| 300 | |||
| 301 | Check the CA.pl(1) manual page for a DSA certificate example. | ||
| 302 | |||
| 303 | |||
| 304 | * Why can't I make an SSL connection to a server using a DSA certificate? | ||
| 305 | |||
| 306 | Typically you'll see a message saying there are no shared ciphers when | ||
| 307 | the same setup works fine with an RSA certificate. There are two possible | ||
| 308 | causes. The client may not support connections to DSA servers most web | ||
| 309 | browsers (including Netscape and MSIE) only support connections to servers | ||
| 310 | supporting RSA cipher suites. The other cause is that a set of DH parameters | ||
| 311 | has not been supplied to the server. DH parameters can be created with the | ||
| 312 | dhparam(1) command and loaded using the SSL_CTX_set_tmp_dh() for example: | ||
| 313 | check the source to s_server in apps/s_server.c for an example. | ||
| 314 | |||
| 315 | |||
| 316 | * How can I remove the passphrase on a private key? | ||
| 317 | |||
| 318 | Firstly you should be really *really* sure you want to do this. Leaving | ||
| 319 | a private key unencrypted is a major security risk. If you decide that | ||
| 320 | you do have to do this check the EXAMPLES sections of the rsa(1) and | ||
| 321 | dsa(1) manual pages. | ||
| 322 | |||
| 323 | |||
| 324 | * Why can't the OpenSSH configure script detect OpenSSL? | 491 | * Why can't the OpenSSH configure script detect OpenSSL? | 
| 325 | 492 | ||
| 326 | There is a problem with OpenSSH 1.2.2p1, in that the configure script | 493 | There is a problem with OpenSSH 1.2.2p1, in that the configure script | 
| @@ -362,71 +529,19 @@ applied to the OpenSSH distribution: | |||
| 362 | ----- snip:end ----- | 529 | ----- snip:end ----- | 
| 363 | 530 | ||
| 364 | 531 | ||
| 365 | * Why does the OpenSSL test fail with "bc: command not found"? | 532 | * Can I use OpenSSL's SSL library with non-blocking I/O? | 
| 366 | 533 | ||
| 367 | You didn't install "bc", the Unix calculator. If you want to run the | 534 | Yes; make sure to read the SSL_get_error(3) manual page! | 
| 368 | tests, get GNU bc from ftp://ftp.gnu.org or from your OS distributor. | ||
| 369 | |||
| 370 | |||
| 371 | * Why does the OpenSSL test fail with "bc: 1 no implemented"? | ||
| 372 | 535 | ||
| 373 | On some SCO installations or versions, bc has a bug that gets triggered when | 536 | A pitfall to avoid: Don't assume that SSL_read() will just read from | 
| 374 | you run the test suite (using "make test"). The message returned is "bc: | 537 | the underlying transport or that SSL_write() will just write to it -- | 
| 375 | 1 not implemented". The best way to deal with this is to find another | 538 | it is also possible that SSL_write() cannot do any useful work until | 
| 376 | implementation of bc and compile/install it. For example, GNU bc (see | 539 | there is data to read, or that SSL_read() cannot do anything until it | 
| 377 | http://www.gnu.org/software/software.html for download instructions) can | 540 | is possible to send data. One reason for this is that the peer may | 
| 378 | be safely used. | 541 | request a new TLS/SSL handshake at any time during the protocol, | 
| 542 | requiring a bi-directional message exchange; both SSL_read() and | ||
| 543 | SSL_write() will try to continue any pending handshake. | ||
| 379 | 544 | ||
| 380 | 545 | ||
| 381 | * Why does the OpenSSL compilation fail on Alpha True64 Unix? | 546 | =============================================================================== | 
| 382 | |||
| 383 | On some Alpha installations running True64 Unix and Compaq C, the compilation | ||
| 384 | of crypto/sha/sha_dgst.c fails with the message 'Fatal: Insufficient virtual | ||
| 385 | memory to continue compilation.' As far as the tests have shown, this may be | ||
| 386 | a compiler bug. What happens is that it eats up a lot of resident memory | ||
| 387 | to build something, probably a table. The problem is clearly in the | ||
| 388 | optimization code, because if one eliminates optimization completely (-O0), | ||
| 389 | the compilation goes through (and the compiler consumes about 2MB of resident | ||
| 390 | memory instead of 240MB or whatever one's limit is currently). | ||
| 391 | |||
| 392 | There are three options to solve this problem: | ||
| 393 | |||
| 394 | 1. set your current data segment size soft limit higher. Experience shows | ||
| 395 | that about 241000 kbytes seems to be enough on an AlphaServer DS10. You do | ||
| 396 | this with the command 'ulimit -Sd nnnnnn', where 'nnnnnn' is the number of | ||
| 397 | kbytes to set the limit to. | ||
| 398 | |||
| 399 | 2. If you have a hard limit that is lower than what you need and you can't | ||
| 400 | get it changed, you can compile all of OpenSSL with -O0 as optimization | ||
| 401 | level. This is however not a very nice thing to do for those who expect to | ||
| 402 | get the best result from OpenSSL. A bit more complicated solution is the | ||
| 403 | following: | ||
| 404 | |||
| 405 | ----- snip:start ----- | ||
| 406 | make DIRS=crypto SDIRS=sha "`grep '^CFLAG=' Makefile.ssl | \ | ||
| 407 | sed -e 's/ -O[0-9] / -O0 /'`" | ||
| 408 | rm `ls crypto/*.o crypto/sha/*.o | grep -v 'sha_dgst\.o'` | ||
| 409 | make | ||
| 410 | ----- snip:end ----- | ||
| 411 | |||
| 412 | This will only compile sha_dgst.c with -O0, the rest with the optimization | ||
| 413 | level chosen by the configuration process. When the above is done, do the | ||
| 414 | test and installation and you're set. | ||
| 415 | |||
| 416 | |||
| 417 | * Why does the OpenSSL compilation fail with "ar: command not found"? | ||
| 418 | |||
| 419 | Getting this message is quite usual on Solaris 2, because Sun has hidden | ||
| 420 | away 'ar' and other development commands in directories that aren't in | ||
| 421 | $PATH by default. One of those directories is '/usr/ccs/bin'. The | ||
| 422 | quickest way to fix this is to do the following (it assumes you use sh | ||
| 423 | or any sh-compatible shell): | ||
| 424 | |||
| 425 | ----- snip:start ----- | ||
| 426 | PATH=${PATH}:/usr/ccs/bin; export PATH | ||
| 427 | ----- snip:end ----- | ||
| 428 | |||
| 429 | and then redo the compilation. What you should really do is make sure | ||
| 430 | '/usr/ccs/bin' is permanently in your $PATH, for example through your | ||
| 431 | '.profile' (again, assuming you use a sh-compatible shell). | ||
| 432 | 547 | ||
| diff --git a/src/lib/libssl/src/LICENSE b/src/lib/libssl/src/LICENSE index bdd5f7bdd0..3fd259ac32 100644 --- a/src/lib/libssl/src/LICENSE +++ b/src/lib/libssl/src/LICENSE | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | --------------- | 12 | --------------- | 
| 13 | 13 | ||
| 14 | /* ==================================================================== | 14 | /* ==================================================================== | 
| 15 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | 15 | * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. | 
| 16 | * | 16 | * | 
| 17 | * Redistribution and use in source and binary forms, with or without | 17 | * Redistribution and use in source and binary forms, with or without | 
| 18 | * modification, are permitted provided that the following conditions | 18 | * modification, are permitted provided that the following conditions | 
| diff --git a/src/lib/libssl/src/Makefile.org b/src/lib/libssl/src/Makefile.org index 0dd8a4e644..d24a0b5010 100644 --- a/src/lib/libssl/src/Makefile.org +++ b/src/lib/libssl/src/Makefile.org | |||
| @@ -9,6 +9,7 @@ SHLIB_VERSION_NUMBER= | |||
| 9 | SHLIB_VERSION_HISTORY= | 9 | SHLIB_VERSION_HISTORY= | 
| 10 | SHLIB_MAJOR= | 10 | SHLIB_MAJOR= | 
| 11 | SHLIB_MINOR= | 11 | SHLIB_MINOR= | 
| 12 | SHLIB_EXT= | ||
| 12 | PLATFORM=dist | 13 | PLATFORM=dist | 
| 13 | OPTIONS= | 14 | OPTIONS= | 
| 14 | CONFIGURE_ARGS= | 15 | CONFIGURE_ARGS= | 
| @@ -58,8 +59,9 @@ CC= gcc | |||
| 58 | #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM | 59 | #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM | 
| 59 | CFLAG= -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM | 60 | CFLAG= -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM | 
| 60 | DEPFLAG= | 61 | DEPFLAG= | 
| 61 | PEX_LIBS= -L. -L.. -L../.. -L../../.. | 62 | PEX_LIBS= | 
| 62 | EX_LIBS= | 63 | EX_LIBS= | 
| 64 | EXE_EXT= | ||
| 63 | AR=ar r | 65 | AR=ar r | 
| 64 | RANLIB= ranlib | 66 | RANLIB= ranlib | 
| 65 | PERL= perl | 67 | PERL= perl | 
| @@ -151,14 +153,11 @@ RMD160_ASM_OBJ= asm/rm86-out.o | |||
| 151 | #RMD160_ASM_OBJ= asm/rm86-out.o # a.out, FreeBSD | 153 | #RMD160_ASM_OBJ= asm/rm86-out.o # a.out, FreeBSD | 
| 152 | #RMD160_ASM_OBJ= asm/rm86bsdi.o # bsdi | 154 | #RMD160_ASM_OBJ= asm/rm86bsdi.o # bsdi | 
| 153 | 155 | ||
| 154 | # To do special treatment, use "directory names" starting with a period. | ||
| 155 | # When we're prepared to use shared libraries in the programs we link here | 156 | # When we're prepared to use shared libraries in the programs we link here | 
| 156 | # we might have SHLIB_MARK1 get the value ".shlib." and SHLIB_MARK2 be empty, | 157 | # we might set SHLIB_MARK to '$(SHARED_LIBS)'. | 
| 157 | # or have that configurable. | 158 | SHLIB_MARK= | 
| 158 | SHLIB_MARK1=.shlib-clean. | ||
| 159 | SHLIB_MARK2=.shlib. | ||
| 160 | 159 | ||
| 161 | DIRS= crypto ssl rsaref $(SHLIB_MARK1) apps test tools $(SHLIB_MARK2) | 160 | DIRS= crypto ssl rsaref $(SHLIB_MARK) apps test tools | 
| 162 | SHLIBDIRS= crypto ssl | 161 | SHLIBDIRS= crypto ssl | 
| 163 | 162 | ||
| 164 | # dirs in crypto to build | 163 | # dirs in crypto to build | 
| @@ -182,7 +181,10 @@ ONEDIRS=out tmp | |||
| 182 | EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS | 181 | EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS | 
| 183 | WDIRS= windows | 182 | WDIRS= windows | 
| 184 | LIBS= libcrypto.a libssl.a | 183 | LIBS= libcrypto.a libssl.a | 
| 185 | SHARED_LIBS=libcrypto.so libssl.so | 184 | SHARED_CRYPTO=libcrypto$(SHLIB_EXT) | 
| 185 | SHARED_SSL=libssl$(SHLIB_EXT) | ||
| 186 | SHARED_LIBS= | ||
| 187 | SHARED_LIBS_LINK_EXTS= | ||
| 186 | 188 | ||
| 187 | GENERAL= Makefile | 189 | GENERAL= Makefile | 
| 188 | BASENAME= openssl | 190 | BASENAME= openssl | 
| @@ -192,108 +194,93 @@ WTARFILE= $(NAME)-win.tar | |||
| 192 | EXHEADER= e_os.h e_os2.h | 194 | EXHEADER= e_os.h e_os2.h | 
| 193 | HEADER= e_os.h | 195 | HEADER= e_os.h | 
| 194 | 196 | ||
| 195 | all: Makefile.ssl | 197 | # When we're prepared to use shared libraries in the programs we link here | 
| 196 | @need_shlib=true; \ | 198 | # we might remove 'clean-shared' from the targets to perform at this stage | 
| 197 | for i in $(DIRS) ;\ | 199 | |
| 198 | do \ | 200 | all: clean-shared Makefile.ssl sub_all | 
| 199 | if [ "$$i" = ".shlib-clean." ]; then \ | ||
| 200 | if [ "$(SHLIB_TARGET)" != "" ]; then \ | ||
| 201 | $(MAKE) clean-shared; \ | ||
| 202 | fi; \ | ||
| 203 | elif [ "$$i" = ".shlib." ]; then \ | ||
| 204 | if [ "$(SHLIB_TARGET)" != "" ]; then \ | ||
| 205 | $(MAKE) $(SHARED_LIBS); \ | ||
| 206 | fi; \ | ||
| 207 | need_shlib=false; \ | ||
| 208 | else \ | ||
| 209 | (cd $$i && echo "making all in $$i..." && \ | ||
| 210 | $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' SDIRS='${SDIRS}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' all ) || exit 1; \ | ||
| 211 | fi; \ | ||
| 212 | done; \ | ||
| 213 | if $$need_shlib && [ "$(SHLIB_MARK1)" != "" -o "$(SHLIB_MARK1)" != "" ]; then \ | ||
| 214 | $(MAKE) $(SHARED_LIBS); \ | ||
| 215 | fi | ||
| 216 | 201 | ||
| 217 | sub_all: | 202 | sub_all: | 
| 218 | @need_shlib=true; \ | 203 | @for i in $(DIRS); \ | 
| 219 | for i in $(DIRS) ;\ | ||
| 220 | do \ | 204 | do \ | 
| 221 | if [ "$$i" = ".shlib-clean." ]; then \ | 205 | if [ -d "$$i" ]; then \ | 
| 222 | if [ "$(SHLIB_TARGET)" != "" ]; then \ | ||
| 223 | $(MAKE) clean-shared; \ | ||
| 224 | fi; \ | ||
| 225 | elif [ "$$i" = ".shlib." ]; then \ | ||
| 226 | if [ "$(SHLIB_TARGET)" != "" ]; then \ | ||
| 227 | $(MAKE) $(SHARED_LIBS); \ | ||
| 228 | fi; \ | ||
| 229 | need_shlib=false; \ | ||
| 230 | else \ | ||
| 231 | (cd $$i && echo "making all in $$i..." && \ | 206 | (cd $$i && echo "making all in $$i..." && \ | 
| 232 | $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' all ) || exit 1; \ | 207 | $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' EXE_EXT='${EXE_EXT}' all ) || exit 1; \ | 
| 208 | else \ | ||
| 209 | $(MAKE) $$i; \ | ||
| 233 | fi; \ | 210 | fi; \ | 
| 234 | done; \ | 211 | done; \ | 
| 235 | if $$need_shlib && [ "$(SHLIB_MARK1)" != "" -o "$(SHLIB_MARK1)" != "" ]; then \ | 212 | if echo "$(DIRS)" | \ | 
| 213 | egrep '(^| )(crypto|ssl)( |$$)' > /dev/null 2>&1 && \ | ||
| 214 | [ -n "$(SHARED_LIBS)" ]; then \ | ||
| 236 | $(MAKE) $(SHARED_LIBS); \ | 215 | $(MAKE) $(SHARED_LIBS); \ | 
| 237 | fi | 216 | fi | 
| 238 | 217 | ||
| 239 | libcrypto.so: libcrypto.a | 218 | libcrypto$(SHLIB_EXT): libcrypto.a | 
| 240 | @if [ "$(SHLIB_TARGET)" != "" ]; then \ | 219 | @if [ "$(SHLIB_TARGET)" != "" ]; then \ | 
| 241 | $(MAKE) SHLIBDIRS=crypto $(SHLIB_TARGET); \ | 220 | $(MAKE) SHLIBDIRS=crypto build-shared; \ | 
| 242 | else \ | 221 | else \ | 
| 243 | echo "There's no support for shared libraries on this platform" >&2; \ | 222 | echo "There's no support for shared libraries on this platform" >&2; \ | 
| 244 | fi | 223 | fi | 
| 245 | libssl.so: libcrypto.so libssl.a | 224 | libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a | 
| 246 | @if [ "$(SHLIB_TARGET)" != "" ]; then \ | 225 | @if [ "$(SHLIB_TARGET)" != "" ]; then \ | 
| 247 | $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-L. -lcrypto' $(SHLIB_TARGET); \ | 226 | $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \ | 
| 248 | else \ | 227 | else \ | 
| 249 | echo "There's no support for shared libraries on this platform" >&2; \ | 228 | echo "There's no support for shared libraries on this platform" >&2; \ | 
| 250 | fi | 229 | fi | 
| 251 | 230 | ||
| 252 | clean-shared: | 231 | clean-shared: | 
| 253 | for i in ${SHLIBDIRS}; do \ | 232 | @for i in $(SHLIBDIRS); do \ | 
| 254 | rm -f lib$$i.so \ | 233 | if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \ | 
| 255 | lib$$i.so.${SHLIB_MAJOR} \ | 234 | tmp="$(SHARED_LIBS_LINK_EXTS)"; \ | 
| 256 | lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}; \ | 235 | for j in $${tmp:-x}; do \ | 
| 236 | ( set -x; rm -f lib$$i$$j ); \ | ||
| 237 | done; \ | ||
| 238 | fi; \ | ||
| 239 | ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \ | ||
| 257 | done | 240 | done | 
| 258 | 241 | ||
| 259 | linux-shared: | 242 | link-shared: | 
| 260 | libs='${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ | 243 | @for i in $(SHLIBDIRS); do \ | 
| 261 | rm -f lib$$i.so \ | 244 | prev=lib$$i$(SHLIB_EXT); \ | 
| 262 | lib$$i.so.${SHLIB_MAJOR} \ | 245 | if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \ | 
| 263 | lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}; \ | 246 | tmp="$(SHARED_LIBS_LINK_EXTS)"; \ | 
| 247 | for j in $${tmp:-x}; do \ | ||
| 248 | ( set -x; ln -f -s $$prev lib$$i$$j ); \ | ||
| 249 | prev=lib$$i$$j; \ | ||
| 250 | done; \ | ||
| 251 | fi; \ | ||
| 252 | done | ||
| 253 | |||
| 254 | build-shared: clean-shared do_$(SHLIB_TARGET) link-shared | ||
| 255 | |||
| 256 | do_bsd-gcc-shared: do_gnu-shared | ||
| 257 | do_linux-shared: do_gnu-shared | ||
| 258 | do_gnu-shared: | ||
| 259 | libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ | ||
| 264 | ( set -x; ${CC} -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | 260 | ( set -x; ${CC} -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | 
| 265 | -Wl,-S,-soname=lib$$i.so.${SHLIB_MAJOR} \ | 261 | -Wl,-S,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | 
| 266 | -Wl,--whole-archive lib$$i.a \ | 262 | -Wl,--whole-archive lib$$i.a \ | 
| 267 | -Wl,--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \ | 263 | -Wl,--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \ | 
| 268 | libs="$$libs -L. -l$$i"; \ | 264 | libs="$$libs -l$$i"; \ | 
| 269 | ( set -x; \ | ||
| 270 | ln -s lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | ||
| 271 | lib$$i.so.${SHLIB_MAJOR}; \ | ||
| 272 | ln -s lib$$i.so.${SHLIB_MAJOR} lib$$i.so ); \ | ||
| 273 | done | 265 | done | 
| 274 | 266 | ||
| 275 | # This assumes that GNU utilities are *not* used | 267 | # This assumes that GNU utilities are *not* used | 
| 276 | true64-shared: | 268 | do_tru64-shared: | 
| 277 | libs='${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ | 269 | libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ | 
| 278 | ( set -x; ${CC} -shared -no_archive -o lib$$i.so \ | 270 | ( set -x; ${CC} -shared -no_archive -o lib$$i.so \ | 
| 279 | -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \ | 271 | -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \ | 
| 280 | -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \ | 272 | -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \ | 
| 281 | libs="$$libs -L. -l$$i"; \ | 273 | libs="$$libs -l$$i"; \ | 
| 282 | done | 274 | done | 
| 283 | 275 | ||
| 284 | # This assumes that GNU utilities are *not* used | 276 | # This assumes that GNU utilities are *not* used | 
| 285 | solaris-shared: | 277 | do_solaris-shared: | 
| 286 | libs='${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ | 278 | libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ | 
| 287 | rm -f lib$$i.so \ | 279 | ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \ | 
| 288 | lib$$i.so.${SHLIB_MAJOR} \ | 280 | set -x; ${CC} -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | 
| 289 | lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}; \ | 281 | -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | 
| 290 | ( set -x; ${CC} -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | ||
| 291 | -h lib$$i.so.${SHLIB_MAJOR} \ | ||
| 292 | -z allextract lib$$i.a $$libs ${EX_LIBS} -lc ) || exit 1; \ | 282 | -z allextract lib$$i.a $$libs ${EX_LIBS} -lc ) || exit 1; \ | 
| 293 | libs="$$libs -L. -l$$i"; \ | 283 | libs="$$libs -l$$i"; \ | 
| 294 | ln -s lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ | ||
| 295 | lib$$i.so.${SHLIB_MAJOR}; \ | ||
| 296 | ln -s lib$$i.so.${SHLIB_MAJOR} lib$$i.so; \ | ||
| 297 | done | 284 | done | 
| 298 | 285 | ||
| 299 | Makefile.ssl: Makefile.org | 286 | Makefile.ssl: Makefile.org | 
| @@ -308,7 +295,7 @@ clean: | |||
| 308 | rm -f shlib/*.o *.o core a.out fluff *.map rehash.time testlog make.log cctest cctest.c | 295 | rm -f shlib/*.o *.o core a.out fluff *.map rehash.time testlog make.log cctest cctest.c | 
| 309 | @for i in $(DIRS) ;\ | 296 | @for i in $(DIRS) ;\ | 
| 310 | do \ | 297 | do \ | 
| 311 | if echo "$$i" | grep -v '^\.'; then \ | 298 | if [ -d "$$i" ]; then \ | 
| 312 | (cd $$i && echo "making clean in $$i..." && \ | 299 | (cd $$i && echo "making clean in $$i..." && \ | 
| 313 | $(MAKE) SDIRS='${SDIRS}' clean ) || exit 1; \ | 300 | $(MAKE) SDIRS='${SDIRS}' clean ) || exit 1; \ | 
| 314 | rm -f $(LIBS); \ | 301 | rm -f $(LIBS); \ | 
| @@ -329,7 +316,7 @@ files: | |||
| 329 | $(PERL) $(TOP)/util/files.pl Makefile.ssl > $(TOP)/MINFO | 316 | $(PERL) $(TOP)/util/files.pl Makefile.ssl > $(TOP)/MINFO | 
| 330 | @for i in $(DIRS) ;\ | 317 | @for i in $(DIRS) ;\ | 
| 331 | do \ | 318 | do \ | 
| 332 | if echo "$$i" | grep -v '^\.'; then \ | 319 | if [ -d "$$i" ]; then \ | 
| 333 | (cd $$i && echo "making 'files' in $$i..." && \ | 320 | (cd $$i && echo "making 'files' in $$i..." && \ | 
| 334 | $(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' files ) || exit 1; \ | 321 | $(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' files ) || exit 1; \ | 
| 335 | fi; \ | 322 | fi; \ | 
| @@ -340,7 +327,7 @@ links: | |||
| 340 | @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl | 327 | @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl | 
| 341 | @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER) | 328 | @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER) | 
| 342 | @for i in $(DIRS); do \ | 329 | @for i in $(DIRS); do \ | 
| 343 | if echo "$$i" | grep -v '^\.'; then \ | 330 | if [ -d "$$i" ]; then \ | 
| 344 | (cd $$i && echo "making links in $$i..." && \ | 331 | (cd $$i && echo "making links in $$i..." && \ | 
| 345 | $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PERL='${PERL}' links ) || exit 1; \ | 332 | $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PERL='${PERL}' links ) || exit 1; \ | 
| 346 | fi; \ | 333 | fi; \ | 
| @@ -350,7 +337,7 @@ dclean: | |||
| 350 | rm -f *.bak | 337 | rm -f *.bak | 
| 351 | @for i in $(DIRS) ;\ | 338 | @for i in $(DIRS) ;\ | 
| 352 | do \ | 339 | do \ | 
| 353 | if echo "$$i" | grep -v '^\.'; then \ | 340 | if [ -d "$$i" ]; then \ | 
| 354 | (cd $$i && echo "making dclean in $$i..." && \ | 341 | (cd $$i && echo "making dclean in $$i..." && \ | 
| 355 | $(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' dclean ) || exit 1; \ | 342 | $(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' dclean ) || exit 1; \ | 
| 356 | fi; \ | 343 | fi; \ | 
| @@ -365,7 +352,7 @@ test: tests | |||
| 365 | 352 | ||
| 366 | tests: rehash | 353 | tests: rehash | 
| 367 | @(cd test && echo "testing..." && \ | 354 | @(cd test && echo "testing..." && \ | 
| 368 | $(MAKE) CC='${CC}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SDIRS='${SDIRS}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' tests ); | 355 | $(MAKE) CC='${CC}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SDIRS='${SDIRS}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' EXE_EXT='${EXE_EXT}' tests ); | 
| 369 | @apps/openssl version -a | 356 | @apps/openssl version -a | 
| 370 | 357 | ||
| 371 | report: | 358 | report: | 
| @@ -374,7 +361,7 @@ report: | |||
| 374 | depend: | 361 | depend: | 
| 375 | @for i in $(DIRS) ;\ | 362 | @for i in $(DIRS) ;\ | 
| 376 | do \ | 363 | do \ | 
| 377 | if echo "$$i" | grep -v '^\.'; then \ | 364 | if [ -d "$$i" ]; then \ | 
| 378 | (cd $$i && echo "making dependencies $$i..." && \ | 365 | (cd $$i && echo "making dependencies $$i..." && \ | 
| 379 | $(MAKE) SDIRS='${SDIRS}' DEPFLAG='${DEPFLAG}' depend ) || exit 1; \ | 366 | $(MAKE) SDIRS='${SDIRS}' DEPFLAG='${DEPFLAG}' depend ) || exit 1; \ | 
| 380 | fi; \ | 367 | fi; \ | 
| @@ -383,7 +370,7 @@ depend: | |||
| 383 | lint: | 370 | lint: | 
| 384 | @for i in $(DIRS) ;\ | 371 | @for i in $(DIRS) ;\ | 
| 385 | do \ | 372 | do \ | 
| 386 | if echo "$$i" | grep -v '^\.'; then \ | 373 | if [ -d "$$i" ]; then \ | 
| 387 | (cd $$i && echo "making lint $$i..." && \ | 374 | (cd $$i && echo "making lint $$i..." && \ | 
| 388 | $(MAKE) SDIRS='${SDIRS}' lint ) || exit 1; \ | 375 | $(MAKE) SDIRS='${SDIRS}' lint ) || exit 1; \ | 
| 389 | fi; \ | 376 | fi; \ | 
| @@ -392,7 +379,7 @@ lint: | |||
| 392 | tags: | 379 | tags: | 
| 393 | @for i in $(DIRS) ;\ | 380 | @for i in $(DIRS) ;\ | 
| 394 | do \ | 381 | do \ | 
| 395 | if echo "$$i" | grep -v '^\.'; then \ | 382 | if [ -d "$$i" ]; then \ | 
| 396 | (cd $$i && echo "making tags $$i..." && \ | 383 | (cd $$i && echo "making tags $$i..." && \ | 
| 397 | $(MAKE) SDIRS='${SDIRS}' tags ) || exit 1; \ | 384 | $(MAKE) SDIRS='${SDIRS}' tags ) || exit 1; \ | 
| 398 | fi; \ | 385 | fi; \ | 
| @@ -454,9 +441,9 @@ install: all install_docs | |||
| 454 | done; | 441 | done; | 
| 455 | @for i in $(DIRS) ;\ | 442 | @for i in $(DIRS) ;\ | 
| 456 | do \ | 443 | do \ | 
| 457 | if echo "$$i" | grep -v '^\.'; then \ | 444 | if [ -d "$$i" ]; then \ | 
| 458 | (cd $$i; echo "installing $$i..."; \ | 445 | (cd $$i; echo "installing $$i..."; \ | 
| 459 | $(MAKE) CC='${CC}' CFLAG='${CFLAG}' INSTALL_PREFIX='${INSTALL_PREFIX}' INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}' EX_LIBS='${EX_LIBS}' SDIRS='${SDIRS}' RANLIB='${RANLIB}' install ); \ | 446 | $(MAKE) CC='${CC}' CFLAG='${CFLAG}' INSTALL_PREFIX='${INSTALL_PREFIX}' INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}' EX_LIBS='${EX_LIBS}' SDIRS='${SDIRS}' RANLIB='${RANLIB}' EXE_EXT='${EXE_EXT}' install ); \ | 
| 460 | fi; \ | 447 | fi; \ | 
| 461 | done | 448 | done | 
| 462 | @for i in $(LIBS) ;\ | 449 | @for i in $(LIBS) ;\ | 
| @@ -468,6 +455,20 @@ install: all install_docs | |||
| 468 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \ | 455 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \ | 
| 469 | fi \ | 456 | fi \ | 
| 470 | done | 457 | done | 
| 458 | @if [ -n "$(SHARED_LIBS)" ]; then \ | ||
| 459 | tmp="$(SHARED_LIBS)"; \ | ||
| 460 | for i in $${tmp:-x}; \ | ||
| 461 | do \ | ||
| 462 | if [ -f "$$i" ]; then \ | ||
| 463 | ( echo installing $$i; \ | ||
| 464 | cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \ | ||
| 465 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \ | ||
| 466 | fi \ | ||
| 467 | done; \ | ||
| 468 | ( here="`pwd`"; \ | ||
| 469 | cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \ | ||
| 470 | make -f $$here/Makefile link-shared ); \ | ||
| 471 | fi | ||
| 471 | 472 | ||
| 472 | install_docs: | 473 | install_docs: | 
| 473 | @$(PERL) $(TOP)/util/mkdir-p.pl \ | 474 | @$(PERL) $(TOP)/util/mkdir-p.pl \ | 
| diff --git a/src/lib/libssl/src/NEWS b/src/lib/libssl/src/NEWS index 7cf95cfb0b..b9ea61239f 100644 --- a/src/lib/libssl/src/NEWS +++ b/src/lib/libssl/src/NEWS | |||
| @@ -5,6 +5,31 @@ | |||
| 5 | This file gives a brief overview of the major changes between each OpenSSL | 5 | This file gives a brief overview of the major changes between each OpenSSL | 
| 6 | release. For more details please read the CHANGES file. | 6 | release. For more details please read the CHANGES file. | 
| 7 | 7 | ||
| 8 | Major changes between OpenSSL 0.9.6 and OpenSSL 0.9.6a: | ||
| 9 | |||
| 10 | o Security fix: change behavior of OpenSSL to avoid using | ||
| 11 | environment variables when running as root. | ||
| 12 | o Security fix: check the result of RSA-CRT to reduce the | ||
| 13 | possibility of deducing the private key from an incorrectly | ||
| 14 | calculated signature. | ||
| 15 | o Security fix: prevent Bleichenbacher's DSA attack. | ||
| 16 | o Security fix: Zero the premaster secret after deriving the | ||
| 17 | master secret in DH ciphersuites. | ||
| 18 | o Reimplement SSL_peek(), which had various problems. | ||
| 19 | o Compatibility fix: the function des_encrypt() renamed to | ||
| 20 | des_encrypt1() to avoid clashes with some Unixen libc. | ||
| 21 | o Bug fixes for Win32, HP/UX and Irix. | ||
| 22 | o Bug fixes in BIGNUM, SSL, PKCS#7, PKCS#12, X.509, CONF and | ||
| 23 | memory checking routines. | ||
| 24 | o Bug fixes for RSA operations in threaded enviroments. | ||
| 25 | o Bug fixes in misc. openssl applications. | ||
| 26 | o Remove a few potential memory leaks. | ||
| 27 | o Add tighter checks of BIGNUM routines. | ||
| 28 | o Shared library support has been reworked for generality. | ||
| 29 | o More documentation. | ||
| 30 | o New function BN_rand_range(). | ||
| 31 | o Add "-rand" option to openssl s_client and s_server. | ||
| 32 | |||
| 8 | Major changes between OpenSSL 0.9.5a and OpenSSL 0.9.6: | 33 | Major changes between OpenSSL 0.9.5a and OpenSSL 0.9.6: | 
| 9 | 34 | ||
| 10 | o Some documentation for BIO and SSL libraries. | 35 | o Some documentation for BIO and SSL libraries. | 
| diff --git a/src/lib/libssl/src/README b/src/lib/libssl/src/README index e8f20f49a6..c500744c6b 100644 --- a/src/lib/libssl/src/README +++ b/src/lib/libssl/src/README | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | 1 | ||
| 2 | OpenSSL 0.9.5 28 Feb 2000 | 2 | OpenSSL 0.9.6a [engine] 5 Apr 2001 | 
| 3 | |||
| 3 | 4 | ||
| 4 | Copyright (c) 1998-2000 The OpenSSL Project | 5 | Copyright (c) 1998-2000 The OpenSSL Project | 
| 5 | Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson | 6 | Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson | 
| diff --git a/src/lib/libssl/src/apps/Makefile.ssl b/src/lib/libssl/src/apps/Makefile.ssl index e8677cbb2d..75aeb56df3 100644 --- a/src/lib/libssl/src/apps/Makefile.ssl +++ b/src/lib/libssl/src/apps/Makefile.ssl | |||
| @@ -18,6 +18,7 @@ RM= rm -f | |||
| 18 | 18 | ||
| 19 | PEX_LIBS= | 19 | PEX_LIBS= | 
| 20 | EX_LIBS= | 20 | EX_LIBS= | 
| 21 | EXE_EXT= | ||
| 21 | 22 | ||
| 22 | CFLAGS= -DMONOLITH $(INCLUDES) $(CFLAG) | 23 | CFLAGS= -DMONOLITH $(INCLUDES) $(CFLAG) | 
| 23 | 24 | ||
| @@ -32,7 +33,7 @@ PROGRAM= openssl | |||
| 32 | 33 | ||
| 33 | SCRIPTS=CA.sh CA.pl der_chop | 34 | SCRIPTS=CA.sh CA.pl der_chop | 
| 34 | 35 | ||
| 35 | EXE= $(PROGRAM) | 36 | EXE= $(PROGRAM)$(EXE_EXT) | 
| 36 | 37 | ||
| 37 | E_EXE= verify asn1pars req dgst dh dhparam enc passwd gendh errstr \ | 38 | E_EXE= verify asn1pars req dgst dh dhparam enc passwd gendh errstr \ | 
| 38 | ca crl rsa rsautl dsa dsaparam \ | 39 | ca crl rsa rsautl dsa dsaparam \ | 
| @@ -77,7 +78,7 @@ top: | |||
| 77 | 78 | ||
| 78 | all: exe | 79 | all: exe | 
| 79 | 80 | ||
| 80 | exe: $(EXE) | 81 | exe: $(PROGRAM) | 
| 81 | 82 | ||
| 82 | req: sreq.o $(A_OBJ) $(DLIBCRYPTO) | 83 | req: sreq.o $(A_OBJ) $(DLIBCRYPTO) | 
| 83 | $(CC) -o req $(CFLAG) sreq.o $(A_OBJ) $(RAND_OBJ) $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) | 84 | $(CC) -o req $(CFLAG) sreq.o $(A_OBJ) $(RAND_OBJ) $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) | 
| diff --git a/src/lib/libssl/src/apps/app_rand.c b/src/lib/libssl/src/apps/app_rand.c index 1146f9f7f3..8a78e12eb7 100644 --- a/src/lib/libssl/src/apps/app_rand.c +++ b/src/lib/libssl/src/apps/app_rand.c | |||
| @@ -177,8 +177,10 @@ long app_RAND_load_files(char *name) | |||
| 177 | if (*n == '\0') break; | 177 | if (*n == '\0') break; | 
| 178 | 178 | ||
| 179 | egd=RAND_egd(n); | 179 | egd=RAND_egd(n); | 
| 180 | if (egd > 0) tot+=egd; | 180 | if (egd > 0) | 
| 181 | tot+=RAND_load_file(n,-1); | 181 | tot+=egd; | 
| 182 | else | ||
| 183 | tot+=RAND_load_file(n,-1); | ||
| 182 | if (last) break; | 184 | if (last) break; | 
| 183 | } | 185 | } | 
| 184 | if (tot > 512) | 186 | if (tot > 512) | 
| diff --git a/src/lib/libssl/src/apps/ca-cert.srl b/src/lib/libssl/src/apps/ca-cert.srl index eeee65ec41..2c7456e3eb 100644 --- a/src/lib/libssl/src/apps/ca-cert.srl +++ b/src/lib/libssl/src/apps/ca-cert.srl | |||
| @@ -1 +1 @@ | |||
| 05 | 07 | ||
| diff --git a/src/lib/libssl/src/apps/dsaparam.c b/src/lib/libssl/src/apps/dsaparam.c index 67f054c645..34230b2cfb 100644 --- a/src/lib/libssl/src/apps/dsaparam.c +++ b/src/lib/libssl/src/apps/dsaparam.c | |||
| @@ -313,7 +313,7 @@ bad: | |||
| 313 | printf("\tdsa->g=BN_bin2bn(dsa%d_g,sizeof(dsa%d_g),NULL);\n", | 313 | printf("\tdsa->g=BN_bin2bn(dsa%d_g,sizeof(dsa%d_g),NULL);\n", | 
| 314 | bits_p,bits_p); | 314 | bits_p,bits_p); | 
| 315 | printf("\tif ((dsa->p == NULL) || (dsa->q == NULL) || (dsa->g == NULL))\n"); | 315 | printf("\tif ((dsa->p == NULL) || (dsa->q == NULL) || (dsa->g == NULL))\n"); | 
| 316 | printf("\t\treturn(NULL);\n"); | 316 | printf("\t\t{ DSA_free(dsa); return(NULL); }\n"); | 
| 317 | printf("\treturn(dsa);\n\t}\n"); | 317 | printf("\treturn(dsa);\n\t}\n"); | 
| 318 | } | 318 | } | 
| 319 | 319 | ||
| diff --git a/src/lib/libssl/src/apps/md5.c b/src/lib/libssl/src/apps/md5.c new file mode 100644 index 0000000000..7ed0024ae1 --- /dev/null +++ b/src/lib/libssl/src/apps/md5.c | |||
| @@ -0,0 +1,127 @@ | |||
| 1 | /* crypto/md5/md5.c */ | ||
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
| 3 | * All rights reserved. | ||
| 4 | * | ||
| 5 | * This package is an SSL implementation written | ||
| 6 | * by Eric Young (eay@cryptsoft.com). | ||
| 7 | * The implementation was written so as to conform with Netscapes SSL. | ||
| 8 | * | ||
| 9 | * This library is free for commercial and non-commercial use as long as | ||
| 10 | * the following conditions are aheared to. The following conditions | ||
| 11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
| 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
| 13 | * included with this distribution is covered by the same copyright terms | ||
| 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
| 15 | * | ||
| 16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
| 17 | * the code are not to be removed. | ||
| 18 | * If this package is used in a product, Eric Young should be given attribution | ||
| 19 | * as the author of the parts of the library used. | ||
| 20 | * This can be in the form of a textual message at program startup or | ||
| 21 | * in documentation (online or textual) provided with the package. | ||
| 22 | * | ||
| 23 | * Redistribution and use in source and binary forms, with or without | ||
| 24 | * modification, are permitted provided that the following conditions | ||
| 25 | * are met: | ||
| 26 | * 1. Redistributions of source code must retain the copyright | ||
| 27 | * notice, this list of conditions and the following disclaimer. | ||
| 28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 29 | * notice, this list of conditions and the following disclaimer in the | ||
| 30 | * documentation and/or other materials provided with the distribution. | ||
| 31 | * 3. All advertising materials mentioning features or use of this software | ||
| 32 | * must display the following acknowledgement: | ||
| 33 | * "This product includes cryptographic software written by | ||
| 34 | * Eric Young (eay@cryptsoft.com)" | ||
| 35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
| 36 | * being used are not cryptographic related :-). | ||
| 37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
| 38 | * the apps directory (application code) you must include an acknowledgement: | ||
| 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
| 40 | * | ||
| 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
| 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
| 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
| 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
| 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
| 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
| 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
| 51 | * SUCH DAMAGE. | ||
| 52 | * | ||
| 53 | * The licence and distribution terms for any publically available version or | ||
| 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
| 55 | * copied and put under another distribution licence | ||
| 56 | * [including the GNU Public Licence.] | ||
| 57 | */ | ||
| 58 | |||
| 59 | #include <stdio.h> | ||
| 60 | #include <stdlib.h> | ||
| 61 | #include <openssl/md5.h> | ||
| 62 | |||
| 63 | #define BUFSIZE 1024*16 | ||
| 64 | |||
| 65 | void do_fp(FILE *f); | ||
| 66 | void pt(unsigned char *md); | ||
| 67 | #ifndef _OSD_POSIX | ||
| 68 | int read(int, void *, unsigned int); | ||
| 69 | #endif | ||
| 70 | |||
| 71 | int main(int argc, char **argv) | ||
| 72 | { | ||
| 73 | int i,err=0; | ||
| 74 | FILE *IN; | ||
| 75 | |||
| 76 | if (argc == 1) | ||
| 77 | { | ||
| 78 | do_fp(stdin); | ||
| 79 | } | ||
| 80 | else | ||
| 81 | { | ||
| 82 | for (i=1; i<argc; i++) | ||
| 83 | { | ||
| 84 | IN=fopen(argv[i],"r"); | ||
| 85 | if (IN == NULL) | ||
| 86 | { | ||
| 87 | perror(argv[i]); | ||
| 88 | err++; | ||
| 89 | continue; | ||
| 90 | } | ||
| 91 | printf("MD5(%s)= ",argv[i]); | ||
| 92 | do_fp(IN); | ||
| 93 | fclose(IN); | ||
| 94 | } | ||
| 95 | } | ||
| 96 | exit(err); | ||
| 97 | } | ||
| 98 | |||
| 99 | void do_fp(FILE *f) | ||
| 100 | { | ||
| 101 | MD5_CTX c; | ||
| 102 | unsigned char md[MD5_DIGEST_LENGTH]; | ||
| 103 | int fd; | ||
| 104 | int i; | ||
| 105 | static unsigned char buf[BUFSIZE]; | ||
| 106 | |||
| 107 | fd=fileno(f); | ||
| 108 | MD5_Init(&c); | ||
| 109 | for (;;) | ||
| 110 | { | ||
| 111 | i=read(fd,buf,BUFSIZE); | ||
| 112 | if (i <= 0) break; | ||
| 113 | MD5_Update(&c,buf,(unsigned long)i); | ||
| 114 | } | ||
| 115 | MD5_Final(&(md[0]),&c); | ||
| 116 | pt(md); | ||
| 117 | } | ||
| 118 | |||
| 119 | void pt(unsigned char *md) | ||
| 120 | { | ||
| 121 | int i; | ||
| 122 | |||
| 123 | for (i=0; i<MD5_DIGEST_LENGTH; i++) | ||
| 124 | printf("%02x",md[i]); | ||
| 125 | printf("\n"); | ||
| 126 | } | ||
| 127 | |||
| diff --git a/src/lib/libssl/src/apps/passwd.c b/src/lib/libssl/src/apps/passwd.c index 6851a9927d..ea2b089e24 100644 --- a/src/lib/libssl/src/apps/passwd.c +++ b/src/lib/libssl/src/apps/passwd.c | |||
| @@ -272,6 +272,7 @@ int MAIN(int argc, char **argv) | |||
| 272 | } | 272 | } | 
| 273 | while (!done); | 273 | while (!done); | 
| 274 | } | 274 | } | 
| 275 | ret = 0; | ||
| 275 | 276 | ||
| 276 | err: | 277 | err: | 
| 277 | ERR_print_errors(bio_err); | 278 | ERR_print_errors(bio_err); | 
| @@ -315,7 +316,7 @@ static char *md5crypt(const char *passwd, const char *magic, const char *salt) | |||
| 315 | strncat(out_buf, "$", 1); | 316 | strncat(out_buf, "$", 1); | 
| 316 | strncat(out_buf, salt, 8); | 317 | strncat(out_buf, salt, 8); | 
| 317 | assert(strlen(out_buf) <= 6 + 8); /* "$apr1$..salt.." */ | 318 | assert(strlen(out_buf) <= 6 + 8); /* "$apr1$..salt.." */ | 
| 318 | salt_out = out_buf + 6; | 319 | salt_out = out_buf + 2 + strlen(magic); | 
| 319 | salt_len = strlen(salt_out); | 320 | salt_len = strlen(salt_out); | 
| 320 | assert(salt_len <= 8); | 321 | assert(salt_len <= 8); | 
| 321 | 322 | ||
| diff --git a/src/lib/libssl/src/apps/pca-cert.srl b/src/lib/libssl/src/apps/pca-cert.srl index 8a0f05e166..2c7456e3eb 100644 --- a/src/lib/libssl/src/apps/pca-cert.srl +++ b/src/lib/libssl/src/apps/pca-cert.srl | |||
| @@ -1 +1 @@ | |||
| 01 | 07 | ||
| diff --git a/src/lib/libssl/src/apps/req.c b/src/lib/libssl/src/apps/req.c index 0751d92201..ca8dc87957 100644 --- a/src/lib/libssl/src/apps/req.c +++ b/src/lib/libssl/src/apps/req.c | |||
| @@ -725,16 +725,15 @@ loop: | |||
| 725 | 725 | ||
| 726 | if (newreq || x509) | 726 | if (newreq || x509) | 
| 727 | { | 727 | { | 
| 728 | #ifndef NO_DSA | ||
| 729 | if (pkey->type == EVP_PKEY_DSA) | ||
| 730 | digest=EVP_dss1(); | ||
| 731 | #endif | ||
| 732 | |||
| 733 | if (pkey == NULL) | 728 | if (pkey == NULL) | 
| 734 | { | 729 | { | 
| 735 | BIO_printf(bio_err,"you need to specify a private key\n"); | 730 | BIO_printf(bio_err,"you need to specify a private key\n"); | 
| 736 | goto end; | 731 | goto end; | 
| 737 | } | 732 | } | 
| 733 | #ifndef NO_DSA | ||
| 734 | if (pkey->type == EVP_PKEY_DSA) | ||
| 735 | digest=EVP_dss1(); | ||
| 736 | #endif | ||
| 738 | if (req == NULL) | 737 | if (req == NULL) | 
| 739 | { | 738 | { | 
| 740 | req=X509_REQ_new(); | 739 | req=X509_REQ_new(); | 
| diff --git a/src/lib/libssl/src/apps/rmd160.c b/src/lib/libssl/src/apps/rmd160.c new file mode 100644 index 0000000000..4f8b88a18a --- /dev/null +++ b/src/lib/libssl/src/apps/rmd160.c | |||
| @@ -0,0 +1,127 @@ | |||
| 1 | /* crypto/ripemd/rmd160.c */ | ||
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
| 3 | * All rights reserved. | ||
| 4 | * | ||
| 5 | * This package is an SSL implementation written | ||
| 6 | * by Eric Young (eay@cryptsoft.com). | ||
| 7 | * The implementation was written so as to conform with Netscapes SSL. | ||
| 8 | * | ||
| 9 | * This library is free for commercial and non-commercial use as long as | ||
| 10 | * the following conditions are aheared to. The following conditions | ||
| 11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
| 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
| 13 | * included with this distribution is covered by the same copyright terms | ||
| 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
| 15 | * | ||
| 16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
| 17 | * the code are not to be removed. | ||
| 18 | * If this package is used in a product, Eric Young should be given attribution | ||
| 19 | * as the author of the parts of the library used. | ||
| 20 | * This can be in the form of a textual message at program startup or | ||
| 21 | * in documentation (online or textual) provided with the package. | ||
| 22 | * | ||
| 23 | * Redistribution and use in source and binary forms, with or without | ||
| 24 | * modification, are permitted provided that the following conditions | ||
| 25 | * are met: | ||
| 26 | * 1. Redistributions of source code must retain the copyright | ||
| 27 | * notice, this list of conditions and the following disclaimer. | ||
| 28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 29 | * notice, this list of conditions and the following disclaimer in the | ||
| 30 | * documentation and/or other materials provided with the distribution. | ||
| 31 | * 3. All advertising materials mentioning features or use of this software | ||
| 32 | * must display the following acknowledgement: | ||
| 33 | * "This product includes cryptographic software written by | ||
| 34 | * Eric Young (eay@cryptsoft.com)" | ||
| 35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
| 36 | * being used are not cryptographic related :-). | ||
| 37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
| 38 | * the apps directory (application code) you must include an acknowledgement: | ||
| 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
| 40 | * | ||
| 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
| 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
| 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
| 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
| 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
| 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
| 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
| 51 | * SUCH DAMAGE. | ||
| 52 | * | ||
| 53 | * The licence and distribution terms for any publically available version or | ||
| 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
| 55 | * copied and put under another distribution licence | ||
| 56 | * [including the GNU Public Licence.] | ||
| 57 | */ | ||
| 58 | |||
| 59 | #include <stdio.h> | ||
| 60 | #include <stdlib.h> | ||
| 61 | #include <openssl/ripemd.h> | ||
| 62 | |||
| 63 | #define BUFSIZE 1024*16 | ||
| 64 | |||
| 65 | void do_fp(FILE *f); | ||
| 66 | void pt(unsigned char *md); | ||
| 67 | #ifndef _OSD_POSIX | ||
| 68 | int read(int, void *, unsigned int); | ||
| 69 | #endif | ||
| 70 | |||
| 71 | int main(int argc, char **argv) | ||
| 72 | { | ||
| 73 | int i,err=0; | ||
| 74 | FILE *IN; | ||
| 75 | |||
| 76 | if (argc == 1) | ||
| 77 | { | ||
| 78 | do_fp(stdin); | ||
| 79 | } | ||
| 80 | else | ||
| 81 | { | ||
| 82 | for (i=1; i<argc; i++) | ||
| 83 | { | ||
| 84 | IN=fopen(argv[i],"r"); | ||
| 85 | if (IN == NULL) | ||
| 86 | { | ||
| 87 | perror(argv[i]); | ||
| 88 | err++; | ||
| 89 | continue; | ||
| 90 | } | ||
| 91 | printf("RIPEMD160(%s)= ",argv[i]); | ||
| 92 | do_fp(IN); | ||
| 93 | fclose(IN); | ||
| 94 | } | ||
| 95 | } | ||
| 96 | exit(err); | ||
| 97 | } | ||
| 98 | |||
| 99 | void do_fp(FILE *f) | ||
| 100 | { | ||
| 101 | RIPEMD160_CTX c; | ||
| 102 | unsigned char md[RIPEMD160_DIGEST_LENGTH]; | ||
| 103 | int fd; | ||
| 104 | int i; | ||
| 105 | static unsigned char buf[BUFSIZE]; | ||
| 106 | |||
| 107 | fd=fileno(f); | ||
| 108 | RIPEMD160_Init(&c); | ||
| 109 | for (;;) | ||
| 110 | { | ||
| 111 | i=read(fd,buf,BUFSIZE); | ||
| 112 | if (i <= 0) break; | ||
| 113 | RIPEMD160_Update(&c,buf,(unsigned long)i); | ||
| 114 | } | ||
| 115 | RIPEMD160_Final(&(md[0]),&c); | ||
| 116 | pt(md); | ||
| 117 | } | ||
| 118 | |||
| 119 | void pt(unsigned char *md) | ||
| 120 | { | ||
| 121 | int i; | ||
| 122 | |||
| 123 | for (i=0; i<RIPEMD160_DIGEST_LENGTH; i++) | ||
| 124 | printf("%02x",md[i]); | ||
| 125 | printf("\n"); | ||
| 126 | } | ||
| 127 | |||
| diff --git a/src/lib/libssl/src/apps/rsautl.c b/src/lib/libssl/src/apps/rsautl.c index 2ef75649dd..95fce436bb 100644 --- a/src/lib/libssl/src/apps/rsautl.c +++ b/src/lib/libssl/src/apps/rsautl.c | |||
| @@ -55,6 +55,9 @@ | |||
| 55 | * Hudson (tjh@cryptsoft.com). | 55 | * Hudson (tjh@cryptsoft.com). | 
| 56 | * | 56 | * | 
| 57 | */ | 57 | */ | 
| 58 | |||
| 59 | #ifndef NO_RSA | ||
| 60 | |||
| 58 | #include "apps.h" | 61 | #include "apps.h" | 
| 59 | #include <string.h> | 62 | #include <string.h> | 
| 60 | #include <openssl/err.h> | 63 | #include <openssl/err.h> | 
| @@ -313,3 +316,4 @@ static void usage() | |||
| 313 | BIO_printf(bio_err, "-hexdump hex dump output\n"); | 316 | BIO_printf(bio_err, "-hexdump hex dump output\n"); | 
| 314 | } | 317 | } | 
| 315 | 318 | ||
| 319 | #endif | ||
| diff --git a/src/lib/libssl/src/apps/s_client.c b/src/lib/libssl/src/apps/s_client.c index 45d627a60a..0e1a61b789 100644 --- a/src/lib/libssl/src/apps/s_client.c +++ b/src/lib/libssl/src/apps/s_client.c | |||
| @@ -79,6 +79,7 @@ typedef unsigned int u_int; | |||
| 79 | #include <openssl/ssl.h> | 79 | #include <openssl/ssl.h> | 
| 80 | #include <openssl/err.h> | 80 | #include <openssl/err.h> | 
| 81 | #include <openssl/pem.h> | 81 | #include <openssl/pem.h> | 
| 82 | #include <openssl/rand.h> | ||
| 82 | #include <openssl/engine.h> | 83 | #include <openssl/engine.h> | 
| 83 | #include "s_apps.h" | 84 | #include "s_apps.h" | 
| 84 | 85 | ||
| @@ -153,8 +154,8 @@ static void sc_usage(void) | |||
| 153 | BIO_printf(bio_err," -bugs - Switch on all SSL implementation bug workarounds\n"); | 154 | BIO_printf(bio_err," -bugs - Switch on all SSL implementation bug workarounds\n"); | 
| 154 | BIO_printf(bio_err," -cipher - preferred cipher to use, use the 'openssl ciphers'\n"); | 155 | BIO_printf(bio_err," -cipher - preferred cipher to use, use the 'openssl ciphers'\n"); | 
| 155 | BIO_printf(bio_err," command to see what is available\n"); | 156 | BIO_printf(bio_err," command to see what is available\n"); | 
| 157 | BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR); | ||
| 156 | BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n"); | 158 | BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n"); | 
| 157 | |||
| 158 | } | 159 | } | 
| 159 | 160 | ||
| 160 | int MAIN(int, char **); | 161 | int MAIN(int, char **); | 
| @@ -181,6 +182,7 @@ int MAIN(int argc, char **argv) | |||
| 181 | int prexit = 0; | 182 | int prexit = 0; | 
| 182 | SSL_METHOD *meth=NULL; | 183 | SSL_METHOD *meth=NULL; | 
| 183 | BIO *sbio; | 184 | BIO *sbio; | 
| 185 | char *inrand=NULL; | ||
| 184 | char *engine_id=NULL; | 186 | char *engine_id=NULL; | 
| 185 | ENGINE *e=NULL; | 187 | ENGINE *e=NULL; | 
| 186 | #ifdef WINDOWS | 188 | #ifdef WINDOWS | 
| @@ -320,6 +322,11 @@ int MAIN(int argc, char **argv) | |||
| 320 | else if (strcmp(*argv,"-nbio") == 0) | 322 | else if (strcmp(*argv,"-nbio") == 0) | 
| 321 | { c_nbio=1; } | 323 | { c_nbio=1; } | 
| 322 | #endif | 324 | #endif | 
| 325 | else if (strcmp(*argv,"-rand") == 0) | ||
| 326 | { | ||
| 327 | if (--argc < 1) goto bad; | ||
| 328 | inrand= *(++argv); | ||
| 329 | } | ||
| 323 | else if (strcmp(*argv,"-engine") == 0) | 330 | else if (strcmp(*argv,"-engine") == 0) | 
| 324 | { | 331 | { | 
| 325 | if (--argc < 1) goto bad; | 332 | if (--argc < 1) goto bad; | 
| @@ -341,7 +348,14 @@ bad: | |||
| 341 | goto end; | 348 | goto end; | 
| 342 | } | 349 | } | 
| 343 | 350 | ||
| 344 | app_RAND_load_file(NULL, bio_err, 0); | 351 | if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL | 
| 352 | && !RAND_status()) | ||
| 353 | { | ||
| 354 | BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n"); | ||
| 355 | } | ||
| 356 | if (inrand != NULL) | ||
| 357 | BIO_printf(bio_err,"%ld semi-random bytes loaded\n", | ||
| 358 | app_RAND_load_files(inrand)); | ||
| 345 | 359 | ||
| 346 | if (bio_c_out == NULL) | 360 | if (bio_c_out == NULL) | 
| 347 | { | 361 | { | 
| diff --git a/src/lib/libssl/src/apps/s_server.c b/src/lib/libssl/src/apps/s_server.c index 61a77dff11..a107b8c14a 100644 --- a/src/lib/libssl/src/apps/s_server.c +++ b/src/lib/libssl/src/apps/s_server.c | |||
| @@ -83,6 +83,7 @@ typedef unsigned int u_int; | |||
| 83 | #include <openssl/pem.h> | 83 | #include <openssl/pem.h> | 
| 84 | #include <openssl/x509.h> | 84 | #include <openssl/x509.h> | 
| 85 | #include <openssl/ssl.h> | 85 | #include <openssl/ssl.h> | 
| 86 | #include <openssl/rand.h> | ||
| 86 | #include <openssl/engine.h> | 87 | #include <openssl/engine.h> | 
| 87 | #include "s_apps.h" | 88 | #include "s_apps.h" | 
| 88 | 89 | ||
| @@ -245,6 +246,7 @@ static void sv_usage(void) | |||
| 245 | BIO_printf(bio_err," -bugs - Turn on SSL bug compatibility\n"); | 246 | BIO_printf(bio_err," -bugs - Turn on SSL bug compatibility\n"); | 
| 246 | BIO_printf(bio_err," -www - Respond to a 'GET /' with a status page\n"); | 247 | BIO_printf(bio_err," -www - Respond to a 'GET /' with a status page\n"); | 
| 247 | BIO_printf(bio_err," -WWW - Respond to a 'GET /<path> HTTP/1.0' with file ./<path>\n"); | 248 | BIO_printf(bio_err," -WWW - Respond to a 'GET /<path> HTTP/1.0' with file ./<path>\n"); | 
| 249 | BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR); | ||
| 248 | BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n"); | 250 | BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n"); | 
| 249 | } | 251 | } | 
| 250 | 252 | ||
| @@ -415,6 +417,8 @@ int MAIN(int argc, char *argv[]) | |||
| 415 | int no_tmp_rsa=0,no_dhe=0,nocert=0; | 417 | int no_tmp_rsa=0,no_dhe=0,nocert=0; | 
| 416 | int state=0; | 418 | int state=0; | 
| 417 | SSL_METHOD *meth=NULL; | 419 | SSL_METHOD *meth=NULL; | 
| 420 | char *inrand=NULL; | ||
| 421 | char *engine_id=NULL; | ||
| 418 | ENGINE *e=NULL; | 422 | ENGINE *e=NULL; | 
| 419 | #ifndef NO_DH | 423 | #ifndef NO_DH | 
| 420 | DH *dh=NULL; | 424 | DH *dh=NULL; | 
| @@ -570,6 +574,11 @@ int MAIN(int argc, char *argv[]) | |||
| 570 | else if (strcmp(*argv,"-tls1") == 0) | 574 | else if (strcmp(*argv,"-tls1") == 0) | 
| 571 | { meth=TLSv1_server_method(); } | 575 | { meth=TLSv1_server_method(); } | 
| 572 | #endif | 576 | #endif | 
| 577 | else if (strcmp(*argv,"-rand") == 0) | ||
| 578 | { | ||
| 579 | if (--argc < 1) goto bad; | ||
| 580 | inrand= *(++argv); | ||
| 581 | } | ||
| 573 | else if (strcmp(*argv,"-engine") == 0) | 582 | else if (strcmp(*argv,"-engine") == 0) | 
| 574 | { | 583 | { | 
| 575 | if (--argc < 1) goto bad; | 584 | if (--argc < 1) goto bad; | 
| @@ -591,7 +600,14 @@ bad: | |||
| 591 | goto end; | 600 | goto end; | 
| 592 | } | 601 | } | 
| 593 | 602 | ||
| 594 | app_RAND_load_file(NULL, bio_err, 0); | 603 | if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL | 
| 604 | && !RAND_status()) | ||
| 605 | { | ||
| 606 | BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n"); | ||
| 607 | } | ||
| 608 | if (inrand != NULL) | ||
| 609 | BIO_printf(bio_err,"%ld semi-random bytes loaded\n", | ||
| 610 | app_RAND_load_files(inrand)); | ||
| 595 | 611 | ||
| 596 | if (bio_s_out == NULL) | 612 | if (bio_s_out == NULL) | 
| 597 | { | 613 | { | 
| @@ -709,7 +725,8 @@ bad: | |||
| 709 | 725 | ||
| 710 | #ifndef NO_RSA | 726 | #ifndef NO_RSA | 
| 711 | #if 1 | 727 | #if 1 | 
| 712 | SSL_CTX_set_tmp_rsa_callback(ctx,tmp_rsa_cb); | 728 | if (!no_tmp_rsa) | 
| 729 | SSL_CTX_set_tmp_rsa_callback(ctx,tmp_rsa_cb); | ||
| 713 | #else | 730 | #else | 
| 714 | if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx)) | 731 | if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx)) | 
| 715 | { | 732 | { | 
| @@ -1369,15 +1386,29 @@ static int www_body(char *hostname, int s, unsigned char *context) | |||
| 1369 | 1386 | ||
| 1370 | /* skip the '/' */ | 1387 | /* skip the '/' */ | 
| 1371 | p= &(buf[5]); | 1388 | p= &(buf[5]); | 
| 1372 | dot=0; | 1389 | |
| 1390 | dot = 1; | ||
| 1373 | for (e=p; *e != '\0'; e++) | 1391 | for (e=p; *e != '\0'; e++) | 
| 1374 | { | 1392 | { | 
| 1375 | if (e[0] == ' ') break; | 1393 | if (e[0] == ' ') | 
| 1376 | if ( (e[0] == '.') && | 1394 | break; | 
| 1377 | (strncmp(&(e[-1]),"/../",4) == 0)) | 1395 | |
| 1378 | dot=1; | 1396 | switch (dot) | 
| 1397 | { | ||
| 1398 | case 1: | ||
| 1399 | dot = (e[0] == '.') ? 2 : 0; | ||
| 1400 | break; | ||
| 1401 | case 2: | ||
| 1402 | dot = (e[0] == '.') ? 3 : 0; | ||
| 1403 | break; | ||
| 1404 | case 3: | ||
| 1405 | dot = (e[0] == '/') ? -1 : 0; | ||
| 1406 | break; | ||
| 1407 | } | ||
| 1408 | if (dot == 0) | ||
| 1409 | dot = (e[0] == '/') ? 1 : 0; | ||
| 1379 | } | 1410 | } | 
| 1380 | 1411 | dot = (dot == 3) || (dot == -1); /* filename contains ".." component */ | |
| 1381 | 1412 | ||
| 1382 | if (*e == '\0') | 1413 | if (*e == '\0') | 
| 1383 | { | 1414 | { | 
| @@ -1401,9 +1432,11 @@ static int www_body(char *hostname, int s, unsigned char *context) | |||
| 1401 | break; | 1432 | break; | 
| 1402 | } | 1433 | } | 
| 1403 | 1434 | ||
| 1435 | #if 0 | ||
| 1404 | /* append if a directory lookup */ | 1436 | /* append if a directory lookup */ | 
| 1405 | if (e[-1] == '/') | 1437 | if (e[-1] == '/') | 
| 1406 | strcat(p,"index.html"); | 1438 | strcat(p,"index.html"); | 
| 1439 | #endif | ||
| 1407 | 1440 | ||
| 1408 | /* if a directory, do the index thang */ | 1441 | /* if a directory, do the index thang */ | 
| 1409 | if (stat(p,&st_buf) < 0) | 1442 | if (stat(p,&st_buf) < 0) | 
| @@ -1415,7 +1448,13 @@ static int www_body(char *hostname, int s, unsigned char *context) | |||
| 1415 | } | 1448 | } | 
| 1416 | if (S_ISDIR(st_buf.st_mode)) | 1449 | if (S_ISDIR(st_buf.st_mode)) | 
| 1417 | { | 1450 | { | 
| 1451 | #if 0 /* must check buffer size */ | ||
| 1418 | strcat(p,"/index.html"); | 1452 | strcat(p,"/index.html"); | 
| 1453 | #else | ||
| 1454 | BIO_puts(io,text); | ||
| 1455 | BIO_printf(io,"'%s' is a directory\r\n",p); | ||
| 1456 | break; | ||
| 1457 | #endif | ||
| 1419 | } | 1458 | } | 
| 1420 | 1459 | ||
| 1421 | if ((file=BIO_new_file(p,"r")) == NULL) | 1460 | if ((file=BIO_new_file(p,"r")) == NULL) | 
| diff --git a/src/lib/libssl/src/apps/server.pem b/src/lib/libssl/src/apps/server.pem index c57b32507d..56248e57a3 100644 --- a/src/lib/libssl/src/apps/server.pem +++ b/src/lib/libssl/src/apps/server.pem | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | issuer= /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit) | 1 | issuer= /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit) | 
| 2 | subject=/C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Server test cert (512 bit) | 2 | subject= /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Server test cert (512 bit) | 
| 3 | -----BEGIN CERTIFICATE----- | 3 | -----BEGIN CERTIFICATE----- | 
| 4 | MIIB6TCCAVICAQQwDQYJKoZIhvcNAQEEBQAwWzELMAkGA1UEBhMCQVUxEzARBgNV | 4 | MIIB6TCCAVICAQYwDQYJKoZIhvcNAQEEBQAwWzELMAkGA1UEBhMCQVUxEzARBgNV | 
| 5 | BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRswGQYD | 5 | BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRswGQYD | 
| 6 | VQQDExJUZXN0IENBICgxMDI0IGJpdCkwHhcNOTgwNjI5MjM1MjQwWhcNMDAwNjI4 | 6 | VQQDExJUZXN0IENBICgxMDI0IGJpdCkwHhcNMDAxMDE2MjIzMTAzWhcNMDMwMTE0 | 
| 7 | MjM1MjQwWjBjMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDEaMBgG | 7 | MjIzMTAzWjBjMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDEaMBgG | 
| 8 | A1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxIzAhBgNVBAMTGlNlcnZlciB0ZXN0IGNl | 8 | A1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxIzAhBgNVBAMTGlNlcnZlciB0ZXN0IGNl | 
| 9 | cnQgKDUxMiBiaXQpMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ+zw4Qnlf8SMVIP | 9 | cnQgKDUxMiBiaXQpMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ+zw4Qnlf8SMVIP | 
| 10 | Fe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVDTGiXav6ooKXfX3j/7tdkuD8Ey2// | 10 | Fe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVDTGiXav6ooKXfX3j/7tdkuD8Ey2// | 
| 11 | Kv7+ue0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQCVvvfkGSe2GHgDFfmOua4Isjb9 | 11 | Kv7+ue0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQCT0grFQeZaqYb5EYfk20XixZV4 | 
| 12 | JVhImWMASiOClkZlMESDJjsszg/6+d/W+8TrbObhazpl95FivXBVucbj9dudh7AO | 12 | GmyAbXMftG1Eo7qGiMhYzRwGNWxEYojf5PZkYZXvSqZ/ZXHXa4g59jK/rJNnaVGM | 
| 13 | IZu1h1MAPlyknc9Ud816vz3FejB4qqUoaXjnlkrIgEbr/un7jSS86WOe0hRhwHkJ | 13 | k+xIX8mxQvlV0n5O9PIha5BX5teZnkHKgL8aKKLKW1BK7YTngsfSzzaeame5iKfz | 
| 14 | FUGcPZf9ND22Etc+AQ== | 14 | itAE+OjGF+PFKbwX8Q== | 
| 15 | -----END CERTIFICATE----- | 15 | -----END CERTIFICATE----- | 
| 16 | -----BEGIN RSA PRIVATE KEY----- | 16 | -----BEGIN RSA PRIVATE KEY----- | 
| 17 | MIIBPAIBAAJBAJ+zw4Qnlf8SMVIPFe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVD | 17 | MIIBPAIBAAJBAJ+zw4Qnlf8SMVIPFe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVD | 
| diff --git a/src/lib/libssl/src/apps/speed.c b/src/lib/libssl/src/apps/speed.c index ba41916371..3562ea277b 100644 --- a/src/lib/libssl/src/apps/speed.c +++ b/src/lib/libssl/src/apps/speed.c | |||
| @@ -865,6 +865,7 @@ int MAIN(int argc, char **argv) | |||
| 865 | } | 865 | } | 
| 866 | #endif | 866 | #endif | 
| 867 | 867 | ||
| 868 | #ifndef NO_DSA | ||
| 868 | dsa_c[R_DSA_512][0]=count/1000; | 869 | dsa_c[R_DSA_512][0]=count/1000; | 
| 869 | dsa_c[R_DSA_512][1]=count/1000/2; | 870 | dsa_c[R_DSA_512][1]=count/1000/2; | 
| 870 | for (i=1; i<DSA_NUM; i++) | 871 | for (i=1; i<DSA_NUM; i++) | 
| @@ -882,6 +883,7 @@ int MAIN(int argc, char **argv) | |||
| 882 | } | 883 | } | 
| 883 | } | 884 | } | 
| 884 | } | 885 | } | 
| 886 | #endif | ||
| 885 | 887 | ||
| 886 | #define COND(d) (count < (d)) | 888 | #define COND(d) (count < (d)) | 
| 887 | #define COUNT(d) (d) | 889 | #define COUNT(d) (d) | 
| @@ -1207,7 +1209,7 @@ int MAIN(int argc, char **argv) | |||
| 1207 | { | 1209 | { | 
| 1208 | BIO_printf(bio_err,"RSA verify failure. No RSA verify will be done.\n"); | 1210 | BIO_printf(bio_err,"RSA verify failure. No RSA verify will be done.\n"); | 
| 1209 | ERR_print_errors(bio_err); | 1211 | ERR_print_errors(bio_err); | 
| 1210 | dsa_doit[j] = 0; | 1212 | rsa_doit[j] = 0; | 
| 1211 | } | 1213 | } | 
| 1212 | else | 1214 | else | 
| 1213 | { | 1215 | { | 
| diff --git a/src/lib/libssl/src/apps/x509.c b/src/lib/libssl/src/apps/x509.c index 0c0d42a0ac..95f05e580c 100644 --- a/src/lib/libssl/src/apps/x509.c +++ b/src/lib/libssl/src/apps/x509.c | |||
| @@ -894,8 +894,10 @@ bad: | |||
| 894 | 894 | ||
| 895 | BIO_printf(bio_err,"Generating certificate request\n"); | 895 | BIO_printf(bio_err,"Generating certificate request\n"); | 
| 896 | 896 | ||
| 897 | #ifndef NO_DSA | ||
| 897 | if (pk->type == EVP_PKEY_DSA) | 898 | if (pk->type == EVP_PKEY_DSA) | 
| 898 | digest=EVP_dss1(); | 899 | digest=EVP_dss1(); | 
| 900 | #endif | ||
| 899 | 901 | ||
| 900 | rq=X509_to_X509_REQ(x,pk,digest); | 902 | rq=X509_to_X509_REQ(x,pk,digest); | 
| 901 | EVP_PKEY_free(pk); | 903 | EVP_PKEY_free(pk); | 
| diff --git a/src/lib/libssl/src/certs/rsa-ssca.pem b/src/lib/libssl/src/certs/rsa-ssca.pem index c9403212d1..e69de29bb2 100644 --- a/src/lib/libssl/src/certs/rsa-ssca.pem +++ b/src/lib/libssl/src/certs/rsa-ssca.pem | |||
| @@ -1,19 +0,0 @@ | |||
| 1 | subject=/C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority | ||
| 2 | issuer= /C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority | ||
| 3 | notBefore=941109235417Z | ||
| 4 | notAfter =991231235417Z | ||
| 5 | -----BEGIN X509 CERTIFICATE----- | ||
| 6 | |||
| 7 | MIICKTCCAZYCBQJBAAABMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMSAw | ||
| 8 | HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJl | ||
| 9 | IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NDExMDkyMzU0MTda | ||
| 10 | Fw05OTEyMzEyMzU0MTdaMF8xCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0 | ||
| 11 | YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJlIFNlcnZlciBDZXJ0aWZp | ||
| 12 | Y2F0aW9uIEF1dGhvcml0eTCBmzANBgkqhkiG9w0BAQEFAAOBiQAwgYUCfgCSznrB | ||
| 13 | roM+WqqJg1esJQF2DK2ujiw3zus1eGRUA+WEQFHJv48I4oqCCNIWhjdV6bEhAq12 | ||
| 14 | aIGaBaJLyUslZiJWbIgHj/eBWW2EB2VwE3F2Ppt3TONQiVaYSLkdpykaEy5KEVmc | ||
| 15 | HhXVSVQsczppgrGXOZxtcGdI5d0t1sgeewIDAQABMA0GCSqGSIb3DQEBAgUAA34A | ||
| 16 | iNHReSHO4ovo+MF9NFM/YYPZtgs4F7boviGNjwC4i1N+RGceIr2XJ+CchcxK9oU7 | ||
| 17 | suK+ktPlDemvXA4MRpX/oRxePug2WHpzpgr4IhFrwwk4fia7c+8AvQKk8xQNMD9h | ||
| 18 | cHsg/jKjn7P0Z1LctO6EjJY2IN6BCINxIYoPnqk= | ||
| 19 | -----END X509 CERTIFICATE----- | ||
| diff --git a/src/lib/libssl/src/config b/src/lib/libssl/src/config index 458838d800..d22836f80f 100644 --- a/src/lib/libssl/src/config +++ b/src/lib/libssl/src/config | |||
| @@ -49,10 +49,18 @@ if [ "x$XREL" != "x" ]; then | |||
| 49 | echo "whatever-whatever-sco5"; exit 0 | 49 | echo "whatever-whatever-sco5"; exit 0 | 
| 50 | ;; | 50 | ;; | 
| 51 | 4.2MP) | 51 | 4.2MP) | 
| 52 | if [ "x$VERSION" = "x2.1.1" ]; then | 52 | if [ "x$VERSION" = "x2.01" ]; then | 
| 53 | echo "${MACHINE}-whatever-unixware201"; exit 0 | ||
| 54 | elif [ "x$VERSION" = "x2.02" ]; then | ||
| 55 | echo "${MACHINE}-whatever-unixware202"; exit 0 | ||
| 56 | elif [ "x$VERSION" = "x2.03" ]; then | ||
| 57 | echo "${MACHINE}-whatever-unixware203"; exit 0 | ||
| 58 | elif [ "x$VERSION" = "x2.1.1" ]; then | ||
| 53 | echo "${MACHINE}-whatever-unixware211"; exit 0 | 59 | echo "${MACHINE}-whatever-unixware211"; exit 0 | 
| 54 | elif [ "x$VERSION" = "x2.1.2" ]; then | 60 | elif [ "x$VERSION" = "x2.1.2" ]; then | 
| 55 | echo "${MACHINE}-whatever-unixware212"; exit 0 | 61 | echo "${MACHINE}-whatever-unixware212"; exit 0 | 
| 62 | elif [ "x$VERSION" = "x2.1.3" ]; then | ||
| 63 | echo "${MACHINE}-whatever-unixware213"; exit 0 | ||
| 56 | else | 64 | else | 
| 57 | echo "${MACHINE}-whatever-unixware2"; exit 0 | 65 | echo "${MACHINE}-whatever-unixware2"; exit 0 | 
| 58 | fi | 66 | fi | 
| @@ -79,6 +87,14 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in | |||
| 79 | echo "m68k-apple-aux3"; exit 0 | 87 | echo "m68k-apple-aux3"; exit 0 | 
| 80 | ;; | 88 | ;; | 
| 81 | 89 | ||
| 90 | AIX:[3456789]:4:*) | ||
| 91 | echo "${MACHINE}-ibm-aix43"; exit 0 | ||
| 92 | ;; | ||
| 93 | |||
| 94 | AIX:*:[56789]:*) | ||
| 95 | echo "${MACHINE}-ibm-aix43"; exit 0 | ||
| 96 | ;; | ||
| 97 | |||
| 82 | AIX:*) | 98 | AIX:*) | 
| 83 | echo "${MACHINE}-ibm-aix"; exit 0 | 99 | echo "${MACHINE}-ibm-aix"; exit 0 | 
| 84 | ;; | 100 | ;; | 
| @@ -168,7 +184,7 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in | |||
| 168 | ;; | 184 | ;; | 
| 169 | 185 | ||
| 170 | NetBSD:*:*:*386*) | 186 | NetBSD:*:*:*386*) | 
| 171 | echo "`/usr/sbin/sysctl -n hw.model | sed 's,.*\(.\)86-class.*,i\186,'`-whatever-netbsd"; exit 0 | 187 | echo "`(/usr/sbin/sysctl -n hw.model || /sbin/sysctl -n hw.model) | sed 's,.*\(.\)86-class.*,i\186,'`-whatever-netbsd"; exit 0 | 
| 172 | ;; | 188 | ;; | 
| 173 | 189 | ||
| 174 | NetBSD:*) | 190 | NetBSD:*) | 
| @@ -393,10 +409,16 @@ case "$GUESSOS" in | |||
| 393 | ;; | 409 | ;; | 
| 394 | mips4-sgi-irix64) | 410 | mips4-sgi-irix64) | 
| 395 | echo "WARNING! If you wish to build 64-bit library, then you have to" | 411 | echo "WARNING! If you wish to build 64-bit library, then you have to" | 
| 396 | echo " invoke './Configre irix64-mips4-$CC' *manually*." | 412 | echo " invoke './Configure irix64-mips4-$CC' *manually*." | 
| 397 | echo " Type Ctrl-C if you don't want to continue." | 413 | echo " Type return if you want to continue, Ctrl-C to abort." | 
| 398 | read waste < /dev/tty | 414 | read waste < /dev/tty | 
| 399 | options="$options -mips4" | 415 | CPU=`(hinv -t cpu) 2>/dev/null | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'` | 
| 416 | CPU=${CPU:-0} | ||
| 417 | if [ $CPU -ge 5000 ]; then | ||
| 418 | options="$options -mips4" | ||
| 419 | else | ||
| 420 | options="$options -mips3" | ||
| 421 | fi | ||
| 400 | OUT="irix-mips3-$CC" | 422 | OUT="irix-mips3-$CC" | 
| 401 | ;; | 423 | ;; | 
| 402 | alpha-*-linux2) | 424 | alpha-*-linux2) | 
| @@ -422,11 +444,11 @@ case "$GUESSOS" in | |||
| 422 | #till 64-bit glibc for SPARC is operational:-( | 444 | #till 64-bit glibc for SPARC is operational:-( | 
| 423 | #echo "WARNING! If you wish to build 64-bit library, then you have to" | 445 | #echo "WARNING! If you wish to build 64-bit library, then you have to" | 
| 424 | #echo " invoke './Configure linux64-sparcv9' *manually*." | 446 | #echo " invoke './Configure linux64-sparcv9' *manually*." | 
| 425 | #echo " Type Ctrl-C if you don't want to continue." | 447 | #echo " Type return if you want to continue, Ctrl-C to abort." | 
| 426 | #read waste < /dev/tty | 448 | #read waste < /dev/tty | 
| 427 | OUT="linux-sparcv9" ;; | 449 | OUT="linux-sparcv9" ;; | 
| 428 | sparc-*-linux2) | 450 | sparc-*-linux2) | 
| 429 | KARCH=`awk '/type/{print$3}' /proc/cpuinfo` | 451 | KARCH=`awk '/^type/{print$3}' /proc/cpuinfo` | 
| 430 | case ${KARCH:-sun4} in | 452 | case ${KARCH:-sun4} in | 
| 431 | sun4u*) OUT="linux-sparcv9" ;; | 453 | sun4u*) OUT="linux-sparcv9" ;; | 
| 432 | sun4m) OUT="linux-sparcv8" ;; | 454 | sun4m) OUT="linux-sparcv8" ;; | 
| @@ -434,6 +456,7 @@ case "$GUESSOS" in | |||
| 434 | *) OUT="linux-sparcv7" ;; | 456 | *) OUT="linux-sparcv7" ;; | 
| 435 | esac ;; | 457 | esac ;; | 
| 436 | arm*-*-linux2) OUT="linux-elf-arm" ;; | 458 | arm*-*-linux2) OUT="linux-elf-arm" ;; | 
| 459 | s390-*-linux2) OUT="linux-s390" ;; | ||
| 437 | *-*-linux2) OUT="linux-elf" ;; | 460 | *-*-linux2) OUT="linux-elf" ;; | 
| 438 | *-*-linux1) OUT="linux-aout" ;; | 461 | *-*-linux1) OUT="linux-aout" ;; | 
| 439 | sun4u*-*-solaris2) | 462 | sun4u*-*-solaris2) | 
| @@ -441,7 +464,7 @@ case "$GUESSOS" in | |||
| 441 | if [ "$ISA64" != "" -a "$CC" = "cc" -a $CCVER -ge 50 ]; then | 464 | if [ "$ISA64" != "" -a "$CC" = "cc" -a $CCVER -ge 50 ]; then | 
| 442 | echo "WARNING! If you wish to build 64-bit library, then you have to" | 465 | echo "WARNING! If you wish to build 64-bit library, then you have to" | 
| 443 | echo " invoke './Configure solaris64-sparcv9-cc' *manually*." | 466 | echo " invoke './Configure solaris64-sparcv9-cc' *manually*." | 
| 444 | echo " Type Ctrl-C if you don't want to continue." | 467 | echo " Type return if you want to continue, Ctrl-C to abort." | 
| 445 | read waste < /dev/tty | 468 | read waste < /dev/tty | 
| 446 | fi | 469 | fi | 
| 447 | OUT="solaris-sparcv9-$CC" ;; | 470 | OUT="solaris-sparcv9-$CC" ;; | 
| @@ -466,9 +489,12 @@ case "$GUESSOS" in | |||
| 466 | *-*-unixware7) OUT="unixware-7" ;; | 489 | *-*-unixware7) OUT="unixware-7" ;; | 
| 467 | *-*-UnixWare7) OUT="unixware-7" ;; | 490 | *-*-UnixWare7) OUT="unixware-7" ;; | 
| 468 | *-*-Unixware7) OUT="unixware-7" ;; | 491 | *-*-Unixware7) OUT="unixware-7" ;; | 
| 469 | *-*-unixware[1-2]*) OUT="unixware-2.0" ;; | 492 | *-*-unixware20*) OUT="unixware-2.0" ;; | 
| 470 | *-*-UnixWare[1-2]*) OUT="unixware-2.0" ;; | 493 | *-*-unixware21*) OUT="unixware-2.1" ;; | 
| 471 | *-*-Unixware[1-2]*) OUT="unixware-2.0" ;; | 494 | *-*-UnixWare20*) OUT="unixware-2.0" ;; | 
| 495 | *-*-UnixWare21*) OUT="unixware-2.1" ;; | ||
| 496 | *-*-Unixware20*) OUT="unixware-2.0" ;; | ||
| 497 | *-*-Unixware21*) OUT="unixware-2.1" ;; | ||
| 472 | BS2000-siemens-sysv4) OUT="BS2000-OSD" ;; | 498 | BS2000-siemens-sysv4) OUT="BS2000-OSD" ;; | 
| 473 | RM*-siemens-sysv4) OUT="ReliantUNIX" ;; | 499 | RM*-siemens-sysv4) OUT="ReliantUNIX" ;; | 
| 474 | *-siemens-sysv4) OUT="SINIX" ;; | 500 | *-siemens-sysv4) OUT="SINIX" ;; | 
| @@ -563,7 +589,7 @@ OUT="$PREFIX$OUT" | |||
| 563 | 589 | ||
| 564 | $PERL ./Configure LIST | grep "$OUT" > /dev/null | 590 | $PERL ./Configure LIST | grep "$OUT" > /dev/null | 
| 565 | if [ $? = "0" ]; then | 591 | if [ $? = "0" ]; then | 
| 566 | #echo Configuring for $OUT | 592 | echo Configuring for $OUT | 
| 567 | 593 | ||
| 568 | if [ "$TEST" = "true" ]; then | 594 | if [ "$TEST" = "true" ]; then | 
| 569 | echo $PERL ./Configure $OUT $options | 595 | echo $PERL ./Configure $OUT $options | 
| diff --git a/src/lib/libssl/src/crypto/Makefile b/src/lib/libssl/src/crypto/Makefile index 05e3bb701e..6759b2e4d0 100644 --- a/src/lib/libssl/src/crypto/Makefile +++ b/src/lib/libssl/src/crypto/Makefile | |||
| @@ -34,8 +34,8 @@ SDIRS= md2 md5 sha mdc2 hmac ripemd \ | |||
| 34 | GENERAL=Makefile README crypto-lib.com install.com | 34 | GENERAL=Makefile README crypto-lib.com install.com | 
| 35 | 35 | ||
| 36 | LIB= $(TOP)/libcrypto.a | 36 | LIB= $(TOP)/libcrypto.a | 
| 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c | 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c | 
| 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o | 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o | 
| 39 | 39 | ||
| 40 | SRC= $(LIBSRC) | 40 | SRC= $(LIBSRC) | 
| 41 | 41 | ||
| @@ -90,7 +90,8 @@ links: | |||
| 90 | 90 | ||
| 91 | lib: $(LIBOBJ) | 91 | lib: $(LIBOBJ) | 
| 92 | $(AR) $(LIB) $(LIBOBJ) | 92 | $(AR) $(LIB) $(LIBOBJ) | 
| 93 | $(RANLIB) $(LIB) | 93 | @echo You may get an error following this line. Please ignore. | 
| 94 | - $(RANLIB) $(LIB) | ||
| 94 | @touch lib | 95 | @touch lib | 
| 95 | 96 | ||
| 96 | libs: | 97 | libs: | 
| @@ -197,3 +198,6 @@ tmdiff.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h | |||
| 197 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 198 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 
| 198 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 199 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 
| 199 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 200 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 
| 201 | uid.o: ../include/openssl/crypto.h ../include/openssl/opensslv.h | ||
| 202 | uid.o: ../include/openssl/safestack.h ../include/openssl/stack.h | ||
| 203 | uid.o: ../include/openssl/symhacks.h | ||
| diff --git a/src/lib/libssl/src/crypto/Makefile.ssl b/src/lib/libssl/src/crypto/Makefile.ssl index 05e3bb701e..6759b2e4d0 100644 --- a/src/lib/libssl/src/crypto/Makefile.ssl +++ b/src/lib/libssl/src/crypto/Makefile.ssl | |||
| @@ -34,8 +34,8 @@ SDIRS= md2 md5 sha mdc2 hmac ripemd \ | |||
| 34 | GENERAL=Makefile README crypto-lib.com install.com | 34 | GENERAL=Makefile README crypto-lib.com install.com | 
| 35 | 35 | ||
| 36 | LIB= $(TOP)/libcrypto.a | 36 | LIB= $(TOP)/libcrypto.a | 
| 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c | 37 | LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c | 
| 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o | 38 | LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o | 
| 39 | 39 | ||
| 40 | SRC= $(LIBSRC) | 40 | SRC= $(LIBSRC) | 
| 41 | 41 | ||
| @@ -90,7 +90,8 @@ links: | |||
| 90 | 90 | ||
| 91 | lib: $(LIBOBJ) | 91 | lib: $(LIBOBJ) | 
| 92 | $(AR) $(LIB) $(LIBOBJ) | 92 | $(AR) $(LIB) $(LIBOBJ) | 
| 93 | $(RANLIB) $(LIB) | 93 | @echo You may get an error following this line. Please ignore. | 
| 94 | - $(RANLIB) $(LIB) | ||
| 94 | @touch lib | 95 | @touch lib | 
| 95 | 96 | ||
| 96 | libs: | 97 | libs: | 
| @@ -197,3 +198,6 @@ tmdiff.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h | |||
| 197 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 198 | tmdiff.o: ../include/openssl/opensslv.h ../include/openssl/safestack.h | 
| 198 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 199 | tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 
| 199 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 200 | tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h | 
| 201 | uid.o: ../include/openssl/crypto.h ../include/openssl/opensslv.h | ||
| 202 | uid.o: ../include/openssl/safestack.h ../include/openssl/stack.h | ||
| 203 | uid.o: ../include/openssl/symhacks.h | ||
| diff --git a/src/lib/libssl/src/crypto/asn1/Makefile.ssl b/src/lib/libssl/src/crypto/asn1/Makefile.ssl index b8059ddffe..dace5be2bc 100644 --- a/src/lib/libssl/src/crypto/asn1/Makefile.ssl +++ b/src/lib/libssl/src/crypto/asn1/Makefile.ssl | |||
| @@ -75,7 +75,8 @@ all: lib | |||
| 75 | 75 | ||
| 76 | lib: $(LIBOBJ) | 76 | lib: $(LIBOBJ) | 
| 77 | $(AR) $(LIB) $(LIBOBJ) | 77 | $(AR) $(LIB) $(LIBOBJ) | 
| 78 | $(RANLIB) $(LIB) | 78 | @echo You may get an error following this line. Please ignore. | 
| 79 | - $(RANLIB) $(LIB) | ||
| 79 | @touch lib | 80 | @touch lib | 
| 80 | 81 | ||
| 81 | files: | 82 | files: | 
| diff --git a/src/lib/libssl/src/crypto/asn1/a_strnid.c b/src/lib/libssl/src/crypto/asn1/a_strnid.c index 6b10cff994..732e68fe46 100644 --- a/src/lib/libssl/src/crypto/asn1/a_strnid.c +++ b/src/lib/libssl/src/crypto/asn1/a_strnid.c | |||
| @@ -133,7 +133,7 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in, | |||
| 133 | if(tbl) { | 133 | if(tbl) { | 
| 134 | mask = tbl->mask; | 134 | mask = tbl->mask; | 
| 135 | if(!(tbl->flags & STABLE_NO_MASK)) mask &= global_mask; | 135 | if(!(tbl->flags & STABLE_NO_MASK)) mask &= global_mask; | 
| 136 | ret = ASN1_mbstring_ncopy(out, in, inlen, inform, tbl->mask, | 136 | ret = ASN1_mbstring_ncopy(out, in, inlen, inform, mask, | 
| 137 | tbl->minsize, tbl->maxsize); | 137 | tbl->minsize, tbl->maxsize); | 
| 138 | } else ret = ASN1_mbstring_copy(out, in, inlen, inform, DIRSTRING_TYPE & global_mask); | 138 | } else ret = ASN1_mbstring_copy(out, in, inlen, inform, DIRSTRING_TYPE & global_mask); | 
| 139 | if(ret <= 0) return NULL; | 139 | if(ret <= 0) return NULL; | 
| diff --git a/src/lib/libssl/src/crypto/asn1/asn1_lib.c b/src/lib/libssl/src/crypto/asn1/asn1_lib.c index 77447a5240..a8b651e54e 100644 --- a/src/lib/libssl/src/crypto/asn1/asn1_lib.c +++ b/src/lib/libssl/src/crypto/asn1/asn1_lib.c | |||
| @@ -301,7 +301,7 @@ int asn1_GetSequence(ASN1_CTX *c, long *length) | |||
| 301 | return(0); | 301 | return(0); | 
| 302 | } | 302 | } | 
| 303 | if (c->inf == (1|V_ASN1_CONSTRUCTED)) | 303 | if (c->inf == (1|V_ASN1_CONSTRUCTED)) | 
| 304 | c->slen= *length+ *(c->pp)-c->p; | 304 | c->slen= *length; | 
| 305 | c->eos=0; | 305 | c->eos=0; | 
| 306 | return(1); | 306 | return(1); | 
| 307 | } | 307 | } | 
| diff --git a/src/lib/libssl/src/crypto/asn1/asn1_mac.h b/src/lib/libssl/src/crypto/asn1/asn1_mac.h index 4512ba6cc6..af0e664b2d 100644 --- a/src/lib/libssl/src/crypto/asn1/asn1_mac.h +++ b/src/lib/libssl/src/crypto/asn1/asn1_mac.h | |||
| @@ -196,6 +196,9 @@ err:\ | |||
| 196 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 196 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 
| 197 | M_ASN1_I2D_put_SEQUENCE_type(type,a,f); | 197 | M_ASN1_I2D_put_SEQUENCE_type(type,a,f); | 
| 198 | 198 | ||
| 199 | #define M_ASN1_I2D_put_SEQUENCE_opt_ex_type(type,a,f) \ | ||
| 200 | if (a) M_ASN1_I2D_put_SEQUENCE_type(type,a,f); | ||
| 201 | |||
| 199 | #define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \ | 202 | #define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \ | 
| 200 | if ((c.slen != 0) && \ | 203 | if ((c.slen != 0) && \ | 
| 201 | (M_ASN1_next == \ | 204 | (M_ASN1_next == \ | 
| @@ -389,6 +392,9 @@ err:\ | |||
| 389 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 392 | if ((a != NULL) && (sk_##type##_num(a) != 0)) \ | 
| 390 | M_ASN1_I2D_len_SEQUENCE_type(type,a,f); | 393 | M_ASN1_I2D_len_SEQUENCE_type(type,a,f); | 
| 391 | 394 | ||
| 395 | #define M_ASN1_I2D_len_SEQUENCE_opt_ex_type(type,a,f) \ | ||
| 396 | if (a) M_ASN1_I2D_len_SEQUENCE_type(type,a,f); | ||
| 397 | |||
| 392 | #define M_ASN1_I2D_len_IMP_SET(a,f,x) \ | 398 | #define M_ASN1_I2D_len_IMP_SET(a,f,x) \ | 
| 393 | ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET); | 399 | ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET); | 
| 394 | 400 | ||
| @@ -452,6 +458,15 @@ err:\ | |||
| 452 | ret+=ASN1_object_size(1,v,mtag); \ | 458 | ret+=ASN1_object_size(1,v,mtag); \ | 
| 453 | } | 459 | } | 
| 454 | 460 | ||
| 461 | #define M_ASN1_I2D_len_EXP_SEQUENCE_opt_ex_type(type,a,f,mtag,tag,v) \ | ||
| 462 | if (a)\ | ||
| 463 | { \ | ||
| 464 | v=i2d_ASN1_SET_OF_##type(a,NULL,f,tag, \ | ||
| 465 | V_ASN1_UNIVERSAL, \ | ||
| 466 | IS_SEQUENCE); \ | ||
| 467 | ret+=ASN1_object_size(1,v,mtag); \ | ||
| 468 | } | ||
| 469 | |||
| 455 | /* Put Macros */ | 470 | /* Put Macros */ | 
| 456 | #define M_ASN1_I2D_put(a,f) f(a,&p) | 471 | #define M_ASN1_I2D_put(a,f) f(a,&p) | 
| 457 | 472 | ||
| @@ -536,6 +551,14 @@ err:\ | |||
| 536 | IS_SEQUENCE); \ | 551 | IS_SEQUENCE); \ | 
| 537 | } | 552 | } | 
| 538 | 553 | ||
| 554 | #define M_ASN1_I2D_put_EXP_SEQUENCE_opt_ex_type(type,a,f,mtag,tag,v) \ | ||
| 555 | if (a) \ | ||
| 556 | { \ | ||
| 557 | ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \ | ||
| 558 | i2d_ASN1_SET_OF_##type(a,&p,f,tag,V_ASN1_UNIVERSAL, \ | ||
| 559 | IS_SEQUENCE); \ | ||
| 560 | } | ||
| 561 | |||
| 539 | #define M_ASN1_I2D_seq_total() \ | 562 | #define M_ASN1_I2D_seq_total() \ | 
| 540 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); \ | 563 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); \ | 
| 541 | if (pp == NULL) return(r); \ | 564 | if (pp == NULL) return(r); \ | 
| diff --git a/src/lib/libssl/src/crypto/asn1/p7_lib.c b/src/lib/libssl/src/crypto/asn1/p7_lib.c index b1196ef581..8a340b0119 100644 --- a/src/lib/libssl/src/crypto/asn1/p7_lib.c +++ b/src/lib/libssl/src/crypto/asn1/p7_lib.c | |||
| @@ -307,12 +307,14 @@ PKCS7 *d2i_PKCS7(PKCS7 **a, unsigned char **pp, long length) | |||
| 307 | } | 307 | } | 
| 308 | if (Tinf == (1|V_ASN1_CONSTRUCTED)) | 308 | if (Tinf == (1|V_ASN1_CONSTRUCTED)) | 
| 309 | { | 309 | { | 
| 310 | c.q=c.p; | ||
| 310 | if (!ASN1_check_infinite_end(&c.p,c.slen)) | 311 | if (!ASN1_check_infinite_end(&c.p,c.slen)) | 
| 311 | { | 312 | { | 
| 312 | c.error=ERR_R_MISSING_ASN1_EOS; | 313 | c.error=ERR_R_MISSING_ASN1_EOS; | 
| 313 | c.line=__LINE__; | 314 | c.line=__LINE__; | 
| 314 | goto err; | 315 | goto err; | 
| 315 | } | 316 | } | 
| 317 | c.slen-=(c.p-c.q); | ||
| 316 | } | 318 | } | 
| 317 | } | 319 | } | 
| 318 | else | 320 | else | 
| diff --git a/src/lib/libssl/src/crypto/asn1/x_crl.c b/src/lib/libssl/src/crypto/asn1/x_crl.c index 1f302d0e01..51518cdf35 100644 --- a/src/lib/libssl/src/crypto/asn1/x_crl.c +++ b/src/lib/libssl/src/crypto/asn1/x_crl.c | |||
| @@ -71,14 +71,14 @@ int i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **pp) | |||
| 71 | 71 | ||
| 72 | M_ASN1_I2D_len(a->serialNumber,i2d_ASN1_INTEGER); | 72 | M_ASN1_I2D_len(a->serialNumber,i2d_ASN1_INTEGER); | 
| 73 | M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_TIME); | 73 | M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_TIME); | 
| 74 | M_ASN1_I2D_len_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 74 | M_ASN1_I2D_len_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 75 | i2d_X509_EXTENSION); | 75 | i2d_X509_EXTENSION); | 
| 76 | 76 | ||
| 77 | M_ASN1_I2D_seq_total(); | 77 | M_ASN1_I2D_seq_total(); | 
| 78 | 78 | ||
| 79 | M_ASN1_I2D_put(a->serialNumber,i2d_ASN1_INTEGER); | 79 | M_ASN1_I2D_put(a->serialNumber,i2d_ASN1_INTEGER); | 
| 80 | M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_TIME); | 80 | M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_TIME); | 
| 81 | M_ASN1_I2D_put_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 81 | M_ASN1_I2D_put_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 82 | i2d_X509_EXTENSION); | 82 | i2d_X509_EXTENSION); | 
| 83 | 83 | ||
| 84 | M_ASN1_I2D_finish(); | 84 | M_ASN1_I2D_finish(); | 
| @@ -121,7 +121,7 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp) | |||
| 121 | { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_TIME); } | 121 | { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_TIME); } | 
| 122 | M_ASN1_I2D_len_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 122 | M_ASN1_I2D_len_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 
| 123 | i2d_X509_REVOKED); | 123 | i2d_X509_REVOKED); | 
| 124 | M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 124 | M_ASN1_I2D_len_EXP_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 125 | i2d_X509_EXTENSION,0, | 125 | i2d_X509_EXTENSION,0, | 
| 126 | V_ASN1_SEQUENCE,v1); | 126 | V_ASN1_SEQUENCE,v1); | 
| 127 | 127 | ||
| @@ -138,7 +138,7 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp) | |||
| 138 | { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_TIME); } | 138 | { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_TIME); } | 
| 139 | M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 139 | M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked, | 
| 140 | i2d_X509_REVOKED); | 140 | i2d_X509_REVOKED); | 
| 141 | M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, | 141 | M_ASN1_I2D_put_EXP_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions, | 
| 142 | i2d_X509_EXTENSION,0, | 142 | i2d_X509_EXTENSION,0, | 
| 143 | V_ASN1_SEQUENCE,v1); | 143 | V_ASN1_SEQUENCE,v1); | 
| 144 | 144 | ||
| @@ -260,7 +260,7 @@ X509_CRL_INFO *X509_CRL_INFO_new(void) | |||
| 260 | M_ASN1_New(ret->lastUpdate,M_ASN1_UTCTIME_new); | 260 | M_ASN1_New(ret->lastUpdate,M_ASN1_UTCTIME_new); | 
| 261 | ret->nextUpdate=NULL; | 261 | ret->nextUpdate=NULL; | 
| 262 | M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null); | 262 | M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null); | 
| 263 | M_ASN1_New(ret->extensions,sk_X509_EXTENSION_new_null); | 263 | ret->extensions = NULL; | 
| 264 | sk_X509_REVOKED_set_cmp_func(ret->revoked,X509_REVOKED_cmp); | 264 | sk_X509_REVOKED_set_cmp_func(ret->revoked,X509_REVOKED_cmp); | 
| 265 | return(ret); | 265 | return(ret); | 
| 266 | M_ASN1_New_Error(ASN1_F_X509_CRL_INFO_NEW); | 266 | M_ASN1_New_Error(ASN1_F_X509_CRL_INFO_NEW); | 
| diff --git a/src/lib/libssl/src/crypto/asn1/x_name.c b/src/lib/libssl/src/crypto/asn1/x_name.c index b832deb928..1885d699ef 100644 --- a/src/lib/libssl/src/crypto/asn1/x_name.c +++ b/src/lib/libssl/src/crypto/asn1/x_name.c | |||
| @@ -141,10 +141,12 @@ static int i2d_X509_NAME_entries(X509_NAME *a) | |||
| 141 | } | 141 | } | 
| 142 | size+=i2d_X509_NAME_ENTRY(ne,NULL); | 142 | size+=i2d_X509_NAME_ENTRY(ne,NULL); | 
| 143 | } | 143 | } | 
| 144 | |||
| 145 | ret+=ASN1_object_size(1,size,V_ASN1_SET); | ||
| 146 | if (fe != NULL) | 144 | if (fe != NULL) | 
| 145 | { | ||
| 146 | /* SET OF needed only if entries is non empty */ | ||
| 147 | ret+=ASN1_object_size(1,size,V_ASN1_SET); | ||
| 147 | fe->size=size; | 148 | fe->size=size; | 
| 149 | } | ||
| 148 | 150 | ||
| 149 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); | 151 | r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); | 
| 150 | 152 | ||
| diff --git a/src/lib/libssl/src/crypto/bf/Makefile.ssl b/src/lib/libssl/src/crypto/bf/Makefile.ssl index f4eb90f13f..9205ee7901 100644 --- a/src/lib/libssl/src/crypto/bf/Makefile.ssl +++ b/src/lib/libssl/src/crypto/bf/Makefile.ssl | |||
| @@ -44,7 +44,8 @@ all: lib | |||
| 44 | 44 | ||
| 45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) | 
| 46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(AR) $(LIB) $(LIBOBJ) | 
| 47 | $(RANLIB) $(LIB) | 47 | @echo You may get an error following this line. Please ignore. | 
| 48 | - $(RANLIB) $(LIB) | ||
| 48 | @touch lib | 49 | @touch lib | 
| 49 | 50 | ||
| 50 | # elf | 51 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/bio/Makefile.ssl b/src/lib/libssl/src/crypto/bio/Makefile.ssl index 916d651d47..567d3fb870 100644 --- a/src/lib/libssl/src/crypto/bio/Makefile.ssl +++ b/src/lib/libssl/src/crypto/bio/Makefile.ssl | |||
| @@ -49,7 +49,8 @@ all: lib | |||
| 49 | 49 | ||
| 50 | lib: $(LIBOBJ) | 50 | lib: $(LIBOBJ) | 
| 51 | $(AR) $(LIB) $(LIBOBJ) | 51 | $(AR) $(LIB) $(LIBOBJ) | 
| 52 | $(RANLIB) $(LIB) | 52 | @echo You may get an error following this line. Please ignore. | 
| 53 | - $(RANLIB) $(LIB) | ||
| 53 | @touch lib | 54 | @touch lib | 
| 54 | 55 | ||
| 55 | files: | 56 | files: | 
| @@ -95,13 +96,13 @@ b_dump.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | |||
| 95 | b_dump.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | 96 | b_dump.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | 
| 96 | b_dump.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 97 | b_dump.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 
| 97 | b_dump.o: ../cryptlib.h | 98 | b_dump.o: ../cryptlib.h | 
| 98 | b_print.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 99 | b_print.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | 
| 99 | b_print.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h | 100 | b_print.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 
| 100 | b_print.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 101 | b_print.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | 
| 101 | b_print.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | 102 | b_print.o: ../../include/openssl/err.h ../../include/openssl/lhash.h | 
| 102 | b_print.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h | 103 | b_print.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 
| 103 | b_print.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 104 | b_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 
| 104 | b_print.o: ../cryptlib.h | 105 | b_print.o: ../../include/openssl/symhacks.h ../cryptlib.h | 
| 105 | b_sock.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 106 | b_sock.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 
| 106 | b_sock.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h | 107 | b_sock.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h | 
| 107 | b_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 108 | b_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 
| diff --git a/src/lib/libssl/src/crypto/bio/b_print.c b/src/lib/libssl/src/crypto/bio/b_print.c index a62f551635..b4f7a85f2e 100644 --- a/src/lib/libssl/src/crypto/bio/b_print.c +++ b/src/lib/libssl/src/crypto/bio/b_print.c | |||
| @@ -69,6 +69,7 @@ | |||
| 69 | #ifndef NO_SYS_TYPES_H | 69 | #ifndef NO_SYS_TYPES_H | 
| 70 | #include <sys/types.h> | 70 | #include <sys/types.h> | 
| 71 | #endif | 71 | #endif | 
| 72 | #include <openssl/bn.h> /* To get BN_LLONG properly defined */ | ||
| 72 | #include <openssl/bio.h> | 73 | #include <openssl/bio.h> | 
| 73 | 74 | ||
| 74 | #ifdef BN_LLONG | 75 | #ifdef BN_LLONG | 
| diff --git a/src/lib/libssl/src/crypto/bio/b_sock.c b/src/lib/libssl/src/crypto/bio/b_sock.c index 64310058b4..62cc3f1a0c 100644 --- a/src/lib/libssl/src/crypto/bio/b_sock.c +++ b/src/lib/libssl/src/crypto/bio/b_sock.c | |||
| @@ -113,8 +113,8 @@ int BIO_get_host_ip(const char *str, unsigned char *ip) | |||
| 113 | 113 | ||
| 114 | /* At this point, we have something that is most probably correct | 114 | /* At this point, we have something that is most probably correct | 
| 115 | in some way, so let's init the socket. */ | 115 | in some way, so let's init the socket. */ | 
| 116 | if (!BIO_sock_init()) | 116 | if (BIO_sock_init() != 1) | 
| 117 | return(0); /* don't generate another error code here */ | 117 | return 0; /* don't generate another error code here */ | 
| 118 | 118 | ||
| 119 | /* If the string actually contained an IP address, we need not do | 119 | /* If the string actually contained an IP address, we need not do | 
| 120 | anything more */ | 120 | anything more */ | 
| @@ -519,15 +519,15 @@ int BIO_get_accept_socket(char *host, int bind_mode) | |||
| 519 | { | 519 | { | 
| 520 | int ret=0; | 520 | int ret=0; | 
| 521 | struct sockaddr_in server,client; | 521 | struct sockaddr_in server,client; | 
| 522 | int s= -1,cs; | 522 | int s=INVALID_SOCKET,cs; | 
| 523 | unsigned char ip[4]; | 523 | unsigned char ip[4]; | 
| 524 | unsigned short port; | 524 | unsigned short port; | 
| 525 | char *str,*e; | 525 | char *str=NULL,*e; | 
| 526 | const char *h,*p; | 526 | const char *h,*p; | 
| 527 | unsigned long l; | 527 | unsigned long l; | 
| 528 | int err_num; | 528 | int err_num; | 
| 529 | 529 | ||
| 530 | if (!BIO_sock_init()) return(INVALID_SOCKET); | 530 | if (BIO_sock_init() != 1) return(INVALID_SOCKET); | 
| 531 | 531 | ||
| 532 | if ((str=BUF_strdup(host)) == NULL) return(INVALID_SOCKET); | 532 | if ((str=BUF_strdup(host)) == NULL) return(INVALID_SOCKET); | 
| 533 | 533 | ||
| @@ -553,7 +553,7 @@ int BIO_get_accept_socket(char *host, int bind_mode) | |||
| 553 | h="*"; | 553 | h="*"; | 
| 554 | } | 554 | } | 
| 555 | 555 | ||
| 556 | if (!BIO_get_port(p,&port)) return(INVALID_SOCKET); | 556 | if (!BIO_get_port(p,&port)) goto err; | 
| 557 | 557 | ||
| 558 | memset((char *)&server,0,sizeof(server)); | 558 | memset((char *)&server,0,sizeof(server)); | 
| 559 | server.sin_family=AF_INET; | 559 | server.sin_family=AF_INET; | 
| @@ -563,7 +563,7 @@ int BIO_get_accept_socket(char *host, int bind_mode) | |||
| 563 | server.sin_addr.s_addr=INADDR_ANY; | 563 | server.sin_addr.s_addr=INADDR_ANY; | 
| 564 | else | 564 | else | 
| 565 | { | 565 | { | 
| 566 | if (!BIO_get_host_ip(h,&(ip[0]))) return(INVALID_SOCKET); | 566 | if (!BIO_get_host_ip(h,&(ip[0]))) goto err; | 
| 567 | l=(unsigned long) | 567 | l=(unsigned long) | 
| 568 | ((unsigned long)ip[0]<<24L)| | 568 | ((unsigned long)ip[0]<<24L)| | 
| 569 | ((unsigned long)ip[1]<<16L)| | 569 | ((unsigned long)ip[1]<<16L)| | 
| diff --git a/src/lib/libssl/src/crypto/bn/Makefile.ssl b/src/lib/libssl/src/crypto/bn/Makefile.ssl index 17b72d577f..526d7adb5c 100644 --- a/src/lib/libssl/src/crypto/bn/Makefile.ssl +++ b/src/lib/libssl/src/crypto/bn/Makefile.ssl | |||
| @@ -68,7 +68,8 @@ bnbug: bnbug.c ../../libcrypto.a top | |||
| 68 | 68 | ||
| 69 | lib: $(LIBOBJ) | 69 | lib: $(LIBOBJ) | 
| 70 | $(AR) $(LIB) $(LIBOBJ) | 70 | $(AR) $(LIB) $(LIBOBJ) | 
| 71 | $(RANLIB) $(LIB) | 71 | @echo You may get an error following this line. Please ignore. | 
| 72 | - $(RANLIB) $(LIB) | ||
| 72 | @touch lib | 73 | @touch lib | 
| 73 | 74 | ||
| 74 | # elf | 75 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/bn/asm/mips3.s b/src/lib/libssl/src/crypto/bn/asm/mips3.s index 2df4dcd4b0..45786c00a5 100644 --- a/src/lib/libssl/src/crypto/bn/asm/mips3.s +++ b/src/lib/libssl/src/crypto/bn/asm/mips3.s | |||
| @@ -586,13 +586,13 @@ LEAF(bn_div_3_words) | |||
| 586 | ld a0,(a3) | 586 | ld a0,(a3) | 
| 587 | move ta2,a1 | 587 | move ta2,a1 | 
| 588 | ld a1,-8(a3) | 588 | ld a1,-8(a3) | 
| 589 | move ta3,ra | 589 | bne a0,a2,.L_bn_div_3_words_proceed | 
| 590 | move v1,zero | ||
| 591 | li v0,-1 | 590 | li v0,-1 | 
| 592 | beq a0,a2,.L_bn_div_3_words_skip_div | 591 | jr ra | 
| 592 | .L_bn_div_3_words_proceed: | ||
| 593 | move ta3,ra | ||
| 593 | bal bn_div_words | 594 | bal bn_div_words | 
| 594 | move ra,ta3 | 595 | move ra,ta3 | 
| 595 | .L_bn_div_3_words_skip_div: | ||
| 596 | dmultu ta2,v0 | 596 | dmultu ta2,v0 | 
| 597 | ld t2,-16(a3) | 597 | ld t2,-16(a3) | 
| 598 | move ta0,zero | 598 | move ta0,zero | 
| diff --git a/src/lib/libssl/src/crypto/bn/asm/pa-risc2.s b/src/lib/libssl/src/crypto/bn/asm/pa-risc2.s index 7239aa2c76..af9730d062 100644 --- a/src/lib/libssl/src/crypto/bn/asm/pa-risc2.s +++ b/src/lib/libssl/src/crypto/bn/asm/pa-risc2.s | |||
| @@ -1611,7 +1611,7 @@ bn_mul_comba4 | |||
| 1611 | .IMPORT $global$,DATA | 1611 | .IMPORT $global$,DATA | 
| 1612 | .SPACE $TEXT$ | 1612 | .SPACE $TEXT$ | 
| 1613 | .SUBSPA $CODE$ | 1613 | .SUBSPA $CODE$ | 
| 1614 | .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16 | 1614 | .SUBSPA $LIT$,ACCESS=0x2c | 
| 1615 | C$7 | 1615 | C$7 | 
| 1616 | .ALIGN 8 | 1616 | .ALIGN 8 | 
| 1617 | .STRINGZ "Division would overflow (%d)\n" | 1617 | .STRINGZ "Division would overflow (%d)\n" | 
| diff --git a/src/lib/libssl/src/crypto/bn/asm/pa-risc2W.s b/src/lib/libssl/src/crypto/bn/asm/pa-risc2W.s index 54b6606252..a99545754d 100644 --- a/src/lib/libssl/src/crypto/bn/asm/pa-risc2W.s +++ b/src/lib/libssl/src/crypto/bn/asm/pa-risc2W.s | |||
| @@ -1598,7 +1598,7 @@ bn_mul_comba4 | |||
| 1598 | .IMPORT $global$,DATA | 1598 | .IMPORT $global$,DATA | 
| 1599 | .SPACE $TEXT$ | 1599 | .SPACE $TEXT$ | 
| 1600 | .SUBSPA $CODE$ | 1600 | .SUBSPA $CODE$ | 
| 1601 | .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16 | 1601 | .SUBSPA $LIT$,ACCESS=0x2c | 
| 1602 | C$4 | 1602 | C$4 | 
| 1603 | .ALIGN 8 | 1603 | .ALIGN 8 | 
| 1604 | .STRINGZ "Division would overflow (%d)\n" | 1604 | .STRINGZ "Division would overflow (%d)\n" | 
| diff --git a/src/lib/libssl/src/crypto/bn/bn.h b/src/lib/libssl/src/crypto/bn/bn.h index 1eb8395b25..b232c2ceae 100644 --- a/src/lib/libssl/src/crypto/bn/bn.h +++ b/src/lib/libssl/src/crypto/bn/bn.h | |||
| @@ -239,7 +239,7 @@ typedef struct bignum_st | |||
| 239 | } BIGNUM; | 239 | } BIGNUM; | 
| 240 | 240 | ||
| 241 | /* Used for temp variables */ | 241 | /* Used for temp variables */ | 
| 242 | #define BN_CTX_NUM 12 | 242 | #define BN_CTX_NUM 16 | 
| 243 | #define BN_CTX_NUM_POS 12 | 243 | #define BN_CTX_NUM_POS 12 | 
| 244 | typedef struct bignum_ctx | 244 | typedef struct bignum_ctx | 
| 245 | { | 245 | { | 
| @@ -328,6 +328,7 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx); | |||
| 328 | void BN_CTX_end(BN_CTX *ctx); | 328 | void BN_CTX_end(BN_CTX *ctx); | 
| 329 | int BN_rand(BIGNUM *rnd, int bits, int top,int bottom); | 329 | int BN_rand(BIGNUM *rnd, int bits, int top,int bottom); | 
| 330 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top,int bottom); | 330 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top,int bottom); | 
| 331 | int BN_rand_range(BIGNUM *rnd, BIGNUM *range); | ||
| 331 | int BN_num_bits(const BIGNUM *a); | 332 | int BN_num_bits(const BIGNUM *a); | 
| 332 | int BN_num_bits_word(BN_ULONG); | 333 | int BN_num_bits_word(BN_ULONG); | 
| 333 | BIGNUM *BN_new(void); | 334 | BIGNUM *BN_new(void); | 
| @@ -467,6 +468,8 @@ BN_ULONG bn_sub_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num); | |||
| 467 | # define bn_dump(a,b) | 468 | # define bn_dump(a,b) | 
| 468 | #endif | 469 | #endif | 
| 469 | 470 | ||
| 471 | int BN_bntest_rand(BIGNUM *rnd, int bits, int top,int bottom); | ||
| 472 | |||
| 470 | /* BEGIN ERROR CODES */ | 473 | /* BEGIN ERROR CODES */ | 
| 471 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 474 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 
| 472 | * made after this point may be overwritten when the script is next run. | 475 | * made after this point may be overwritten when the script is next run. | 
| @@ -493,16 +496,19 @@ BN_ULONG bn_sub_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num); | |||
| 493 | #define BN_F_BN_MPI2BN 112 | 496 | #define BN_F_BN_MPI2BN 112 | 
| 494 | #define BN_F_BN_NEW 113 | 497 | #define BN_F_BN_NEW 113 | 
| 495 | #define BN_F_BN_RAND 114 | 498 | #define BN_F_BN_RAND 114 | 
| 499 | #define BN_F_BN_RAND_RANGE 122 | ||
| 496 | #define BN_F_BN_USUB 115 | 500 | #define BN_F_BN_USUB 115 | 
| 497 | 501 | ||
| 498 | /* Reason codes. */ | 502 | /* Reason codes. */ | 
| 499 | #define BN_R_ARG2_LT_ARG3 100 | 503 | #define BN_R_ARG2_LT_ARG3 100 | 
| 500 | #define BN_R_BAD_RECIPROCAL 101 | 504 | #define BN_R_BAD_RECIPROCAL 101 | 
| 505 | #define BN_R_BIGNUM_TOO_LONG 114 | ||
| 501 | #define BN_R_CALLED_WITH_EVEN_MODULUS 102 | 506 | #define BN_R_CALLED_WITH_EVEN_MODULUS 102 | 
| 502 | #define BN_R_DIV_BY_ZERO 103 | 507 | #define BN_R_DIV_BY_ZERO 103 | 
| 503 | #define BN_R_ENCODING_ERROR 104 | 508 | #define BN_R_ENCODING_ERROR 104 | 
| 504 | #define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 | 509 | #define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 | 
| 505 | #define BN_R_INVALID_LENGTH 106 | 510 | #define BN_R_INVALID_LENGTH 106 | 
| 511 | #define BN_R_INVALID_RANGE 115 | ||
| 506 | #define BN_R_NOT_INITIALIZED 107 | 512 | #define BN_R_NOT_INITIALIZED 107 | 
| 507 | #define BN_R_NO_INVERSE 108 | 513 | #define BN_R_NO_INVERSE 108 | 
| 508 | #define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 | 514 | #define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 | 
| diff --git a/src/lib/libssl/src/crypto/bn/bn_div.c b/src/lib/libssl/src/crypto/bn/bn_div.c index c3772c243b..c328b5b411 100644 --- a/src/lib/libssl/src/crypto/bn/bn_div.c +++ b/src/lib/libssl/src/crypto/bn/bn_div.c | |||
| @@ -180,13 +180,13 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, | |||
| 180 | 180 | ||
| 181 | BN_CTX_start(ctx); | 181 | BN_CTX_start(ctx); | 
| 182 | tmp=BN_CTX_get(ctx); | 182 | tmp=BN_CTX_get(ctx); | 
| 183 | tmp->neg=0; | ||
| 184 | snum=BN_CTX_get(ctx); | 183 | snum=BN_CTX_get(ctx); | 
| 185 | sdiv=BN_CTX_get(ctx); | 184 | sdiv=BN_CTX_get(ctx); | 
| 186 | if (dv == NULL) | 185 | if (dv == NULL) | 
| 187 | res=BN_CTX_get(ctx); | 186 | res=BN_CTX_get(ctx); | 
| 188 | else res=dv; | 187 | else res=dv; | 
| 189 | if (res == NULL) goto err; | 188 | if (sdiv==NULL || res == NULL) goto err; | 
| 189 | tmp->neg=0; | ||
| 190 | 190 | ||
| 191 | /* First we normalise the numbers */ | 191 | /* First we normalise the numbers */ | 
| 192 | norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2); | 192 | norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2); | 
| @@ -237,7 +237,8 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, | |||
| 237 | for (i=0; i<loop-1; i++) | 237 | for (i=0; i<loop-1; i++) | 
| 238 | { | 238 | { | 
| 239 | BN_ULONG q,l0; | 239 | BN_ULONG q,l0; | 
| 240 | #ifdef BN_DIV3W | 240 | #if defined(BN_DIV3W) && !defined(NO_ASM) | 
| 241 | BN_ULONG bn_div_3_words(BN_ULONG*,BN_ULONG,BN_ULONG); | ||
| 241 | q=bn_div_3_words(wnump,d1,d0); | 242 | q=bn_div_3_words(wnump,d1,d0); | 
| 242 | #else | 243 | #else | 
| 243 | BN_ULONG n0,n1,rem=0; | 244 | BN_ULONG n0,n1,rem=0; | 
| diff --git a/src/lib/libssl/src/crypto/bn/bn_err.c b/src/lib/libssl/src/crypto/bn/bn_err.c index 86550c4c21..adc6a214fc 100644 --- a/src/lib/libssl/src/crypto/bn/bn_err.c +++ b/src/lib/libssl/src/crypto/bn/bn_err.c | |||
| @@ -84,6 +84,7 @@ static ERR_STRING_DATA BN_str_functs[]= | |||
| 84 | {ERR_PACK(0,BN_F_BN_MPI2BN,0), "BN_mpi2bn"}, | 84 | {ERR_PACK(0,BN_F_BN_MPI2BN,0), "BN_mpi2bn"}, | 
| 85 | {ERR_PACK(0,BN_F_BN_NEW,0), "BN_new"}, | 85 | {ERR_PACK(0,BN_F_BN_NEW,0), "BN_new"}, | 
| 86 | {ERR_PACK(0,BN_F_BN_RAND,0), "BN_rand"}, | 86 | {ERR_PACK(0,BN_F_BN_RAND,0), "BN_rand"}, | 
| 87 | {ERR_PACK(0,BN_F_BN_RAND_RANGE,0), "BN_rand_range"}, | ||
| 87 | {ERR_PACK(0,BN_F_BN_USUB,0), "BN_usub"}, | 88 | {ERR_PACK(0,BN_F_BN_USUB,0), "BN_usub"}, | 
| 88 | {0,NULL} | 89 | {0,NULL} | 
| 89 | }; | 90 | }; | 
| @@ -92,11 +93,13 @@ static ERR_STRING_DATA BN_str_reasons[]= | |||
| 92 | { | 93 | { | 
| 93 | {BN_R_ARG2_LT_ARG3 ,"arg2 lt arg3"}, | 94 | {BN_R_ARG2_LT_ARG3 ,"arg2 lt arg3"}, | 
| 94 | {BN_R_BAD_RECIPROCAL ,"bad reciprocal"}, | 95 | {BN_R_BAD_RECIPROCAL ,"bad reciprocal"}, | 
| 96 | {BN_R_BIGNUM_TOO_LONG ,"bignum too long"}, | ||
| 95 | {BN_R_CALLED_WITH_EVEN_MODULUS ,"called with even modulus"}, | 97 | {BN_R_CALLED_WITH_EVEN_MODULUS ,"called with even modulus"}, | 
| 96 | {BN_R_DIV_BY_ZERO ,"div by zero"}, | 98 | {BN_R_DIV_BY_ZERO ,"div by zero"}, | 
| 97 | {BN_R_ENCODING_ERROR ,"encoding error"}, | 99 | {BN_R_ENCODING_ERROR ,"encoding error"}, | 
| 98 | {BN_R_EXPAND_ON_STATIC_BIGNUM_DATA ,"expand on static bignum data"}, | 100 | {BN_R_EXPAND_ON_STATIC_BIGNUM_DATA ,"expand on static bignum data"}, | 
| 99 | {BN_R_INVALID_LENGTH ,"invalid length"}, | 101 | {BN_R_INVALID_LENGTH ,"invalid length"}, | 
| 102 | {BN_R_INVALID_RANGE ,"invalid range"}, | ||
| 100 | {BN_R_NOT_INITIALIZED ,"not initialized"}, | 103 | {BN_R_NOT_INITIALIZED ,"not initialized"}, | 
| 101 | {BN_R_NO_INVERSE ,"no inverse"}, | 104 | {BN_R_NO_INVERSE ,"no inverse"}, | 
| 102 | {BN_R_TOO_MANY_TEMPORARY_VARIABLES ,"too many temporary variables"}, | 105 | {BN_R_TOO_MANY_TEMPORARY_VARIABLES ,"too many temporary variables"}, | 
| diff --git a/src/lib/libssl/src/crypto/bn/bn_lib.c b/src/lib/libssl/src/crypto/bn/bn_lib.c index b6b0ce4b3c..7767d65170 100644 --- a/src/lib/libssl/src/crypto/bn/bn_lib.c +++ b/src/lib/libssl/src/crypto/bn/bn_lib.c | |||
| @@ -62,6 +62,7 @@ | |||
| 62 | #endif | 62 | #endif | 
| 63 | 63 | ||
| 64 | #include <assert.h> | 64 | #include <assert.h> | 
| 65 | #include <limits.h> | ||
| 65 | #include <stdio.h> | 66 | #include <stdio.h> | 
| 66 | #include "cryptlib.h" | 67 | #include "cryptlib.h" | 
| 67 | #include "bn_lcl.h" | 68 | #include "bn_lcl.h" | 
| @@ -319,6 +320,12 @@ BIGNUM *bn_expand2(BIGNUM *b, int words) | |||
| 319 | 320 | ||
| 320 | if (words > b->dmax) | 321 | if (words > b->dmax) | 
| 321 | { | 322 | { | 
| 323 | if (words > (INT_MAX/(4*BN_BITS2))) | ||
| 324 | { | ||
| 325 | BNerr(BN_F_BN_EXPAND2,BN_R_BIGNUM_TOO_LONG); | ||
| 326 | return NULL; | ||
| 327 | } | ||
| 328 | |||
| 322 | bn_check_top(b); | 329 | bn_check_top(b); | 
| 323 | if (BN_get_flags(b,BN_FLG_STATIC_DATA)) | 330 | if (BN_get_flags(b,BN_FLG_STATIC_DATA)) | 
| 324 | { | 331 | { | 
| diff --git a/src/lib/libssl/src/crypto/bn/bn_rand.c b/src/lib/libssl/src/crypto/bn/bn_rand.c index 21ecbc04ed..acd0619921 100644 --- a/src/lib/libssl/src/crypto/bn/bn_rand.c +++ b/src/lib/libssl/src/crypto/bn/bn_rand.c | |||
| @@ -76,7 +76,7 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) | |||
| 76 | 76 | ||
| 77 | bytes=(bits+7)/8; | 77 | bytes=(bits+7)/8; | 
| 78 | bit=(bits-1)%8; | 78 | bit=(bits-1)%8; | 
| 79 | mask=0xff<<bit; | 79 | mask=0xff<<(bit+1); | 
| 80 | 80 | ||
| 81 | buf=(unsigned char *)OPENSSL_malloc(bytes); | 81 | buf=(unsigned char *)OPENSSL_malloc(bytes); | 
| 82 | if (buf == NULL) | 82 | if (buf == NULL) | 
| @@ -100,25 +100,48 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) | |||
| 100 | goto err; | 100 | goto err; | 
| 101 | } | 101 | } | 
| 102 | 102 | ||
| 103 | if (top) | 103 | #if 1 | 
| 104 | if (pseudorand == 2) | ||
| 104 | { | 105 | { | 
| 105 | if (bit == 0) | 106 | /* generate patterns that are more likely to trigger BN | 
| 107 | library bugs */ | ||
| 108 | int i; | ||
| 109 | unsigned char c; | ||
| 110 | |||
| 111 | for (i = 0; i < bytes; i++) | ||
| 112 | { | ||
| 113 | RAND_pseudo_bytes(&c, 1); | ||
| 114 | if (c >= 128 && i > 0) | ||
| 115 | buf[i] = buf[i-1]; | ||
| 116 | else if (c < 42) | ||
| 117 | buf[i] = 0; | ||
| 118 | else if (c < 84) | ||
| 119 | buf[i] = 255; | ||
| 120 | } | ||
| 121 | } | ||
| 122 | #endif | ||
| 123 | |||
| 124 | if (top != -1) | ||
| 125 | { | ||
| 126 | if (top) | ||
| 106 | { | 127 | { | 
| 107 | buf[0]=1; | 128 | if (bit == 0) | 
| 108 | buf[1]|=0x80; | 129 | { | 
| 130 | buf[0]=1; | ||
| 131 | buf[1]|=0x80; | ||
| 132 | } | ||
| 133 | else | ||
| 134 | { | ||
| 135 | buf[0]|=(3<<(bit-1)); | ||
| 136 | } | ||
| 109 | } | 137 | } | 
| 110 | else | 138 | else | 
| 111 | { | 139 | { | 
| 112 | buf[0]|=(3<<(bit-1)); | 140 | buf[0]|=(1<<bit); | 
| 113 | buf[0]&= ~(mask<<1); | ||
| 114 | } | 141 | } | 
| 115 | } | 142 | } | 
| 116 | else | 143 | buf[0] &= ~mask; | 
| 117 | { | 144 | if (bottom) /* set bottom bit if requested */ | 
| 118 | buf[0]|=(1<<bit); | ||
| 119 | buf[0]&= ~(mask<<1); | ||
| 120 | } | ||
| 121 | if (bottom) /* set bottom bits to whatever odd is */ | ||
| 122 | buf[bytes-1]|=1; | 145 | buf[bytes-1]|=1; | 
| 123 | if (!BN_bin2bn(buf,bytes,rnd)) goto err; | 146 | if (!BN_bin2bn(buf,bytes,rnd)) goto err; | 
| 124 | ret=1; | 147 | ret=1; | 
| @@ -140,3 +163,61 @@ int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom) | |||
| 140 | { | 163 | { | 
| 141 | return bnrand(1, rnd, bits, top, bottom); | 164 | return bnrand(1, rnd, bits, top, bottom); | 
| 142 | } | 165 | } | 
| 166 | |||
| 167 | #if 1 | ||
| 168 | int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom) | ||
| 169 | { | ||
| 170 | return bnrand(2, rnd, bits, top, bottom); | ||
| 171 | } | ||
| 172 | #endif | ||
| 173 | |||
| 174 | /* random number r: 0 <= r < range */ | ||
| 175 | int BN_rand_range(BIGNUM *r, BIGNUM *range) | ||
| 176 | { | ||
| 177 | int n; | ||
| 178 | |||
| 179 | if (range->neg || BN_is_zero(range)) | ||
| 180 | { | ||
| 181 | BNerr(BN_F_BN_RAND_RANGE, BN_R_INVALID_RANGE); | ||
| 182 | return 0; | ||
| 183 | } | ||
| 184 | |||
| 185 | n = BN_num_bits(range); /* n > 0 */ | ||
| 186 | |||
| 187 | if (n == 1) | ||
| 188 | { | ||
| 189 | if (!BN_zero(r)) return 0; | ||
| 190 | } | ||
| 191 | else if (BN_is_bit_set(range, n - 2)) | ||
| 192 | { | ||
| 193 | do | ||
| 194 | { | ||
| 195 | /* range = 11..._2, so each iteration succeeds with probability >= .75 */ | ||
| 196 | if (!BN_rand(r, n, -1, 0)) return 0; | ||
| 197 | } | ||
| 198 | while (BN_cmp(r, range) >= 0); | ||
| 199 | } | ||
| 200 | else | ||
| 201 | { | ||
| 202 | /* range = 10..._2, | ||
| 203 | * so 3*range (= 11..._2) is exactly one bit longer than range */ | ||
| 204 | do | ||
| 205 | { | ||
| 206 | if (!BN_rand(r, n + 1, -1, 0)) return 0; | ||
| 207 | /* If r < 3*range, use r := r MOD range | ||
| 208 | * (which is either r, r - range, or r - 2*range). | ||
| 209 | * Otherwise, iterate once more. | ||
| 210 | * Since 3*range = 11..._2, each iteration succeeds with | ||
| 211 | * probability >= .75. */ | ||
| 212 | if (BN_cmp(r ,range) >= 0) | ||
| 213 | { | ||
| 214 | if (!BN_sub(r, r, range)) return 0; | ||
| 215 | if (BN_cmp(r, range) >= 0) | ||
| 216 | if (!BN_sub(r, r, range)) return 0; | ||
| 217 | } | ||
| 218 | } | ||
| 219 | while (BN_cmp(r, range) >= 0); | ||
| 220 | } | ||
| 221 | |||
| 222 | return 1; | ||
| 223 | } | ||
| diff --git a/src/lib/libssl/src/crypto/bn/bn_shift.c b/src/lib/libssl/src/crypto/bn/bn_shift.c index 0883247384..c2608f9f4a 100644 --- a/src/lib/libssl/src/crypto/bn/bn_shift.c +++ b/src/lib/libssl/src/crypto/bn/bn_shift.c | |||
| @@ -172,6 +172,11 @@ int BN_rshift(BIGNUM *r, BIGNUM *a, int n) | |||
| 172 | r->neg=a->neg; | 172 | r->neg=a->neg; | 
| 173 | if (bn_wexpand(r,a->top-nw+1) == NULL) return(0); | 173 | if (bn_wexpand(r,a->top-nw+1) == NULL) return(0); | 
| 174 | } | 174 | } | 
| 175 | else | ||
| 176 | { | ||
| 177 | if (n == 0) | ||
| 178 | return 1; /* or the copying loop will go berserk */ | ||
| 179 | } | ||
| 175 | 180 | ||
| 176 | f= &(a->d[nw]); | 181 | f= &(a->d[nw]); | 
| 177 | t=r->d; | 182 | t=r->d; | 
| diff --git a/src/lib/libssl/src/crypto/bn/bntest.c b/src/lib/libssl/src/crypto/bn/bntest.c index 0a97af69c5..af0c2629e8 100644 --- a/src/lib/libssl/src/crypto/bn/bntest.c +++ b/src/lib/libssl/src/crypto/bn/bntest.c | |||
| @@ -107,11 +107,9 @@ static const char rnd_seed[] = "string to make the random number generator think | |||
| 107 | static void message(BIO *out, char *m) | 107 | static void message(BIO *out, char *m) | 
| 108 | { | 108 | { | 
| 109 | fprintf(stderr, "test %s\n", m); | 109 | fprintf(stderr, "test %s\n", m); | 
| 110 | #if defined(linux) || defined(__FreeBSD__) /* can we use GNU bc features? */ | ||
| 111 | BIO_puts(out, "print \"test "); | 110 | BIO_puts(out, "print \"test "); | 
| 112 | BIO_puts(out, m); | 111 | BIO_puts(out, m); | 
| 113 | BIO_puts(out, "\\n\"\n"); | 112 | BIO_puts(out, "\\n\"\n"); | 
| 114 | #endif | ||
| 115 | } | 113 | } | 
| 116 | 114 | ||
| 117 | int main(int argc, char *argv[]) | 115 | int main(int argc, char *argv[]) | 
| @@ -122,9 +120,7 @@ int main(int argc, char *argv[]) | |||
| 122 | 120 | ||
| 123 | results = 0; | 121 | results = 0; | 
| 124 | 122 | ||
| 125 | RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_rand may fail, and we don't | 123 | RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_generate_prime may fail */ | 
| 126 | * even check its return value | ||
| 127 | * (which we should) */ | ||
| 128 | 124 | ||
| 129 | argc--; | 125 | argc--; | 
| 130 | argv++; | 126 | argv++; | 
| @@ -253,10 +249,10 @@ int test_add(BIO *bp) | |||
| 253 | BN_init(&b); | 249 | BN_init(&b); | 
| 254 | BN_init(&c); | 250 | BN_init(&c); | 
| 255 | 251 | ||
| 256 | BN_rand(&a,512,0,0); | 252 | BN_bntest_rand(&a,512,0,0); | 
| 257 | for (i=0; i<num0; i++) | 253 | for (i=0; i<num0; i++) | 
| 258 | { | 254 | { | 
| 259 | BN_rand(&b,450+i,0,0); | 255 | BN_bntest_rand(&b,450+i,0,0); | 
| 260 | a.neg=rand_neg(); | 256 | a.neg=rand_neg(); | 
| 261 | b.neg=rand_neg(); | 257 | b.neg=rand_neg(); | 
| 262 | if (bp == NULL) | 258 | if (bp == NULL) | 
| @@ -305,14 +301,14 @@ int test_sub(BIO *bp) | |||
| 305 | { | 301 | { | 
| 306 | if (i < num1) | 302 | if (i < num1) | 
| 307 | { | 303 | { | 
| 308 | BN_rand(&a,512,0,0); | 304 | BN_bntest_rand(&a,512,0,0); | 
| 309 | BN_copy(&b,&a); | 305 | BN_copy(&b,&a); | 
| 310 | if (BN_set_bit(&a,i)==0) return(0); | 306 | if (BN_set_bit(&a,i)==0) return(0); | 
| 311 | BN_add_word(&b,i); | 307 | BN_add_word(&b,i); | 
| 312 | } | 308 | } | 
| 313 | else | 309 | else | 
| 314 | { | 310 | { | 
| 315 | BN_rand(&b,400+i-num1,0,0); | 311 | BN_bntest_rand(&b,400+i-num1,0,0); | 
| 316 | a.neg=rand_neg(); | 312 | a.neg=rand_neg(); | 
| 317 | b.neg=rand_neg(); | 313 | b.neg=rand_neg(); | 
| 318 | } | 314 | } | 
| @@ -362,13 +358,13 @@ int test_div(BIO *bp, BN_CTX *ctx) | |||
| 362 | { | 358 | { | 
| 363 | if (i < num1) | 359 | if (i < num1) | 
| 364 | { | 360 | { | 
| 365 | BN_rand(&a,400,0,0); | 361 | BN_bntest_rand(&a,400,0,0); | 
| 366 | BN_copy(&b,&a); | 362 | BN_copy(&b,&a); | 
| 367 | BN_lshift(&a,&a,i); | 363 | BN_lshift(&a,&a,i); | 
| 368 | BN_add_word(&a,i); | 364 | BN_add_word(&a,i); | 
| 369 | } | 365 | } | 
| 370 | else | 366 | else | 
| 371 | BN_rand(&b,50+3*(i-num1),0,0); | 367 | BN_bntest_rand(&b,50+3*(i-num1),0,0); | 
| 372 | a.neg=rand_neg(); | 368 | a.neg=rand_neg(); | 
| 373 | b.neg=rand_neg(); | 369 | b.neg=rand_neg(); | 
| 374 | if (bp == NULL) | 370 | if (bp == NULL) | 
| @@ -432,13 +428,13 @@ int test_div_recp(BIO *bp, BN_CTX *ctx) | |||
| 432 | { | 428 | { | 
| 433 | if (i < num1) | 429 | if (i < num1) | 
| 434 | { | 430 | { | 
| 435 | BN_rand(&a,400,0,0); | 431 | BN_bntest_rand(&a,400,0,0); | 
| 436 | BN_copy(&b,&a); | 432 | BN_copy(&b,&a); | 
| 437 | BN_lshift(&a,&a,i); | 433 | BN_lshift(&a,&a,i); | 
| 438 | BN_add_word(&a,i); | 434 | BN_add_word(&a,i); | 
| 439 | } | 435 | } | 
| 440 | else | 436 | else | 
| 441 | BN_rand(&b,50+3*(i-num1),0,0); | 437 | BN_bntest_rand(&b,50+3*(i-num1),0,0); | 
| 442 | a.neg=rand_neg(); | 438 | a.neg=rand_neg(); | 
| 443 | b.neg=rand_neg(); | 439 | b.neg=rand_neg(); | 
| 444 | BN_RECP_CTX_set(&recp,&b,ctx); | 440 | BN_RECP_CTX_set(&recp,&b,ctx); | 
| @@ -509,11 +505,11 @@ int test_mul(BIO *bp) | |||
| 509 | { | 505 | { | 
| 510 | if (i <= num1) | 506 | if (i <= num1) | 
| 511 | { | 507 | { | 
| 512 | BN_rand(&a,100,0,0); | 508 | BN_bntest_rand(&a,100,0,0); | 
| 513 | BN_rand(&b,100,0,0); | 509 | BN_bntest_rand(&b,100,0,0); | 
| 514 | } | 510 | } | 
| 515 | else | 511 | else | 
| 516 | BN_rand(&b,i-num1,0,0); | 512 | BN_bntest_rand(&b,i-num1,0,0); | 
| 517 | a.neg=rand_neg(); | 513 | a.neg=rand_neg(); | 
| 518 | b.neg=rand_neg(); | 514 | b.neg=rand_neg(); | 
| 519 | if (bp == NULL) | 515 | if (bp == NULL) | 
| @@ -562,7 +558,7 @@ int test_sqr(BIO *bp, BN_CTX *ctx) | |||
| 562 | 558 | ||
| 563 | for (i=0; i<num0; i++) | 559 | for (i=0; i<num0; i++) | 
| 564 | { | 560 | { | 
| 565 | BN_rand(&a,40+i*10,0,0); | 561 | BN_bntest_rand(&a,40+i*10,0,0); | 
| 566 | a.neg=rand_neg(); | 562 | a.neg=rand_neg(); | 
| 567 | if (bp == NULL) | 563 | if (bp == NULL) | 
| 568 | for (j=0; j<100; j++) | 564 | for (j=0; j<100; j++) | 
| @@ -613,15 +609,15 @@ int test_mont(BIO *bp, BN_CTX *ctx) | |||
| 613 | 609 | ||
| 614 | mont=BN_MONT_CTX_new(); | 610 | mont=BN_MONT_CTX_new(); | 
| 615 | 611 | ||
| 616 | BN_rand(&a,100,0,0); /**/ | 612 | BN_bntest_rand(&a,100,0,0); /**/ | 
| 617 | BN_rand(&b,100,0,0); /**/ | 613 | BN_bntest_rand(&b,100,0,0); /**/ | 
| 618 | for (i=0; i<num2; i++) | 614 | for (i=0; i<num2; i++) | 
| 619 | { | 615 | { | 
| 620 | int bits = (200*(i+1))/num2; | 616 | int bits = (200*(i+1))/num2; | 
| 621 | 617 | ||
| 622 | if (bits == 0) | 618 | if (bits == 0) | 
| 623 | continue; | 619 | continue; | 
| 624 | BN_rand(&n,bits,0,1); | 620 | BN_bntest_rand(&n,bits,0,1); | 
| 625 | BN_MONT_CTX_set(mont,&n,ctx); | 621 | BN_MONT_CTX_set(mont,&n,ctx); | 
| 626 | 622 | ||
| 627 | BN_to_montgomery(&A,&a,mont,ctx); | 623 | BN_to_montgomery(&A,&a,mont,ctx); | 
| @@ -683,10 +679,10 @@ int test_mod(BIO *bp, BN_CTX *ctx) | |||
| 683 | d=BN_new(); | 679 | d=BN_new(); | 
| 684 | e=BN_new(); | 680 | e=BN_new(); | 
| 685 | 681 | ||
| 686 | BN_rand(a,1024,0,0); /**/ | 682 | BN_bntest_rand(a,1024,0,0); /**/ | 
| 687 | for (i=0; i<num0; i++) | 683 | for (i=0; i<num0; i++) | 
| 688 | { | 684 | { | 
| 689 | BN_rand(b,450+i*10,0,0); /**/ | 685 | BN_bntest_rand(b,450+i*10,0,0); /**/ | 
| 690 | a->neg=rand_neg(); | 686 | a->neg=rand_neg(); | 
| 691 | b->neg=rand_neg(); | 687 | b->neg=rand_neg(); | 
| 692 | if (bp == NULL) | 688 | if (bp == NULL) | 
| @@ -732,11 +728,11 @@ int test_mod_mul(BIO *bp, BN_CTX *ctx) | |||
| 732 | d=BN_new(); | 728 | d=BN_new(); | 
| 733 | e=BN_new(); | 729 | e=BN_new(); | 
| 734 | 730 | ||
| 735 | BN_rand(c,1024,0,0); /**/ | 731 | BN_bntest_rand(c,1024,0,0); /**/ | 
| 736 | for (i=0; i<num0; i++) | 732 | for (i=0; i<num0; i++) | 
| 737 | { | 733 | { | 
| 738 | BN_rand(a,475+i*10,0,0); /**/ | 734 | BN_bntest_rand(a,475+i*10,0,0); /**/ | 
| 739 | BN_rand(b,425+i*11,0,0); /**/ | 735 | BN_bntest_rand(b,425+i*11,0,0); /**/ | 
| 740 | a->neg=rand_neg(); | 736 | a->neg=rand_neg(); | 
| 741 | b->neg=rand_neg(); | 737 | b->neg=rand_neg(); | 
| 742 | /* if (bp == NULL) | 738 | /* if (bp == NULL) | 
| @@ -794,11 +790,11 @@ int test_mod_exp(BIO *bp, BN_CTX *ctx) | |||
| 794 | d=BN_new(); | 790 | d=BN_new(); | 
| 795 | e=BN_new(); | 791 | e=BN_new(); | 
| 796 | 792 | ||
| 797 | BN_rand(c,30,0,1); /* must be odd for montgomery */ | 793 | BN_bntest_rand(c,30,0,1); /* must be odd for montgomery */ | 
| 798 | for (i=0; i<num2; i++) | 794 | for (i=0; i<num2; i++) | 
| 799 | { | 795 | { | 
| 800 | BN_rand(a,20+i*5,0,0); /**/ | 796 | BN_bntest_rand(a,20+i*5,0,0); /**/ | 
| 801 | BN_rand(b,2+i,0,0); /**/ | 797 | BN_bntest_rand(b,2+i,0,0); /**/ | 
| 802 | 798 | ||
| 803 | if (!BN_mod_exp(d,a,b,c,ctx)) | 799 | if (!BN_mod_exp(d,a,b,c,ctx)) | 
| 804 | return(00); | 800 | return(00); | 
| @@ -848,8 +844,8 @@ int test_exp(BIO *bp, BN_CTX *ctx) | |||
| 848 | 844 | ||
| 849 | for (i=0; i<num2; i++) | 845 | for (i=0; i<num2; i++) | 
| 850 | { | 846 | { | 
| 851 | BN_rand(a,20+i*5,0,0); /**/ | 847 | BN_bntest_rand(a,20+i*5,0,0); /**/ | 
| 852 | BN_rand(b,2+i,0,0); /**/ | 848 | BN_bntest_rand(b,2+i,0,0); /**/ | 
| 853 | 849 | ||
| 854 | if (!BN_exp(d,a,b,ctx)) | 850 | if (!BN_exp(d,a,b,ctx)) | 
| 855 | return(00); | 851 | return(00); | 
| @@ -899,7 +895,7 @@ int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_) | |||
| 899 | else | 895 | else | 
| 900 | { | 896 | { | 
| 901 | a=BN_new(); | 897 | a=BN_new(); | 
| 902 | BN_rand(a,200,0,0); /**/ | 898 | BN_bntest_rand(a,200,0,0); /**/ | 
| 903 | a->neg=rand_neg(); | 899 | a->neg=rand_neg(); | 
| 904 | } | 900 | } | 
| 905 | for (i=0; i<num0; i++) | 901 | for (i=0; i<num0; i++) | 
| @@ -951,7 +947,7 @@ int test_lshift1(BIO *bp) | |||
| 951 | b=BN_new(); | 947 | b=BN_new(); | 
| 952 | c=BN_new(); | 948 | c=BN_new(); | 
| 953 | 949 | ||
| 954 | BN_rand(a,200,0,0); /**/ | 950 | BN_bntest_rand(a,200,0,0); /**/ | 
| 955 | a->neg=rand_neg(); | 951 | a->neg=rand_neg(); | 
| 956 | for (i=0; i<num0; i++) | 952 | for (i=0; i<num0; i++) | 
| 957 | { | 953 | { | 
| @@ -995,7 +991,7 @@ int test_rshift(BIO *bp,BN_CTX *ctx) | |||
| 995 | e=BN_new(); | 991 | e=BN_new(); | 
| 996 | BN_one(c); | 992 | BN_one(c); | 
| 997 | 993 | ||
| 998 | BN_rand(a,200,0,0); /**/ | 994 | BN_bntest_rand(a,200,0,0); /**/ | 
| 999 | a->neg=rand_neg(); | 995 | a->neg=rand_neg(); | 
| 1000 | for (i=0; i<num0; i++) | 996 | for (i=0; i<num0; i++) | 
| 1001 | { | 997 | { | 
| @@ -1038,7 +1034,7 @@ int test_rshift1(BIO *bp) | |||
| 1038 | b=BN_new(); | 1034 | b=BN_new(); | 
| 1039 | c=BN_new(); | 1035 | c=BN_new(); | 
| 1040 | 1036 | ||
| 1041 | BN_rand(a,200,0,0); /**/ | 1037 | BN_bntest_rand(a,200,0,0); /**/ | 
| 1042 | a->neg=rand_neg(); | 1038 | a->neg=rand_neg(); | 
| 1043 | for (i=0; i<num0; i++) | 1039 | for (i=0; i<num0; i++) | 
| 1044 | { | 1040 | { | 
| diff --git a/src/lib/libssl/src/crypto/buffer/Makefile.ssl b/src/lib/libssl/src/crypto/buffer/Makefile.ssl index f473d1ab4b..a64681fd22 100644 --- a/src/lib/libssl/src/crypto/buffer/Makefile.ssl +++ b/src/lib/libssl/src/crypto/buffer/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/cast/Makefile.ssl b/src/lib/libssl/src/crypto/cast/Makefile.ssl index 4c70d1e3e8..1f8b898f7c 100644 --- a/src/lib/libssl/src/crypto/cast/Makefile.ssl +++ b/src/lib/libssl/src/crypto/cast/Makefile.ssl | |||
| @@ -47,7 +47,8 @@ all: lib | |||
| 47 | 47 | ||
| 48 | lib: $(LIBOBJ) | 48 | lib: $(LIBOBJ) | 
| 49 | $(AR) $(LIB) $(LIBOBJ) | 49 | $(AR) $(LIB) $(LIBOBJ) | 
| 50 | $(RANLIB) $(LIB) | 50 | @echo You may get an error following this line. Please ignore. | 
| 51 | - $(RANLIB) $(LIB) | ||
| 51 | @touch lib | 52 | @touch lib | 
| 52 | 53 | ||
| 53 | # elf | 54 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/comp/Makefile.ssl b/src/lib/libssl/src/crypto/comp/Makefile.ssl index 39e7993416..b696ac75fe 100644 --- a/src/lib/libssl/src/crypto/comp/Makefile.ssl +++ b/src/lib/libssl/src/crypto/comp/Makefile.ssl | |||
| @@ -42,7 +42,8 @@ all: lib | |||
| 42 | 42 | ||
| 43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) | 
| 44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(AR) $(LIB) $(LIBOBJ) | 
| 45 | $(RANLIB) $(LIB) | 45 | @echo You may get an error following this line. Please ignore. | 
| 46 | - $(RANLIB) $(LIB) | ||
| 46 | @touch lib | 47 | @touch lib | 
| 47 | 48 | ||
| 48 | files: | 49 | files: | 
| diff --git a/src/lib/libssl/src/crypto/conf/Makefile.ssl b/src/lib/libssl/src/crypto/conf/Makefile.ssl index efbb578981..9df4fca877 100644 --- a/src/lib/libssl/src/crypto/conf/Makefile.ssl +++ b/src/lib/libssl/src/crypto/conf/Makefile.ssl | |||
| @@ -40,7 +40,8 @@ all: lib | |||
| 40 | 40 | ||
| 41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) | 
| 42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(AR) $(LIB) $(LIBOBJ) | 
| 43 | $(RANLIB) $(LIB) | 43 | @echo You may get an error following this line. Please ignore. | 
| 44 | - $(RANLIB) $(LIB) | ||
| 44 | @touch lib | 45 | @touch lib | 
| 45 | 46 | ||
| 46 | files: | 47 | files: | 
| diff --git a/src/lib/libssl/src/crypto/conf/conf.h b/src/lib/libssl/src/crypto/conf/conf.h index 2f70634455..cd40a0db21 100644 --- a/src/lib/libssl/src/crypto/conf/conf.h +++ b/src/lib/libssl/src/crypto/conf/conf.h | |||
| @@ -167,6 +167,8 @@ int NCONF_dump_bio(CONF *conf, BIO *out); | |||
| 167 | #define CONF_R_MISSING_EQUAL_SIGN 101 | 167 | #define CONF_R_MISSING_EQUAL_SIGN 101 | 
| 168 | #define CONF_R_NO_CLOSE_BRACE 102 | 168 | #define CONF_R_NO_CLOSE_BRACE 102 | 
| 169 | #define CONF_R_NO_CONF 105 | 169 | #define CONF_R_NO_CONF 105 | 
| 170 | #define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 | ||
| 171 | #define CONF_R_NO_SECTION 107 | ||
| 170 | #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 | 172 | #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 | 
| 171 | #define CONF_R_VARIABLE_HAS_NO_VALUE 104 | 173 | #define CONF_R_VARIABLE_HAS_NO_VALUE 104 | 
| 172 | 174 | ||
| diff --git a/src/lib/libssl/src/crypto/conf/conf_err.c b/src/lib/libssl/src/crypto/conf/conf_err.c index 06d3163573..8c2bc6f1c4 100644 --- a/src/lib/libssl/src/crypto/conf/conf_err.c +++ b/src/lib/libssl/src/crypto/conf/conf_err.c | |||
| @@ -87,6 +87,8 @@ static ERR_STRING_DATA CONF_str_reasons[]= | |||
| 87 | {CONF_R_MISSING_EQUAL_SIGN ,"missing equal sign"}, | 87 | {CONF_R_MISSING_EQUAL_SIGN ,"missing equal sign"}, | 
| 88 | {CONF_R_NO_CLOSE_BRACE ,"no close brace"}, | 88 | {CONF_R_NO_CLOSE_BRACE ,"no close brace"}, | 
| 89 | {CONF_R_NO_CONF ,"no conf"}, | 89 | {CONF_R_NO_CONF ,"no conf"}, | 
| 90 | {CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE ,"no conf or environment variable"}, | ||
| 91 | {CONF_R_NO_SECTION ,"no section"}, | ||
| 90 | {CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"}, | 92 | {CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"}, | 
| 91 | {CONF_R_VARIABLE_HAS_NO_VALUE ,"variable has no value"}, | 93 | {CONF_R_VARIABLE_HAS_NO_VALUE ,"variable has no value"}, | 
| 92 | {0,NULL} | 94 | {0,NULL} | 
| diff --git a/src/lib/libssl/src/crypto/conf/conf_lib.c b/src/lib/libssl/src/crypto/conf/conf_lib.c index 4c8ca9e9ae..11ec639732 100644 --- a/src/lib/libssl/src/crypto/conf/conf_lib.c +++ b/src/lib/libssl/src/crypto/conf/conf_lib.c | |||
| @@ -131,38 +131,59 @@ LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline) | |||
| 131 | 131 | ||
| 132 | STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,char *section) | 132 | STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,char *section) | 
| 133 | { | 133 | { | 
| 134 | CONF ctmp; | 134 | if (conf == NULL) | 
| 135 | { | ||
| 136 | return NULL; | ||
| 137 | } | ||
| 138 | else | ||
| 139 | { | ||
| 140 | CONF ctmp; | ||
| 135 | 141 | ||
| 136 | if (default_CONF_method == NULL) | 142 | if (default_CONF_method == NULL) | 
| 137 | default_CONF_method = NCONF_default(); | 143 | default_CONF_method = NCONF_default(); | 
| 138 | 144 | ||
| 139 | default_CONF_method->init(&ctmp); | 145 | default_CONF_method->init(&ctmp); | 
| 140 | ctmp.data = conf; | 146 | ctmp.data = conf; | 
| 141 | return NCONF_get_section(&ctmp, section); | 147 | return NCONF_get_section(&ctmp, section); | 
| 148 | } | ||
| 142 | } | 149 | } | 
| 143 | 150 | ||
| 144 | char *CONF_get_string(LHASH *conf,char *group,char *name) | 151 | char *CONF_get_string(LHASH *conf,char *group,char *name) | 
| 145 | { | 152 | { | 
| 146 | CONF ctmp; | 153 | if (conf == NULL) | 
| 154 | { | ||
| 155 | return NCONF_get_string(NULL, group, name); | ||
| 156 | } | ||
| 157 | else | ||
| 158 | { | ||
| 159 | CONF ctmp; | ||
| 147 | 160 | ||
| 148 | if (default_CONF_method == NULL) | 161 | if (default_CONF_method == NULL) | 
| 149 | default_CONF_method = NCONF_default(); | 162 | default_CONF_method = NCONF_default(); | 
| 150 | 163 | ||
| 151 | default_CONF_method->init(&ctmp); | 164 | default_CONF_method->init(&ctmp); | 
| 152 | ctmp.data = conf; | 165 | ctmp.data = conf; | 
| 153 | return NCONF_get_string(&ctmp, group, name); | 166 | return NCONF_get_string(&ctmp, group, name); | 
| 167 | } | ||
| 154 | } | 168 | } | 
| 155 | 169 | ||
| 156 | long CONF_get_number(LHASH *conf,char *group,char *name) | 170 | long CONF_get_number(LHASH *conf,char *group,char *name) | 
| 157 | { | 171 | { | 
| 158 | CONF ctmp; | 172 | if (conf == NULL) | 
| 173 | { | ||
| 174 | return NCONF_get_number(NULL, group, name); | ||
| 175 | } | ||
| 176 | else | ||
| 177 | { | ||
| 178 | CONF ctmp; | ||
| 159 | 179 | ||
| 160 | if (default_CONF_method == NULL) | 180 | if (default_CONF_method == NULL) | 
| 161 | default_CONF_method = NCONF_default(); | 181 | default_CONF_method = NCONF_default(); | 
| 162 | 182 | ||
| 163 | default_CONF_method->init(&ctmp); | 183 | default_CONF_method->init(&ctmp); | 
| 164 | ctmp.data = conf; | 184 | ctmp.data = conf; | 
| 165 | return NCONF_get_number(&ctmp, group, name); | 185 | return NCONF_get_number(&ctmp, group, name); | 
| 186 | } | ||
| 166 | } | 187 | } | 
| 167 | 188 | ||
| 168 | void CONF_free(LHASH *conf) | 189 | void CONF_free(LHASH *conf) | 
| @@ -299,27 +320,46 @@ STACK_OF(CONF_VALUE) *NCONF_get_section(CONF *conf,char *section) | |||
| 299 | return NULL; | 320 | return NULL; | 
| 300 | } | 321 | } | 
| 301 | 322 | ||
| 323 | if (section == NULL) | ||
| 324 | { | ||
| 325 | CONFerr(CONF_F_NCONF_GET_SECTION,CONF_R_NO_SECTION); | ||
| 326 | return NULL; | ||
| 327 | } | ||
| 328 | |||
| 302 | return _CONF_get_section_values(conf, section); | 329 | return _CONF_get_section_values(conf, section); | 
| 303 | } | 330 | } | 
| 304 | 331 | ||
| 305 | char *NCONF_get_string(CONF *conf,char *group,char *name) | 332 | char *NCONF_get_string(CONF *conf,char *group,char *name) | 
| 306 | { | 333 | { | 
| 334 | char *s = _CONF_get_string(conf, group, name); | ||
| 335 | |||
| 336 | /* Since we may get a value from an environment variable even | ||
| 337 | if conf is NULL, let's check the value first */ | ||
| 338 | if (s) return s; | ||
| 339 | |||
| 307 | if (conf == NULL) | 340 | if (conf == NULL) | 
| 308 | { | 341 | { | 
| 309 | CONFerr(CONF_F_NCONF_GET_STRING,CONF_R_NO_CONF); | 342 | CONFerr(CONF_F_NCONF_GET_STRING, | 
| 343 | CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE); | ||
| 310 | return NULL; | 344 | return NULL; | 
| 311 | } | 345 | } | 
| 312 | 346 | return NULL; | |
| 313 | return _CONF_get_string(conf, group, name); | ||
| 314 | } | 347 | } | 
| 315 | 348 | ||
| 316 | long NCONF_get_number(CONF *conf,char *group,char *name) | 349 | long NCONF_get_number(CONF *conf,char *group,char *name) | 
| 317 | { | 350 | { | 
| 351 | #if 0 /* As with _CONF_get_string(), we rely on the possibility of finding | ||
| 352 | an environment variable with a suitable name. Unfortunately, there's | ||
| 353 | no way with the current API to see if we found one or not... | ||
| 354 | The meaning of this is that if a number is not found anywhere, it | ||
| 355 | will always default to 0. */ | ||
| 318 | if (conf == NULL) | 356 | if (conf == NULL) | 
| 319 | { | 357 | { | 
| 320 | CONFerr(CONF_F_NCONF_GET_NUMBER,CONF_R_NO_CONF); | 358 | CONFerr(CONF_F_NCONF_GET_NUMBER, | 
| 359 | CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE); | ||
| 321 | return 0; | 360 | return 0; | 
| 322 | } | 361 | } | 
| 362 | #endif | ||
| 323 | 363 | ||
| 324 | return _CONF_get_number(conf, group, name); | 364 | return _CONF_get_number(conf, group, name); | 
| 325 | } | 365 | } | 
| diff --git a/src/lib/libssl/src/crypto/crypto-lib.com b/src/lib/libssl/src/crypto/crypto-lib.com index 21d56a4b50..482a136177 100644 --- a/src/lib/libssl/src/crypto/crypto-lib.com +++ b/src/lib/libssl/src/crypto/crypto-lib.com | |||
| @@ -174,7 +174,7 @@ $! | |||
| 174 | $ APPS_DES = "DES/DES,CBC3_ENC" | 174 | $ APPS_DES = "DES/DES,CBC3_ENC" | 
| 175 | $ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE" | 175 | $ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE" | 
| 176 | $ | 176 | $ | 
| 177 | $ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err" | 177 | $ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid" | 
| 178 | $ LIB_MD2 = "md2_dgst,md2_one" | 178 | $ LIB_MD2 = "md2_dgst,md2_one" | 
| 179 | $ LIB_MD4 = "md4_dgst,md4_one" | 179 | $ LIB_MD4 = "md4_dgst,md4_one" | 
| 180 | $ LIB_MD5 = "md5_dgst,md5_one" | 180 | $ LIB_MD5 = "md5_dgst,md5_one" | 
| diff --git a/src/lib/libssl/src/crypto/crypto.h b/src/lib/libssl/src/crypto/crypto.h index 52ee97b71a..9257673279 100644 --- a/src/lib/libssl/src/crypto/crypto.h +++ b/src/lib/libssl/src/crypto/crypto.h | |||
| @@ -278,6 +278,8 @@ int CRYPTO_is_mem_check_on(void); | |||
| 278 | const char *SSLeay_version(int type); | 278 | const char *SSLeay_version(int type); | 
| 279 | unsigned long SSLeay(void); | 279 | unsigned long SSLeay(void); | 
| 280 | 280 | ||
| 281 | int OPENSSL_issetugid(void); | ||
| 282 | |||
| 281 | int CRYPTO_get_ex_new_index(int idx, STACK_OF(CRYPTO_EX_DATA_FUNCS) **skp, long argl, void *argp, | 283 | int CRYPTO_get_ex_new_index(int idx, STACK_OF(CRYPTO_EX_DATA_FUNCS) **skp, long argl, void *argp, | 
| 282 | CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 284 | CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 
| 283 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); | 285 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); | 
| diff --git a/src/lib/libssl/src/crypto/des/Makefile.ssl b/src/lib/libssl/src/crypto/des/Makefile.ssl index 34a360b7ab..cc5379feb2 100644 --- a/src/lib/libssl/src/crypto/des/Makefile.ssl +++ b/src/lib/libssl/src/crypto/des/Makefile.ssl | |||
| @@ -57,7 +57,8 @@ all: lib | |||
| 57 | 57 | ||
| 58 | lib: $(LIBOBJ) | 58 | lib: $(LIBOBJ) | 
| 59 | $(AR) $(LIB) $(LIBOBJ) | 59 | $(AR) $(LIB) $(LIBOBJ) | 
| 60 | $(RANLIB) $(LIB) | 60 | @echo You may get an error following this line. Please ignore. | 
| 61 | - $(RANLIB) $(LIB) | ||
| 61 | @touch lib | 62 | @touch lib | 
| 62 | 63 | ||
| 63 | des: des.o cbc3_enc.o lib | 64 | des: des.o cbc3_enc.o lib | 
| diff --git a/src/lib/libssl/src/crypto/des/asm/des-586.pl b/src/lib/libssl/src/crypto/des/asm/des-586.pl index f054071077..c890766bc9 100644 --- a/src/lib/libssl/src/crypto/des/asm/des-586.pl +++ b/src/lib/libssl/src/crypto/des/asm/des-586.pl | |||
| @@ -20,11 +20,11 @@ $L="edi"; | |||
| 20 | $R="esi"; | 20 | $R="esi"; | 
| 21 | 21 | ||
| 22 | &external_label("des_SPtrans"); | 22 | &external_label("des_SPtrans"); | 
| 23 | &des_encrypt("des_encrypt",1); | 23 | &des_encrypt("des_encrypt1",1); | 
| 24 | &des_encrypt("des_encrypt2",0); | 24 | &des_encrypt("des_encrypt2",0); | 
| 25 | &des_encrypt3("des_encrypt3",1); | 25 | &des_encrypt3("des_encrypt3",1); | 
| 26 | &des_encrypt3("des_decrypt3",0); | 26 | &des_encrypt3("des_decrypt3",0); | 
| 27 | &cbc("des_ncbc_encrypt","des_encrypt","des_encrypt",0,4,5,3,5,-1); | 27 | &cbc("des_ncbc_encrypt","des_encrypt1","des_encrypt1",0,4,5,3,5,-1); | 
| 28 | &cbc("des_ede3_cbc_encrypt","des_encrypt3","des_decrypt3",0,6,7,3,4,5); | 28 | &cbc("des_ede3_cbc_encrypt","des_encrypt3","des_decrypt3",0,6,7,3,4,5); | 
| 29 | 29 | ||
| 30 | &asm_finish(); | 30 | &asm_finish(); | 
| diff --git a/src/lib/libssl/src/crypto/des/asm/des686.pl b/src/lib/libssl/src/crypto/des/asm/des686.pl index 77dc5b51cd..84c3e85438 100644 --- a/src/lib/libssl/src/crypto/des/asm/des686.pl +++ b/src/lib/libssl/src/crypto/des/asm/des686.pl | |||
| @@ -46,7 +46,7 @@ EOF | |||
| 46 | $L="edi"; | 46 | $L="edi"; | 
| 47 | $R="esi"; | 47 | $R="esi"; | 
| 48 | 48 | ||
| 49 | &des_encrypt("des_encrypt",1); | 49 | &des_encrypt("des_encrypt1",1); | 
| 50 | &des_encrypt("des_encrypt2",0); | 50 | &des_encrypt("des_encrypt2",0); | 
| 51 | 51 | ||
| 52 | &des_encrypt3("des_encrypt3",1); | 52 | &des_encrypt3("des_encrypt3",1); | 
| diff --git a/src/lib/libssl/src/crypto/des/asm/readme b/src/lib/libssl/src/crypto/des/asm/readme index f8529d9307..1beafe253b 100644 --- a/src/lib/libssl/src/crypto/des/asm/readme +++ b/src/lib/libssl/src/crypto/des/asm/readme | |||
| @@ -8,7 +8,7 @@ assembler for the inner DES routines in libdes :-). | |||
| 8 | 8 | ||
| 9 | The file to implement in assembler is des_enc.c. Replace the following | 9 | The file to implement in assembler is des_enc.c. Replace the following | 
| 10 | 4 functions | 10 | 4 functions | 
| 11 | des_encrypt(DES_LONG data[2],des_key_schedule ks, int encrypt); | 11 | des_encrypt1(DES_LONG data[2],des_key_schedule ks, int encrypt); | 
| 12 | des_encrypt2(DES_LONG data[2],des_key_schedule ks, int encrypt); | 12 | des_encrypt2(DES_LONG data[2],des_key_schedule ks, int encrypt); | 
| 13 | des_encrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 13 | des_encrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 
| 14 | des_decrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 14 | des_decrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); | 
| diff --git a/src/lib/libssl/src/crypto/des/cbc_cksm.c b/src/lib/libssl/src/crypto/des/cbc_cksm.c index 1e543cb2a1..b857df0985 100644 --- a/src/lib/libssl/src/crypto/des/cbc_cksm.c +++ b/src/lib/libssl/src/crypto/des/cbc_cksm.c | |||
| @@ -82,7 +82,7 @@ DES_LONG des_cbc_cksum(const unsigned char *in, des_cblock *output, | |||
| 82 | 82 | ||
| 83 | tin0^=tout0; tin[0]=tin0; | 83 | tin0^=tout0; tin[0]=tin0; | 
| 84 | tin1^=tout1; tin[1]=tin1; | 84 | tin1^=tout1; tin[1]=tin1; | 
| 85 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 85 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 86 | /* fix 15/10/91 eay - thanks to keithr@sco.COM */ | 86 | /* fix 15/10/91 eay - thanks to keithr@sco.COM */ | 
| 87 | tout0=tin[0]; | 87 | tout0=tin[0]; | 
| 88 | tout1=tin[1]; | 88 | tout1=tin[1]; | 
| diff --git a/src/lib/libssl/src/crypto/des/cfb64enc.c b/src/lib/libssl/src/crypto/des/cfb64enc.c index 389a232cb3..105530dfa3 100644 --- a/src/lib/libssl/src/crypto/des/cfb64enc.c +++ b/src/lib/libssl/src/crypto/des/cfb64enc.c | |||
| @@ -82,7 +82,7 @@ void des_cfb64_encrypt(const unsigned char *in, unsigned char *out, | |||
| 82 | { | 82 | { | 
| 83 | c2l(iv,v0); ti[0]=v0; | 83 | c2l(iv,v0); ti[0]=v0; | 
| 84 | c2l(iv,v1); ti[1]=v1; | 84 | c2l(iv,v1); ti[1]=v1; | 
| 85 | des_encrypt(ti,schedule,DES_ENCRYPT); | 85 | des_encrypt1(ti,schedule,DES_ENCRYPT); | 
| 86 | iv = &(*ivec)[0]; | 86 | iv = &(*ivec)[0]; | 
| 87 | v0=ti[0]; l2c(v0,iv); | 87 | v0=ti[0]; l2c(v0,iv); | 
| 88 | v0=ti[1]; l2c(v0,iv); | 88 | v0=ti[1]; l2c(v0,iv); | 
| @@ -102,7 +102,7 @@ void des_cfb64_encrypt(const unsigned char *in, unsigned char *out, | |||
| 102 | { | 102 | { | 
| 103 | c2l(iv,v0); ti[0]=v0; | 103 | c2l(iv,v0); ti[0]=v0; | 
| 104 | c2l(iv,v1); ti[1]=v1; | 104 | c2l(iv,v1); ti[1]=v1; | 
| 105 | des_encrypt(ti,schedule,DES_ENCRYPT); | 105 | des_encrypt1(ti,schedule,DES_ENCRYPT); | 
| 106 | iv = &(*ivec)[0]; | 106 | iv = &(*ivec)[0]; | 
| 107 | v0=ti[0]; l2c(v0,iv); | 107 | v0=ti[0]; l2c(v0,iv); | 
| 108 | v0=ti[1]; l2c(v0,iv); | 108 | v0=ti[1]; l2c(v0,iv); | 
| diff --git a/src/lib/libssl/src/crypto/des/cfb_enc.c b/src/lib/libssl/src/crypto/des/cfb_enc.c index cca34dd7c5..ec4fd4ea67 100644 --- a/src/lib/libssl/src/crypto/des/cfb_enc.c +++ b/src/lib/libssl/src/crypto/des/cfb_enc.c | |||
| @@ -100,7 +100,7 @@ void des_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, | |||
| 100 | l-=n; | 100 | l-=n; | 
| 101 | ti[0]=v0; | 101 | ti[0]=v0; | 
| 102 | ti[1]=v1; | 102 | ti[1]=v1; | 
| 103 | des_encrypt((DES_LONG *)ti,schedule,DES_ENCRYPT); | 103 | des_encrypt1((DES_LONG *)ti,schedule,DES_ENCRYPT); | 
| 104 | c2ln(in,d0,d1,n); | 104 | c2ln(in,d0,d1,n); | 
| 105 | in+=n; | 105 | in+=n; | 
| 106 | d0=(d0^ti[0])&mask0; | 106 | d0=(d0^ti[0])&mask0; | 
| @@ -132,7 +132,7 @@ void des_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, | |||
| 132 | l-=n; | 132 | l-=n; | 
| 133 | ti[0]=v0; | 133 | ti[0]=v0; | 
| 134 | ti[1]=v1; | 134 | ti[1]=v1; | 
| 135 | des_encrypt((DES_LONG *)ti,schedule,DES_ENCRYPT); | 135 | des_encrypt1((DES_LONG *)ti,schedule,DES_ENCRYPT); | 
| 136 | c2ln(in,d0,d1,n); | 136 | c2ln(in,d0,d1,n); | 
| 137 | in+=n; | 137 | in+=n; | 
| 138 | /* 30-08-94 - eay - changed because l>>32 and | 138 | /* 30-08-94 - eay - changed because l>>32 and | 
| diff --git a/src/lib/libssl/src/crypto/des/des.h b/src/lib/libssl/src/crypto/des/des.h index 2db9748cb4..6b8a7ee11b 100644 --- a/src/lib/libssl/src/crypto/des/des.h +++ b/src/lib/libssl/src/crypto/des/des.h | |||
| @@ -147,14 +147,14 @@ void des_ecb_encrypt(const_des_cblock *input,des_cblock *output, | |||
| 147 | Data is a pointer to 2 unsigned long's and ks is the | 147 | Data is a pointer to 2 unsigned long's and ks is the | 
| 148 | des_key_schedule to use. enc, is non zero specifies encryption, | 148 | des_key_schedule to use. enc, is non zero specifies encryption, | 
| 149 | zero if decryption. */ | 149 | zero if decryption. */ | 
| 150 | void des_encrypt(DES_LONG *data,des_key_schedule ks, int enc); | 150 | void des_encrypt1(DES_LONG *data,des_key_schedule ks, int enc); | 
| 151 | 151 | ||
| 152 | /* This functions is the same as des_encrypt() except that the DES | 152 | /* This functions is the same as des_encrypt1() except that the DES | 
| 153 | initial permutation (IP) and final permutation (FP) have been left | 153 | initial permutation (IP) and final permutation (FP) have been left | 
| 154 | out. As for des_encrypt(), you should not use this function. | 154 | out. As for des_encrypt1(), you should not use this function. | 
| 155 | It is used by the routines in the library that implement triple DES. | 155 | It is used by the routines in the library that implement triple DES. | 
| 156 | IP() des_encrypt2() des_encrypt2() des_encrypt2() FP() is the same | 156 | IP() des_encrypt2() des_encrypt2() des_encrypt2() FP() is the same | 
| 157 | as des_encrypt() des_encrypt() des_encrypt() except faster :-). */ | 157 | as des_encrypt1() des_encrypt1() des_encrypt1() except faster :-). */ | 
| 158 | void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc); | 158 | void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc); | 
| 159 | 159 | ||
| 160 | void des_encrypt3(DES_LONG *data, des_key_schedule ks1, | 160 | void des_encrypt3(DES_LONG *data, des_key_schedule ks1, | 
| diff --git a/src/lib/libssl/src/crypto/des/des_enc.c b/src/lib/libssl/src/crypto/des/des_enc.c index 8311e10628..0bd9fa39bc 100644 --- a/src/lib/libssl/src/crypto/des/des_enc.c +++ b/src/lib/libssl/src/crypto/des/des_enc.c | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | 58 | ||
| 59 | #include "des_locl.h" | 59 | #include "des_locl.h" | 
| 60 | 60 | ||
| 61 | void des_encrypt(DES_LONG *data, des_key_schedule ks, int enc) | 61 | void des_encrypt1(DES_LONG *data, des_key_schedule ks, int enc) | 
| 62 | { | 62 | { | 
| 63 | register DES_LONG l,r,t,u; | 63 | register DES_LONG l,r,t,u; | 
| 64 | #ifdef DES_PTR | 64 | #ifdef DES_PTR | 
| diff --git a/src/lib/libssl/src/crypto/des/des_opts.c b/src/lib/libssl/src/crypto/des/des_opts.c index b2ca7ac31d..138ee1c6b4 100644 --- a/src/lib/libssl/src/crypto/des/des_opts.c +++ b/src/lib/libssl/src/crypto/des/des_opts.c | |||
| @@ -118,7 +118,7 @@ extern void exit(); | |||
| 118 | #undef DES_RISC2 | 118 | #undef DES_RISC2 | 
| 119 | #undef DES_PTR | 119 | #undef DES_PTR | 
| 120 | #undef D_ENCRYPT | 120 | #undef D_ENCRYPT | 
| 121 | #define des_encrypt des_encrypt_u4_cisc_idx | 121 | #define des_encrypt1 des_encrypt_u4_cisc_idx | 
| 122 | #define des_encrypt2 des_encrypt2_u4_cisc_idx | 122 | #define des_encrypt2 des_encrypt2_u4_cisc_idx | 
| 123 | #define des_encrypt3 des_encrypt3_u4_cisc_idx | 123 | #define des_encrypt3 des_encrypt3_u4_cisc_idx | 
| 124 | #define des_decrypt3 des_decrypt3_u4_cisc_idx | 124 | #define des_decrypt3 des_decrypt3_u4_cisc_idx | 
| @@ -130,11 +130,11 @@ extern void exit(); | |||
| 130 | #undef DES_RISC2 | 130 | #undef DES_RISC2 | 
| 131 | #undef DES_PTR | 131 | #undef DES_PTR | 
| 132 | #undef D_ENCRYPT | 132 | #undef D_ENCRYPT | 
| 133 | #undef des_encrypt | 133 | #undef des_encrypt1 | 
| 134 | #undef des_encrypt2 | 134 | #undef des_encrypt2 | 
| 135 | #undef des_encrypt3 | 135 | #undef des_encrypt3 | 
| 136 | #undef des_decrypt3 | 136 | #undef des_decrypt3 | 
| 137 | #define des_encrypt des_encrypt_u16_cisc_idx | 137 | #define des_encrypt1 des_encrypt_u16_cisc_idx | 
| 138 | #define des_encrypt2 des_encrypt2_u16_cisc_idx | 138 | #define des_encrypt2 des_encrypt2_u16_cisc_idx | 
| 139 | #define des_encrypt3 des_encrypt3_u16_cisc_idx | 139 | #define des_encrypt3 des_encrypt3_u16_cisc_idx | 
| 140 | #define des_decrypt3 des_decrypt3_u16_cisc_idx | 140 | #define des_decrypt3 des_decrypt3_u16_cisc_idx | 
| @@ -146,11 +146,11 @@ extern void exit(); | |||
| 146 | #undef DES_RISC2 | 146 | #undef DES_RISC2 | 
| 147 | #undef DES_PTR | 147 | #undef DES_PTR | 
| 148 | #undef D_ENCRYPT | 148 | #undef D_ENCRYPT | 
| 149 | #undef des_encrypt | 149 | #undef des_encrypt1 | 
| 150 | #undef des_encrypt2 | 150 | #undef des_encrypt2 | 
| 151 | #undef des_encrypt3 | 151 | #undef des_encrypt3 | 
| 152 | #undef des_decrypt3 | 152 | #undef des_decrypt3 | 
| 153 | #define des_encrypt des_encrypt_u4_risc1_idx | 153 | #define des_encrypt1 des_encrypt_u4_risc1_idx | 
| 154 | #define des_encrypt2 des_encrypt2_u4_risc1_idx | 154 | #define des_encrypt2 des_encrypt2_u4_risc1_idx | 
| 155 | #define des_encrypt3 des_encrypt3_u4_risc1_idx | 155 | #define des_encrypt3 des_encrypt3_u4_risc1_idx | 
| 156 | #define des_decrypt3 des_decrypt3_u4_risc1_idx | 156 | #define des_decrypt3 des_decrypt3_u4_risc1_idx | 
| @@ -166,11 +166,11 @@ extern void exit(); | |||
| 166 | #define DES_RISC2 | 166 | #define DES_RISC2 | 
| 167 | #undef DES_PTR | 167 | #undef DES_PTR | 
| 168 | #undef D_ENCRYPT | 168 | #undef D_ENCRYPT | 
| 169 | #undef des_encrypt | 169 | #undef des_encrypt1 | 
| 170 | #undef des_encrypt2 | 170 | #undef des_encrypt2 | 
| 171 | #undef des_encrypt3 | 171 | #undef des_encrypt3 | 
| 172 | #undef des_decrypt3 | 172 | #undef des_decrypt3 | 
| 173 | #define des_encrypt des_encrypt_u4_risc2_idx | 173 | #define des_encrypt1 des_encrypt_u4_risc2_idx | 
| 174 | #define des_encrypt2 des_encrypt2_u4_risc2_idx | 174 | #define des_encrypt2 des_encrypt2_u4_risc2_idx | 
| 175 | #define des_encrypt3 des_encrypt3_u4_risc2_idx | 175 | #define des_encrypt3 des_encrypt3_u4_risc2_idx | 
| 176 | #define des_decrypt3 des_decrypt3_u4_risc2_idx | 176 | #define des_decrypt3 des_decrypt3_u4_risc2_idx | 
| @@ -182,11 +182,11 @@ extern void exit(); | |||
| 182 | #undef DES_RISC2 | 182 | #undef DES_RISC2 | 
| 183 | #undef DES_PTR | 183 | #undef DES_PTR | 
| 184 | #undef D_ENCRYPT | 184 | #undef D_ENCRYPT | 
| 185 | #undef des_encrypt | 185 | #undef des_encrypt1 | 
| 186 | #undef des_encrypt2 | 186 | #undef des_encrypt2 | 
| 187 | #undef des_encrypt3 | 187 | #undef des_encrypt3 | 
| 188 | #undef des_decrypt3 | 188 | #undef des_decrypt3 | 
| 189 | #define des_encrypt des_encrypt_u16_risc1_idx | 189 | #define des_encrypt1 des_encrypt_u16_risc1_idx | 
| 190 | #define des_encrypt2 des_encrypt2_u16_risc1_idx | 190 | #define des_encrypt2 des_encrypt2_u16_risc1_idx | 
| 191 | #define des_encrypt3 des_encrypt3_u16_risc1_idx | 191 | #define des_encrypt3 des_encrypt3_u16_risc1_idx | 
| 192 | #define des_decrypt3 des_decrypt3_u16_risc1_idx | 192 | #define des_decrypt3 des_decrypt3_u16_risc1_idx | 
| @@ -198,11 +198,11 @@ extern void exit(); | |||
| 198 | #define DES_RISC2 | 198 | #define DES_RISC2 | 
| 199 | #undef DES_PTR | 199 | #undef DES_PTR | 
| 200 | #undef D_ENCRYPT | 200 | #undef D_ENCRYPT | 
| 201 | #undef des_encrypt | 201 | #undef des_encrypt1 | 
| 202 | #undef des_encrypt2 | 202 | #undef des_encrypt2 | 
| 203 | #undef des_encrypt3 | 203 | #undef des_encrypt3 | 
| 204 | #undef des_decrypt3 | 204 | #undef des_decrypt3 | 
| 205 | #define des_encrypt des_encrypt_u16_risc2_idx | 205 | #define des_encrypt1 des_encrypt_u16_risc2_idx | 
| 206 | #define des_encrypt2 des_encrypt2_u16_risc2_idx | 206 | #define des_encrypt2 des_encrypt2_u16_risc2_idx | 
| 207 | #define des_encrypt3 des_encrypt3_u16_risc2_idx | 207 | #define des_encrypt3 des_encrypt3_u16_risc2_idx | 
| 208 | #define des_decrypt3 des_decrypt3_u16_risc2_idx | 208 | #define des_decrypt3 des_decrypt3_u16_risc2_idx | 
| @@ -218,11 +218,11 @@ extern void exit(); | |||
| 218 | #undef DES_RISC2 | 218 | #undef DES_RISC2 | 
| 219 | #define DES_PTR | 219 | #define DES_PTR | 
| 220 | #undef D_ENCRYPT | 220 | #undef D_ENCRYPT | 
| 221 | #undef des_encrypt | 221 | #undef des_encrypt1 | 
| 222 | #undef des_encrypt2 | 222 | #undef des_encrypt2 | 
| 223 | #undef des_encrypt3 | 223 | #undef des_encrypt3 | 
| 224 | #undef des_decrypt3 | 224 | #undef des_decrypt3 | 
| 225 | #define des_encrypt des_encrypt_u4_cisc_ptr | 225 | #define des_encrypt1 des_encrypt_u4_cisc_ptr | 
| 226 | #define des_encrypt2 des_encrypt2_u4_cisc_ptr | 226 | #define des_encrypt2 des_encrypt2_u4_cisc_ptr | 
| 227 | #define des_encrypt3 des_encrypt3_u4_cisc_ptr | 227 | #define des_encrypt3 des_encrypt3_u4_cisc_ptr | 
| 228 | #define des_decrypt3 des_decrypt3_u4_cisc_ptr | 228 | #define des_decrypt3 des_decrypt3_u4_cisc_ptr | 
| @@ -234,11 +234,11 @@ extern void exit(); | |||
| 234 | #undef DES_RISC2 | 234 | #undef DES_RISC2 | 
| 235 | #define DES_PTR | 235 | #define DES_PTR | 
| 236 | #undef D_ENCRYPT | 236 | #undef D_ENCRYPT | 
| 237 | #undef des_encrypt | 237 | #undef des_encrypt1 | 
| 238 | #undef des_encrypt2 | 238 | #undef des_encrypt2 | 
| 239 | #undef des_encrypt3 | 239 | #undef des_encrypt3 | 
| 240 | #undef des_decrypt3 | 240 | #undef des_decrypt3 | 
| 241 | #define des_encrypt des_encrypt_u16_cisc_ptr | 241 | #define des_encrypt1 des_encrypt_u16_cisc_ptr | 
| 242 | #define des_encrypt2 des_encrypt2_u16_cisc_ptr | 242 | #define des_encrypt2 des_encrypt2_u16_cisc_ptr | 
| 243 | #define des_encrypt3 des_encrypt3_u16_cisc_ptr | 243 | #define des_encrypt3 des_encrypt3_u16_cisc_ptr | 
| 244 | #define des_decrypt3 des_decrypt3_u16_cisc_ptr | 244 | #define des_decrypt3 des_decrypt3_u16_cisc_ptr | 
| @@ -250,11 +250,11 @@ extern void exit(); | |||
| 250 | #undef DES_RISC2 | 250 | #undef DES_RISC2 | 
| 251 | #define DES_PTR | 251 | #define DES_PTR | 
| 252 | #undef D_ENCRYPT | 252 | #undef D_ENCRYPT | 
| 253 | #undef des_encrypt | 253 | #undef des_encrypt1 | 
| 254 | #undef des_encrypt2 | 254 | #undef des_encrypt2 | 
| 255 | #undef des_encrypt3 | 255 | #undef des_encrypt3 | 
| 256 | #undef des_decrypt3 | 256 | #undef des_decrypt3 | 
| 257 | #define des_encrypt des_encrypt_u4_risc1_ptr | 257 | #define des_encrypt1 des_encrypt_u4_risc1_ptr | 
| 258 | #define des_encrypt2 des_encrypt2_u4_risc1_ptr | 258 | #define des_encrypt2 des_encrypt2_u4_risc1_ptr | 
| 259 | #define des_encrypt3 des_encrypt3_u4_risc1_ptr | 259 | #define des_encrypt3 des_encrypt3_u4_risc1_ptr | 
| 260 | #define des_decrypt3 des_decrypt3_u4_risc1_ptr | 260 | #define des_decrypt3 des_decrypt3_u4_risc1_ptr | 
| @@ -270,11 +270,11 @@ extern void exit(); | |||
| 270 | #define DES_RISC2 | 270 | #define DES_RISC2 | 
| 271 | #define DES_PTR | 271 | #define DES_PTR | 
| 272 | #undef D_ENCRYPT | 272 | #undef D_ENCRYPT | 
| 273 | #undef des_encrypt | 273 | #undef des_encrypt1 | 
| 274 | #undef des_encrypt2 | 274 | #undef des_encrypt2 | 
| 275 | #undef des_encrypt3 | 275 | #undef des_encrypt3 | 
| 276 | #undef des_decrypt3 | 276 | #undef des_decrypt3 | 
| 277 | #define des_encrypt des_encrypt_u4_risc2_ptr | 277 | #define des_encrypt1 des_encrypt_u4_risc2_ptr | 
| 278 | #define des_encrypt2 des_encrypt2_u4_risc2_ptr | 278 | #define des_encrypt2 des_encrypt2_u4_risc2_ptr | 
| 279 | #define des_encrypt3 des_encrypt3_u4_risc2_ptr | 279 | #define des_encrypt3 des_encrypt3_u4_risc2_ptr | 
| 280 | #define des_decrypt3 des_decrypt3_u4_risc2_ptr | 280 | #define des_decrypt3 des_decrypt3_u4_risc2_ptr | 
| @@ -286,11 +286,11 @@ extern void exit(); | |||
| 286 | #undef DES_RISC2 | 286 | #undef DES_RISC2 | 
| 287 | #define DES_PTR | 287 | #define DES_PTR | 
| 288 | #undef D_ENCRYPT | 288 | #undef D_ENCRYPT | 
| 289 | #undef des_encrypt | 289 | #undef des_encrypt1 | 
| 290 | #undef des_encrypt2 | 290 | #undef des_encrypt2 | 
| 291 | #undef des_encrypt3 | 291 | #undef des_encrypt3 | 
| 292 | #undef des_decrypt3 | 292 | #undef des_decrypt3 | 
| 293 | #define des_encrypt des_encrypt_u16_risc1_ptr | 293 | #define des_encrypt1 des_encrypt_u16_risc1_ptr | 
| 294 | #define des_encrypt2 des_encrypt2_u16_risc1_ptr | 294 | #define des_encrypt2 des_encrypt2_u16_risc1_ptr | 
| 295 | #define des_encrypt3 des_encrypt3_u16_risc1_ptr | 295 | #define des_encrypt3 des_encrypt3_u16_risc1_ptr | 
| 296 | #define des_decrypt3 des_decrypt3_u16_risc1_ptr | 296 | #define des_decrypt3 des_decrypt3_u16_risc1_ptr | 
| @@ -302,11 +302,11 @@ extern void exit(); | |||
| 302 | #define DES_RISC2 | 302 | #define DES_RISC2 | 
| 303 | #define DES_PTR | 303 | #define DES_PTR | 
| 304 | #undef D_ENCRYPT | 304 | #undef D_ENCRYPT | 
| 305 | #undef des_encrypt | 305 | #undef des_encrypt1 | 
| 306 | #undef des_encrypt2 | 306 | #undef des_encrypt2 | 
| 307 | #undef des_encrypt3 | 307 | #undef des_encrypt3 | 
| 308 | #undef des_decrypt3 | 308 | #undef des_decrypt3 | 
| 309 | #define des_encrypt des_encrypt_u16_risc2_ptr | 309 | #define des_encrypt1 des_encrypt_u16_risc2_ptr | 
| 310 | #define des_encrypt2 des_encrypt2_u16_risc2_ptr | 310 | #define des_encrypt2 des_encrypt2_u16_risc2_ptr | 
| 311 | #define des_encrypt3 des_encrypt3_u16_risc2_ptr | 311 | #define des_encrypt3 des_encrypt3_u16_risc2_ptr | 
| 312 | #define des_decrypt3 des_decrypt3_u16_risc2_ptr | 312 | #define des_decrypt3 des_decrypt3_u16_risc2_ptr | 
| @@ -453,7 +453,7 @@ int main(int argc, char **argv) | |||
| 453 | count*=2; | 453 | count*=2; | 
| 454 | Time_F(START); | 454 | Time_F(START); | 
| 455 | for (i=count; i; i--) | 455 | for (i=count; i; i--) | 
| 456 | des_encrypt(data,&(sch[0]),DES_ENCRYPT); | 456 | des_encrypt1(data,&(sch[0]),DES_ENCRYPT); | 
| 457 | d=Time_F(STOP); | 457 | d=Time_F(STOP); | 
| 458 | } while (d < 3.0); | 458 | } while (d < 3.0); | 
| 459 | ca=count; | 459 | ca=count; | 
| diff --git a/src/lib/libssl/src/crypto/des/dess.cpp b/src/lib/libssl/src/crypto/des/dess.cpp index 753e67ad9b..5549bab90a 100644 --- a/src/lib/libssl/src/crypto/des/dess.cpp +++ b/src/lib/libssl/src/crypto/des/dess.cpp | |||
| @@ -45,19 +45,19 @@ void main(int argc,char *argv[]) | |||
| 45 | { | 45 | { | 
| 46 | for (i=0; i<1000; i++) /**/ | 46 | for (i=0; i<1000; i++) /**/ | 
| 47 | { | 47 | { | 
| 48 | des_encrypt(&data[0],key,1); | 48 | des_encrypt1(&data[0],key,1); | 
| 49 | GetTSC(s1); | 49 | GetTSC(s1); | 
| 50 | des_encrypt(&data[0],key,1); | 50 | des_encrypt1(&data[0],key,1); | 
| 51 | des_encrypt(&data[0],key,1); | 51 | des_encrypt1(&data[0],key,1); | 
| 52 | des_encrypt(&data[0],key,1); | 52 | des_encrypt1(&data[0],key,1); | 
| 53 | GetTSC(e1); | 53 | GetTSC(e1); | 
| 54 | GetTSC(s2); | 54 | GetTSC(s2); | 
| 55 | des_encrypt(&data[0],key,1); | 55 | des_encrypt1(&data[0],key,1); | 
| 56 | des_encrypt(&data[0],key,1); | 56 | des_encrypt1(&data[0],key,1); | 
| 57 | des_encrypt(&data[0],key,1); | 57 | des_encrypt1(&data[0],key,1); | 
| 58 | des_encrypt(&data[0],key,1); | 58 | des_encrypt1(&data[0],key,1); | 
| 59 | GetTSC(e2); | 59 | GetTSC(e2); | 
| 60 | des_encrypt(&data[0],key,1); | 60 | des_encrypt1(&data[0],key,1); | 
| 61 | } | 61 | } | 
| 62 | 62 | ||
| 63 | printf("des %d %d (%d)\n", | 63 | printf("des %d %d (%d)\n", | 
| diff --git a/src/lib/libssl/src/crypto/des/ecb_enc.c b/src/lib/libssl/src/crypto/des/ecb_enc.c index b261a8aad9..d481327ef3 100644 --- a/src/lib/libssl/src/crypto/des/ecb_enc.c +++ b/src/lib/libssl/src/crypto/des/ecb_enc.c | |||
| @@ -114,7 +114,7 @@ void des_ecb_encrypt(const_des_cblock *input, des_cblock *output, | |||
| 114 | 114 | ||
| 115 | c2l(in,l); ll[0]=l; | 115 | c2l(in,l); ll[0]=l; | 
| 116 | c2l(in,l); ll[1]=l; | 116 | c2l(in,l); ll[1]=l; | 
| 117 | des_encrypt(ll,ks,enc); | 117 | des_encrypt1(ll,ks,enc); | 
| 118 | l=ll[0]; l2c(l,out); | 118 | l=ll[0]; l2c(l,out); | 
| 119 | l=ll[1]; l2c(l,out); | 119 | l=ll[1]; l2c(l,out); | 
| 120 | l=ll[0]=ll[1]=0; | 120 | l=ll[0]=ll[1]=0; | 
| diff --git a/src/lib/libssl/src/crypto/des/ede_cbcm_enc.c b/src/lib/libssl/src/crypto/des/ede_cbcm_enc.c index c53062481d..b98f7e17af 100644 --- a/src/lib/libssl/src/crypto/des/ede_cbcm_enc.c +++ b/src/lib/libssl/src/crypto/des/ede_cbcm_enc.c | |||
| @@ -95,7 +95,7 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 95 | { | 95 | { | 
| 96 | tin[0]=m0; | 96 | tin[0]=m0; | 
| 97 | tin[1]=m1; | 97 | tin[1]=m1; | 
| 98 | des_encrypt(tin,ks3,1); | 98 | des_encrypt1(tin,ks3,1); | 
| 99 | m0=tin[0]; | 99 | m0=tin[0]; | 
| 100 | m1=tin[1]; | 100 | m1=tin[1]; | 
| 101 | 101 | ||
| @@ -113,13 +113,13 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 113 | 113 | ||
| 114 | tin[0]=tin0; | 114 | tin[0]=tin0; | 
| 115 | tin[1]=tin1; | 115 | tin[1]=tin1; | 
| 116 | des_encrypt(tin,ks1,1); | 116 | des_encrypt1(tin,ks1,1); | 
| 117 | tin[0]^=m0; | 117 | tin[0]^=m0; | 
| 118 | tin[1]^=m1; | 118 | tin[1]^=m1; | 
| 119 | des_encrypt(tin,ks2,0); | 119 | des_encrypt1(tin,ks2,0); | 
| 120 | tin[0]^=m0; | 120 | tin[0]^=m0; | 
| 121 | tin[1]^=m1; | 121 | tin[1]^=m1; | 
| 122 | des_encrypt(tin,ks1,1); | 122 | des_encrypt1(tin,ks1,1); | 
| 123 | tout0=tin[0]; | 123 | tout0=tin[0]; | 
| 124 | tout1=tin[1]; | 124 | tout1=tin[1]; | 
| 125 | 125 | ||
| @@ -146,7 +146,7 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 146 | { | 146 | { | 
| 147 | tin[0]=m0; | 147 | tin[0]=m0; | 
| 148 | tin[1]=m1; | 148 | tin[1]=m1; | 
| 149 | des_encrypt(tin,ks3,1); | 149 | des_encrypt1(tin,ks3,1); | 
| 150 | m0=tin[0]; | 150 | m0=tin[0]; | 
| 151 | m1=tin[1]; | 151 | m1=tin[1]; | 
| 152 | 152 | ||
| @@ -158,13 +158,13 @@ void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, | |||
| 158 | 158 | ||
| 159 | tin[0]=tin0; | 159 | tin[0]=tin0; | 
| 160 | tin[1]=tin1; | 160 | tin[1]=tin1; | 
| 161 | des_encrypt(tin,ks1,0); | 161 | des_encrypt1(tin,ks1,0); | 
| 162 | tin[0]^=m0; | 162 | tin[0]^=m0; | 
| 163 | tin[1]^=m1; | 163 | tin[1]^=m1; | 
| 164 | des_encrypt(tin,ks2,1); | 164 | des_encrypt1(tin,ks2,1); | 
| 165 | tin[0]^=m0; | 165 | tin[0]^=m0; | 
| 166 | tin[1]^=m1; | 166 | tin[1]^=m1; | 
| 167 | des_encrypt(tin,ks1,0); | 167 | des_encrypt1(tin,ks1,0); | 
| 168 | tout0=tin[0]; | 168 | tout0=tin[0]; | 
| 169 | tout1=tin[1]; | 169 | tout1=tin[1]; | 
| 170 | 170 | ||
| diff --git a/src/lib/libssl/src/crypto/des/ncbc_enc.c b/src/lib/libssl/src/crypto/des/ncbc_enc.c index 3b681691a9..b8db07b199 100644 --- a/src/lib/libssl/src/crypto/des/ncbc_enc.c +++ b/src/lib/libssl/src/crypto/des/ncbc_enc.c | |||
| @@ -89,7 +89,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 89 | c2l(in,tin1); | 89 | c2l(in,tin1); | 
| 90 | tin0^=tout0; tin[0]=tin0; | 90 | tin0^=tout0; tin[0]=tin0; | 
| 91 | tin1^=tout1; tin[1]=tin1; | 91 | tin1^=tout1; tin[1]=tin1; | 
| 92 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 92 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 93 | tout0=tin[0]; l2c(tout0,out); | 93 | tout0=tin[0]; l2c(tout0,out); | 
| 94 | tout1=tin[1]; l2c(tout1,out); | 94 | tout1=tin[1]; l2c(tout1,out); | 
| 95 | } | 95 | } | 
| @@ -98,7 +98,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 98 | c2ln(in,tin0,tin1,l+8); | 98 | c2ln(in,tin0,tin1,l+8); | 
| 99 | tin0^=tout0; tin[0]=tin0; | 99 | tin0^=tout0; tin[0]=tin0; | 
| 100 | tin1^=tout1; tin[1]=tin1; | 100 | tin1^=tout1; tin[1]=tin1; | 
| 101 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 101 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 102 | tout0=tin[0]; l2c(tout0,out); | 102 | tout0=tin[0]; l2c(tout0,out); | 
| 103 | tout1=tin[1]; l2c(tout1,out); | 103 | tout1=tin[1]; l2c(tout1,out); | 
| 104 | } | 104 | } | 
| @@ -116,7 +116,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 116 | { | 116 | { | 
| 117 | c2l(in,tin0); tin[0]=tin0; | 117 | c2l(in,tin0); tin[0]=tin0; | 
| 118 | c2l(in,tin1); tin[1]=tin1; | 118 | c2l(in,tin1); tin[1]=tin1; | 
| 119 | des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT); | 119 | des_encrypt1((DES_LONG *)tin,schedule,DES_DECRYPT); | 
| 120 | tout0=tin[0]^xor0; | 120 | tout0=tin[0]^xor0; | 
| 121 | tout1=tin[1]^xor1; | 121 | tout1=tin[1]^xor1; | 
| 122 | l2c(tout0,out); | 122 | l2c(tout0,out); | 
| @@ -128,7 +128,7 @@ void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length, | |||
| 128 | { | 128 | { | 
| 129 | c2l(in,tin0); tin[0]=tin0; | 129 | c2l(in,tin0); tin[0]=tin0; | 
| 130 | c2l(in,tin1); tin[1]=tin1; | 130 | c2l(in,tin1); tin[1]=tin1; | 
| 131 | des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT); | 131 | des_encrypt1((DES_LONG *)tin,schedule,DES_DECRYPT); | 
| 132 | tout0=tin[0]^xor0; | 132 | tout0=tin[0]^xor0; | 
| 133 | tout1=tin[1]^xor1; | 133 | tout1=tin[1]^xor1; | 
| 134 | l2cn(tout0,tout1,out,l+8); | 134 | l2cn(tout0,tout1,out,l+8); | 
| diff --git a/src/lib/libssl/src/crypto/des/ofb64enc.c b/src/lib/libssl/src/crypto/des/ofb64enc.c index 64953959ca..1a1d1f1ac4 100644 --- a/src/lib/libssl/src/crypto/des/ofb64enc.c +++ b/src/lib/libssl/src/crypto/des/ofb64enc.c | |||
| @@ -87,7 +87,7 @@ void des_ofb64_encrypt(register const unsigned char *in, | |||
| 87 | { | 87 | { | 
| 88 | if (n == 0) | 88 | if (n == 0) | 
| 89 | { | 89 | { | 
| 90 | des_encrypt(ti,schedule,DES_ENCRYPT); | 90 | des_encrypt1(ti,schedule,DES_ENCRYPT); | 
| 91 | dp=d; | 91 | dp=d; | 
| 92 | t=ti[0]; l2c(t,dp); | 92 | t=ti[0]; l2c(t,dp); | 
| 93 | t=ti[1]; l2c(t,dp); | 93 | t=ti[1]; l2c(t,dp); | 
| diff --git a/src/lib/libssl/src/crypto/des/ofb_enc.c b/src/lib/libssl/src/crypto/des/ofb_enc.c index a8f425a575..70493e632c 100644 --- a/src/lib/libssl/src/crypto/des/ofb_enc.c +++ b/src/lib/libssl/src/crypto/des/ofb_enc.c | |||
| @@ -101,7 +101,7 @@ void des_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, | |||
| 101 | { | 101 | { | 
| 102 | ti[0]=v0; | 102 | ti[0]=v0; | 
| 103 | ti[1]=v1; | 103 | ti[1]=v1; | 
| 104 | des_encrypt((DES_LONG *)ti,schedule,DES_ENCRYPT); | 104 | des_encrypt1((DES_LONG *)ti,schedule,DES_ENCRYPT); | 
| 105 | vv0=ti[0]; | 105 | vv0=ti[0]; | 
| 106 | vv1=ti[1]; | 106 | vv1=ti[1]; | 
| 107 | c2ln(in,d0,d1,n); | 107 | c2ln(in,d0,d1,n); | 
| diff --git a/src/lib/libssl/src/crypto/des/pcbc_enc.c b/src/lib/libssl/src/crypto/des/pcbc_enc.c index dd69a26d4a..5b987f074d 100644 --- a/src/lib/libssl/src/crypto/des/pcbc_enc.c +++ b/src/lib/libssl/src/crypto/des/pcbc_enc.c | |||
| @@ -85,7 +85,7 @@ void des_pcbc_encrypt(const unsigned char *input, unsigned char *output, | |||
| 85 | c2ln(in,sin0,sin1,length); | 85 | c2ln(in,sin0,sin1,length); | 
| 86 | tin[0]=sin0^xor0; | 86 | tin[0]=sin0^xor0; | 
| 87 | tin[1]=sin1^xor1; | 87 | tin[1]=sin1^xor1; | 
| 88 | des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT); | 88 | des_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT); | 
| 89 | tout0=tin[0]; | 89 | tout0=tin[0]; | 
| 90 | tout1=tin[1]; | 90 | tout1=tin[1]; | 
| 91 | xor0=sin0^tout0; | 91 | xor0=sin0^tout0; | 
| @@ -103,7 +103,7 @@ void des_pcbc_encrypt(const unsigned char *input, unsigned char *output, | |||
| 103 | c2l(in,sin1); | 103 | c2l(in,sin1); | 
| 104 | tin[0]=sin0; | 104 | tin[0]=sin0; | 
| 105 | tin[1]=sin1; | 105 | tin[1]=sin1; | 
| 106 | des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT); | 106 | des_encrypt1((DES_LONG *)tin,schedule,DES_DECRYPT); | 
| 107 | tout0=tin[0]^xor0; | 107 | tout0=tin[0]^xor0; | 
| 108 | tout1=tin[1]^xor1; | 108 | tout1=tin[1]^xor1; | 
| 109 | if (length >= 8) | 109 | if (length >= 8) | 
| diff --git a/src/lib/libssl/src/crypto/des/speed.c b/src/lib/libssl/src/crypto/des/speed.c index 814b86f4ae..1223edf290 100644 --- a/src/lib/libssl/src/crypto/des/speed.c +++ b/src/lib/libssl/src/crypto/des/speed.c | |||
| @@ -204,7 +204,7 @@ int main(int argc, char **argv) | |||
| 204 | count*=2; | 204 | count*=2; | 
| 205 | Time_F(START); | 205 | Time_F(START); | 
| 206 | for (i=count; i; i--) | 206 | for (i=count; i; i--) | 
| 207 | des_encrypt(data,&(sch[0]),DES_ENCRYPT); | 207 | des_encrypt1(data,&(sch[0]),DES_ENCRYPT); | 
| 208 | d=Time_F(STOP); | 208 | d=Time_F(STOP); | 
| 209 | } while (d < 3.0); | 209 | } while (d < 3.0); | 
| 210 | ca=count; | 210 | ca=count; | 
| @@ -241,7 +241,7 @@ int main(int argc, char **argv) | |||
| 241 | { | 241 | { | 
| 242 | DES_LONG data[2]; | 242 | DES_LONG data[2]; | 
| 243 | 243 | ||
| 244 | des_encrypt(data,&(sch[0]),DES_ENCRYPT); | 244 | des_encrypt1(data,&(sch[0]),DES_ENCRYPT); | 
| 245 | } | 245 | } | 
| 246 | d=Time_F(STOP); | 246 | d=Time_F(STOP); | 
| 247 | printf("%ld des_encrypt's in %.2f second\n",count,d); | 247 | printf("%ld des_encrypt's in %.2f second\n",count,d); | 
| diff --git a/src/lib/libssl/src/crypto/des/xcbc_enc.c b/src/lib/libssl/src/crypto/des/xcbc_enc.c index 51e17e6b8a..ccfede13ac 100644 --- a/src/lib/libssl/src/crypto/des/xcbc_enc.c +++ b/src/lib/libssl/src/crypto/des/xcbc_enc.c | |||
| @@ -138,7 +138,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 138 | c2l(in,tin1); | 138 | c2l(in,tin1); | 
| 139 | tin0^=tout0^inW0; tin[0]=tin0; | 139 | tin0^=tout0^inW0; tin[0]=tin0; | 
| 140 | tin1^=tout1^inW1; tin[1]=tin1; | 140 | tin1^=tout1^inW1; tin[1]=tin1; | 
| 141 | des_encrypt(tin,schedule,DES_ENCRYPT); | 141 | des_encrypt1(tin,schedule,DES_ENCRYPT); | 
| 142 | tout0=tin[0]^outW0; l2c(tout0,out); | 142 | tout0=tin[0]^outW0; l2c(tout0,out); | 
| 143 | tout1=tin[1]^outW1; l2c(tout1,out); | 143 | tout1=tin[1]^outW1; l2c(tout1,out); | 
| 144 | } | 144 | } | 
| @@ -147,7 +147,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 147 | c2ln(in,tin0,tin1,l+8); | 147 | c2ln(in,tin0,tin1,l+8); | 
| 148 | tin0^=tout0^inW0; tin[0]=tin0; | 148 | tin0^=tout0^inW0; tin[0]=tin0; | 
| 149 | tin1^=tout1^inW1; tin[1]=tin1; | 149 | tin1^=tout1^inW1; tin[1]=tin1; | 
| 150 | des_encrypt(tin,schedule,DES_ENCRYPT); | 150 | des_encrypt1(tin,schedule,DES_ENCRYPT); | 
| 151 | tout0=tin[0]^outW0; l2c(tout0,out); | 151 | tout0=tin[0]^outW0; l2c(tout0,out); | 
| 152 | tout1=tin[1]^outW1; l2c(tout1,out); | 152 | tout1=tin[1]^outW1; l2c(tout1,out); | 
| 153 | } | 153 | } | 
| @@ -163,7 +163,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 163 | { | 163 | { | 
| 164 | c2l(in,tin0); tin[0]=tin0^outW0; | 164 | c2l(in,tin0); tin[0]=tin0^outW0; | 
| 165 | c2l(in,tin1); tin[1]=tin1^outW1; | 165 | c2l(in,tin1); tin[1]=tin1^outW1; | 
| 166 | des_encrypt(tin,schedule,DES_DECRYPT); | 166 | des_encrypt1(tin,schedule,DES_DECRYPT); | 
| 167 | tout0=tin[0]^xor0^inW0; | 167 | tout0=tin[0]^xor0^inW0; | 
| 168 | tout1=tin[1]^xor1^inW1; | 168 | tout1=tin[1]^xor1^inW1; | 
| 169 | l2c(tout0,out); | 169 | l2c(tout0,out); | 
| @@ -175,7 +175,7 @@ void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, | |||
| 175 | { | 175 | { | 
| 176 | c2l(in,tin0); tin[0]=tin0^outW0; | 176 | c2l(in,tin0); tin[0]=tin0^outW0; | 
| 177 | c2l(in,tin1); tin[1]=tin1^outW1; | 177 | c2l(in,tin1); tin[1]=tin1^outW1; | 
| 178 | des_encrypt(tin,schedule,DES_DECRYPT); | 178 | des_encrypt1(tin,schedule,DES_DECRYPT); | 
| 179 | tout0=tin[0]^xor0^inW0; | 179 | tout0=tin[0]^xor0^inW0; | 
| 180 | tout1=tin[1]^xor1^inW1; | 180 | tout1=tin[1]^xor1^inW1; | 
| 181 | l2cn(tout0,tout1,out,l+8); | 181 | l2cn(tout0,tout1,out,l+8); | 
| diff --git a/src/lib/libssl/src/crypto/dh/Makefile.ssl b/src/lib/libssl/src/crypto/dh/Makefile.ssl index 88d0d1748b..bf4b47ca9a 100644 --- a/src/lib/libssl/src/crypto/dh/Makefile.ssl +++ b/src/lib/libssl/src/crypto/dh/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/dh/dh_key.c b/src/lib/libssl/src/crypto/dh/dh_key.c index 6915d79dcc..22b087b778 100644 --- a/src/lib/libssl/src/crypto/dh/dh_key.c +++ b/src/lib/libssl/src/crypto/dh/dh_key.c | |||
| @@ -100,7 +100,6 @@ DH_METHOD *DH_OpenSSL(void) | |||
| 100 | static int generate_key(DH *dh) | 100 | static int generate_key(DH *dh) | 
| 101 | { | 101 | { | 
| 102 | int ok=0; | 102 | int ok=0; | 
| 103 | unsigned int i; | ||
| 104 | BN_CTX ctx; | 103 | BN_CTX ctx; | 
| 105 | BN_MONT_CTX *mont; | 104 | BN_MONT_CTX *mont; | 
| 106 | BIGNUM *pub_key=NULL,*priv_key=NULL; | 105 | BIGNUM *pub_key=NULL,*priv_key=NULL; | 
| @@ -109,15 +108,11 @@ static int generate_key(DH *dh) | |||
| 109 | 108 | ||
| 110 | if (dh->priv_key == NULL) | 109 | if (dh->priv_key == NULL) | 
| 111 | { | 110 | { | 
| 112 | i=dh->length; | ||
| 113 | if (i == 0) | ||
| 114 | { | ||
| 115 | /* Make the number p-1 bits long */ | ||
| 116 | i=BN_num_bits(dh->p)-1; | ||
| 117 | } | ||
| 118 | priv_key=BN_new(); | 111 | priv_key=BN_new(); | 
| 119 | if (priv_key == NULL) goto err; | 112 | if (priv_key == NULL) goto err; | 
| 120 | if (!BN_rand(priv_key,i,0,0)) goto err; | 113 | do | 
| 114 | if (!BN_rand_range(priv_key, dh->p)) goto err; | ||
| 115 | while (BN_is_zero(priv_key)); | ||
| 121 | } | 116 | } | 
| 122 | else | 117 | else | 
| 123 | priv_key=dh->priv_key; | 118 | priv_key=dh->priv_key; | 
| diff --git a/src/lib/libssl/src/crypto/dh/dh_lib.c b/src/lib/libssl/src/crypto/dh/dh_lib.c index 66803b5565..96f118c153 100644 --- a/src/lib/libssl/src/crypto/dh/dh_lib.c +++ b/src/lib/libssl/src/crypto/dh/dh_lib.c | |||
| @@ -168,13 +168,13 @@ DH *DH_new_method(ENGINE *engine) | |||
| 168 | ret->method_mont_p=NULL; | 168 | ret->method_mont_p=NULL; | 
| 169 | ret->references = 1; | 169 | ret->references = 1; | 
| 170 | ret->flags=meth->flags; | 170 | ret->flags=meth->flags; | 
| 171 | CRYPTO_new_ex_data(dh_meth,ret,&ret->ex_data); | ||
| 171 | if ((meth->init != NULL) && !meth->init(ret)) | 172 | if ((meth->init != NULL) && !meth->init(ret)) | 
| 172 | { | 173 | { | 
| 174 | CRYPTO_free_ex_data(dh_meth,ret,&ret->ex_data); | ||
| 173 | OPENSSL_free(ret); | 175 | OPENSSL_free(ret); | 
| 174 | ret=NULL; | 176 | ret=NULL; | 
| 175 | } | 177 | } | 
| 176 | else | ||
| 177 | CRYPTO_new_ex_data(dh_meth,ret,&ret->ex_data); | ||
| 178 | return(ret); | 178 | return(ret); | 
| 179 | } | 179 | } | 
| 180 | 180 | ||
| @@ -196,12 +196,12 @@ void DH_free(DH *r) | |||
| 196 | } | 196 | } | 
| 197 | #endif | 197 | #endif | 
| 198 | 198 | ||
| 199 | CRYPTO_free_ex_data(dh_meth, r, &r->ex_data); | ||
| 200 | |||
| 201 | meth = ENGINE_get_DH(r->engine); | 199 | meth = ENGINE_get_DH(r->engine); | 
| 202 | if(meth->finish) meth->finish(r); | 200 | if(meth->finish) meth->finish(r); | 
| 203 | ENGINE_finish(r->engine); | 201 | ENGINE_finish(r->engine); | 
| 204 | 202 | ||
| 203 | CRYPTO_free_ex_data(dh_meth, r, &r->ex_data); | ||
| 204 | |||
| 205 | if (r->p != NULL) BN_clear_free(r->p); | 205 | if (r->p != NULL) BN_clear_free(r->p); | 
| 206 | if (r->g != NULL) BN_clear_free(r->g); | 206 | if (r->g != NULL) BN_clear_free(r->g); | 
| 207 | if (r->q != NULL) BN_clear_free(r->q); | 207 | if (r->q != NULL) BN_clear_free(r->q); | 
| diff --git a/src/lib/libssl/src/crypto/dsa/Makefile.ssl b/src/lib/libssl/src/crypto/dsa/Makefile.ssl index dac582be00..d88f596364 100644 --- a/src/lib/libssl/src/crypto/dsa/Makefile.ssl +++ b/src/lib/libssl/src/crypto/dsa/Makefile.ssl | |||
| @@ -41,7 +41,8 @@ all: lib | |||
| 41 | 41 | ||
| 42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) | 
| 43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(AR) $(LIB) $(LIBOBJ) | 
| 44 | $(RANLIB) $(LIB) | 44 | @echo You may get an error following this line. Please ignore. | 
| 45 | - $(RANLIB) $(LIB) | ||
| 45 | @touch lib | 46 | @touch lib | 
| 46 | 47 | ||
| 47 | files: | 48 | files: | 
| diff --git a/src/lib/libssl/src/crypto/dso/Makefile.ssl b/src/lib/libssl/src/crypto/dso/Makefile.ssl index a37f547482..48b36c8330 100644 --- a/src/lib/libssl/src/crypto/dso/Makefile.ssl +++ b/src/lib/libssl/src/crypto/dso/Makefile.ssl | |||
| @@ -41,7 +41,8 @@ all: lib | |||
| 41 | 41 | ||
| 42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) | 
| 43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(AR) $(LIB) $(LIBOBJ) | 
| 44 | $(RANLIB) $(LIB) | 44 | @echo You may get an error following this line. Please ignore. | 
| 45 | - $(RANLIB) $(LIB) | ||
| 45 | @touch lib | 46 | @touch lib | 
| 46 | 47 | ||
| 47 | files: | 48 | files: | 
| diff --git a/src/lib/libssl/src/crypto/dso/dso_dl.c b/src/lib/libssl/src/crypto/dso/dso_dl.c index 69810fc3bb..455bd66ecf 100644 --- a/src/lib/libssl/src/crypto/dso/dso_dl.c +++ b/src/lib/libssl/src/crypto/dso/dso_dl.c | |||
| @@ -82,7 +82,7 @@ static int dl_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr); | |||
| 82 | static int dl_init(DSO *dso); | 82 | static int dl_init(DSO *dso); | 
| 83 | static int dl_finish(DSO *dso); | 83 | static int dl_finish(DSO *dso); | 
| 84 | #endif | 84 | #endif | 
| 85 | static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg); | 85 | static long dl_ctrl(DSO *dso, int cmd, long larg, void *parg); | 
| 86 | 86 | ||
| 87 | static DSO_METHOD dso_meth_dl = { | 87 | static DSO_METHOD dso_meth_dl = { | 
| 88 | "OpenSSL 'dl' shared library method", | 88 | "OpenSSL 'dl' shared library method", | 
| @@ -111,6 +111,11 @@ DSO_METHOD *DSO_METHOD_dl(void) | |||
| 111 | * type so the cast is safe. | 111 | * type so the cast is safe. | 
| 112 | */ | 112 | */ | 
| 113 | 113 | ||
| 114 | #if defined(__hpux) | ||
| 115 | static const char extension[] = ".sl"; | ||
| 116 | #else | ||
| 117 | static const char extension[] = ".so"; | ||
| 118 | #endif | ||
| 114 | static int dl_load(DSO *dso, const char *filename) | 119 | static int dl_load(DSO *dso, const char *filename) | 
| 115 | { | 120 | { | 
| 116 | shl_t ptr; | 121 | shl_t ptr; | 
| @@ -118,12 +123,12 @@ static int dl_load(DSO *dso, const char *filename) | |||
| 118 | int len; | 123 | int len; | 
| 119 | 124 | ||
| 120 | /* The same comment as in dlfcn_load applies here. bleurgh. */ | 125 | /* The same comment as in dlfcn_load applies here. bleurgh. */ | 
| 121 | len = strlen(filename); | 126 | len = strlen(filename) + strlen(extension); | 
| 122 | if((dso->flags & DSO_FLAG_NAME_TRANSLATION) && | 127 | if((dso->flags & DSO_FLAG_NAME_TRANSLATION) && | 
| 123 | (len + 6 < DSO_MAX_TRANSLATED_SIZE) && | 128 | (len + 3 < DSO_MAX_TRANSLATED_SIZE) && | 
| 124 | (strstr(filename, "/") == NULL)) | 129 | (strstr(filename, "/") == NULL)) | 
| 125 | { | 130 | { | 
| 126 | sprintf(translated, "lib%s.so", filename); | 131 | sprintf(translated, "lib%s%s", filename, extension); | 
| 127 | ptr = shl_load(translated, BIND_IMMEDIATE, NULL); | 132 | ptr = shl_load(translated, BIND_IMMEDIATE, NULL); | 
| 128 | } | 133 | } | 
| 129 | else | 134 | else | 
| @@ -187,7 +192,7 @@ static void *dl_bind_var(DSO *dso, const char *symname) | |||
| 187 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_NULL_HANDLE); | 192 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_NULL_HANDLE); | 
| 188 | return(NULL); | 193 | return(NULL); | 
| 189 | } | 194 | } | 
| 190 | if (shl_findsym(ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 195 | if (shl_findsym(&ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 
| 191 | { | 196 | { | 
| 192 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_SYM_FAILURE); | 197 | DSOerr(DSO_F_DL_BIND_VAR,DSO_R_SYM_FAILURE); | 
| 193 | return(NULL); | 198 | return(NULL); | 
| @@ -216,7 +221,7 @@ static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname) | |||
| 216 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_NULL_HANDLE); | 221 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_NULL_HANDLE); | 
| 217 | return(NULL); | 222 | return(NULL); | 
| 218 | } | 223 | } | 
| 219 | if (shl_findsym(ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 224 | if (shl_findsym(&ptr, symname, TYPE_UNDEFINED, &sym) < 0) | 
| 220 | { | 225 | { | 
| 221 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_SYM_FAILURE); | 226 | DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_SYM_FAILURE); | 
| 222 | return(NULL); | 227 | return(NULL); | 
| @@ -224,7 +229,7 @@ static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname) | |||
| 224 | return((DSO_FUNC_TYPE)sym); | 229 | return((DSO_FUNC_TYPE)sym); | 
| 225 | } | 230 | } | 
| 226 | 231 | ||
| 227 | static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg) | 232 | static long dl_ctrl(DSO *dso, int cmd, long larg, void *parg) | 
| 228 | { | 233 | { | 
| 229 | if(dso == NULL) | 234 | if(dso == NULL) | 
| 230 | { | 235 | { | 
| @@ -236,10 +241,10 @@ static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg) | |||
| 236 | case DSO_CTRL_GET_FLAGS: | 241 | case DSO_CTRL_GET_FLAGS: | 
| 237 | return dso->flags; | 242 | return dso->flags; | 
| 238 | case DSO_CTRL_SET_FLAGS: | 243 | case DSO_CTRL_SET_FLAGS: | 
| 239 | dso->flags = (int)larg; | 244 | dso->flags = larg; | 
| 240 | return(0); | 245 | return(0); | 
| 241 | case DSO_CTRL_OR_FLAGS: | 246 | case DSO_CTRL_OR_FLAGS: | 
| 242 | dso->flags |= (int)larg; | 247 | dso->flags |= larg; | 
| 243 | return(0); | 248 | return(0); | 
| 244 | default: | 249 | default: | 
| 245 | break; | 250 | break; | 
| diff --git a/src/lib/libssl/src/crypto/dso/dso_vms.c b/src/lib/libssl/src/crypto/dso/dso_vms.c index 8ff7090129..ab48b63eb7 100644 --- a/src/lib/libssl/src/crypto/dso/dso_vms.c +++ b/src/lib/libssl/src/crypto/dso/dso_vms.c | |||
| @@ -62,7 +62,6 @@ | |||
| 62 | #ifdef VMS | 62 | #ifdef VMS | 
| 63 | #pragma message disable DOLLARID | 63 | #pragma message disable DOLLARID | 
| 64 | #include <lib$routines.h> | 64 | #include <lib$routines.h> | 
| 65 | #include <libfisdef.h> | ||
| 66 | #include <stsdef.h> | 65 | #include <stsdef.h> | 
| 67 | #include <descrip.h> | 66 | #include <descrip.h> | 
| 68 | #include <starlet.h> | 67 | #include <starlet.h> | 
| @@ -260,7 +259,8 @@ void vms_bind_sym(DSO *dso, const char *symname, void **sym) | |||
| 260 | { | 259 | { | 
| 261 | DSO_VMS_INTERNAL *ptr; | 260 | DSO_VMS_INTERNAL *ptr; | 
| 262 | int status; | 261 | int status; | 
| 263 | int flags = LIB$M_FIS_MIXEDCASE; | 262 | int flags = (1<<4); /* LIB$M_FIS_MIXEDCASE, but this symbol isn't | 
| 263 | defined in VMS older than 7.0 or so */ | ||
| 264 | struct dsc$descriptor_s symname_dsc; | 264 | struct dsc$descriptor_s symname_dsc; | 
| 265 | *sym = NULL; | 265 | *sym = NULL; | 
| 266 | 266 | ||
| diff --git a/src/lib/libssl/src/crypto/ebcdic.c b/src/lib/libssl/src/crypto/ebcdic.c index 31397b2add..91a7a8bcb4 100644 --- a/src/lib/libssl/src/crypto/ebcdic.c +++ b/src/lib/libssl/src/crypto/ebcdic.c | |||
| @@ -211,7 +211,7 @@ ascii2ebcdic(void *dest, const void *srce, size_t count) | |||
| 211 | } | 211 | } | 
| 212 | 212 | ||
| 213 | #else /*CHARSET_EBCDIC*/ | 213 | #else /*CHARSET_EBCDIC*/ | 
| 214 | #ifdef PEDANTIC | 214 | #if defined(PEDANTIC) || defined(VMS) || defined(__VMS) | 
| 215 | static void *dummy=&dummy; | 215 | static void *dummy=&dummy; | 
| 216 | #endif | 216 | #endif | 
| 217 | #endif | 217 | #endif | 
| diff --git a/src/lib/libssl/src/crypto/engine/engine_lib.c b/src/lib/libssl/src/crypto/engine/engine_lib.c index 1df07af03a..d6e9109f6e 100644 --- a/src/lib/libssl/src/crypto/engine/engine_lib.c +++ b/src/lib/libssl/src/crypto/engine/engine_lib.c | |||
| @@ -230,17 +230,18 @@ EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, | |||
| 230 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 230 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 
| 231 | if(e->funct_ref == 0) | 231 | if(e->funct_ref == 0) | 
| 232 | { | 232 | { | 
| 233 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 233 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 234 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 
| 234 | ENGINE_R_NOT_INITIALISED); | 235 | ENGINE_R_NOT_INITIALISED); | 
| 235 | return 0; | 236 | return 0; | 
| 236 | } | 237 | } | 
| 238 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 237 | if (!e->load_privkey) | 239 | if (!e->load_privkey) | 
| 238 | { | 240 | { | 
| 239 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 241 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, | 
| 240 | ENGINE_R_NO_LOAD_FUNCTION); | 242 | ENGINE_R_NO_LOAD_FUNCTION); | 
| 241 | return 0; | 243 | return 0; | 
| 242 | } | 244 | } | 
| 243 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 244 | pkey = e->load_privkey(key_id, passphrase); | 245 | pkey = e->load_privkey(key_id, passphrase); | 
| 245 | if (!pkey) | 246 | if (!pkey) | 
| 246 | { | 247 | { | 
| @@ -265,17 +266,18 @@ EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, | |||
| 265 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 266 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 
| 266 | if(e->funct_ref == 0) | 267 | if(e->funct_ref == 0) | 
| 267 | { | 268 | { | 
| 269 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 268 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 270 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 
| 269 | ENGINE_R_NOT_INITIALISED); | 271 | ENGINE_R_NOT_INITIALISED); | 
| 270 | return 0; | 272 | return 0; | 
| 271 | } | 273 | } | 
| 274 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 272 | if (!e->load_pubkey) | 275 | if (!e->load_pubkey) | 
| 273 | { | 276 | { | 
| 274 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 277 | ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, | 
| 275 | ENGINE_R_NO_LOAD_FUNCTION); | 278 | ENGINE_R_NO_LOAD_FUNCTION); | 
| 276 | return 0; | 279 | return 0; | 
| 277 | } | 280 | } | 
| 278 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 279 | pkey = e->load_pubkey(key_id, passphrase); | 281 | pkey = e->load_pubkey(key_id, passphrase); | 
| 280 | if (!pkey) | 282 | if (!pkey) | 
| 281 | { | 283 | { | 
| @@ -286,8 +288,6 @@ EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, | |||
| 286 | return pkey; | 288 | return pkey; | 
| 287 | } | 289 | } | 
| 288 | 290 | ||
| 289 | /* Initialise a engine type for use (or up its functional reference count | ||
| 290 | * if it's already in use). */ | ||
| 291 | int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) | 291 | int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) | 
| 292 | { | 292 | { | 
| 293 | if(e == NULL) | 293 | if(e == NULL) | 
| @@ -298,15 +298,16 @@ int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) | |||
| 298 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 298 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); | 
| 299 | if(e->struct_ref == 0) | 299 | if(e->struct_ref == 0) | 
| 300 | { | 300 | { | 
| 301 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 301 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_REFERENCE); | 302 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_REFERENCE); | 
| 302 | return 0; | 303 | return 0; | 
| 303 | } | 304 | } | 
| 305 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 304 | if (!e->ctrl) | 306 | if (!e->ctrl) | 
| 305 | { | 307 | { | 
| 306 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_CONTROL_FUNCTION); | 308 | ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_CONTROL_FUNCTION); | 
| 307 | return 0; | 309 | return 0; | 
| 308 | } | 310 | } | 
| 309 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); | ||
| 310 | return e->ctrl(cmd, i, p, f); | 311 | return e->ctrl(cmd, i, p, f); | 
| 311 | } | 312 | } | 
| 312 | 313 | ||
| diff --git a/src/lib/libssl/src/crypto/err/Makefile.ssl b/src/lib/libssl/src/crypto/err/Makefile.ssl index cf94f406e4..58218d1cea 100644 --- a/src/lib/libssl/src/crypto/err/Makefile.ssl +++ b/src/lib/libssl/src/crypto/err/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/err/err.c b/src/lib/libssl/src/crypto/err/err.c index 99272e437c..839f4ab81a 100644 --- a/src/lib/libssl/src/crypto/err/err.c +++ b/src/lib/libssl/src/crypto/err/err.c | |||
| @@ -389,20 +389,18 @@ void ERR_put_error(int lib, int func, int reason, const char *file, | |||
| 389 | 389 | ||
| 390 | void ERR_clear_error(void) | 390 | void ERR_clear_error(void) | 
| 391 | { | 391 | { | 
| 392 | int i; | ||
| 392 | ERR_STATE *es; | 393 | ERR_STATE *es; | 
| 393 | 394 | ||
| 394 | es=ERR_get_state(); | 395 | es=ERR_get_state(); | 
| 395 | 396 | ||
| 396 | #if 0 | ||
| 397 | /* hmm... is this needed */ | ||
| 398 | for (i=0; i<ERR_NUM_ERRORS; i++) | 397 | for (i=0; i<ERR_NUM_ERRORS; i++) | 
| 399 | { | 398 | { | 
| 400 | es->err_buffer[i]=0; | 399 | es->err_buffer[i]=0; | 
| 400 | err_clear_data(es,i); | ||
| 401 | es->err_file[i]=NULL; | 401 | es->err_file[i]=NULL; | 
| 402 | es->err_line[i]= -1; | 402 | es->err_line[i]= -1; | 
| 403 | err_clear_data(es,i); | ||
| 404 | } | 403 | } | 
| 405 | #endif | ||
| 406 | es->top=es->bottom=0; | 404 | es->top=es->bottom=0; | 
| 407 | } | 405 | } | 
| 408 | 406 | ||
| @@ -464,7 +462,14 @@ static unsigned long get_error_values(int inc, const char **file, int *line, | |||
| 464 | } | 462 | } | 
| 465 | } | 463 | } | 
| 466 | 464 | ||
| 467 | if (data != NULL) | 465 | if (data == NULL) | 
| 466 | { | ||
| 467 | if (inc) | ||
| 468 | { | ||
| 469 | err_clear_data(es, i); | ||
| 470 | } | ||
| 471 | } | ||
| 472 | else | ||
| 468 | { | 473 | { | 
| 469 | if (es->err_data[i] == NULL) | 474 | if (es->err_data[i] == NULL) | 
| 470 | { | 475 | { | 
| @@ -749,8 +754,9 @@ void ERR_set_error_data(char *data, int flags) | |||
| 749 | if (i == 0) | 754 | if (i == 0) | 
| 750 | i=ERR_NUM_ERRORS-1; | 755 | i=ERR_NUM_ERRORS-1; | 
| 751 | 756 | ||
| 757 | err_clear_data(es,i); | ||
| 752 | es->err_data[i]=data; | 758 | es->err_data[i]=data; | 
| 753 | es->err_data_flags[es->top]=flags; | 759 | es->err_data_flags[i]=flags; | 
| 754 | } | 760 | } | 
| 755 | 761 | ||
| 756 | void ERR_add_error_data(int num, ...) | 762 | void ERR_add_error_data(int num, ...) | 
| @@ -759,7 +765,7 @@ void ERR_add_error_data(int num, ...) | |||
| 759 | int i,n,s; | 765 | int i,n,s; | 
| 760 | char *str,*p,*a; | 766 | char *str,*p,*a; | 
| 761 | 767 | ||
| 762 | s=64; | 768 | s=80; | 
| 763 | str=OPENSSL_malloc(s+1); | 769 | str=OPENSSL_malloc(s+1); | 
| 764 | if (str == NULL) return; | 770 | if (str == NULL) return; | 
| 765 | str[0]='\0'; | 771 | str[0]='\0'; | 
| diff --git a/src/lib/libssl/src/crypto/evp/Makefile.ssl b/src/lib/libssl/src/crypto/evp/Makefile.ssl index ad39fcc9e7..624168031d 100644 --- a/src/lib/libssl/src/crypto/evp/Makefile.ssl +++ b/src/lib/libssl/src/crypto/evp/Makefile.ssl | |||
| @@ -58,7 +58,8 @@ all: lib | |||
| 58 | 58 | ||
| 59 | lib: $(LIBOBJ) | 59 | lib: $(LIBOBJ) | 
| 60 | $(AR) $(LIB) $(LIBOBJ) | 60 | $(AR) $(LIB) $(LIBOBJ) | 
| 61 | $(RANLIB) $(LIB) | 61 | @echo You may get an error following this line. Please ignore. | 
| 62 | - $(RANLIB) $(LIB) | ||
| 62 | @touch lib | 63 | @touch lib | 
| 63 | 64 | ||
| 64 | files: | 65 | files: | 
| diff --git a/src/lib/libssl/src/crypto/evp/evp.h b/src/lib/libssl/src/crypto/evp/evp.h index 62350dfd69..76d417b44a 100644 --- a/src/lib/libssl/src/crypto/evp/evp.h +++ b/src/lib/libssl/src/crypto/evp/evp.h | |||
| @@ -462,12 +462,20 @@ typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
| 462 | ASN1_TYPE *param, EVP_CIPHER *cipher, | 462 | ASN1_TYPE *param, EVP_CIPHER *cipher, | 
| 463 | EVP_MD *md, int en_de); | 463 | EVP_MD *md, int en_de); | 
| 464 | 464 | ||
| 465 | #ifndef NO_RSA | ||
| 465 | #define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ | 466 | #define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ | 
| 466 | (char *)(rsa)) | 467 | (char *)(rsa)) | 
| 468 | #endif | ||
| 469 | |||
| 470 | #ifndef NO_DSA | ||
| 467 | #define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ | 471 | #define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ | 
| 468 | (char *)(dsa)) | 472 | (char *)(dsa)) | 
| 473 | #endif | ||
| 474 | |||
| 475 | #ifndef NO_DH | ||
| 469 | #define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ | 476 | #define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ | 
| 470 | (char *)(dh)) | 477 | (char *)(dh)) | 
| 478 | #endif | ||
| 471 | 479 | ||
| 472 | /* Add some extra combinations */ | 480 | /* Add some extra combinations */ | 
| 473 | #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) | 481 | #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) | 
| @@ -611,17 +619,29 @@ void BIO_set_cipher(BIO *b,const EVP_CIPHER *c,unsigned char *k, | |||
| 611 | #endif | 619 | #endif | 
| 612 | 620 | ||
| 613 | EVP_MD *EVP_md_null(void); | 621 | EVP_MD *EVP_md_null(void); | 
| 622 | #ifndef NO_MD2 | ||
| 614 | EVP_MD *EVP_md2(void); | 623 | EVP_MD *EVP_md2(void); | 
| 624 | #endif | ||
| 625 | #ifndef NO_MD4 | ||
| 615 | EVP_MD *EVP_md4(void); | 626 | EVP_MD *EVP_md4(void); | 
| 627 | #endif | ||
| 628 | #ifndef NO_MD5 | ||
| 616 | EVP_MD *EVP_md5(void); | 629 | EVP_MD *EVP_md5(void); | 
| 630 | #endif | ||
| 631 | #ifndef NO_SHA | ||
| 617 | EVP_MD *EVP_sha(void); | 632 | EVP_MD *EVP_sha(void); | 
| 618 | EVP_MD *EVP_sha1(void); | 633 | EVP_MD *EVP_sha1(void); | 
| 619 | EVP_MD *EVP_dss(void); | 634 | EVP_MD *EVP_dss(void); | 
| 620 | EVP_MD *EVP_dss1(void); | 635 | EVP_MD *EVP_dss1(void); | 
| 636 | #endif | ||
| 637 | #ifndef NO_MDC2 | ||
| 621 | EVP_MD *EVP_mdc2(void); | 638 | EVP_MD *EVP_mdc2(void); | 
| 639 | #endif | ||
| 640 | #ifndef NO_RIPEMD | ||
| 622 | EVP_MD *EVP_ripemd160(void); | 641 | EVP_MD *EVP_ripemd160(void); | 
| 623 | 642 | #endif | |
| 624 | EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ | 643 | EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ | 
| 644 | #ifndef NO_DES | ||
| 625 | EVP_CIPHER *EVP_des_ecb(void); | 645 | EVP_CIPHER *EVP_des_ecb(void); | 
| 626 | EVP_CIPHER *EVP_des_ede(void); | 646 | EVP_CIPHER *EVP_des_ede(void); | 
| 627 | EVP_CIPHER *EVP_des_ede3(void); | 647 | EVP_CIPHER *EVP_des_ede3(void); | 
| @@ -635,31 +655,43 @@ EVP_CIPHER *EVP_des_cbc(void); | |||
| 635 | EVP_CIPHER *EVP_des_ede_cbc(void); | 655 | EVP_CIPHER *EVP_des_ede_cbc(void); | 
| 636 | EVP_CIPHER *EVP_des_ede3_cbc(void); | 656 | EVP_CIPHER *EVP_des_ede3_cbc(void); | 
| 637 | EVP_CIPHER *EVP_desx_cbc(void); | 657 | EVP_CIPHER *EVP_desx_cbc(void); | 
| 658 | #endif | ||
| 659 | #ifndef NO_RC4 | ||
| 638 | EVP_CIPHER *EVP_rc4(void); | 660 | EVP_CIPHER *EVP_rc4(void); | 
| 639 | EVP_CIPHER *EVP_rc4_40(void); | 661 | EVP_CIPHER *EVP_rc4_40(void); | 
| 662 | #endif | ||
| 663 | #ifndef NO_IDEA | ||
| 640 | EVP_CIPHER *EVP_idea_ecb(void); | 664 | EVP_CIPHER *EVP_idea_ecb(void); | 
| 641 | EVP_CIPHER *EVP_idea_cfb(void); | 665 | EVP_CIPHER *EVP_idea_cfb(void); | 
| 642 | EVP_CIPHER *EVP_idea_ofb(void); | 666 | EVP_CIPHER *EVP_idea_ofb(void); | 
| 643 | EVP_CIPHER *EVP_idea_cbc(void); | 667 | EVP_CIPHER *EVP_idea_cbc(void); | 
| 668 | #endif | ||
| 669 | #ifndef NO_RC2 | ||
| 644 | EVP_CIPHER *EVP_rc2_ecb(void); | 670 | EVP_CIPHER *EVP_rc2_ecb(void); | 
| 645 | EVP_CIPHER *EVP_rc2_cbc(void); | 671 | EVP_CIPHER *EVP_rc2_cbc(void); | 
| 646 | EVP_CIPHER *EVP_rc2_40_cbc(void); | 672 | EVP_CIPHER *EVP_rc2_40_cbc(void); | 
| 647 | EVP_CIPHER *EVP_rc2_64_cbc(void); | 673 | EVP_CIPHER *EVP_rc2_64_cbc(void); | 
| 648 | EVP_CIPHER *EVP_rc2_cfb(void); | 674 | EVP_CIPHER *EVP_rc2_cfb(void); | 
| 649 | EVP_CIPHER *EVP_rc2_ofb(void); | 675 | EVP_CIPHER *EVP_rc2_ofb(void); | 
| 676 | #endif | ||
| 677 | #ifndef NO_BF | ||
| 650 | EVP_CIPHER *EVP_bf_ecb(void); | 678 | EVP_CIPHER *EVP_bf_ecb(void); | 
| 651 | EVP_CIPHER *EVP_bf_cbc(void); | 679 | EVP_CIPHER *EVP_bf_cbc(void); | 
| 652 | EVP_CIPHER *EVP_bf_cfb(void); | 680 | EVP_CIPHER *EVP_bf_cfb(void); | 
| 653 | EVP_CIPHER *EVP_bf_ofb(void); | 681 | EVP_CIPHER *EVP_bf_ofb(void); | 
| 682 | #endif | ||
| 683 | #ifndef NO_CAST | ||
| 654 | EVP_CIPHER *EVP_cast5_ecb(void); | 684 | EVP_CIPHER *EVP_cast5_ecb(void); | 
| 655 | EVP_CIPHER *EVP_cast5_cbc(void); | 685 | EVP_CIPHER *EVP_cast5_cbc(void); | 
| 656 | EVP_CIPHER *EVP_cast5_cfb(void); | 686 | EVP_CIPHER *EVP_cast5_cfb(void); | 
| 657 | EVP_CIPHER *EVP_cast5_ofb(void); | 687 | EVP_CIPHER *EVP_cast5_ofb(void); | 
| 688 | #endif | ||
| 689 | #ifndef NO_RC5 | ||
| 658 | EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); | 690 | EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); | 
| 659 | EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); | 691 | EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); | 
| 660 | EVP_CIPHER *EVP_rc5_32_12_16_cfb(void); | 692 | EVP_CIPHER *EVP_rc5_32_12_16_cfb(void); | 
| 661 | EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); | 693 | EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); | 
| 662 | 694 | #endif | |
| 663 | void OpenSSL_add_all_algorithms(void); | 695 | void OpenSSL_add_all_algorithms(void); | 
| 664 | void OpenSSL_add_all_ciphers(void); | 696 | void OpenSSL_add_all_ciphers(void); | 
| 665 | void OpenSSL_add_all_digests(void); | 697 | void OpenSSL_add_all_digests(void); | 
| diff --git a/src/lib/libssl/src/crypto/ex_data.c b/src/lib/libssl/src/crypto/ex_data.c index 1ee88da2a8..739e543d78 100644 --- a/src/lib/libssl/src/crypto/ex_data.c +++ b/src/lib/libssl/src/crypto/ex_data.c | |||
| @@ -101,7 +101,7 @@ int CRYPTO_get_ex_new_index(int idx, STACK_OF(CRYPTO_EX_DATA_FUNCS) **skp, long | |||
| 101 | ret=idx; | 101 | ret=idx; | 
| 102 | err: | 102 | err: | 
| 103 | MemCheck_on(); | 103 | MemCheck_on(); | 
| 104 | return(idx); | 104 | return(ret); | 
| 105 | } | 105 | } | 
| 106 | 106 | ||
| 107 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val) | 107 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val) | 
| diff --git a/src/lib/libssl/src/crypto/hmac/Makefile.ssl b/src/lib/libssl/src/crypto/hmac/Makefile.ssl index cf57311973..326339a90d 100644 --- a/src/lib/libssl/src/crypto/hmac/Makefile.ssl +++ b/src/lib/libssl/src/crypto/hmac/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/idea/Makefile.ssl b/src/lib/libssl/src/crypto/idea/Makefile.ssl index 5b334ce921..30302e0b9f 100644 --- a/src/lib/libssl/src/crypto/idea/Makefile.ssl +++ b/src/lib/libssl/src/crypto/idea/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/lhash/Makefile.ssl b/src/lib/libssl/src/crypto/lhash/Makefile.ssl index 6c3d442e22..79849d7d6e 100644 --- a/src/lib/libssl/src/crypto/lhash/Makefile.ssl +++ b/src/lib/libssl/src/crypto/lhash/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/md2/Makefile.ssl b/src/lib/libssl/src/crypto/md2/Makefile.ssl index d46c73a9b9..269628d739 100644 --- a/src/lib/libssl/src/crypto/md2/Makefile.ssl +++ b/src/lib/libssl/src/crypto/md2/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/md4/Makefile.ssl b/src/lib/libssl/src/crypto/md4/Makefile.ssl index 6ee3ca88ed..646607274e 100644 --- a/src/lib/libssl/src/crypto/md4/Makefile.ssl +++ b/src/lib/libssl/src/crypto/md4/Makefile.ssl | |||
| @@ -40,7 +40,8 @@ all: lib | |||
| 40 | 40 | ||
| 41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) | 
| 42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(AR) $(LIB) $(LIBOBJ) | 
| 43 | $(RANLIB) $(LIB) | 43 | @echo You may get an error following this line. Please ignore. | 
| 44 | - $(RANLIB) $(LIB) | ||
| 44 | @touch lib | 45 | @touch lib | 
| 45 | 46 | ||
| 46 | files: | 47 | files: | 
| diff --git a/src/lib/libssl/src/crypto/md5/Makefile.ssl b/src/lib/libssl/src/crypto/md5/Makefile.ssl index e8d0cced7f..784215579b 100644 --- a/src/lib/libssl/src/crypto/md5/Makefile.ssl +++ b/src/lib/libssl/src/crypto/md5/Makefile.ssl | |||
| @@ -50,7 +50,8 @@ all: lib | |||
| 50 | 50 | ||
| 51 | lib: $(LIBOBJ) | 51 | lib: $(LIBOBJ) | 
| 52 | $(AR) $(LIB) $(LIBOBJ) | 52 | $(AR) $(LIB) $(LIBOBJ) | 
| 53 | $(RANLIB) $(LIB) | 53 | @echo You may get an error following this line. Please ignore. | 
| 54 | - $(RANLIB) $(LIB) | ||
| 54 | @touch lib | 55 | @touch lib | 
| 55 | 56 | ||
| 56 | # elf | 57 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/mdc2/Makefile.ssl b/src/lib/libssl/src/crypto/mdc2/Makefile.ssl index da11c4edea..a9b06b02bd 100644 --- a/src/lib/libssl/src/crypto/mdc2/Makefile.ssl +++ b/src/lib/libssl/src/crypto/mdc2/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/mem_dbg.c b/src/lib/libssl/src/crypto/mem_dbg.c index 866c53e73a..ef19d8f844 100644 --- a/src/lib/libssl/src/crypto/mem_dbg.c +++ b/src/lib/libssl/src/crypto/mem_dbg.c | |||
| @@ -81,7 +81,8 @@ static int mh_mode=CRYPTO_MEM_CHECK_OFF; | |||
| 81 | */ | 81 | */ | 
| 82 | 82 | ||
| 83 | static unsigned long order = 0; /* number of memory requests */ | 83 | static unsigned long order = 0; /* number of memory requests */ | 
| 84 | static LHASH *mh=NULL; /* hash-table of memory requests (address as key) */ | 84 | static LHASH *mh=NULL; /* hash-table of memory requests (address as key); | 
| 85 | * access requires MALLOC2 lock */ | ||
| 85 | 86 | ||
| 86 | 87 | ||
| 87 | typedef struct app_mem_info_st | 88 | typedef struct app_mem_info_st | 
| @@ -103,7 +104,8 @@ typedef struct app_mem_info_st | |||
| 103 | 104 | ||
| 104 | static LHASH *amih=NULL; /* hash-table with those app_mem_info_st's | 105 | static LHASH *amih=NULL; /* hash-table with those app_mem_info_st's | 
| 105 | * that are at the top of their thread's stack | 106 | * that are at the top of their thread's stack | 
| 106 | * (with `thread' as key) */ | 107 | * (with `thread' as key); | 
| 108 | * access requires MALLOC2 lock */ | ||
| 107 | 109 | ||
| 108 | typedef struct mem_st | 110 | typedef struct mem_st | 
| 109 | /* memory-block description */ | 111 | /* memory-block description */ | 
| @@ -128,7 +130,15 @@ static long options = /* extra information to be recorded */ | |||
| 128 | 0; | 130 | 0; | 
| 129 | 131 | ||
| 130 | 132 | ||
| 131 | static unsigned long disabling_thread = 0; | 133 | static unsigned int num_disable = 0; /* num_disable > 0 | 
| 134 | * iff | ||
| 135 | * mh_mode == CRYPTO_MEM_CHECK_ON (w/o ..._ENABLE) | ||
| 136 | */ | ||
| 137 | static unsigned long disabling_thread = 0; /* Valid iff num_disable > 0. | ||
| 138 | * CRYPTO_LOCK_MALLOC2 is locked | ||
| 139 | * exactly in this case (by the | ||
| 140 | * thread named in disabling_thread). | ||
| 141 | */ | ||
| 132 | 142 | ||
| 133 | int CRYPTO_mem_ctrl(int mode) | 143 | int CRYPTO_mem_ctrl(int mode) | 
| 134 | { | 144 | { | 
| @@ -137,22 +147,23 @@ int CRYPTO_mem_ctrl(int mode) | |||
| 137 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 147 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 
| 138 | switch (mode) | 148 | switch (mode) | 
| 139 | { | 149 | { | 
| 140 | /* for applications: */ | 150 | /* for applications (not to be called while multiple threads | 
| 151 | * use the library): */ | ||
| 141 | case CRYPTO_MEM_CHECK_ON: /* aka MemCheck_start() */ | 152 | case CRYPTO_MEM_CHECK_ON: /* aka MemCheck_start() */ | 
| 142 | mh_mode = CRYPTO_MEM_CHECK_ON|CRYPTO_MEM_CHECK_ENABLE; | 153 | mh_mode = CRYPTO_MEM_CHECK_ON|CRYPTO_MEM_CHECK_ENABLE; | 
| 143 | disabling_thread = 0; | 154 | num_disable = 0; | 
| 144 | break; | 155 | break; | 
| 145 | case CRYPTO_MEM_CHECK_OFF: /* aka MemCheck_stop() */ | 156 | case CRYPTO_MEM_CHECK_OFF: /* aka MemCheck_stop() */ | 
| 146 | mh_mode = 0; | 157 | mh_mode = 0; | 
| 147 | disabling_thread = 0; | 158 | num_disable = 0; /* should be true *before* MemCheck_stop is used, | 
| 159 | or there'll be a lot of confusion */ | ||
| 148 | break; | 160 | break; | 
| 149 | 161 | ||
| 150 | /* switch off temporarily (for library-internal use): */ | 162 | /* switch off temporarily (for library-internal use): */ | 
| 151 | case CRYPTO_MEM_CHECK_DISABLE: /* aka MemCheck_off() */ | 163 | case CRYPTO_MEM_CHECK_DISABLE: /* aka MemCheck_off() */ | 
| 152 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 164 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 
| 153 | { | 165 | { | 
| 154 | mh_mode&= ~CRYPTO_MEM_CHECK_ENABLE; | 166 | if (!num_disable || (disabling_thread != CRYPTO_thread_id())) /* otherwise we already have the MALLOC2 lock */ | 
| 155 | if (disabling_thread != CRYPTO_thread_id()) /* otherwise we already have the MALLOC2 lock */ | ||
| 156 | { | 167 | { | 
| 157 | /* Long-time lock CRYPTO_LOCK_MALLOC2 must not be claimed while | 168 | /* Long-time lock CRYPTO_LOCK_MALLOC2 must not be claimed while | 
| 158 | * we're holding CRYPTO_LOCK_MALLOC, or we'll deadlock if | 169 | * we're holding CRYPTO_LOCK_MALLOC, or we'll deadlock if | 
| @@ -169,18 +180,23 @@ int CRYPTO_mem_ctrl(int mode) | |||
| 169 | * OpenSSL threads. */ | 180 | * OpenSSL threads. */ | 
| 170 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2); | 181 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2); | 
| 171 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 182 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 
| 183 | mh_mode &= ~CRYPTO_MEM_CHECK_ENABLE; | ||
| 172 | disabling_thread=CRYPTO_thread_id(); | 184 | disabling_thread=CRYPTO_thread_id(); | 
| 173 | } | 185 | } | 
| 186 | num_disable++; | ||
| 174 | } | 187 | } | 
| 175 | break; | 188 | break; | 
| 176 | case CRYPTO_MEM_CHECK_ENABLE: /* aka MemCheck_on() */ | 189 | case CRYPTO_MEM_CHECK_ENABLE: /* aka MemCheck_on() */ | 
| 177 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 190 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 
| 178 | { | 191 | { | 
| 179 | mh_mode|=CRYPTO_MEM_CHECK_ENABLE; | 192 | if (num_disable) /* always true, or something is going wrong */ | 
| 180 | if (disabling_thread != 0) | ||
| 181 | { | 193 | { | 
| 182 | disabling_thread=0; | 194 | num_disable--; | 
| 183 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC2); | 195 | if (num_disable == 0) | 
| 196 | { | ||
| 197 | mh_mode|=CRYPTO_MEM_CHECK_ENABLE; | ||
| 198 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC2); | ||
| 199 | } | ||
| 184 | } | 200 | } | 
| 185 | } | 201 | } | 
| 186 | break; | 202 | break; | 
| @@ -198,12 +214,12 @@ int CRYPTO_is_mem_check_on(void) | |||
| 198 | 214 | ||
| 199 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 215 | if (mh_mode & CRYPTO_MEM_CHECK_ON) | 
| 200 | { | 216 | { | 
| 201 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 217 | CRYPTO_r_lock(CRYPTO_LOCK_MALLOC); | 
| 202 | 218 | ||
| 203 | ret = (mh_mode & CRYPTO_MEM_CHECK_ENABLE) | 219 | ret = (mh_mode & CRYPTO_MEM_CHECK_ENABLE) | 
| 204 | && disabling_thread != CRYPTO_thread_id(); | 220 | || (disabling_thread != CRYPTO_thread_id()); | 
| 205 | 221 | ||
| 206 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC); | 222 | CRYPTO_r_unlock(CRYPTO_LOCK_MALLOC); | 
| 207 | } | 223 | } | 
| 208 | return(ret); | 224 | return(ret); | 
| 209 | } | 225 | } | 
| @@ -293,7 +309,7 @@ int CRYPTO_push_info_(const char *info, const char *file, int line) | |||
| 293 | 309 | ||
| 294 | if (is_MemCheck_on()) | 310 | if (is_MemCheck_on()) | 
| 295 | { | 311 | { | 
| 296 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 312 | MemCheck_off(); /* obtain MALLOC2 lock */ | 
| 297 | 313 | ||
| 298 | if ((ami = (APP_INFO *)OPENSSL_malloc(sizeof(APP_INFO))) == NULL) | 314 | if ((ami = (APP_INFO *)OPENSSL_malloc(sizeof(APP_INFO))) == NULL) | 
| 299 | { | 315 | { | 
| @@ -330,7 +346,7 @@ int CRYPTO_push_info_(const char *info, const char *file, int line) | |||
| 330 | ami->next=amim; | 346 | ami->next=amim; | 
| 331 | } | 347 | } | 
| 332 | err: | 348 | err: | 
| 333 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 349 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 334 | } | 350 | } | 
| 335 | 351 | ||
| 336 | return(ret); | 352 | return(ret); | 
| @@ -342,11 +358,11 @@ int CRYPTO_pop_info(void) | |||
| 342 | 358 | ||
| 343 | if (is_MemCheck_on()) /* _must_ be true, or something went severely wrong */ | 359 | if (is_MemCheck_on()) /* _must_ be true, or something went severely wrong */ | 
| 344 | { | 360 | { | 
| 345 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 361 | MemCheck_off(); /* obtain MALLOC2 lock */ | 
| 346 | 362 | ||
| 347 | ret=(pop_info() != NULL); | 363 | ret=(pop_info() != NULL); | 
| 348 | 364 | ||
| 349 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 365 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 350 | } | 366 | } | 
| 351 | return(ret); | 367 | return(ret); | 
| 352 | } | 368 | } | 
| @@ -357,12 +373,12 @@ int CRYPTO_remove_all_info(void) | |||
| 357 | 373 | ||
| 358 | if (is_MemCheck_on()) /* _must_ be true */ | 374 | if (is_MemCheck_on()) /* _must_ be true */ | 
| 359 | { | 375 | { | 
| 360 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 376 | MemCheck_off(); /* obtain MALLOC2 lock */ | 
| 361 | 377 | ||
| 362 | while(pop_info() != NULL) | 378 | while(pop_info() != NULL) | 
| 363 | ret++; | 379 | ret++; | 
| 364 | 380 | ||
| 365 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 381 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 366 | } | 382 | } | 
| 367 | return(ret); | 383 | return(ret); | 
| 368 | } | 384 | } | 
| @@ -385,11 +401,12 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line, | |||
| 385 | 401 | ||
| 386 | if (is_MemCheck_on()) | 402 | if (is_MemCheck_on()) | 
| 387 | { | 403 | { | 
| 388 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 404 | MemCheck_off(); /* make sure we hold MALLOC2 lock */ | 
| 389 | if ((m=(MEM *)OPENSSL_malloc(sizeof(MEM))) == NULL) | 405 | if ((m=(MEM *)OPENSSL_malloc(sizeof(MEM))) == NULL) | 
| 390 | { | 406 | { | 
| 391 | OPENSSL_free(addr); | 407 | OPENSSL_free(addr); | 
| 392 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 408 | MemCheck_on(); /* release MALLOC2 lock | 
| 409 | * if num_disabled drops to 0 */ | ||
| 393 | return; | 410 | return; | 
| 394 | } | 411 | } | 
| 395 | if (mh == NULL) | 412 | if (mh == NULL) | 
| @@ -448,7 +465,8 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line, | |||
| 448 | OPENSSL_free(mm); | 465 | OPENSSL_free(mm); | 
| 449 | } | 466 | } | 
| 450 | err: | 467 | err: | 
| 451 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 468 | MemCheck_on(); /* release MALLOC2 lock | 
| 469 | * if num_disabled drops to 0 */ | ||
| 452 | } | 470 | } | 
| 453 | break; | 471 | break; | 
| 454 | } | 472 | } | 
| @@ -467,7 +485,7 @@ void CRYPTO_dbg_free(void *addr, int before_p) | |||
| 467 | 485 | ||
| 468 | if (is_MemCheck_on() && (mh != NULL)) | 486 | if (is_MemCheck_on() && (mh != NULL)) | 
| 469 | { | 487 | { | 
| 470 | MemCheck_off(); | 488 | MemCheck_off(); /* make sure we hold MALLOC2 lock */ | 
| 471 | 489 | ||
| 472 | m.addr=addr; | 490 | m.addr=addr; | 
| 473 | mp=(MEM *)lh_delete(mh,(char *)&m); | 491 | mp=(MEM *)lh_delete(mh,(char *)&m); | 
| @@ -484,7 +502,8 @@ void CRYPTO_dbg_free(void *addr, int before_p) | |||
| 484 | OPENSSL_free(mp); | 502 | OPENSSL_free(mp); | 
| 485 | } | 503 | } | 
| 486 | 504 | ||
| 487 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 505 | MemCheck_on(); /* release MALLOC2 lock | 
| 506 | * if num_disabled drops to 0 */ | ||
| 488 | } | 507 | } | 
| 489 | break; | 508 | break; | 
| 490 | case 1: | 509 | case 1: | 
| @@ -518,7 +537,7 @@ void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, | |||
| 518 | 537 | ||
| 519 | if (is_MemCheck_on()) | 538 | if (is_MemCheck_on()) | 
| 520 | { | 539 | { | 
| 521 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | 540 | MemCheck_off(); /* make sure we hold MALLOC2 lock */ | 
| 522 | 541 | ||
| 523 | m.addr=addr1; | 542 | m.addr=addr1; | 
| 524 | mp=(MEM *)lh_delete(mh,(char *)&m); | 543 | mp=(MEM *)lh_delete(mh,(char *)&m); | 
| @@ -535,7 +554,8 @@ void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, | |||
| 535 | lh_insert(mh,(char *)mp); | 554 | lh_insert(mh,(char *)mp); | 
| 536 | } | 555 | } | 
| 537 | 556 | ||
| 538 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 557 | MemCheck_on(); /* release MALLOC2 lock | 
| 558 | * if num_disabled drops to 0 */ | ||
| 539 | } | 559 | } | 
| 540 | break; | 560 | break; | 
| 541 | } | 561 | } | 
| @@ -642,10 +662,12 @@ void CRYPTO_mem_leaks(BIO *b) | |||
| 642 | 662 | ||
| 643 | if (mh == NULL && amih == NULL) | 663 | if (mh == NULL && amih == NULL) | 
| 644 | return; | 664 | return; | 
| 665 | |||
| 666 | MemCheck_off(); /* obtain MALLOC2 lock */ | ||
| 667 | |||
| 645 | ml.bio=b; | 668 | ml.bio=b; | 
| 646 | ml.bytes=0; | 669 | ml.bytes=0; | 
| 647 | ml.chunks=0; | 670 | ml.chunks=0; | 
| 648 | MemCheck_off(); /* obtains CRYPTO_LOCK_MALLOC2 */ | ||
| 649 | if (mh != NULL) | 671 | if (mh != NULL) | 
| 650 | lh_doall_arg(mh,(void (*)())print_leak,(char *)&ml); | 672 | lh_doall_arg(mh,(void (*)())print_leak,(char *)&ml); | 
| 651 | if (ml.chunks != 0) | 673 | if (ml.chunks != 0) | 
| @@ -671,7 +693,15 @@ void CRYPTO_mem_leaks(BIO *b) | |||
| 671 | * void_fn_to_char kludge in CRYPTO_mem_leaks_cb. | 693 | * void_fn_to_char kludge in CRYPTO_mem_leaks_cb. | 
| 672 | * Otherwise the code police will come and get us.) | 694 | * Otherwise the code police will come and get us.) | 
| 673 | */ | 695 | */ | 
| 696 | int old_mh_mode; | ||
| 697 | |||
| 674 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 698 | CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); | 
| 699 | |||
| 700 | /* avoid deadlock when lh_free() uses CRYPTO_dbg_free(), | ||
| 701 | * which uses CRYPTO_is_mem_check_on */ | ||
| 702 | old_mh_mode = mh_mode; | ||
| 703 | mh_mode = CRYPTO_MEM_CHECK_OFF; | ||
| 704 | |||
| 675 | if (mh != NULL) | 705 | if (mh != NULL) | 
| 676 | { | 706 | { | 
| 677 | lh_free(mh); | 707 | lh_free(mh); | 
| @@ -685,15 +715,11 @@ void CRYPTO_mem_leaks(BIO *b) | |||
| 685 | amih = NULL; | 715 | amih = NULL; | 
| 686 | } | 716 | } | 
| 687 | } | 717 | } | 
| 718 | |||
| 719 | mh_mode = old_mh_mode; | ||
| 688 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC); | 720 | CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC); | 
| 689 | } | 721 | } | 
| 690 | MemCheck_on(); /* releases CRYPTO_LOCK_MALLOC2 */ | 722 | MemCheck_on(); /* release MALLOC2 lock */ | 
| 691 | |||
| 692 | #if 0 | ||
| 693 | lh_stats_bio(mh,b); | ||
| 694 | lh_node_stats_bio(mh,b); | ||
| 695 | lh_node_usage_stats_bio(mh,b); | ||
| 696 | #endif | ||
| 697 | } | 723 | } | 
| 698 | 724 | ||
| 699 | #ifndef NO_FP_API | 725 | #ifndef NO_FP_API | 
| diff --git a/src/lib/libssl/src/crypto/objects/Makefile.ssl b/src/lib/libssl/src/crypto/objects/Makefile.ssl index bdb7aa94dc..6746ad21e7 100644 --- a/src/lib/libssl/src/crypto/objects/Makefile.ssl +++ b/src/lib/libssl/src/crypto/objects/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: obj_dat.h lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/opensslv.h b/src/lib/libssl/src/crypto/opensslv.h index 6b5aedeea6..dc50f6d7da 100644 --- a/src/lib/libssl/src/crypto/opensslv.h +++ b/src/lib/libssl/src/crypto/opensslv.h | |||
| @@ -25,8 +25,8 @@ | |||
| 25 | * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for | 25 | * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for | 
| 26 | * major minor fix final patch/beta) | 26 | * major minor fix final patch/beta) | 
| 27 | */ | 27 | */ | 
| 28 | #define OPENSSL_VERSION_NUMBER 0x0090600fL | 28 | #define OPENSSL_VERSION_NUMBER 0x0090601fL | 
| 29 | #define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6 [engine] 24 Sep 2000" | 29 | #define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6a [engine] 5 Apr 2001" | 
| 30 | #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT | 30 | #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT | 
| 31 | 31 | ||
| 32 | 32 | ||
| diff --git a/src/lib/libssl/src/crypto/pem/Makefile.ssl b/src/lib/libssl/src/crypto/pem/Makefile.ssl index 97af8255a3..31db6b65a1 100644 --- a/src/lib/libssl/src/crypto/pem/Makefile.ssl +++ b/src/lib/libssl/src/crypto/pem/Makefile.ssl | |||
| @@ -40,7 +40,8 @@ all: lib | |||
| 40 | 40 | ||
| 41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) | 
| 42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(AR) $(LIB) $(LIBOBJ) | 
| 43 | $(RANLIB) $(LIB) | 43 | @echo You may get an error following this line. Please ignore. | 
| 44 | - $(RANLIB) $(LIB) | ||
| 44 | @touch lib | 45 | @touch lib | 
| 45 | 46 | ||
| 46 | files: | 47 | files: | 
| diff --git a/src/lib/libssl/src/crypto/pem/pem_info.c b/src/lib/libssl/src/crypto/pem/pem_info.c index 1c5c6dea00..f1694f1125 100644 --- a/src/lib/libssl/src/crypto/pem/pem_info.c +++ b/src/lib/libssl/src/crypto/pem/pem_info.c | |||
| @@ -305,7 +305,7 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, | |||
| 305 | { | 305 | { | 
| 306 | if ( (xi->enc_data!=NULL) && (xi->enc_len>0) ) | 306 | if ( (xi->enc_data!=NULL) && (xi->enc_len>0) ) | 
| 307 | { | 307 | { | 
| 308 | /* copy from wierdo names into more normal things */ | 308 | /* copy from weirdo names into more normal things */ | 
| 309 | iv=xi->enc_cipher.iv; | 309 | iv=xi->enc_cipher.iv; | 
| 310 | data=(unsigned char *)xi->enc_data; | 310 | data=(unsigned char *)xi->enc_data; | 
| 311 | i=xi->enc_len; | 311 | i=xi->enc_len; | 
| diff --git a/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl b/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl index 67869f204f..d745c53621 100644 --- a/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl +++ b/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl | |||
| @@ -45,7 +45,8 @@ all: lib | |||
| 45 | 45 | ||
| 46 | lib: $(LIBOBJ) | 46 | lib: $(LIBOBJ) | 
| 47 | $(AR) $(LIB) $(LIBOBJ) | 47 | $(AR) $(LIB) $(LIBOBJ) | 
| 48 | $(RANLIB) $(LIB) | 48 | @echo You may get an error following this line. Please ignore. | 
| 49 | - $(RANLIB) $(LIB) | ||
| 49 | @touch lib | 50 | @touch lib | 
| 50 | 51 | ||
| 51 | files: | 52 | files: | 
| diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_attr.c b/src/lib/libssl/src/crypto/pkcs12/p12_attr.c index f1a210b5d2..a16a97d03d 100644 --- a/src/lib/libssl/src/crypto/pkcs12/p12_attr.c +++ b/src/lib/libssl/src/crypto/pkcs12/p12_attr.c | |||
| @@ -151,7 +151,7 @@ int PKCS12_add_friendlyname_asc (PKCS12_SAFEBAG *bag, const char *name, | |||
| 151 | { | 151 | { | 
| 152 | unsigned char *uniname; | 152 | unsigned char *uniname; | 
| 153 | int ret, unilen; | 153 | int ret, unilen; | 
| 154 | if (!asc2uni(name, &uniname, &unilen)) { | 154 | if (!asc2uni(name, namelen, &uniname, &unilen)) { | 
| 155 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC, | 155 | PKCS12err(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC, | 
| 156 | ERR_R_MALLOC_FAILURE); | 156 | ERR_R_MALLOC_FAILURE); | 
| 157 | return 0; | 157 | return 0; | 
| diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_key.c b/src/lib/libssl/src/crypto/pkcs12/p12_key.c index b042dcf05c..a4fd5b98ec 100644 --- a/src/lib/libssl/src/crypto/pkcs12/p12_key.c +++ b/src/lib/libssl/src/crypto/pkcs12/p12_key.c | |||
| @@ -84,7 +84,7 @@ int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, | |||
| 84 | if(!pass) { | 84 | if(!pass) { | 
| 85 | unipass = NULL; | 85 | unipass = NULL; | 
| 86 | uniplen = 0; | 86 | uniplen = 0; | 
| 87 | } else if (!asc2uni(pass, &unipass, &uniplen)) { | 87 | } else if (!asc2uni(pass, passlen, &unipass, &uniplen)) { | 
| 88 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE); | 88 | PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE); | 
| 89 | return 0; | 89 | return 0; | 
| 90 | } | 90 | } | 
| @@ -102,7 +102,7 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, | |||
| 102 | const EVP_MD *md_type) | 102 | const EVP_MD *md_type) | 
| 103 | { | 103 | { | 
| 104 | unsigned char *B, *D, *I, *p, *Ai; | 104 | unsigned char *B, *D, *I, *p, *Ai; | 
| 105 | int Slen, Plen, Ilen; | 105 | int Slen, Plen, Ilen, Ijlen; | 
| 106 | int i, j, u, v; | 106 | int i, j, u, v; | 
| 107 | BIGNUM *Ij, *Bpl1; /* These hold Ij and B + 1 */ | 107 | BIGNUM *Ij, *Bpl1; /* These hold Ij and B + 1 */ | 
| 108 | EVP_MD_CTX ctx; | 108 | EVP_MD_CTX ctx; | 
| @@ -180,10 +180,17 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, | |||
| 180 | BN_bin2bn (I + j, v, Ij); | 180 | BN_bin2bn (I + j, v, Ij); | 
| 181 | BN_add (Ij, Ij, Bpl1); | 181 | BN_add (Ij, Ij, Bpl1); | 
| 182 | BN_bn2bin (Ij, B); | 182 | BN_bn2bin (Ij, B); | 
| 183 | Ijlen = BN_num_bytes (Ij); | ||
| 183 | /* If more than 2^(v*8) - 1 cut off MSB */ | 184 | /* If more than 2^(v*8) - 1 cut off MSB */ | 
| 184 | if (BN_num_bytes (Ij) > v) { | 185 | if (Ijlen > v) { | 
| 185 | BN_bn2bin (Ij, B); | 186 | BN_bn2bin (Ij, B); | 
| 186 | memcpy (I + j, B + 1, v); | 187 | memcpy (I + j, B + 1, v); | 
| 188 | #ifndef PKCS12_BROKEN_KEYGEN | ||
| 189 | /* If less than v bytes pad with zeroes */ | ||
| 190 | } else if (Ijlen < v) { | ||
| 191 | memset(I + j, 0, v - Ijlen); | ||
| 192 | BN_bn2bin(Ij, I + j + v - Ijlen); | ||
| 193 | #endif | ||
| 187 | } else BN_bn2bin (Ij, I + j); | 194 | } else BN_bn2bin (Ij, I + j); | 
| 188 | } | 195 | } | 
| 189 | } | 196 | } | 
| diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c b/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c index 1fbbd6c99f..5d67f19b45 100644 --- a/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c +++ b/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c | |||
| @@ -264,6 +264,7 @@ static int parse_bag(PKCS12_SAFEBAG *bag, const char *pass, int passlen, | |||
| 264 | if (lkey) { | 264 | if (lkey) { | 
| 265 | *keymatch |= MATCH_CERT; | 265 | *keymatch |= MATCH_CERT; | 
| 266 | if (cert) *cert = x509; | 266 | if (cert) *cert = x509; | 
| 267 | else X509_free(x509); | ||
| 267 | } else { | 268 | } else { | 
| 268 | if(ca) sk_X509_push (*ca, x509); | 269 | if(ca) sk_X509_push (*ca, x509); | 
| 269 | else X509_free(x509); | 270 | else X509_free(x509); | 
| diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_utl.c b/src/lib/libssl/src/crypto/pkcs12/p12_utl.c index 17f41b4549..2f1d1e534f 100644 --- a/src/lib/libssl/src/crypto/pkcs12/p12_utl.c +++ b/src/lib/libssl/src/crypto/pkcs12/p12_utl.c | |||
| @@ -62,30 +62,34 @@ | |||
| 62 | 62 | ||
| 63 | /* Cheap and nasty Unicode stuff */ | 63 | /* Cheap and nasty Unicode stuff */ | 
| 64 | 64 | ||
| 65 | unsigned char *asc2uni (const char *asc, unsigned char **uni, int *unilen) | 65 | unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen) | 
| 66 | { | 66 | { | 
| 67 | int ulen, i; | 67 | int ulen, i; | 
| 68 | unsigned char *unitmp; | 68 | unsigned char *unitmp; | 
| 69 | ulen = strlen(asc)*2 + 2; | 69 | if (asclen == -1) asclen = strlen(asc); | 
| 70 | if (!(unitmp = OPENSSL_malloc (ulen))) return NULL; | 70 | ulen = asclen*2 + 2; | 
| 71 | for (i = 0; i < ulen; i+=2) { | 71 | if (!(unitmp = OPENSSL_malloc(ulen))) return NULL; | 
| 72 | for (i = 0; i < ulen - 2; i+=2) { | ||
| 72 | unitmp[i] = 0; | 73 | unitmp[i] = 0; | 
| 73 | unitmp[i + 1] = asc[i>>1]; | 74 | unitmp[i + 1] = asc[i>>1]; | 
| 74 | } | 75 | } | 
| 76 | /* Make result double null terminated */ | ||
| 77 | unitmp[ulen - 2] = 0; | ||
| 78 | unitmp[ulen - 1] = 0; | ||
| 75 | if (unilen) *unilen = ulen; | 79 | if (unilen) *unilen = ulen; | 
| 76 | if (uni) *uni = unitmp; | 80 | if (uni) *uni = unitmp; | 
| 77 | return unitmp; | 81 | return unitmp; | 
| 78 | } | 82 | } | 
| 79 | 83 | ||
| 80 | char *uni2asc (unsigned char *uni, int unilen) | 84 | char *uni2asc(unsigned char *uni, int unilen) | 
| 81 | { | 85 | { | 
| 82 | int asclen, i; | 86 | int asclen, i; | 
| 83 | char *asctmp; | 87 | char *asctmp; | 
| 84 | asclen = unilen / 2; | 88 | asclen = unilen / 2; | 
| 85 | /* If no terminating zero allow for one */ | 89 | /* If no terminating zero allow for one */ | 
| 86 | if (uni[unilen - 1]) asclen++; | 90 | if (!unilen || uni[unilen - 1]) asclen++; | 
| 87 | uni++; | 91 | uni++; | 
| 88 | if (!(asctmp = OPENSSL_malloc (asclen))) return NULL; | 92 | if (!(asctmp = OPENSSL_malloc(asclen))) return NULL; | 
| 89 | for (i = 0; i < unilen; i+=2) asctmp[i>>1] = uni[i]; | 93 | for (i = 0; i < unilen; i+=2) asctmp[i>>1] = uni[i]; | 
| 90 | asctmp[asclen - 1] = 0; | 94 | asctmp[asclen - 1] = 0; | 
| 91 | return asctmp; | 95 | return asctmp; | 
| diff --git a/src/lib/libssl/src/crypto/pkcs12/pkcs12.h b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h index 502fceff95..e529154f26 100644 --- a/src/lib/libssl/src/crypto/pkcs12/pkcs12.h +++ b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h | |||
| @@ -247,7 +247,7 @@ int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, | |||
| 247 | EVP_MD *md_type); | 247 | EVP_MD *md_type); | 
| 248 | int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, | 248 | int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, | 
| 249 | int saltlen, EVP_MD *md_type); | 249 | int saltlen, EVP_MD *md_type); | 
| 250 | unsigned char *asc2uni(const char *asc, unsigned char **uni, int *unilen); | 250 | unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen); | 
| 251 | char *uni2asc(unsigned char *uni, int unilen); | 251 | char *uni2asc(unsigned char *uni, int unilen); | 
| 252 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp); | 252 | int i2d_PKCS12_BAGS(PKCS12_BAGS *a, unsigned char **pp); | 
| 253 | PKCS12_BAGS *PKCS12_BAGS_new(void); | 253 | PKCS12_BAGS *PKCS12_BAGS_new(void); | 
| diff --git a/src/lib/libssl/src/crypto/pkcs7/Makefile.ssl b/src/lib/libssl/src/crypto/pkcs7/Makefile.ssl index 6cd18b671e..37b72f0890 100644 --- a/src/lib/libssl/src/crypto/pkcs7/Makefile.ssl +++ b/src/lib/libssl/src/crypto/pkcs7/Makefile.ssl | |||
| @@ -58,7 +58,8 @@ verify: verify.o example.o lib | |||
| 58 | 58 | ||
| 59 | lib: $(LIBOBJ) | 59 | lib: $(LIBOBJ) | 
| 60 | $(AR) $(LIB) $(LIBOBJ) | 60 | $(AR) $(LIB) $(LIBOBJ) | 
| 61 | $(RANLIB) $(LIB) | 61 | @echo You may get an error following this line. Please ignore. | 
| 62 | - $(RANLIB) $(LIB) | ||
| 62 | @touch lib | 63 | @touch lib | 
| 63 | 64 | ||
| 64 | files: | 65 | files: | 
| diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c b/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c index 099e9651c1..bf43d030ad 100644 --- a/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c +++ b/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c | |||
| @@ -370,7 +370,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert) | |||
| 370 | if (ri == NULL) { | 370 | if (ri == NULL) { | 
| 371 | PKCS7err(PKCS7_F_PKCS7_DATADECODE, | 371 | PKCS7err(PKCS7_F_PKCS7_DATADECODE, | 
| 372 | PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE); | 372 | PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE); | 
| 373 | return(NULL); | 373 | goto err; | 
| 374 | } | 374 | } | 
| 375 | 375 | ||
| 376 | jj=EVP_PKEY_size(pkey); | 376 | jj=EVP_PKEY_size(pkey); | 
| @@ -393,7 +393,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert) | |||
| 393 | BIO_get_cipher_ctx(etmp,&evp_ctx); | 393 | BIO_get_cipher_ctx(etmp,&evp_ctx); | 
| 394 | EVP_CipherInit(evp_ctx,evp_cipher,NULL,NULL,0); | 394 | EVP_CipherInit(evp_ctx,evp_cipher,NULL,NULL,0); | 
| 395 | if (EVP_CIPHER_asn1_to_param(evp_ctx,enc_alg->parameter) < 0) | 395 | if (EVP_CIPHER_asn1_to_param(evp_ctx,enc_alg->parameter) < 0) | 
| 396 | return(NULL); | 396 | goto err; | 
| 397 | 397 | ||
| 398 | if (jj != EVP_CIPHER_CTX_key_length(evp_ctx)) { | 398 | if (jj != EVP_CIPHER_CTX_key_length(evp_ctx)) { | 
| 399 | /* Some S/MIME clients don't use the same key | 399 | /* Some S/MIME clients don't use the same key | 
| @@ -588,8 +588,10 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) | |||
| 588 | pp=NULL; | 588 | pp=NULL; | 
| 589 | } | 589 | } | 
| 590 | 590 | ||
| 591 | #ifndef NO_DSA | ||
| 591 | if (si->pkey->type == EVP_PKEY_DSA) | 592 | if (si->pkey->type == EVP_PKEY_DSA) | 
| 592 | ctx_tmp.digest=EVP_dss1(); | 593 | ctx_tmp.digest=EVP_dss1(); | 
| 594 | #endif | ||
| 593 | 595 | ||
| 594 | if (!EVP_SignFinal(&ctx_tmp,(unsigned char *)buf->data, | 596 | if (!EVP_SignFinal(&ctx_tmp,(unsigned char *)buf->data, | 
| 595 | (unsigned int *)&buf->length,si->pkey)) | 597 | (unsigned int *)&buf->length,si->pkey)) | 
| @@ -783,7 +785,14 @@ for (ii=0; ii<md_len; ii++) printf("%02X",md_dat[ii]); printf(" calc\n"); | |||
| 783 | 785 | ||
| 784 | os=si->enc_digest; | 786 | os=si->enc_digest; | 
| 785 | pkey = X509_get_pubkey(x509); | 787 | pkey = X509_get_pubkey(x509); | 
| 788 | if (!pkey) | ||
| 789 | { | ||
| 790 | ret = -1; | ||
| 791 | goto err; | ||
| 792 | } | ||
| 793 | #ifndef NO_DSA | ||
| 786 | if(pkey->type == EVP_PKEY_DSA) mdc_tmp.digest=EVP_dss1(); | 794 | if(pkey->type == EVP_PKEY_DSA) mdc_tmp.digest=EVP_dss1(); | 
| 795 | #endif | ||
| 787 | 796 | ||
| 788 | i=EVP_VerifyFinal(&mdc_tmp,os->data,os->length, pkey); | 797 | i=EVP_VerifyFinal(&mdc_tmp,os->data,os->length, pkey); | 
| 789 | EVP_PKEY_free(pkey); | 798 | EVP_PKEY_free(pkey); | 
| diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c b/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c index 994473c0bd..086d394270 100644 --- a/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c +++ b/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c | |||
| @@ -165,9 +165,9 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags) | |||
| 165 | } | 165 | } | 
| 166 | bound[32] = 0; | 166 | bound[32] = 0; | 
| 167 | BIO_printf(bio, "MIME-Version: 1.0\n"); | 167 | BIO_printf(bio, "MIME-Version: 1.0\n"); | 
| 168 | BIO_printf(bio, "Content-Type: multipart/signed ; "); | 168 | BIO_printf(bio, "Content-Type: multipart/signed;"); | 
| 169 | BIO_printf(bio, "protocol=\"application/x-pkcs7-signature\" ; "); | 169 | BIO_printf(bio, " protocol=\"application/x-pkcs7-signature\";"); | 
| 170 | BIO_printf(bio, "micalg=sha1 ; boundary=\"----%s\"\n\n", bound); | 170 | BIO_printf(bio, " micalg=sha1; boundary=\"----%s\"\n\n", bound); | 
| 171 | BIO_printf(bio, "This is an S/MIME signed message\n\n"); | 171 | BIO_printf(bio, "This is an S/MIME signed message\n\n"); | 
| 172 | /* Now write out the first part */ | 172 | /* Now write out the first part */ | 
| 173 | BIO_printf(bio, "------%s\n", bound); | 173 | BIO_printf(bio, "------%s\n", bound); | 
| diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c index d716f9faeb..3d3214f5ee 100644 --- a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c +++ b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c | |||
| @@ -153,7 +153,7 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, | |||
| 153 | PKCS7_SIGNER_INFO *si; | 153 | PKCS7_SIGNER_INFO *si; | 
| 154 | X509_STORE_CTX cert_ctx; | 154 | X509_STORE_CTX cert_ctx; | 
| 155 | char buf[4096]; | 155 | char buf[4096]; | 
| 156 | int i, j=0, k; | 156 | int i, j=0, k, ret = 0; | 
| 157 | BIO *p7bio; | 157 | BIO *p7bio; | 
| 158 | BIO *tmpout; | 158 | BIO *tmpout; | 
| 159 | 159 | ||
| @@ -258,18 +258,15 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, | |||
| 258 | } | 258 | } | 
| 259 | } | 259 | } | 
| 260 | 260 | ||
| 261 | sk_X509_free(signers); | 261 | ret = 1; | 
| 262 | if(indata) BIO_pop(p7bio); | ||
| 263 | BIO_free_all(p7bio); | ||
| 264 | |||
| 265 | return 1; | ||
| 266 | 262 | ||
| 267 | err: | 263 | err: | 
| 268 | 264 | ||
| 265 | if(indata) BIO_pop(p7bio); | ||
| 266 | BIO_free_all(p7bio); | ||
| 269 | sk_X509_free(signers); | 267 | sk_X509_free(signers); | 
| 270 | BIO_free(p7bio); | ||
| 271 | 268 | ||
| 272 | return 0; | 269 | return ret; | 
| 273 | } | 270 | } | 
| 274 | 271 | ||
| 275 | STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags) | 272 | STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags) | 
| diff --git a/src/lib/libssl/src/crypto/rand/Makefile.ssl b/src/lib/libssl/src/crypto/rand/Makefile.ssl index 5f6199a35f..707eaac678 100644 --- a/src/lib/libssl/src/crypto/rand/Makefile.ssl +++ b/src/lib/libssl/src/crypto/rand/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/rand/md_rand.c b/src/lib/libssl/src/crypto/rand/md_rand.c index d167dea77d..567838f6c3 100644 --- a/src/lib/libssl/src/crypto/rand/md_rand.c +++ b/src/lib/libssl/src/crypto/rand/md_rand.c | |||
| @@ -482,12 +482,12 @@ static int ssleay_rand_bytes(unsigned char *buf, int num) | |||
| 482 | unpredictable */ | 482 | unpredictable */ | 
| 483 | static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) | 483 | static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) | 
| 484 | { | 484 | { | 
| 485 | int ret, err; | 485 | int ret; | 
| 486 | 486 | ||
| 487 | ret = RAND_bytes(buf, num); | 487 | ret = RAND_bytes(buf, num); | 
| 488 | if (ret == 0) | 488 | if (ret == 0) | 
| 489 | { | 489 | { | 
| 490 | err = ERR_peek_error(); | 490 | long err = ERR_peek_error(); | 
| 491 | if (ERR_GET_LIB(err) == ERR_LIB_RAND && | 491 | if (ERR_GET_LIB(err) == ERR_LIB_RAND && | 
| 492 | ERR_GET_REASON(err) == RAND_R_PRNG_NOT_SEEDED) | 492 | ERR_GET_REASON(err) == RAND_R_PRNG_NOT_SEEDED) | 
| 493 | (void)ERR_get_error(); | 493 | (void)ERR_get_error(); | 
| diff --git a/src/lib/libssl/src/crypto/rand/rand.h b/src/lib/libssl/src/crypto/rand/rand.h index eb9c8c034d..9c6052733e 100644 --- a/src/lib/libssl/src/crypto/rand/rand.h +++ b/src/lib/libssl/src/crypto/rand/rand.h | |||
| @@ -59,6 +59,8 @@ | |||
| 59 | #ifndef HEADER_RAND_H | 59 | #ifndef HEADER_RAND_H | 
| 60 | #define HEADER_RAND_H | 60 | #define HEADER_RAND_H | 
| 61 | 61 | ||
| 62 | #include <stdlib.h> | ||
| 63 | |||
| 62 | #ifdef __cplusplus | 64 | #ifdef __cplusplus | 
| 63 | extern "C" { | 65 | extern "C" { | 
| 64 | #endif | 66 | #endif | 
| @@ -89,7 +91,7 @@ void RAND_seed(const void *buf,int num); | |||
| 89 | void RAND_add(const void *buf,int num,double entropy); | 91 | void RAND_add(const void *buf,int num,double entropy); | 
| 90 | int RAND_load_file(const char *file,long max_bytes); | 92 | int RAND_load_file(const char *file,long max_bytes); | 
| 91 | int RAND_write_file(const char *file); | 93 | int RAND_write_file(const char *file); | 
| 92 | const char *RAND_file_name(char *file,int num); | 94 | const char *RAND_file_name(char *file,size_t num); | 
| 93 | int RAND_status(void); | 95 | int RAND_status(void); | 
| 94 | int RAND_egd(const char *path); | 96 | int RAND_egd(const char *path); | 
| 95 | int RAND_egd_bytes(const char *path,int bytes); | 97 | int RAND_egd_bytes(const char *path,int bytes); | 
| diff --git a/src/lib/libssl/src/crypto/rand/rand_egd.c b/src/lib/libssl/src/crypto/rand/rand_egd.c index 02a0d86fa3..79b5e6fa57 100644 --- a/src/lib/libssl/src/crypto/rand/rand_egd.c +++ b/src/lib/libssl/src/crypto/rand/rand_egd.c | |||
| @@ -74,7 +74,14 @@ int RAND_egd_bytes(const char *path,int bytes) | |||
| 74 | #include OPENSSL_UNISTD | 74 | #include OPENSSL_UNISTD | 
| 75 | #include <sys/types.h> | 75 | #include <sys/types.h> | 
| 76 | #include <sys/socket.h> | 76 | #include <sys/socket.h> | 
| 77 | #ifndef NO_SYS_UN_H | ||
| 77 | #include <sys/un.h> | 78 | #include <sys/un.h> | 
| 79 | #else | ||
| 80 | struct sockaddr_un { | ||
| 81 | short sun_family; /* AF_UNIX */ | ||
| 82 | char sun_path[108]; /* path name (gag) */ | ||
| 83 | }; | ||
| 84 | #endif /* NO_SYS_UN_H */ | ||
| 78 | #include <string.h> | 85 | #include <string.h> | 
| 79 | 86 | ||
| 80 | #ifndef offsetof | 87 | #ifndef offsetof | 
| diff --git a/src/lib/libssl/src/crypto/rand/rand_win.c b/src/lib/libssl/src/crypto/rand/rand_win.c index 9f2dcff9a9..3d137badd0 100644 --- a/src/lib/libssl/src/crypto/rand/rand_win.c +++ b/src/lib/libssl/src/crypto/rand/rand_win.c | |||
| @@ -570,14 +570,15 @@ static void readtimer(void) | |||
| 570 | DWORD w; | 570 | DWORD w; | 
| 571 | LARGE_INTEGER l; | 571 | LARGE_INTEGER l; | 
| 572 | static int have_perfc = 1; | 572 | static int have_perfc = 1; | 
| 573 | #ifndef __GNUC__ | 573 | #ifdef _MSC_VER | 
| 574 | static int have_tsc = 1; | 574 | static int have_tsc = 1; | 
| 575 | DWORD cyclecount; | 575 | DWORD cyclecount; | 
| 576 | 576 | ||
| 577 | if (have_tsc) { | 577 | if (have_tsc) { | 
| 578 | __try { | 578 | __try { | 
| 579 | __asm { | 579 | __asm { | 
| 580 | rdtsc | 580 | _emit 0x0f | 
| 581 | _emit 0x31 | ||
| 581 | mov cyclecount, eax | 582 | mov cyclecount, eax | 
| 582 | } | 583 | } | 
| 583 | RAND_add(&cyclecount, sizeof(cyclecount), 1); | 584 | RAND_add(&cyclecount, sizeof(cyclecount), 1); | 
| @@ -725,8 +726,9 @@ int RAND_poll(void) | |||
| 725 | 726 | ||
| 726 | #ifdef DEVRANDOM | 727 | #ifdef DEVRANDOM | 
| 727 | return 1; | 728 | return 1; | 
| 728 | #endif | 729 | #else | 
| 729 | return 0; | 730 | return 0; | 
| 731 | #endif | ||
| 730 | } | 732 | } | 
| 731 | 733 | ||
| 732 | #endif | 734 | #endif | 
| diff --git a/src/lib/libssl/src/crypto/rand/randfile.c b/src/lib/libssl/src/crypto/rand/randfile.c index 663a36cb70..f4376cf8cc 100644 --- a/src/lib/libssl/src/crypto/rand/randfile.c +++ b/src/lib/libssl/src/crypto/rand/randfile.c | |||
| @@ -73,7 +73,7 @@ | |||
| 73 | # include <sys/stat.h> | 73 | # include <sys/stat.h> | 
| 74 | #endif | 74 | #endif | 
| 75 | 75 | ||
| 76 | #include <openssl/e_os.h> | 76 | #include "openssl/e_os.h" | 
| 77 | #include <openssl/crypto.h> | 77 | #include <openssl/crypto.h> | 
| 78 | #include <openssl/rand.h> | 78 | #include <openssl/rand.h> | 
| 79 | 79 | ||
| @@ -83,6 +83,9 @@ | |||
| 83 | 83 | ||
| 84 | /* #define RFILE ".rnd" - defined in ../../e_os.h */ | 84 | /* #define RFILE ".rnd" - defined in ../../e_os.h */ | 
| 85 | 85 | ||
| 86 | /* Note that these functions are intended for seed files only. | ||
| 87 | * Entropy devices and EGD sockets are handled in rand_unix.c */ | ||
| 88 | |||
| 86 | int RAND_load_file(const char *file, long bytes) | 89 | int RAND_load_file(const char *file, long bytes) | 
| 87 | { | 90 | { | 
| 88 | /* If bytes >= 0, read up to 'bytes' bytes. | 91 | /* If bytes >= 0, read up to 'bytes' bytes. | 
| @@ -213,7 +216,7 @@ err: | |||
| 213 | return (rand_err ? -1 : ret); | 216 | return (rand_err ? -1 : ret); | 
| 214 | } | 217 | } | 
| 215 | 218 | ||
| 216 | const char *RAND_file_name(char *buf, int size) | 219 | const char *RAND_file_name(char *buf, size_t size) | 
| 217 | { | 220 | { | 
| 218 | char *s = NULL; | 221 | char *s = NULL; | 
| 219 | char *ret=NULL; | 222 | char *ret=NULL; | 
| @@ -239,6 +242,8 @@ const char *RAND_file_name(char *buf, int size) | |||
| 239 | strlcat(buf,RFILE,size); | 242 | strlcat(buf,RFILE,size); | 
| 240 | ret=buf; | 243 | ret=buf; | 
| 241 | } | 244 | } | 
| 245 | else | ||
| 246 | buf[0] = '\0'; /* no file name */ | ||
| 242 | } | 247 | } | 
| 243 | 248 | ||
| 244 | #ifdef DEVRANDOM | 249 | #ifdef DEVRANDOM | 
| @@ -257,3 +262,4 @@ const char *RAND_file_name(char *buf, int size) | |||
| 257 | #endif | 262 | #endif | 
| 258 | return(ret); | 263 | return(ret); | 
| 259 | } | 264 | } | 
| 265 | |||
| diff --git a/src/lib/libssl/src/crypto/rc2/Makefile.ssl b/src/lib/libssl/src/crypto/rc2/Makefile.ssl index 9e94051cd7..39813d68be 100644 --- a/src/lib/libssl/src/crypto/rc2/Makefile.ssl +++ b/src/lib/libssl/src/crypto/rc2/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/rc4/Makefile.ssl b/src/lib/libssl/src/crypto/rc4/Makefile.ssl index 8d2a795c22..e75858d3b9 100644 --- a/src/lib/libssl/src/crypto/rc4/Makefile.ssl +++ b/src/lib/libssl/src/crypto/rc4/Makefile.ssl | |||
| @@ -47,7 +47,8 @@ all: lib | |||
| 47 | 47 | ||
| 48 | lib: $(LIBOBJ) | 48 | lib: $(LIBOBJ) | 
| 49 | $(AR) $(LIB) $(LIBOBJ) | 49 | $(AR) $(LIB) $(LIBOBJ) | 
| 50 | $(RANLIB) $(LIB) | 50 | @echo You may get an error following this line. Please ignore. | 
| 51 | - $(RANLIB) $(LIB) | ||
| 51 | @touch lib | 52 | @touch lib | 
| 52 | 53 | ||
| 53 | # elf | 54 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/rc5/Makefile.ssl b/src/lib/libssl/src/crypto/rc5/Makefile.ssl index 5a54a162ba..c8ee124776 100644 --- a/src/lib/libssl/src/crypto/rc5/Makefile.ssl +++ b/src/lib/libssl/src/crypto/rc5/Makefile.ssl | |||
| @@ -44,7 +44,8 @@ all: lib | |||
| 44 | 44 | ||
| 45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) | 
| 46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(AR) $(LIB) $(LIBOBJ) | 
| 47 | $(RANLIB) $(LIB) | 47 | @echo You may get an error following this line. Please ignore. | 
| 48 | - $(RANLIB) $(LIB) | ||
| 48 | @touch lib | 49 | @touch lib | 
| 49 | 50 | ||
| 50 | # elf | 51 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/ripemd/Makefile.ssl b/src/lib/libssl/src/crypto/ripemd/Makefile.ssl index de01a953ec..1550c32ca1 100644 --- a/src/lib/libssl/src/crypto/ripemd/Makefile.ssl +++ b/src/lib/libssl/src/crypto/ripemd/Makefile.ssl | |||
| @@ -42,7 +42,8 @@ all: lib | |||
| 42 | 42 | ||
| 43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) | 
| 44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(AR) $(LIB) $(LIBOBJ) | 
| 45 | $(RANLIB) $(LIB) | 45 | @echo You may get an error following this line. Please ignore. | 
| 46 | - $(RANLIB) $(LIB) | ||
| 46 | @touch lib | 47 | @touch lib | 
| 47 | 48 | ||
| 48 | # elf | 49 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/rsa/Makefile.ssl b/src/lib/libssl/src/crypto/rsa/Makefile.ssl index c159eedafe..2bee181d4e 100644 --- a/src/lib/libssl/src/crypto/rsa/Makefile.ssl +++ b/src/lib/libssl/src/crypto/rsa/Makefile.ssl | |||
| @@ -41,7 +41,8 @@ all: lib | |||
| 41 | 41 | ||
| 42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) | 
| 43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(AR) $(LIB) $(LIBOBJ) | 
| 44 | $(RANLIB) $(LIB) | 44 | @echo You may get an error following this line. Please ignore. | 
| 45 | - $(RANLIB) $(LIB) | ||
| 45 | @touch lib | 46 | @touch lib | 
| 46 | 47 | ||
| 47 | files: | 48 | files: | 
| diff --git a/src/lib/libssl/src/crypto/rsa/rsa_eay.c b/src/lib/libssl/src/crypto/rsa/rsa_eay.c index ccaa62b239..cde5ca27d5 100644 --- a/src/lib/libssl/src/crypto/rsa/rsa_eay.c +++ b/src/lib/libssl/src/crypto/rsa/rsa_eay.c | |||
| @@ -141,9 +141,26 @@ static int RSA_eay_public_encrypt(int flen, unsigned char *from, | |||
| 141 | 141 | ||
| 142 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 142 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 
| 143 | { | 143 | { | 
| 144 | if ((rsa->_method_mod_n=BN_MONT_CTX_new()) != NULL) | 144 | BN_MONT_CTX* bn_mont_ctx; | 
| 145 | if (!BN_MONT_CTX_set(rsa->_method_mod_n,rsa->n,ctx)) | 145 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 146 | goto err; | 146 | goto err; | 
| 147 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx)) | ||
| 148 | { | ||
| 149 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 150 | goto err; | ||
| 151 | } | ||
| 152 | if (rsa->_method_mod_n == NULL) /* other thread may have finished first */ | ||
| 153 | { | ||
| 154 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 155 | if (rsa->_method_mod_n == NULL) | ||
| 156 | { | ||
| 157 | rsa->_method_mod_n = bn_mont_ctx; | ||
| 158 | bn_mont_ctx = NULL; | ||
| 159 | } | ||
| 160 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 161 | } | ||
| 162 | if (bn_mont_ctx) | ||
| 163 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 147 | } | 164 | } | 
| 148 | 165 | ||
| 149 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 166 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 
| @@ -378,9 +395,26 @@ static int RSA_eay_public_decrypt(int flen, unsigned char *from, | |||
| 378 | /* do the decrypt */ | 395 | /* do the decrypt */ | 
| 379 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 396 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 
| 380 | { | 397 | { | 
| 381 | if ((rsa->_method_mod_n=BN_MONT_CTX_new()) != NULL) | 398 | BN_MONT_CTX* bn_mont_ctx; | 
| 382 | if (!BN_MONT_CTX_set(rsa->_method_mod_n,rsa->n,ctx)) | 399 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 383 | goto err; | 400 | goto err; | 
| 401 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx)) | ||
| 402 | { | ||
| 403 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 404 | goto err; | ||
| 405 | } | ||
| 406 | if (rsa->_method_mod_n == NULL) /* other thread may have finished first */ | ||
| 407 | { | ||
| 408 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 409 | if (rsa->_method_mod_n == NULL) | ||
| 410 | { | ||
| 411 | rsa->_method_mod_n = bn_mont_ctx; | ||
| 412 | bn_mont_ctx = NULL; | ||
| 413 | } | ||
| 414 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 415 | } | ||
| 416 | if (bn_mont_ctx) | ||
| 417 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 384 | } | 418 | } | 
| 385 | 419 | ||
| 386 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 420 | if (!meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | 
| @@ -433,20 +467,53 @@ static int RSA_eay_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa) | |||
| 433 | { | 467 | { | 
| 434 | if (rsa->_method_mod_p == NULL) | 468 | if (rsa->_method_mod_p == NULL) | 
| 435 | { | 469 | { | 
| 436 | if ((rsa->_method_mod_p=BN_MONT_CTX_new()) != NULL) | 470 | BN_MONT_CTX* bn_mont_ctx; | 
| 437 | if (!BN_MONT_CTX_set(rsa->_method_mod_p,rsa->p, | 471 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 438 | ctx)) | 472 | goto err; | 
| 439 | goto err; | 473 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->p,ctx)) | 
| 474 | { | ||
| 475 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 476 | goto err; | ||
| 477 | } | ||
| 478 | if (rsa->_method_mod_p == NULL) /* other thread may have finished first */ | ||
| 479 | { | ||
| 480 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 481 | if (rsa->_method_mod_p == NULL) | ||
| 482 | { | ||
| 483 | rsa->_method_mod_p = bn_mont_ctx; | ||
| 484 | bn_mont_ctx = NULL; | ||
| 485 | } | ||
| 486 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 487 | } | ||
| 488 | if (bn_mont_ctx) | ||
| 489 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 440 | } | 490 | } | 
| 491 | |||
| 441 | if (rsa->_method_mod_q == NULL) | 492 | if (rsa->_method_mod_q == NULL) | 
| 442 | { | 493 | { | 
| 443 | if ((rsa->_method_mod_q=BN_MONT_CTX_new()) != NULL) | 494 | BN_MONT_CTX* bn_mont_ctx; | 
| 444 | if (!BN_MONT_CTX_set(rsa->_method_mod_q,rsa->q, | 495 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 
| 445 | ctx)) | 496 | goto err; | 
| 446 | goto err; | 497 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->q,ctx)) | 
| 498 | { | ||
| 499 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 500 | goto err; | ||
| 501 | } | ||
| 502 | if (rsa->_method_mod_q == NULL) /* other thread may have finished first */ | ||
| 503 | { | ||
| 504 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
| 505 | if (rsa->_method_mod_q == NULL) | ||
| 506 | { | ||
| 507 | rsa->_method_mod_q = bn_mont_ctx; | ||
| 508 | bn_mont_ctx = NULL; | ||
| 509 | } | ||
| 510 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
| 511 | } | ||
| 512 | if (bn_mont_ctx) | ||
| 513 | BN_MONT_CTX_free(bn_mont_ctx); | ||
| 447 | } | 514 | } | 
| 448 | } | 515 | } | 
| 449 | 516 | ||
| 450 | if (!BN_mod(&r1,I,rsa->q,ctx)) goto err; | 517 | if (!BN_mod(&r1,I,rsa->q,ctx)) goto err; | 
| 451 | if (!meth->bn_mod_exp(&m1,&r1,rsa->dmq1,rsa->q,ctx, | 518 | if (!meth->bn_mod_exp(&m1,&r1,rsa->dmq1,rsa->q,ctx, | 
| 452 | rsa->_method_mod_q)) goto err; | 519 | rsa->_method_mod_q)) goto err; | 
| diff --git a/src/lib/libssl/src/crypto/rsa/rsa_lib.c b/src/lib/libssl/src/crypto/rsa/rsa_lib.c index 5e1e8fcdf3..94395cc22c 100644 --- a/src/lib/libssl/src/crypto/rsa/rsa_lib.c +++ b/src/lib/libssl/src/crypto/rsa/rsa_lib.c | |||
| @@ -191,13 +191,13 @@ RSA *RSA_new_method(ENGINE *engine) | |||
| 191 | ret->blinding=NULL; | 191 | ret->blinding=NULL; | 
| 192 | ret->bignum_data=NULL; | 192 | ret->bignum_data=NULL; | 
| 193 | ret->flags=meth->flags; | 193 | ret->flags=meth->flags; | 
| 194 | CRYPTO_new_ex_data(rsa_meth,ret,&ret->ex_data); | ||
| 194 | if ((meth->init != NULL) && !meth->init(ret)) | 195 | if ((meth->init != NULL) && !meth->init(ret)) | 
| 195 | { | 196 | { | 
| 197 | CRYPTO_free_ex_data(rsa_meth,ret,&ret->ex_data); | ||
| 196 | OPENSSL_free(ret); | 198 | OPENSSL_free(ret); | 
| 197 | ret=NULL; | 199 | ret=NULL; | 
| 198 | } | 200 | } | 
| 199 | else | ||
| 200 | CRYPTO_new_ex_data(rsa_meth,ret,&ret->ex_data); | ||
| 201 | return(ret); | 201 | return(ret); | 
| 202 | } | 202 | } | 
| 203 | 203 | ||
| @@ -221,13 +221,13 @@ void RSA_free(RSA *r) | |||
| 221 | } | 221 | } | 
| 222 | #endif | 222 | #endif | 
| 223 | 223 | ||
| 224 | CRYPTO_free_ex_data(rsa_meth,r,&r->ex_data); | ||
| 225 | |||
| 226 | meth = ENGINE_get_RSA(r->engine); | 224 | meth = ENGINE_get_RSA(r->engine); | 
| 227 | if (meth->finish != NULL) | 225 | if (meth->finish != NULL) | 
| 228 | meth->finish(r); | 226 | meth->finish(r); | 
| 229 | ENGINE_finish(r->engine); | 227 | ENGINE_finish(r->engine); | 
| 230 | 228 | ||
| 229 | CRYPTO_free_ex_data(rsa_meth,r,&r->ex_data); | ||
| 230 | |||
| 231 | if (r->n != NULL) BN_clear_free(r->n); | 231 | if (r->n != NULL) BN_clear_free(r->n); | 
| 232 | if (r->e != NULL) BN_clear_free(r->e); | 232 | if (r->e != NULL) BN_clear_free(r->e); | 
| 233 | if (r->d != NULL) BN_clear_free(r->d); | 233 | if (r->d != NULL) BN_clear_free(r->d); | 
| @@ -325,7 +325,7 @@ int RSA_blinding_on(RSA *rsa, BN_CTX *p_ctx) | |||
| 325 | 325 | ||
| 326 | BN_CTX_start(ctx); | 326 | BN_CTX_start(ctx); | 
| 327 | A = BN_CTX_get(ctx); | 327 | A = BN_CTX_get(ctx); | 
| 328 | if (!BN_rand(A,BN_num_bits(rsa->n)-1,1,0)) goto err; | 328 | if (!BN_rand_range(A,rsa->n)) goto err; | 
| 329 | if ((Ai=BN_mod_inverse(NULL,A,rsa->n,ctx)) == NULL) goto err; | 329 | if ((Ai=BN_mod_inverse(NULL,A,rsa->n,ctx)) == NULL) goto err; | 
| 330 | 330 | ||
| 331 | if (!ENGINE_get_RSA(rsa->engine)->bn_mod_exp(A,A, | 331 | if (!ENGINE_get_RSA(rsa->engine)->bn_mod_exp(A,A, | 
| diff --git a/src/lib/libssl/src/crypto/sha/Makefile.ssl b/src/lib/libssl/src/crypto/sha/Makefile.ssl index 72acd8f046..790e572fa2 100644 --- a/src/lib/libssl/src/crypto/sha/Makefile.ssl +++ b/src/lib/libssl/src/crypto/sha/Makefile.ssl | |||
| @@ -42,7 +42,8 @@ all: lib | |||
| 42 | 42 | ||
| 43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) | 
| 44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(AR) $(LIB) $(LIBOBJ) | 
| 45 | $(RANLIB) $(LIB) | 45 | @echo You may get an error following this line. Please ignore. | 
| 46 | - $(RANLIB) $(LIB) | ||
| 46 | @touch lib | 47 | @touch lib | 
| 47 | 48 | ||
| 48 | # elf | 49 | # elf | 
| diff --git a/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl b/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl index 09df993ecd..fe51fd0794 100644 --- a/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl +++ b/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl | |||
| @@ -317,7 +317,7 @@ sub BODY_60_79 | |||
| 317 | 317 | ||
| 318 | sub sha1_block_host | 318 | sub sha1_block_host | 
| 319 | { | 319 | { | 
| 320 | local($name)=@_; | 320 | local($name, $sclabel)=@_; | 
| 321 | 321 | ||
| 322 | &function_begin_B($name,""); | 322 | &function_begin_B($name,""); | 
| 323 | 323 | ||
| @@ -352,7 +352,7 @@ sub sha1_block_host | |||
| 352 | &mov(&swtmp($i+0),$A); | 352 | &mov(&swtmp($i+0),$A); | 
| 353 | &mov(&swtmp($i+1),$B); | 353 | &mov(&swtmp($i+1),$B); | 
| 354 | } | 354 | } | 
| 355 | &jmp(&label("shortcut")); | 355 | &jmp($sclabel); | 
| 356 | &function_end_B($name); | 356 | &function_end_B($name); | 
| 357 | } | 357 | } | 
| 358 | 358 | ||
| @@ -529,10 +529,12 @@ sub sha1_block_data | |||
| 529 | &pop("esi"); | 529 | &pop("esi"); | 
| 530 | &ret(); | 530 | &ret(); | 
| 531 | 531 | ||
| 532 | # it has to reside within sha1_block_asm_host_order body | 532 | # keep a note of shortcut label so it can be used outside | 
| 533 | # because it calls &jmp(&label("shortcut")); | 533 | # block. | 
| 534 | &sha1_block_host("sha1_block_asm_host_order"); | 534 | my $sclabel = &label("shortcut"); | 
| 535 | 535 | ||
| 536 | &function_end_B($name); | 536 | &function_end_B($name); | 
| 537 | # Putting this here avoids problems with MASM in debugging mode | ||
| 538 | &sha1_block_host("sha1_block_asm_host_order", $sclabel); | ||
| 537 | } | 539 | } | 
| 538 | 540 | ||
| diff --git a/src/lib/libssl/src/crypto/stack/Makefile.ssl b/src/lib/libssl/src/crypto/stack/Makefile.ssl index 86ed928750..c916fd5451 100644 --- a/src/lib/libssl/src/crypto/stack/Makefile.ssl +++ b/src/lib/libssl/src/crypto/stack/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/txt_db/Makefile.ssl b/src/lib/libssl/src/crypto/txt_db/Makefile.ssl index cb54d53323..ee054e91f2 100644 --- a/src/lib/libssl/src/crypto/txt_db/Makefile.ssl +++ b/src/lib/libssl/src/crypto/txt_db/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/crypto/uid.c b/src/lib/libssl/src/crypto/uid.c new file mode 100644 index 0000000000..b5b61b76d4 --- /dev/null +++ b/src/lib/libssl/src/crypto/uid.c | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | /* crypto/uid.c */ | ||
| 2 | /* ==================================================================== | ||
| 3 | * Copyright (c) 2001 The OpenSSL Project. All rights reserved. | ||
| 4 | * | ||
| 5 | * Redistribution and use in source and binary forms, with or without | ||
| 6 | * modification, are permitted provided that the following conditions | ||
| 7 | * are met: | ||
| 8 | * | ||
| 9 | * 1. Redistributions of source code must retain the above copyright | ||
| 10 | * notice, this list of conditions and the following disclaimer. | ||
| 11 | * | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in | ||
| 14 | * the documentation and/or other materials provided with the | ||
| 15 | * distribution. | ||
| 16 | * | ||
| 17 | * 3. All advertising materials mentioning features or use of this | ||
| 18 | * software must display the following acknowledgment: | ||
| 19 | * "This product includes software developed by the OpenSSL Project | ||
| 20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
| 21 | * | ||
| 22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
| 23 | * endorse or promote products derived from this software without | ||
| 24 | * prior written permission. For written permission, please contact | ||
| 25 | * licensing@OpenSSL.org. | ||
| 26 | * | ||
| 27 | * 5. Products derived from this software may not be called "OpenSSL" | ||
| 28 | * nor may "OpenSSL" appear in their names without prior written | ||
| 29 | * permission of the OpenSSL Project. | ||
| 30 | * | ||
| 31 | * 6. Redistributions of any form whatsoever must retain the following | ||
| 32 | * acknowledgment: | ||
| 33 | * "This product includes software developed by the OpenSSL Project | ||
| 34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
| 35 | * | ||
| 36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
| 37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
| 40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
| 45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
| 47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 48 | * ==================================================================== | ||
| 49 | * | ||
| 50 | * This product includes cryptographic software written by Eric Young | ||
| 51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
| 52 | * Hudson (tjh@cryptsoft.com). | ||
| 53 | * | ||
| 54 | */ | ||
| 55 | |||
| 56 | #include <openssl/crypto.h> | ||
| 57 | |||
| 58 | #if defined(__OpenBSD__) || (defined(__FreeBSD__) && __FreeBSD__ > 2) | ||
| 59 | |||
| 60 | #include <unistd.h> | ||
| 61 | |||
| 62 | int OPENSSL_issetugid(void) | ||
| 63 | { | ||
| 64 | return issetugid(); | ||
| 65 | } | ||
| 66 | |||
| 67 | #elif defined(WIN32) | ||
| 68 | |||
| 69 | int OPENSSL_issetugid(void) | ||
| 70 | { | ||
| 71 | return 0; | ||
| 72 | } | ||
| 73 | |||
| 74 | #else | ||
| 75 | |||
| 76 | #include <unistd.h> | ||
| 77 | #include <sys/types.h> | ||
| 78 | |||
| 79 | int OPENSSL_issetugid(void) | ||
| 80 | { | ||
| 81 | if (getuid() != geteuid()) return 1; | ||
| 82 | if (getgid() != getegid()) return 1; | ||
| 83 | return 0; | ||
| 84 | } | ||
| 85 | #endif | ||
| 86 | |||
| 87 | |||
| 88 | |||
| diff --git a/src/lib/libssl/src/crypto/x509/Makefile.ssl b/src/lib/libssl/src/crypto/x509/Makefile.ssl index 4619693733..79f09d4f71 100644 --- a/src/lib/libssl/src/crypto/x509/Makefile.ssl +++ b/src/lib/libssl/src/crypto/x509/Makefile.ssl | |||
| @@ -49,7 +49,8 @@ all: lib | |||
| 49 | 49 | ||
| 50 | lib: $(LIBOBJ) | 50 | lib: $(LIBOBJ) | 
| 51 | $(AR) $(LIB) $(LIBOBJ) | 51 | $(AR) $(LIB) $(LIBOBJ) | 
| 52 | $(RANLIB) $(LIB) | 52 | @echo You may get an error following this line. Please ignore. | 
| 53 | - $(RANLIB) $(LIB) | ||
| 53 | @touch lib | 54 | @touch lib | 
| 54 | 55 | ||
| 55 | files: | 56 | files: | 
| diff --git a/src/lib/libssl/src/crypto/x509/by_dir.c b/src/lib/libssl/src/crypto/x509/by_dir.c index cac64a6f40..448bd7e69c 100644 --- a/src/lib/libssl/src/crypto/x509/by_dir.c +++ b/src/lib/libssl/src/crypto/x509/by_dir.c | |||
| @@ -327,7 +327,7 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, | |||
| 327 | * it out again */ | 327 | * it out again */ | 
| 328 | CRYPTO_r_lock(CRYPTO_LOCK_X509_STORE); | 328 | CRYPTO_r_lock(CRYPTO_LOCK_X509_STORE); | 
| 329 | j = sk_X509_OBJECT_find(xl->store_ctx->objs,&stmp); | 329 | j = sk_X509_OBJECT_find(xl->store_ctx->objs,&stmp); | 
| 330 | if(j != -1) tmp=sk_X509_OBJECT_value(xl->store_ctx->objs,i); | 330 | if(j != -1) tmp=sk_X509_OBJECT_value(xl->store_ctx->objs,j); | 
| 331 | else tmp = NULL; | 331 | else tmp = NULL; | 
| 332 | CRYPTO_r_unlock(CRYPTO_LOCK_X509_STORE); | 332 | CRYPTO_r_unlock(CRYPTO_LOCK_X509_STORE); | 
| 333 | 333 | ||
| diff --git a/src/lib/libssl/src/crypto/x509/x509_cmp.c b/src/lib/libssl/src/crypto/x509/x509_cmp.c index b147d573d2..3f9f9b3d47 100644 --- a/src/lib/libssl/src/crypto/x509/x509_cmp.c +++ b/src/lib/libssl/src/crypto/x509/x509_cmp.c | |||
| @@ -199,19 +199,13 @@ unsigned long X509_NAME_hash(X509_NAME *x) | |||
| 199 | { | 199 | { | 
| 200 | unsigned long ret=0; | 200 | unsigned long ret=0; | 
| 201 | unsigned char md[16]; | 201 | unsigned char md[16]; | 
| 202 | unsigned char str[256],*p,*pp; | ||
| 203 | int i; | ||
| 204 | |||
| 205 | i=i2d_X509_NAME(x,NULL); | ||
| 206 | if (i > sizeof(str)) | ||
| 207 | p=OPENSSL_malloc(i); | ||
| 208 | else | ||
| 209 | p=str; | ||
| 210 | 202 | ||
| 211 | pp=p; | 203 | /* Ensure cached version is up to date */ | 
| 212 | i2d_X509_NAME(x,&pp); | 204 | i2d_X509_NAME(x,NULL); | 
| 213 | MD5((unsigned char *)p,i,&(md[0])); | 205 | /* Use cached encoding directly rather than copying: this should | 
| 214 | if (p != str) OPENSSL_free(p); | 206 | * keep libsafe happy. | 
| 207 | */ | ||
| 208 | MD5((unsigned char *)x->bytes->data,x->bytes->length,&(md[0])); | ||
| 215 | 209 | ||
| 216 | ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)| | 210 | ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)| | 
| 217 | ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L) | 211 | ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L) | 
| diff --git a/src/lib/libssl/src/crypto/x509v3/Makefile.ssl b/src/lib/libssl/src/crypto/x509v3/Makefile.ssl index f7c3a6ca13..236e13af4e 100644 --- a/src/lib/libssl/src/crypto/x509v3/Makefile.ssl +++ b/src/lib/libssl/src/crypto/x509v3/Makefile.ssl | |||
| @@ -43,7 +43,8 @@ all: lib | |||
| 43 | 43 | ||
| 44 | lib: $(LIBOBJ) | 44 | lib: $(LIBOBJ) | 
| 45 | $(AR) $(LIB) $(LIBOBJ) | 45 | $(AR) $(LIB) $(LIBOBJ) | 
| 46 | $(RANLIB) $(LIB) | 46 | @echo You may get an error following this line. Please ignore. | 
| 47 | - $(RANLIB) $(LIB) | ||
| 47 | @touch lib | 48 | @touch lib | 
| 48 | 49 | ||
| 49 | files: | 50 | files: | 
| diff --git a/src/lib/libssl/src/crypto/x509v3/v3_alt.c b/src/lib/libssl/src/crypto/x509v3/v3_alt.c index 733919f250..94bebcd448 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_alt.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_alt.c | |||
| @@ -270,7 +270,7 @@ static int copy_email(X509V3_CTX *ctx, STACK_OF(GENERAL_NAME) *gens) | |||
| 270 | /* Now add any email address(es) to STACK */ | 270 | /* Now add any email address(es) to STACK */ | 
| 271 | i = -1; | 271 | i = -1; | 
| 272 | while((i = X509_NAME_get_index_by_NID(nm, | 272 | while((i = X509_NAME_get_index_by_NID(nm, | 
| 273 | NID_pkcs9_emailAddress, i)) > 0) { | 273 | NID_pkcs9_emailAddress, i)) >= 0) { | 
| 274 | ne = X509_NAME_get_entry(nm, i); | 274 | ne = X509_NAME_get_entry(nm, i); | 
| 275 | email = M_ASN1_IA5STRING_dup(X509_NAME_ENTRY_get_data(ne)); | 275 | email = M_ASN1_IA5STRING_dup(X509_NAME_ENTRY_get_data(ne)); | 
| 276 | if(!email || !(gen = GENERAL_NAME_new())) { | 276 | if(!email || !(gen = GENERAL_NAME_new())) { | 
| diff --git a/src/lib/libssl/src/crypto/x509v3/v3_prn.c b/src/lib/libssl/src/crypto/x509v3/v3_prn.c index dbc4fb1f16..14b804c4ad 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_prn.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_prn.c | |||
| @@ -85,9 +85,16 @@ void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, int ml) | |||
| 85 | else BIO_printf(out, "%s:%s", nval->name, nval->value); | 85 | else BIO_printf(out, "%s:%s", nval->name, nval->value); | 
| 86 | #else | 86 | #else | 
| 87 | else { | 87 | else { | 
| 88 | char tmp[10240]; /* 10k is BIO_printf's limit anyway */ | 88 | int len; | 
| 89 | ascii2ebcdic(tmp, nval->value, strlen(nval->value)+1); | 89 | char *tmp; | 
| 90 | BIO_printf(out, "%s:%s", nval->name, tmp); | 90 | len = strlen(nval->value)+1; | 
| 91 | tmp = OPENSSL_malloc(len); | ||
| 92 | if (tmp) | ||
| 93 | { | ||
| 94 | ascii2ebcdic(tmp, nval->value, len); | ||
| 95 | BIO_printf(out, "%s:%s", nval->name, tmp); | ||
| 96 | OPENSSL_free(tmp); | ||
| 97 | } | ||
| 91 | } | 98 | } | 
| 92 | #endif | 99 | #endif | 
| 93 | if(ml) BIO_puts(out, "\n"); | 100 | if(ml) BIO_puts(out, "\n"); | 
| @@ -115,9 +122,16 @@ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, int flag, int indent) | |||
| 115 | BIO_printf(out, "%*s%s", indent, "", value); | 122 | BIO_printf(out, "%*s%s", indent, "", value); | 
| 116 | #else | 123 | #else | 
| 117 | { | 124 | { | 
| 118 | char tmp[10240]; /* 10k is BIO_printf's limit anyway */ | 125 | int len; | 
| 119 | ascii2ebcdic(tmp, value, strlen(value)+1); | 126 | char *tmp; | 
| 120 | BIO_printf(out, "%*s%s", indent, "", tmp); | 127 | len = strlen(value)+1; | 
| 128 | tmp = OPENSSL_malloc(len); | ||
| 129 | if (tmp) | ||
| 130 | { | ||
| 131 | ascii2ebcdic(tmp, value, len); | ||
| 132 | BIO_printf(out, "%*s%s", indent, "", tmp); | ||
| 133 | OPENSSL_free(tmp); | ||
| 134 | } | ||
| 121 | } | 135 | } | 
| 122 | #endif | 136 | #endif | 
| 123 | } else if(method->i2v) { | 137 | } else if(method->i2v) { | 
| diff --git a/src/lib/libssl/src/crypto/x509v3/v3_purp.c b/src/lib/libssl/src/crypto/x509v3/v3_purp.c index 867699b26f..8aecd00e63 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_purp.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_purp.c | |||
| @@ -362,6 +362,8 @@ static int ca_check(const X509 *x) | |||
| 362 | else return 0; | 362 | else return 0; | 
| 363 | } else { | 363 | } else { | 
| 364 | if((x->ex_flags & V1_ROOT) == V1_ROOT) return 3; | 364 | if((x->ex_flags & V1_ROOT) == V1_ROOT) return 3; | 
| 365 | /* If key usage present it must have certSign so tolerate it */ | ||
| 366 | else if (x->ex_flags & EXFLAG_KUSAGE) return 3; | ||
| 365 | else return 2; | 367 | else return 2; | 
| 366 | } | 368 | } | 
| 367 | } | 369 | } | 
| @@ -380,7 +382,7 @@ static int check_ssl_ca(const X509 *x) | |||
| 380 | if(ca_ret != 2) return ca_ret; | 382 | if(ca_ret != 2) return ca_ret; | 
| 381 | else return 0; | 383 | else return 0; | 
| 382 | } | 384 | } | 
| 383 | 385 | ||
| 384 | 386 | ||
| 385 | static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x, int ca) | 387 | static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x, int ca) | 
| 386 | { | 388 | { | 
| @@ -446,7 +448,7 @@ static int check_purpose_smime_sign(const X509_PURPOSE *xp, const X509 *x, int c | |||
| 446 | int ret; | 448 | int ret; | 
| 447 | ret = purpose_smime(x, ca); | 449 | ret = purpose_smime(x, ca); | 
| 448 | if(!ret || ca) return ret; | 450 | if(!ret || ca) return ret; | 
| 449 | if(ku_reject(x, KU_DIGITAL_SIGNATURE)) return 0; | 451 | if(ku_reject(x, KU_DIGITAL_SIGNATURE|KU_NON_REPUDIATION)) return 0; | 
| 450 | return ret; | 452 | return ret; | 
| 451 | } | 453 | } | 
| 452 | 454 | ||
| diff --git a/src/lib/libssl/src/doc/apps/pkcs12.pod b/src/lib/libssl/src/doc/apps/pkcs12.pod index c4009998b8..7e0307dda0 100644 --- a/src/lib/libssl/src/doc/apps/pkcs12.pod +++ b/src/lib/libssl/src/doc/apps/pkcs12.pod | |||
| @@ -304,6 +304,26 @@ Include some extra certificates: | |||
| 304 | 304 | ||
| 305 | Some would argue that the PKCS#12 standard is one big bug :-) | 305 | Some would argue that the PKCS#12 standard is one big bug :-) | 
| 306 | 306 | ||
| 307 | Versions of OpenSSL before 0.9.6a had a bug in the PKCS#12 key generation | ||
| 308 | routines. Under rare circumstances this could produce a PKCS#12 file encrypted | ||
| 309 | with an invalid key. As a result some PKCS#12 files which triggered this bug | ||
| 310 | from other implementations (MSIE or Netscape) could not be decrypted | ||
| 311 | by OpenSSL and similarly OpenSSL could produce PKCS#12 files which could | ||
| 312 | not be decrypted by other implementations. The chances of producing such | ||
| 313 | a file are relatively small: less than 1 in 256. | ||
| 314 | |||
| 315 | A side effect of fixing this bug is that any old invalidly encrypted PKCS#12 | ||
| 316 | files cannot no longer be parsed by the fixed version. Under such circumstances | ||
| 317 | the B<pkcs12> utility will report that the MAC is OK but fail with a decryption | ||
| 318 | error when extracting private keys. | ||
| 319 | |||
| 320 | This problem can be resolved by extracting the private keys and certificates | ||
| 321 | from the PKCS#12 file using an older version of OpenSSL and recreating the PKCS#12 | ||
| 322 | file from the keys and certificates using a newer version of OpenSSL. For example: | ||
| 323 | |||
| 324 | old-openssl -in bad.p12 -out keycerts.pem | ||
| 325 | openssl -in keycerts.pem -export -name "My PKCS#12 file" -out fixed.p12 | ||
| 326 | |||
| 307 | =head1 SEE ALSO | 327 | =head1 SEE ALSO | 
| 308 | 328 | ||
| 309 | L<pkcs8(1)|pkcs8(1)> | 329 | L<pkcs8(1)|pkcs8(1)> | 
| diff --git a/src/lib/libssl/src/doc/apps/s_client.pod b/src/lib/libssl/src/doc/apps/s_client.pod index 9df1c07fb7..078ff086c3 100644 --- a/src/lib/libssl/src/doc/apps/s_client.pod +++ b/src/lib/libssl/src/doc/apps/s_client.pod | |||
| @@ -32,6 +32,7 @@ B<openssl> B<s_client> | |||
| 32 | [B<-no_tls1>] | 32 | [B<-no_tls1>] | 
| 33 | [B<-bugs>] | 33 | [B<-bugs>] | 
| 34 | [B<-cipher cipherlist>] | 34 | [B<-cipher cipherlist>] | 
| 35 | [B<-rand file(s)>] | ||
| 35 | [B<-engine id>] | 36 | [B<-engine id>] | 
| 36 | 37 | ||
| 37 | =head1 DESCRIPTION | 38 | =head1 DESCRIPTION | 
| @@ -157,6 +158,14 @@ the server determines which cipher suite is used it should take the first | |||
| 157 | supported cipher in the list sent by the client. See the B<ciphers> | 158 | supported cipher in the list sent by the client. See the B<ciphers> | 
| 158 | command for more information. | 159 | command for more information. | 
| 159 | 160 | ||
| 161 | =item B<-rand file(s)> | ||
| 162 | |||
| 163 | a file or files containing random data used to seed the random number | ||
| 164 | generator, or an EGD socket (see L<RAND_egd(3)|RAND_egd(3)>). | ||
| 165 | Multiple files can be specified separated by a OS-dependent character. | ||
| 166 | The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for | ||
| 167 | all others. | ||
| 168 | |||
| 160 | =item B<-engine id> | 169 | =item B<-engine id> | 
| 161 | 170 | ||
| 162 | specifying an engine (by it's unique B<id> string) will cause B<s_client> | 171 | specifying an engine (by it's unique B<id> string) will cause B<s_client> | 
| diff --git a/src/lib/libssl/src/doc/apps/s_server.pod b/src/lib/libssl/src/doc/apps/s_server.pod index 3a5bf46e28..419383b55d 100644 --- a/src/lib/libssl/src/doc/apps/s_server.pod +++ b/src/lib/libssl/src/doc/apps/s_server.pod | |||
| @@ -39,6 +39,7 @@ B<openssl> B<s_client> | |||
| 39 | [B<-hack>] | 39 | [B<-hack>] | 
| 40 | [B<-www>] | 40 | [B<-www>] | 
| 41 | [B<-WWW>] | 41 | [B<-WWW>] | 
| 42 | [B<-rand file(s)>] | ||
| 42 | [B<-engine id>] | 43 | [B<-engine id>] | 
| 43 | 44 | ||
| 44 | =head1 DESCRIPTION | 45 | =head1 DESCRIPTION | 
| @@ -95,7 +96,7 @@ using a set of DH parameters. If not specified then an attempt is made to | |||
| 95 | load the parameters from the server certificate file. If this fails then | 96 | load the parameters from the server certificate file. If this fails then | 
| 96 | a static set of parameters hard coded into the s_server program will be used. | 97 | a static set of parameters hard coded into the s_server program will be used. | 
| 97 | 98 | ||
| 98 | =item B<-nodhe> | 99 | =item B<-no_dhe> | 
| 99 | 100 | ||
| 100 | if this option is set then no DH parameters will be loaded effectively | 101 | if this option is set then no DH parameters will be loaded effectively | 
| 101 | disabling the ephemeral DH cipher suites. | 102 | disabling the ephemeral DH cipher suites. | 
| @@ -187,6 +188,14 @@ emulates a simple web server. Pages will be resolved relative to the | |||
| 187 | current directory, for example if the URL https://myhost/page.html is | 188 | current directory, for example if the URL https://myhost/page.html is | 
| 188 | requested the file ./page.html will be loaded. | 189 | requested the file ./page.html will be loaded. | 
| 189 | 190 | ||
| 191 | =item B<-rand file(s)> | ||
| 192 | |||
| 193 | a file or files containing random data used to seed the random number | ||
| 194 | generator, or an EGD socket (see L<RAND_egd(3)|RAND_egd(3)>). | ||
| 195 | Multiple files can be specified separated by a OS-dependent character. | ||
| 196 | The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for | ||
| 197 | all others. | ||
| 198 | |||
| 190 | =item B<-engine id> | 199 | =item B<-engine id> | 
| 191 | 200 | ||
| 192 | specifying an engine (by it's unique B<id> string) will cause B<s_server> | 201 | specifying an engine (by it's unique B<id> string) will cause B<s_server> | 
| diff --git a/src/lib/libssl/src/doc/crypto/BN_rand.pod b/src/lib/libssl/src/doc/crypto/BN_rand.pod index f234553853..5406552ba4 100644 --- a/src/lib/libssl/src/doc/crypto/BN_rand.pod +++ b/src/lib/libssl/src/doc/crypto/BN_rand.pod | |||
| @@ -12,24 +12,31 @@ BN_rand, BN_pseudo_rand - generate pseudo-random number | |||
| 12 | 12 | ||
| 13 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); | 13 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); | 
| 14 | 14 | ||
| 15 | int BN_rand_range(BIGNUM *rnd, BIGNUM *range); | ||
| 16 | |||
| 15 | =head1 DESCRIPTION | 17 | =head1 DESCRIPTION | 
| 16 | 18 | ||
| 17 | BN_rand() generates a cryptographically strong pseudo-random number of | 19 | BN_rand() generates a cryptographically strong pseudo-random number of | 
| 18 | B<bits> bits in length and stores it in B<rnd>. If B<top> is true, the | 20 | B<bits> bits in length and stores it in B<rnd>. If B<top> is -1, the | 
| 19 | two most significant bits of the number will be set to 1, so that the | 21 | most significant bit of the random number can be zero. If B<top> is 0, | 
| 20 | product of two such random numbers will always have 2*B<bits> length. | 22 | it is set to 1, and if B<top> is 1, the two most significant bits of | 
| 21 | If B<bottom> is true, the number will be odd. | 23 | the number will be set to 1, so that the product of two such random | 
| 24 | numbers will always have 2*B<bits> length. If B<bottom> is true, the | ||
| 25 | number will be odd. | ||
| 22 | 26 | ||
| 23 | BN_pseudo_rand() does the same, but pseudo-random numbers generated by | 27 | BN_pseudo_rand() does the same, but pseudo-random numbers generated by | 
| 24 | this function are not necessarily unpredictable. They can be used for | 28 | this function are not necessarily unpredictable. They can be used for | 
| 25 | non-cryptographic purposes and for certain purposes in cryptographic | 29 | non-cryptographic purposes and for certain purposes in cryptographic | 
| 26 | protocols, but usually not for key generation etc. | 30 | protocols, but usually not for key generation etc. | 
| 27 | 31 | ||
| 28 | The PRNG must be seeded prior to calling BN_rand(). | 32 | BN_rand_range() generates a cryptographically strong pseudo-random | 
| 33 | number B<rnd> in the range 0 <lt>= B<rnd> E<lt> B<range>. | ||
| 34 | |||
| 35 | The PRNG must be seeded prior to calling BN_rand() or BN_rand_range(). | ||
| 29 | 36 | ||
| 30 | =head1 RETURN VALUES | 37 | =head1 RETURN VALUES | 
| 31 | 38 | ||
| 32 | BN_rand() and BN_pseudo_rand() return 1 on success, 0 on error. | 39 | The functions return 1 on success, 0 on error. | 
| 33 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 40 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 
| 34 | 41 | ||
| 35 | =head1 SEE ALSO | 42 | =head1 SEE ALSO | 
| @@ -40,6 +47,7 @@ L<RAND_add(3)|RAND_add(3)>, L<RAND_bytes(3)|RAND_bytes(3)> | |||
| 40 | =head1 HISTORY | 47 | =head1 HISTORY | 
| 41 | 48 | ||
| 42 | BN_rand() is available in all versions of SSLeay and OpenSSL. | 49 | BN_rand() is available in all versions of SSLeay and OpenSSL. | 
| 43 | BN_pseudo_rand() was added in OpenSSL 0.9.5. | 50 | BN_pseudo_rand() was added in OpenSSL 0.9.5. The B<top> == -1 case | 
| 51 | and the function BN_rand_range() were added in OpenSSL 0.9.6a. | ||
| 44 | 52 | ||
| 45 | =cut | 53 | =cut | 
| diff --git a/src/lib/libssl/src/doc/crypto/RAND_egd.pod b/src/lib/libssl/src/doc/crypto/RAND_egd.pod index 40241e2df8..71cab3ca04 100644 --- a/src/lib/libssl/src/doc/crypto/RAND_egd.pod +++ b/src/lib/libssl/src/doc/crypto/RAND_egd.pod | |||
| @@ -9,10 +9,30 @@ RAND_egd - query entropy gathering daemon | |||
| 9 | #include <openssl/rand.h> | 9 | #include <openssl/rand.h> | 
| 10 | 10 | ||
| 11 | int RAND_egd(const char *path); | 11 | int RAND_egd(const char *path); | 
| 12 | int RAND_egd_bytes(const char *path, int bytes); | ||
| 12 | 13 | ||
| 13 | =head1 DESCRIPTION | 14 | =head1 DESCRIPTION | 
| 14 | 15 | ||
| 15 | RAND_egd() queries the entropy gathering daemon EGD on socket B<path>. | 16 | RAND_egd() queries the entropy gathering daemon EGD on socket B<path>. | 
| 17 | It queries 255 bytes and uses L<RAND_add(3)|RAND_add(3)> to seed the | ||
| 18 | OpenSSL built-in PRNG. RAND_egd(path) is a wrapper for | ||
| 19 | RAND_egd_bytes(path, 255); | ||
| 20 | |||
| 21 | RAND_egd_bytes() queries the entropy gathering daemon EGD on socket B<path>. | ||
| 22 | It queries B<bytes> bytes and uses L<RAND_add(3)|RAND_add(3)> to seed the | ||
| 23 | OpenSSL built-in PRNG. | ||
| 24 | This function is more flexible than RAND_egd(). | ||
| 25 | When only one secret key must | ||
| 26 | be generated, it is not necessary to request the full amount 255 bytes from | ||
| 27 | the EGD socket. This can be advantageous, since the amount of entropy | ||
| 28 | that can be retrieved from EGD over time is limited. | ||
| 29 | |||
| 30 | =head1 NOTES | ||
| 31 | |||
| 32 | On systems without /dev/*random devices providing entropy from the kernel, | ||
| 33 | the EGD entropy gathering daemon can be used to collect entropy. It provides | ||
| 34 | a socket interface through which entropy can be gathered in chunks up to | ||
| 35 | 255 bytes. Several chunks can be queried during one connection. | ||
| 16 | 36 | ||
| 17 | EGD is available from http://www.lothar.com/tech/crypto/ (C<perl | 37 | EGD is available from http://www.lothar.com/tech/crypto/ (C<perl | 
| 18 | Makefile.PL; make; make install> to install). It is run as B<egd> | 38 | Makefile.PL; make; make install> to install). It is run as B<egd> | 
| @@ -21,22 +41,27 @@ RAND_egd() is called with that path as an argument, it tries to read | |||
| 21 | random bytes that EGD has collected. The read is performed in | 41 | random bytes that EGD has collected. The read is performed in | 
| 22 | non-blocking mode. | 42 | non-blocking mode. | 
| 23 | 43 | ||
| 24 | Alternatively, the EGD-compatible daemon PRNGD can be used. It is | 44 | Alternatively, the EGD-interface compatible daemon PRNGD can be used. It is | 
| 25 | available from | 45 | available from | 
| 26 | http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html . | 46 | http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html . | 
| 47 | PRNGD does employ an internal PRNG itself and can therefore never run | ||
| 48 | out of entropy. | ||
| 27 | 49 | ||
| 28 | =head1 RETURN VALUE | 50 | =head1 RETURN VALUE | 
| 29 | 51 | ||
| 30 | RAND_egd() returns the number of bytes read from the daemon on | 52 | RAND_egd() and RAND_egd_bytes() return the number of bytes read from the | 
| 31 | success, and -1 if the connection failed or the daemon did not return | 53 | daemon on success, and -1 if the connection failed or the daemon did not | 
| 32 | enough data to fully seed the PRNG. | 54 | return enough data to fully seed the PRNG. | 
| 33 | 55 | ||
| 34 | =head1 SEE ALSO | 56 | =head1 SEE ALSO | 
| 35 | 57 | ||
| 36 | L<rand(3)|rand(3)>, L<RAND_add(3)|RAND_add(3)>, L<RAND_cleanup(3)|RAND_cleanup(3)> | 58 | L<rand(3)|rand(3)>, L<RAND_add(3)|RAND_add(3)>, | 
| 59 | L<RAND_cleanup(3)|RAND_cleanup(3)> | ||
| 37 | 60 | ||
| 38 | =head1 HISTORY | 61 | =head1 HISTORY | 
| 39 | 62 | ||
| 40 | RAND_egd() is available since OpenSSL 0.9.5. | 63 | RAND_egd() is available since OpenSSL 0.9.5. | 
| 41 | 64 | ||
| 65 | RAND_egd_bytes() is available since OpenSSL 0.9.6. | ||
| 66 | |||
| 42 | =cut | 67 | =cut | 
| diff --git a/src/lib/libssl/src/doc/crypto/RAND_load_file.pod b/src/lib/libssl/src/doc/crypto/RAND_load_file.pod index 8dd700ca3d..d8c134e621 100644 --- a/src/lib/libssl/src/doc/crypto/RAND_load_file.pod +++ b/src/lib/libssl/src/doc/crypto/RAND_load_file.pod | |||
| @@ -8,7 +8,7 @@ RAND_load_file, RAND_write_file, RAND_file_name - PRNG seed file | |||
| 8 | 8 | ||
| 9 | #include <openssl/rand.h> | 9 | #include <openssl/rand.h> | 
| 10 | 10 | ||
| 11 | const char *RAND_file_name(char *buf, int num); | 11 | const char *RAND_file_name(char *buf, size_t num); | 
| 12 | 12 | ||
| 13 | int RAND_load_file(const char *filename, long max_bytes); | 13 | int RAND_load_file(const char *filename, long max_bytes); | 
| 14 | 14 | ||
| diff --git a/src/lib/libssl/src/doc/crypto/bn.pod b/src/lib/libssl/src/doc/crypto/bn.pod index 1504a1c92d..d183028d61 100644 --- a/src/lib/libssl/src/doc/crypto/bn.pod +++ b/src/lib/libssl/src/doc/crypto/bn.pod | |||
| @@ -60,6 +60,7 @@ bn - multiprecision integer arithmetics | |||
| 60 | 60 | ||
| 61 | int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); | 61 | int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); | 
| 62 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); | 62 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); | 
| 63 | int BN_rand_range(BIGNUM *rnd, BIGNUM *range); | ||
| 63 | 64 | ||
| 64 | BIGNUM *BN_generate_prime(BIGNUM *ret, int bits,int safe, BIGNUM *add, | 65 | BIGNUM *BN_generate_prime(BIGNUM *ret, int bits,int safe, BIGNUM *add, | 
| 65 | BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg); | 66 | BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg); | 
| diff --git a/src/lib/libssl/src/doc/crypto/evp.pod b/src/lib/libssl/src/doc/crypto/evp.pod index f089dd49a2..edf47dbde6 100644 --- a/src/lib/libssl/src/doc/crypto/evp.pod +++ b/src/lib/libssl/src/doc/crypto/evp.pod | |||
| @@ -10,7 +10,7 @@ evp - high-level cryptographic functions | |||
| 10 | 10 | ||
| 11 | =head1 DESCRIPTION | 11 | =head1 DESCRIPTION | 
| 12 | 12 | ||
| 13 | The EVP library provided a high-level interface to cryptographic | 13 | The EVP library provides a high-level interface to cryptographic | 
| 14 | functions. | 14 | functions. | 
| 15 | 15 | ||
| 16 | B<EVP_Seal>I<...> and B<EVP_Open>I<...> provide public key encryption | 16 | B<EVP_Seal>I<...> and B<EVP_Open>I<...> provide public key encryption | 
| diff --git a/src/lib/libssl/src/doc/crypto/rand.pod b/src/lib/libssl/src/doc/crypto/rand.pod index 295b681050..9545f0e109 100644 --- a/src/lib/libssl/src/doc/crypto/rand.pod +++ b/src/lib/libssl/src/doc/crypto/rand.pod | |||
| @@ -8,17 +8,17 @@ rand - pseudo-random number generator | |||
| 8 | 8 | ||
| 9 | #include <openssl/rand.h> | 9 | #include <openssl/rand.h> | 
| 10 | 10 | ||
| 11 | int RAND_bytes(unsigned char *buf,int num); | 11 | int RAND_bytes(unsigned char *buf, int num); | 
| 12 | int RAND_pseudo_bytes(unsigned char *buf,int num); | 12 | int RAND_pseudo_bytes(unsigned char *buf, int num); | 
| 13 | 13 | ||
| 14 | void RAND_seed(const void *buf,int num); | 14 | void RAND_seed(const void *buf, int num); | 
| 15 | void RAND_add(const void *buf,int num,int entropy); | 15 | void RAND_add(const void *buf, int num, int entropy); | 
| 16 | int RAND_status(void); | 16 | int RAND_status(void); | 
| 17 | void RAND_screen(void); | 17 | void RAND_screen(void); | 
| 18 | 18 | ||
| 19 | int RAND_load_file(const char *file,long max_bytes); | 19 | int RAND_load_file(const char *file, long max_bytes); | 
| 20 | int RAND_write_file(const char *file); | 20 | int RAND_write_file(const char *file); | 
| 21 | const char *RAND_file_name(char *file,int num); | 21 | const char *RAND_file_name(char *file, size_t num); | 
| 22 | 22 | ||
| 23 | int RAND_egd(const char *path); | 23 | int RAND_egd(const char *path); | 
| 24 | 24 | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod b/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod index 7fea14ee68..4b91c63ba0 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod | |||
| @@ -2,8 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | =head1 NAME | 3 | =head1 NAME | 
| 4 | 4 | ||
| 5 | SSL_CIPHER_get_name, SSL_CIPHER_get_bits, SSL_CIPHER_get_version, | 5 | SSL_CIPHER_get_name, SSL_CIPHER_get_bits, SSL_CIPHER_get_version, SSL_CIPHER_description - get SSL_CIPHER properties | 
| 6 | SSL_CIPHER_description - get SSL_CIPHER properties | ||
| 7 | 6 | ||
| 8 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS | 
| 9 | 8 | ||
| @@ -29,9 +28,10 @@ SSL_CIPHER_get_version() returns the protocol version for B<cipher>, currently | |||
| 29 | 28 | ||
| 30 | SSL_CIPHER_description() returns a textual description of the cipher used | 29 | SSL_CIPHER_description() returns a textual description of the cipher used | 
| 31 | into the buffer B<buf> of length B<len> provided. B<len> must be at least | 30 | into the buffer B<buf> of length B<len> provided. B<len> must be at least | 
| 32 | 128 bytes, otherwise the string "Buffer too small" is returned. If B<buf> | 31 | 128 bytes, otherwise a pointer to the the string "Buffer too small" is | 
| 33 | is NULL, a buffer of 128 bytes is allocated using OPENSSL_malloc(). If the | 32 | returned. If B<buf> is NULL, a buffer of 128 bytes is allocated using | 
| 34 | allocation fails, the string "OPENSSL_malloc Error" is returned. | 33 | OPENSSL_malloc(). If the allocation fails, a pointer to the string | 
| 34 | "OPENSSL_malloc Error" is returned. | ||
| 35 | 35 | ||
| 36 | =head1 NOTES | 36 | =head1 NOTES | 
| 37 | 37 | ||
| @@ -40,11 +40,66 @@ export cipher like e.g. EXP-RC4-MD5 has only 40 secret bits. The algorithm | |||
| 40 | does use the full 128 bits (which would be returned for B<alg_bits>), of | 40 | does use the full 128 bits (which would be returned for B<alg_bits>), of | 
| 41 | which however 88bits are fixed. The search space is hence only 40 bits. | 41 | which however 88bits are fixed. The search space is hence only 40 bits. | 
| 42 | 42 | ||
| 43 | The string returned by SSL_CIPHER_description() in case of success consists | ||
| 44 | of cleartext information separated by one or more blanks in the following | ||
| 45 | sequence: | ||
| 46 | |||
| 47 | =over 4 | ||
| 48 | |||
| 49 | =item <ciphername> | ||
| 50 | |||
| 51 | Textual representation of the cipher name. | ||
| 52 | |||
| 53 | =item <protocol version> | ||
| 54 | |||
| 55 | Protocol version: B<SSLv2>, B<SSLv3>. The TLSv1 ciphers are flagged with SSLv3. | ||
| 56 | |||
| 57 | =item Kx=<key exchange> | ||
| 58 | |||
| 59 | Key exchange method: B<RSA> (for export ciphers as B<RSA(512)> or | ||
| 60 | B<RSA(1024)>), B<DH> (for export ciphers as B<DH(512)> or B<DH(1024)>), | ||
| 61 | B<DH/RSA>, B<DH/DSS>, B<Fortezza>. | ||
| 62 | |||
| 63 | =item Au=<authentication> | ||
| 64 | |||
| 65 | Authentication method: B<RSA>, B<DSS>, B<DH>, B<None>. None is the | ||
| 66 | representation of anonymous ciphers. | ||
| 67 | |||
| 68 | =item Enc=<symmetric encryption method> | ||
| 69 | |||
| 70 | Encryption method with number of secret bits: B<DES(40)>, B<DES(56)>, | ||
| 71 | B<3DES(168)>, B<RC4(40)>, B<RC4(56)>, B<RC4(64)>, B<RC4(128)>, | ||
| 72 | B<RC2(40)>, B<RC2(56)>, B<RC2(128)>, B<IDEA(128)>, B<Fortezza>, B<None>. | ||
| 73 | |||
| 74 | =item Mac=<message authentication code> | ||
| 75 | |||
| 76 | Message digest: B<MD5>, B<SHA1>. | ||
| 77 | |||
| 78 | =item <export flag> | ||
| 79 | |||
| 80 | If the cipher is flagged exportable with respect to old US crypto | ||
| 81 | regulations, the word "B<export>" is printed. | ||
| 82 | |||
| 83 | =back | ||
| 84 | |||
| 85 | =head1 EXAMPLES | ||
| 86 | |||
| 87 | Some examples for the output of SSL_CIPHER_description(): | ||
| 88 | |||
| 89 | EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1 | ||
| 90 | EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1 | ||
| 91 | RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5 | ||
| 92 | EXP-RC4-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export | ||
| 93 | |||
| 43 | =head1 BUGS | 94 | =head1 BUGS | 
| 44 | 95 | ||
| 45 | If SSL_CIPHER_description() is called with B<cipher> being NULL, the | 96 | If SSL_CIPHER_description() is called with B<cipher> being NULL, the | 
| 46 | library crashes. | 97 | library crashes. | 
| 47 | 98 | ||
| 99 | If SSL_CIPHER_description() cannot handle a built-in cipher, the according | ||
| 100 | description of the cipher property is B<unknown>. This case should not | ||
| 101 | occur. | ||
| 102 | |||
| 48 | =head1 RETURN VALUES | 103 | =head1 RETURN VALUES | 
| 49 | 104 | ||
| 50 | See DESCRIPTION | 105 | See DESCRIPTION | 
| @@ -52,6 +107,6 @@ See DESCRIPTION | |||
| 52 | =head1 SEE ALSO | 107 | =head1 SEE ALSO | 
| 53 | 108 | ||
| 54 | L<ssl(3)|ssl(3)>, L<SSL_get_current_cipher(3)|SSL_get_current_cipher(3)>, | 109 | L<ssl(3)|ssl(3)>, L<SSL_get_current_cipher(3)|SSL_get_current_cipher(3)>, | 
| 55 | L<SSL_get_ciphers(3)|SSL_get_ciphers(3)> | 110 | L<SSL_get_ciphers(3)|SSL_get_ciphers(3)>, L<ciphers(1)|ciphers(1)> | 
| 56 | 111 | ||
| 57 | =cut | 112 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_add_extra_chain_cert.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_extra_chain_cert.pod new file mode 100644 index 0000000000..21a9db0e2a --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_extra_chain_cert.pod | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_add_extra_chain_cert - add certificate to chain | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_CTX_add_extra_chain_cert(SSL_CTX ctx, X509 *x509) | ||
| 12 | |||
| 13 | =head1 DESCRIPTION | ||
| 14 | |||
| 15 | SSL_CTX_add_extra_chain_cert() adds the certificate B<x509> to the certificate | ||
| 16 | chain presented together with the certificate. Several certificates | ||
| 17 | can be added one after the other. | ||
| 18 | |||
| 19 | =head1 NOTES | ||
| 20 | |||
| 21 | When constructing the certificate chain, the chain will be formed from | ||
| 22 | these certificates explicitly specified. If no chain is specified, | ||
| 23 | the library will try to complete the chain from the available CA | ||
| 24 | certificates in the trusted CA storage, see | ||
| 25 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>. | ||
| 26 | |||
| 27 | =head1 RETURN VALUES | ||
| 28 | |||
| 29 | SSL_CTX_add_extra_chain_cert() returns 1 on success. Check out the | ||
| 30 | error stack to find out the reason for failure otherwise. | ||
| 31 | |||
| 32 | =head1 SEE ALSO | ||
| 33 | |||
| 34 | L<ssl(3)|ssl(3)>, | ||
| 35 | L<SSL_CTX_use_certificate(3)|SSL_CTX_use_certificate(3)>, | ||
| 36 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)> | ||
| 37 | |||
| 38 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_add_session.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_session.pod new file mode 100644 index 0000000000..af326c2f73 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_session.pod | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_add_session, SSL_add_session, SSL_CTX_remove_session, SSL_remove_session - manipulate session cache | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c); | ||
| 12 | int SSL_add_session(SSL_CTX *ctx, SSL_SESSION *c); | ||
| 13 | |||
| 14 | int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *c); | ||
| 15 | int SSL_remove_session(SSL_CTX *ctx, SSL_SESSION *c); | ||
| 16 | |||
| 17 | =head1 DESCRIPTION | ||
| 18 | |||
| 19 | SSL_CTX_add_session() adds the session B<c> to the context B<ctx>. The | ||
| 20 | reference count for session B<c> is incremented by 1. If a session with | ||
| 21 | the same session id already exists, the old session is removed by calling | ||
| 22 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>. | ||
| 23 | |||
| 24 | SSL_CTX_remove_session() removes the session B<c> from the context B<ctx>. | ||
| 25 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)> is called once for B<c>. | ||
| 26 | |||
| 27 | SSL_add_session() and SSL_remove_session() are synonyms for their | ||
| 28 | SSL_CTX_*() counterparts. | ||
| 29 | |||
| 30 | =head1 NOTES | ||
| 31 | |||
| 32 | When adding a new session to the internal session cache, it is examined | ||
| 33 | whether a session with the same session id already exists. In this case | ||
| 34 | it is assumed that both sessions are identical. If the same session is | ||
| 35 | stored in a different SSL_SESSION object, The old session is | ||
| 36 | removed and replaced by the new session. If the session is actually | ||
| 37 | identical (the SSL_SESSION object is identical), SSL_CTX_add_session() | ||
| 38 | is a no-op, and the return value is 0. | ||
| 39 | |||
| 40 | |||
| 41 | =head1 RETURN VALUES | ||
| 42 | |||
| 43 | The following values are returned by all functions: | ||
| 44 | |||
| 45 | =over 4 | ||
| 46 | |||
| 47 | =item 0 | ||
| 48 | |||
| 49 | The operation failed. In case of the add operation, it was tried to add | ||
| 50 | the same (identical) session twice. In case of the remove operation, the | ||
| 51 | session was not found in the cache. | ||
| 52 | |||
| 53 | =item 1 | ||
| 54 | |||
| 55 | The operation succeeded. | ||
| 56 | |||
| 57 | =back | ||
| 58 | |||
| 59 | =head1 SEE ALSO | ||
| 60 | |||
| 61 | L<ssl(3)|ssl(3)>, | ||
| 62 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>, | ||
| 63 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)> | ||
| 64 | |||
| 65 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_flush_sessions.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_flush_sessions.pod new file mode 100644 index 0000000000..148c36c871 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_flush_sessions.pod | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_flush_sessions, SSL_flush_sessions - remove expired sessions | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); | ||
| 12 | void SSL_flush_sessions(SSL_CTX *ctx, long tm); | ||
| 13 | |||
| 14 | =head1 DESCRIPTION | ||
| 15 | |||
| 16 | SSL_CTX_flush_sessions() causes a run through the session cache of | ||
| 17 | B<ctx> to remove sessions expired at time B<tm>. | ||
| 18 | |||
| 19 | SSL_flush_sessions() is a synonym for SSL_CTX_flush_sessions(). | ||
| 20 | |||
| 21 | =head1 NOTES | ||
| 22 | |||
| 23 | If enabled, the internal session cache will collect all sessions established | ||
| 24 | up to the specified maximum number (see SSL_CTX_sess_set_cache_size()). | ||
| 25 | As sessions will not be reused ones they are expired, they should be | ||
| 26 | removed from the cache to save resources. This can either be done | ||
| 27 | automatically whenever 255 new sessions were established (see | ||
| 28 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>) | ||
| 29 | or manually by calling SSL_CTX_flush_sessions(). | ||
| 30 | |||
| 31 | The parameter B<tm> specifies the time which should be used for the | ||
| 32 | expiration test, in most cases the actual time given by time(0) | ||
| 33 | will be used. | ||
| 34 | |||
| 35 | SSL_CTX_flush_sessions() will only check sessions stored in the internal | ||
| 36 | cache. When a session is found and removed, the remove_session_cb is however | ||
| 37 | called to synchronize with the external cache (see | ||
| 38 | L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)>). | ||
| 39 | |||
| 40 | =head1 RETURN VALUES | ||
| 41 | |||
| 42 | =head1 SEE ALSO | ||
| 43 | |||
| 44 | L<ssl(3)|ssl(3)>, | ||
| 45 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>, | ||
| 46 | L<SSL_CTX_set_timeout(3)|SSL_CTX_set_timeout(3)>, | ||
| 47 | L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)> | ||
| 48 | |||
| 49 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_free.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_free.pod index de69672422..c716cde164 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_free.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_free.pod | |||
| @@ -17,7 +17,7 @@ SSL_CTX object pointed to by B<ctx> and frees up the allocated memory if the | |||
| 17 | the reference count has reached 0. | 17 | the reference count has reached 0. | 
| 18 | 18 | ||
| 19 | It also calls the free()ing procedures for indirectly affected items, if | 19 | It also calls the free()ing procedures for indirectly affected items, if | 
| 20 | applicable: the session cacahe, the list of ciphers, the list of Client CAs, | 20 | applicable: the session cache, the list of ciphers, the list of Client CAs, | 
| 21 | the certificates and keys. | 21 | the certificates and keys. | 
| 22 | 22 | ||
| 23 | =head1 RETURN VALUES | 23 | =head1 RETURN VALUES | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_get_ex_new_index.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_get_ex_new_index.pod new file mode 100644 index 0000000000..15067438c8 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_get_ex_new_index.pod | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_get_ex_new_index, SSL_CTX_set_ex_data, SSL_CTX_get_ex_data - internal application specific data functions | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | int SSL_CTX_get_ex_new_index(long argl, void *argp, | ||
| 12 | CRYPTO_EX_new *new_func, | ||
| 13 | CRYPTO_EX_dup *dup_func, | ||
| 14 | CRYPTO_EX_free *free_func); | ||
| 15 | |||
| 16 | int SSL_CTX_set_ex_data(SSL_CTX *ctx, int idx, void *arg); | ||
| 17 | |||
| 18 | void *SSL_CTX_get_ex_data(SSL_CTX *ctx, int idx); | ||
| 19 | |||
| 20 | typedef int new_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 21 | int idx, long argl, void *argp); | ||
| 22 | typedef void free_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 23 | int idx, long argl, void *argp); | ||
| 24 | typedef int dup_func(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, void *from_d, | ||
| 25 | int idx, long argl, void *argp); | ||
| 26 | |||
| 27 | =head1 DESCRIPTION | ||
| 28 | |||
| 29 | Several OpenSSL structures can have application specific data attached to them. | ||
| 30 | These functions are used internally by OpenSSL to manipulate application | ||
| 31 | specific data attached to a specific structure. | ||
| 32 | |||
| 33 | SSL_CTX_get_ex_new_index() is used to register a new index for application | ||
| 34 | specific data. | ||
| 35 | |||
| 36 | SSL_CTX_set_ex_data() is used to store application data at B<arg> for B<idx> | ||
| 37 | into the B<ctx> object. | ||
| 38 | |||
| 39 | SSL_CTX_get_ex_data() is used to retrieve the information for B<idx> from | ||
| 40 | B<ctx>. | ||
| 41 | |||
| 42 | A detailed description for the B<*_get_ex_new_index()> functionality | ||
| 43 | can be found in L<RSA_get_ex_new_index.pod(3)|RSA_get_ex_new_index.pod(3)>. | ||
| 44 | The B<*_get_ex_data()> and B<*_set_ex_data()> functionality is described in | ||
| 45 | L<CRYPTO_set_ex_data(3)|CRYPTO_set_ex_data(3)>. | ||
| 46 | |||
| 47 | =head1 SEE ALSO | ||
| 48 | |||
| 49 | L<ssl(3)|ssl(3)>, | ||
| 50 | L<RSA_get_ex_new_index(3)|RSA_get_ex_new_index(3)>, | ||
| 51 | L<CRYPTO_set_ex_data(3)|CRYPTO_set_ex_data(3)> | ||
| 52 | |||
| 53 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_get_verify_mode.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_get_verify_mode.pod new file mode 100644 index 0000000000..7f10c6e945 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_get_verify_mode.pod | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_get_verify_mode, SSL_get_verify_mode, SSL_CTX_get_verify_depth, SSL_get_verify_depth, SSL_get_verify_callback, SSL_CTX_get_verify_callback - get currently set verification parameters | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | int SSL_CTX_get_verify_mode(SSL_CTX *ctx); | ||
| 12 | int SSL_get_verify_mode(SSL *ssl); | ||
| 13 | int SSL_CTX_get_verify_depth(SSL_CTX *ctx); | ||
| 14 | int SSL_get_verify_depth(SSL *ssl); | ||
| 15 | int (*SSL_CTX_get_verify_callback(SSL_CTX *ctx))(int, X509_STORE_CTX *); | ||
| 16 | int (*SSL_get_verify_callback(SSL *ssl))(int, X509_STORE_CTX *); | ||
| 17 | |||
| 18 | =head1 DESCRIPTION | ||
| 19 | |||
| 20 | SSL_CTX_get_verify_mode() returns the verification mode currently set in | ||
| 21 | B<ctx>. | ||
| 22 | |||
| 23 | SSL_get_verify_mode() returns the verification mode currently set in | ||
| 24 | B<ssl>. | ||
| 25 | |||
| 26 | SSL_CTX_get_verify_depth() returns the verification depth limit currently set | ||
| 27 | in B<ctx>. If no limit has been explicitly set, -1 is returned and the | ||
| 28 | default value will be used. | ||
| 29 | |||
| 30 | SSL_get_verify_depth() returns the verification depth limit currently set | ||
| 31 | in B<ssl>. If no limit has been explicitly set, -1 is returned and the | ||
| 32 | default value will be used. | ||
| 33 | |||
| 34 | SSL_CTX_get_verify_callback() returns a function pointer to the verification | ||
| 35 | callback currently set in B<ctx>. If no callback was explicitly set, the | ||
| 36 | NULL pointer is returned and the default callback will be used. | ||
| 37 | |||
| 38 | SSL_get_verify_callback() returns a function pointer to the verification | ||
| 39 | callback currently set in B<ssl>. If no callback was explicitly set, the | ||
| 40 | NULL pointer is returned and the default callback will be used. | ||
| 41 | |||
| 42 | =head1 RETURN VALUES | ||
| 43 | |||
| 44 | See DESCRIPTION | ||
| 45 | |||
| 46 | =head1 SEE ALSO | ||
| 47 | |||
| 48 | L<ssl(3)|ssl(3)>, L<SSL_CTX_set_verify(3)|SSL_CTX_set_verify(3)> | ||
| 49 | |||
| 50 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_load_verify_locations.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_load_verify_locations.pod new file mode 100644 index 0000000000..88f18bd5ff --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_load_verify_locations.pod | |||
| @@ -0,0 +1,124 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_load_verify_locations - set default locations for trusted CA | ||
| 6 | certificates | ||
| 7 | |||
| 8 | =head1 SYNOPSIS | ||
| 9 | |||
| 10 | #include <openssl/ssl.h> | ||
| 11 | |||
| 12 | int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, | ||
| 13 | const char *CApath); | ||
| 14 | |||
| 15 | =head1 DESCRIPTION | ||
| 16 | |||
| 17 | SSL_CTX_load_verify_locations() specifies the locations for B<ctx>, at | ||
| 18 | which CA certificates for verification purposes are located. The certificates | ||
| 19 | available via B<CAfile> and B<CApath> are trusted. | ||
| 20 | |||
| 21 | =head1 NOTES | ||
| 22 | |||
| 23 | If B<CAfile> is not NULL, it points to a file of CA certificates in PEM | ||
| 24 | format. The file can contain several CA certificates identified by | ||
| 25 | |||
| 26 | -----BEGIN CERTIFICATE----- | ||
| 27 | ... (CA certificate in base64 encoding) ... | ||
| 28 | -----END CERTIFICATE----- | ||
| 29 | |||
| 30 | sequences. Before, between, and after the certificates text is allowed | ||
| 31 | which can be used e.g. for descriptions of the certificates. | ||
| 32 | |||
| 33 | The B<CAfile> is processed on execution of the SSL_CTX_load_verify_locations() | ||
| 34 | function. | ||
| 35 | |||
| 36 | If on an TLS/SSL server no special setting is performed using *client_CA_list() | ||
| 37 | functions, the certificates contained in B<CAfile> are listed to the client | ||
| 38 | as available CAs during the TLS/SSL handshake. | ||
| 39 | |||
| 40 | If B<CApath> is not NULL, it points to a directory containing CA certificates | ||
| 41 | in PEM format. The files each contain one CA certificate. The files are | ||
| 42 | looked up by the CA subject name hash value, which must hence be available. | ||
| 43 | If more than one CA certificate with the same name hash value exist, the | ||
| 44 | extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). The search | ||
| 45 | is performed in the ordering of the extension number, regardless of other | ||
| 46 | properties of the certificates. | ||
| 47 | Use the B<c_rehash> utility to create the necessary links. | ||
| 48 | |||
| 49 | The certificates in B<CApath> are only looked up when required, e.g. when | ||
| 50 | building the certificate chain or when actually performing the verification | ||
| 51 | of a peer certificate. | ||
| 52 | |||
| 53 | On a server, the certificates in B<CApath> are not listed as available | ||
| 54 | CA certificates to a client during a TLS/SSL handshake. | ||
| 55 | |||
| 56 | When looking up CA certificates, the OpenSSL library will first search the | ||
| 57 | certificates in B<CAfile>, then those in B<CApath>. Certificate matching | ||
| 58 | is done based on the subject name, the key identifier (if present), and the | ||
| 59 | serial number as taken from the certificate to be verified. If these data | ||
| 60 | do not match, the next certificate will be tried. If a first certificate | ||
| 61 | matching the parameters is found, the verification process will be performed; | ||
| 62 | no other certificates for the same parameters will be searched in case of | ||
| 63 | failure. | ||
| 64 | |||
| 65 | When building its own certificate chain, an OpenSSL client/server will | ||
| 66 | try to fill in missing certificates from B<CAfile>/B<CApath>, if the | ||
| 67 | certificate chain was not explicitly specified (see | ||
| 68 | L<SSL_CTX_add_extra_chain_cert(3)|SSL_CTX_add_extra_chain_cert(3)>, | ||
| 69 | L<SSL_CTX_use_certificate(3)|SSL_CTX_use_certificate(3)>. | ||
| 70 | |||
| 71 | =head1 WARNINGS | ||
| 72 | |||
| 73 | If several CA certificates matching the name, key identifier, and serial | ||
| 74 | number condition are available, only the first one will be examined. This | ||
| 75 | may lead to unexpected results if the same CA certificate is available | ||
| 76 | with different expiration dates. If a "certificate expired" verification | ||
| 77 | error occurs, no other certificate will be searched. Make sure to not | ||
| 78 | have expired certificates mixed with valid ones. | ||
| 79 | |||
| 80 | =head1 EXAMPLES | ||
| 81 | |||
| 82 | Generate a CA certificate file with descriptive text from the CA certificates | ||
| 83 | ca1.pem ca2.pem ca3.pem: | ||
| 84 | |||
| 85 | #!/bin/sh | ||
| 86 | rm CAfile.pem | ||
| 87 | for i in ca1.pem ca2.pem ca3.pem ; do | ||
| 88 | openssl x509 -in $i -text >> CAfile.pem | ||
| 89 | done | ||
| 90 | |||
| 91 | Prepare the directory /some/where/certs containing several CA certificates | ||
| 92 | for use as B<CApath>: | ||
| 93 | |||
| 94 | cd /some/where/certs | ||
| 95 | c_rehash . | ||
| 96 | |||
| 97 | =head1 RETURN VALUES | ||
| 98 | |||
| 99 | The following return values can occur: | ||
| 100 | |||
| 101 | =over 4 | ||
| 102 | |||
| 103 | =item 0 | ||
| 104 | |||
| 105 | The operation failed because B<CAfile> and B<CApath> are NULL or the | ||
| 106 | processing at one of the locations specified failed. Check the error | ||
| 107 | stack to find out the reason. | ||
| 108 | |||
| 109 | =item 1 | ||
| 110 | |||
| 111 | The operation succeeded. | ||
| 112 | |||
| 113 | =back | ||
| 114 | |||
| 115 | =head1 SEE ALSO | ||
| 116 | |||
| 117 | L<ssl(3)|ssl(3)>, | ||
| 118 | L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)>, | ||
| 119 | L<SSL_get_client_CA_list(3)|SSL_get_client_CA_list(3)>, | ||
| 120 | L<SSL_CTX_use_certificate(3)|SSL_CTX_use_certificate(3)>, | ||
| 121 | L<SSL_CTX_add_extra_chain_cert(3)|SSL_CTX_add_extra_chain_cert(3)> | ||
| 122 | |||
| 123 | |||
| 124 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod index e166c692c3..1dae8b0bdd 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod | |||
| @@ -33,9 +33,9 @@ understand SSLv2 client hello messages. | |||
| 33 | =item SSLv3_method(void), SSLv3_server_method(void), SSLv3_client_method(void) | 33 | =item SSLv3_method(void), SSLv3_server_method(void), SSLv3_client_method(void) | 
| 34 | 34 | ||
| 35 | A TLS/SSL connection established with these methods will only understand the | 35 | A TLS/SSL connection established with these methods will only understand the | 
| 36 | SSLv3 and TLSv1 protocol. A client will send out SSLv3 client hello messages | 36 | SSLv3 protocol. A client will send out SSLv3 client hello messages | 
| 37 | and will indicate that it also understands TLSv1. A server will only understand | 37 | and will indicate that it only understands SSLv3. A server will only understand | 
| 38 | SSLv3 and TLSv1 client hello messages. This especially means, that it will | 38 | SSLv3 client hello messages. This especially means, that it will | 
| 39 | not understand SSLv2 client hello messages which are widely used for | 39 | not understand SSLv2 client hello messages which are widely used for | 
| 40 | compatibility reasons, see SSLv23_*_method(). | 40 | compatibility reasons, see SSLv23_*_method(). | 
| 41 | 41 | ||
| @@ -46,7 +46,8 @@ TLSv1 protocol. A client will send out TLSv1 client hello messages | |||
| 46 | and will indicate that it only understands TLSv1. A server will only understand | 46 | and will indicate that it only understands TLSv1. A server will only understand | 
| 47 | TLSv1 client hello messages. This especially means, that it will | 47 | TLSv1 client hello messages. This especially means, that it will | 
| 48 | not understand SSLv2 client hello messages which are widely used for | 48 | not understand SSLv2 client hello messages which are widely used for | 
| 49 | compatibility reasons, see SSLv23_*_method(). | 49 | compatibility reasons, see SSLv23_*_method(). It will also not understand | 
| 50 | SSLv3 client hello messages. | ||
| 50 | 51 | ||
| 51 | =item SSLv23_method(void), SSLv23_server_method(void), SSLv23_client_method(void) | 52 | =item SSLv23_method(void), SSLv23_server_method(void), SSLv23_client_method(void) | 
| 52 | 53 | ||
| @@ -58,6 +59,10 @@ choice when compatibility is a concern. | |||
| 58 | 59 | ||
| 59 | =back | 60 | =back | 
| 60 | 61 | ||
| 62 | If a generic method is used, it is necessary to explicitly set client or | ||
| 63 | server mode with L<SSL_set_connect_state(3)|SSL_set_connect_state(3)> | ||
| 64 | or SSL_set_accept_state(). | ||
| 65 | |||
| 61 | The list of protocols available can later be limited using the SSL_OP_NO_SSLv2, | 66 | The list of protocols available can later be limited using the SSL_OP_NO_SSLv2, | 
| 62 | SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1 options of the B<SSL_CTX_set_options()> or | 67 | SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1 options of the B<SSL_CTX_set_options()> or | 
| 63 | B<SSL_set_options()> functions. Using these options it is possible to choose | 68 | B<SSL_set_options()> functions. Using these options it is possible to choose | 
| @@ -88,6 +93,6 @@ The return value points to an allocated SSL_CTX object. | |||
| 88 | =head1 SEE ALSO | 93 | =head1 SEE ALSO | 
| 89 | 94 | ||
| 90 | L<SSL_CTX_free(3)|SSL_CTX_free(3)>, L<SSL_accept(3)|SSL_accept(3)>, | 95 | L<SSL_CTX_free(3)|SSL_CTX_free(3)>, L<SSL_accept(3)|SSL_accept(3)>, | 
| 91 | L<ssl(3)|ssl(3)> | 96 | L<ssl(3)|ssl(3)>, L<SSL_set_connect_state(3)|SSL_set_connect_state(3)> | 
| 92 | 97 | ||
| 93 | =cut | 98 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_number.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_number.pod new file mode 100644 index 0000000000..19aa4e2902 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_number.pod | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_sess_number, SSL_CTX_sess_connect, SSL_CTX_sess_connect_good, SSL_CTX_sess_connect_renegotiate, SSL_CTX_sess_accept, SSL_CTX_sess_accept_good, SSL_CTX_sess_accept_renegotiate, SSL_CTX_sess_hits, SSL_CTX_sess_cb_hits, SSL_CTX_sess_misses, SSL_CTX_sess_timeouts, SSL_CTX_sess_cache_full - obtain session cache statistics | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_CTX_sess_number(SSL_CTX *ctx); | ||
| 12 | long SSL_CTX_sess_connect(SSL_CTX *ctx); | ||
| 13 | long SSL_CTX_sess_connect_good(SSL_CTX *ctx); | ||
| 14 | long SSL_CTX_sess_connect_renegotiate(SSL_CTX *ctx); | ||
| 15 | long SSL_CTX_sess_accept(SSL_CTX *ctx); | ||
| 16 | long SSL_CTX_sess_accept_good(SSL_CTX *ctx); | ||
| 17 | long SSL_CTX_sess_accept_renegotiate(SSL_CTX *ctx); | ||
| 18 | long SSL_CTX_sess_hits(SSL_CTX *ctx); | ||
| 19 | long SSL_CTX_sess_cb_hits(SSL_CTX *ctx); | ||
| 20 | long SSL_CTX_sess_misses(SSL_CTX *ctx); | ||
| 21 | long SSL_CTX_sess_timeouts(SSL_CTX *ctx); | ||
| 22 | long SSL_CTX_sess_cache_full(SSL_CTX *ctx); | ||
| 23 | |||
| 24 | =head1 DESCRIPTION | ||
| 25 | |||
| 26 | SSL_CTX_sess_number() returns the current number of sessions in the internal | ||
| 27 | session cache. | ||
| 28 | |||
| 29 | SSL_CTX_sess_connect() returns the number of started SSL/TLS handshakes in | ||
| 30 | client mode. | ||
| 31 | |||
| 32 | SSL_CTX_sess_connect_good() returns the number of successfully established | ||
| 33 | SSL/TLS sessions in client mode. | ||
| 34 | |||
| 35 | SSL_CTX_sess_connect_renegotiate() returns the number of start renegotiations | ||
| 36 | in client mode. | ||
| 37 | |||
| 38 | SSL_CTX_sess_accept() returns the number of started SSL/TLS handshakes in | ||
| 39 | server mode. | ||
| 40 | |||
| 41 | SSL_CTX_sess_accept_good() returns the number of successfully established | ||
| 42 | SSL/TLS sessions in server mode. | ||
| 43 | |||
| 44 | SSL_CTX_sess_accept_renegotiate() returns the number of start renegotiations | ||
| 45 | in server mode. | ||
| 46 | |||
| 47 | SSL_CTX_sess_hits() returns the number of successfully reused sessions. | ||
| 48 | In client mode a session set with L<SSL_set_session(3)|SSL_set_session(3)> | ||
| 49 | successfully reused is counted as a hit. In server mode a session successfully | ||
| 50 | retrieved from internal or external cache is counted as a hit. | ||
| 51 | |||
| 52 | SSL_CTX_sess_cb_hits() returns the number of successfully retrieved sessions | ||
| 53 | from the external session cache in server mode. | ||
| 54 | |||
| 55 | SSL_CTX_sess_misses() returns the number of sessions proposed by clients | ||
| 56 | that were not found in the internal session cache in server mode. | ||
| 57 | |||
| 58 | SSL_CTX_sess_timeouts() returns the number of sessions proposed by clients | ||
| 59 | and either found in the internal or external session cache in server mode, | ||
| 60 | but that were invalid due to timeout. These sessions are not included in | ||
| 61 | the SSL_CTX_sess_hits() count. | ||
| 62 | |||
| 63 | SSL_CTX_sess_cache_full() returns the number of sessions that were removed | ||
| 64 | because the maximum session cache size was exceeded. | ||
| 65 | |||
| 66 | =head1 RETURN VALUES | ||
| 67 | |||
| 68 | The functions return the values indicated in the DESCRIPTION section. | ||
| 69 | |||
| 70 | =head1 SEE ALSO | ||
| 71 | |||
| 72 | L<ssl(3)|ssl(3)>, L<SSL_set_session(3)|SSL_set_session(3)>, | ||
| 73 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)> | ||
| 74 | L<SSL_CTX_sess_set_cache_size(3)|SSL_CTX_sess_set_cache_size(3)> | ||
| 75 | |||
| 76 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_set_cache_size.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_set_cache_size.pod new file mode 100644 index 0000000000..d59a7db636 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_set_cache_size.pod | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_sess_set_cache_size, SSL_CTX_sess_get_cache_size - manipulate session cache size | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_CTX_sess_set_cache_size(SSL_CTX *ctx, long t); | ||
| 12 | long SSL_CTX_sess_get_cache_size(SSL_CTX *ctx); | ||
| 13 | |||
| 14 | =head1 DESCRIPTION | ||
| 15 | |||
| 16 | SSL_CTX_sess_set_cache_size() sets the size of the internal session cache | ||
| 17 | of context B<ctx> to B<t>. | ||
| 18 | |||
| 19 | SSL_CTX_sess_get_cache_size() returns the currently valid session cache size. | ||
| 20 | |||
| 21 | =head1 NOTES | ||
| 22 | |||
| 23 | The internal session cache size is SSL_SESSION_CACHE_MAX_SIZE_DEFAULT, | ||
| 24 | currently 1024*20, so that up to 20000 sessions can be held. This size | ||
| 25 | can be modified using the SSL_CTX_sess_set_cache_size() call. A special | ||
| 26 | case is the size 0, which is used for unlimited size. | ||
| 27 | |||
| 28 | When the maximum number of sessions is reached, no more new sessions are | ||
| 29 | added to the cache. New space may be added by calling | ||
| 30 | L<SSL_CTX_flush_sessions(3)|<SSL_CTX_flush_sessions(3)> to remove | ||
| 31 | expired sessions. | ||
| 32 | |||
| 33 | If the size of the session cache is reduced and more sessions are already | ||
| 34 | in the session cache, old session will be removed at the next time a | ||
| 35 | session shall be added. This removal is not synchronized with the | ||
| 36 | expiration of sessions. | ||
| 37 | |||
| 38 | =head1 RETURN VALUES | ||
| 39 | |||
| 40 | SSL_CTX_sess_set_cache_size() returns the previously valid size. | ||
| 41 | |||
| 42 | SSL_CTX_sess_get_cache_size() returns the currently valid size. | ||
| 43 | |||
| 44 | =head1 SEE ALSO | ||
| 45 | |||
| 46 | L<ssl(3)|ssl(3)>, | ||
| 47 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>, | ||
| 48 | L<SSL_CTX_sess_number(3)|SSL_CTX_sess_number(3)>, | ||
| 49 | L<SSL_CTX_flush_sessions(3)|<SSL_CTX_flush_sessions(3)> | ||
| 50 | |||
| 51 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_set_get_cb.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_set_get_cb.pod new file mode 100644 index 0000000000..b6f15b4404 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_sess_set_get_cb.pod | |||
| @@ -0,0 +1,81 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_sess_set_new_cb, SSL_CTX_sess_set_remove_cb, SSL_CTX_sess_set_get_cb, SSL_CTX_sess_get_new_cb, SSL_CTX_sess_get_remove_cb, SSL_CTX_sess_get_get_cb - provide callback functions for server side external session caching | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, | ||
| 12 | int (*new_session_cb)(SSL *, SSL_SESSION *)); | ||
| 13 | void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, | ||
| 14 | void (*remove_session_cb)(SSL_CTX *ctx, SSL_SESSION *)); | ||
| 15 | void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, | ||
| 16 | SSL_SESSION (*get_session_cb)(SSL *, unsigned char *, int, int *)); | ||
| 17 | |||
| 18 | int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, SSL_SESSION *sess); | ||
| 19 | void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, SSL_SESSION *sess); | ||
| 20 | SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, unsigned char *data, int len, int *copy); | ||
| 21 | |||
| 22 | int (*new_session_cb)(struct ssl_st *ssl, SSL_SESSION *sess); | ||
| 23 | void (*remove_session_cb)(struct ssl_ctx_st *ctx, SSL_SESSION *sess); | ||
| 24 | SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, unsigned char *data, | ||
| 25 | int len, int *copy); | ||
| 26 | |||
| 27 | =head1 DESCRIPTION | ||
| 28 | |||
| 29 | SSL_CTX_sess_set_new_cb() sets the callback function, which is automatically | ||
| 30 | called whenever a new session was negotiated. | ||
| 31 | |||
| 32 | SSL_CTX_sess_set_remove_cb() sets the callback function, which is | ||
| 33 | automatically called whenever a session is removed by the SSL engine, | ||
| 34 | because it is considered faulty or the session has become obsolete because | ||
| 35 | of exceeding the timeout value. | ||
| 36 | |||
| 37 | SSL_CTX_sess_set_get_cb() sets the callback function which is called, | ||
| 38 | whenever a SSL/TLS client proposed to resume a session but the session | ||
| 39 | could not be found in the internal session cache (see | ||
| 40 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>). | ||
| 41 | (SSL/TLS server only.) | ||
| 42 | |||
| 43 | SSL_CTX_sess_get_new_cb(), SSL_CTX_sess_get_remove_cb(), and | ||
| 44 | SSL_CTX_sess_get_get_cb() allow to retrieve the function pointers of the | ||
| 45 | provided callback functions. If a callback function has not been set, | ||
| 46 | the NULL pointer is returned. | ||
| 47 | |||
| 48 | =head1 NOTES | ||
| 49 | |||
| 50 | In order to allow external session caching, synchronization with the internal | ||
| 51 | session cache is realized via callback functions. Inside these callback | ||
| 52 | functions, session can be saved to disk or put into a database using the | ||
| 53 | L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)> interface. | ||
| 54 | |||
| 55 | The new_session_cb() is called, whenever a new session has been negotiated | ||
| 56 | and session caching is enabled (see | ||
| 57 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>). | ||
| 58 | The new_session_cb() is passed the B<ssl> connection and the ssl session | ||
| 59 | B<sess>. If the callback returns B<0>, the session will be immediately | ||
| 60 | removed again. | ||
| 61 | |||
| 62 | The remove_session_cb() is called, whenever the SSL engine removes a session | ||
| 63 | from the internal cache. This happens if the session is removed because | ||
| 64 | it is expired or when a connection was not shutdown cleanly. The | ||
| 65 | remove_session_cb() is passed the B<ctx> and the ssl session B<sess>. | ||
| 66 | It does not provide any feedback. | ||
| 67 | |||
| 68 | The get_session_cb() is only called on SSL/TLS servers with the session id | ||
| 69 | proposed by the client. The get_session_cb() is always called, also when | ||
| 70 | session caching was disabled. The get_session_cb() is passed the | ||
| 71 | B<ssl> connection, the session id of length B<length> at the memory location | ||
| 72 | B<data>. With the parameter B<copy> the callback can require the | ||
| 73 | SSL engine to increment the reference count of the SSL_SESSION object. | ||
| 74 | |||
| 75 | =head1 SEE ALSO | ||
| 76 | |||
| 77 | L<ssl(3)|ssl(3)>, L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)>, | ||
| 78 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>, | ||
| 79 | L<SSL_CTX_flush_sessions(3)|<SSL_CTX_flush_sessions(3)> | ||
| 80 | |||
| 81 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_sessions.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_sessions.pod new file mode 100644 index 0000000000..e05aab3c1b --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_sessions.pod | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_sessions - access internal session cache | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | struct lhash_st *SSL_CTX_sessions(SSL_CTX *ctx); | ||
| 12 | |||
| 13 | =head1 DESCRIPTION | ||
| 14 | |||
| 15 | SSL_CTX_sessions() returns a pointer to the lhash databases containing the | ||
| 16 | internal session cache for B<ctx>. | ||
| 17 | |||
| 18 | =head1 NOTES | ||
| 19 | |||
| 20 | The sessions in the internal session cache are kept in an | ||
| 21 | L<lhash(3)|lhash(3)> type database. It is possible to directly | ||
| 22 | access this database e.g. for searching. In parallel, the sessions | ||
| 23 | form a linked list which is maintained separately from the | ||
| 24 | L<lhash(3)|lhash(3)> operations, so that the database must not be | ||
| 25 | modified directly but by using the | ||
| 26 | L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)> family of functions. | ||
| 27 | |||
| 28 | =head1 SEE ALSO | ||
| 29 | |||
| 30 | L<ssl(3)|ssl(3)>, L<lhash(3)|lhash(3)>, | ||
| 31 | L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)>, | ||
| 32 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)> | ||
| 33 | |||
| 34 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_cipher_list.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_cipher_list.pod index 272d6b3de2..9a29eeeb95 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_cipher_list.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_cipher_list.pod | |||
| @@ -2,8 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | =head1 NAME | 3 | =head1 NAME | 
| 4 | 4 | ||
| 5 | SSL_CTX_set_cipher_list, SSL_set_cipher_list | 5 | SSL_CTX_set_cipher_list, SSL_set_cipher_list - choose list of available SSL_CIPHERs | 
| 6 | - choose list of available SSL_CIPHERs | ||
| 7 | 6 | ||
| 8 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS | 
| 9 | 8 | ||
| @@ -47,6 +46,7 @@ could be selected and 0 on complete failure. | |||
| 47 | =head1 SEE ALSO | 46 | =head1 SEE ALSO | 
| 48 | 47 | ||
| 49 | L<ssl(3)|ssl(3)>, L<SSL_get_ciphers(3)|SSL_get_ciphers(3)>, | 48 | L<ssl(3)|ssl(3)>, L<SSL_get_ciphers(3)|SSL_get_ciphers(3)>, | 
| 49 | L<SSL_CTX_use_certificate(3)|SSL_CTX_use_certificate(3)>, | ||
| 50 | L<ciphers(1)|ciphers(1)> | 50 | L<ciphers(1)|ciphers(1)> | 
| 51 | 51 | ||
| 52 | =cut | 52 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_CA_list.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_CA_list.pod new file mode 100644 index 0000000000..81e312761e --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_CA_list.pod | |||
| @@ -0,0 +1,90 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_client_CA_list, SSL_set_client_CA_list, SSL_CTX_add_client_CA, | ||
| 6 | SSL_add_client_CA - set list of CAs sent to the client when requesting a | ||
| 7 | client certificate | ||
| 8 | |||
| 9 | =head1 SYNOPSIS | ||
| 10 | |||
| 11 | #include <openssl/ssl.h> | ||
| 12 | |||
| 13 | void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *list); | ||
| 14 | void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *list); | ||
| 15 | int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *cacert); | ||
| 16 | int SSL_add_client_CA(SSL *ssl, X509 *cacert); | ||
| 17 | |||
| 18 | =head1 DESCRIPTION | ||
| 19 | |||
| 20 | SSL_CTX_set_client_CA_list() sets the B<list> of CAs sent to the client when | ||
| 21 | requesting a client certificate for B<ctx>. | ||
| 22 | |||
| 23 | SSL_set_client_CA_list() sets the B<list> of CAs sent to the client when | ||
| 24 | requesting a client certificate for the chosen B<ssl>, overriding the | ||
| 25 | setting valid for B<ssl>'s SSL_CTX object. | ||
| 26 | |||
| 27 | SSL_CTX_add_client_CA() adds the CA name extracted from B<cacert> to the | ||
| 28 | list of CAs sent to the client when requesting a client certificate for | ||
| 29 | B<ctx>. | ||
| 30 | |||
| 31 | SSL_add_client_CA() adds the CA name extracted from B<cacert> to the | ||
| 32 | list of CAs sent to the client when requesting a client certificate for | ||
| 33 | the chosen B<ssl>, overriding the setting valid for B<ssl>'s SSL_CTX object. | ||
| 34 | |||
| 35 | =head1 NOTES | ||
| 36 | |||
| 37 | When a TLS/SSL server requests a client certificate (see | ||
| 38 | B<SSL_CTX_set_verify_options()>), it sends a list of CAs, for which | ||
| 39 | it will accept certificates, to the client. If no special list is provided, | ||
| 40 | the CAs available using the B<CAfile> option in | ||
| 41 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)> | ||
| 42 | are sent. | ||
| 43 | |||
| 44 | This list can be explicitly set using the SSL_CTX_set_client_CA_list() for | ||
| 45 | B<ctx> and SSL_set_client_CA_list() for the specific B<ssl>. The list | ||
| 46 | specified overrides the previous setting. The CAs listed do not become | ||
| 47 | trusted (B<list> only contains the names, not the complete certificates); use | ||
| 48 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)> | ||
| 49 | to additionally load them for verification. | ||
| 50 | |||
| 51 | SSL_CTX_add_client_CA() and SSL_add_client_CA() can be used to add additional | ||
| 52 | items the list of client CAs. If no list was specified before using | ||
| 53 | SSL_CTX_set_client_CA_list() or SSL_set_client_CA_list(), a new client | ||
| 54 | CA list for B<ctx> or B<ssl> (as appropriate) is opened. The CAs implicitly | ||
| 55 | specified using | ||
| 56 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)> | ||
| 57 | are no longer used automatically. | ||
| 58 | |||
| 59 | These functions are only useful for TLS/SSL servers. | ||
| 60 | |||
| 61 | =head1 RETURN VALUES | ||
| 62 | |||
| 63 | SSL_CTX_set_client_CA_list() and SSL_set_client_CA_list() do not return | ||
| 64 | diagnostic information. | ||
| 65 | |||
| 66 | SSL_CTX_add_client_CA() and SSL_add_client_CA() have the following return | ||
| 67 | values: | ||
| 68 | |||
| 69 | =over 4 | ||
| 70 | |||
| 71 | =item 1 | ||
| 72 | |||
| 73 | The operation succeeded. | ||
| 74 | |||
| 75 | =item 0 | ||
| 76 | |||
| 77 | A failure while manipulating the STACK_OF(X509_NAME) object occurred or | ||
| 78 | the X509_NAME could not be extracted from B<cacert>. Check the error stack | ||
| 79 | to find out the reason. | ||
| 80 | |||
| 81 | =back | ||
| 82 | |||
| 83 | =head1 SEE ALSO | ||
| 84 | |||
| 85 | L<ssl(3)|ssl(3)>, | ||
| 86 | L<SSL_get_client_CA_list(3)|SSL_get_client_CA_list(3)>, | ||
| 87 | L<SSL_load_client_CA_file(3)|SSL_load_client_CA_file(3)> | ||
| 88 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)> | ||
| 89 | |||
| 90 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_default_passwd_cb.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_default_passwd_cb.pod new file mode 100644 index 0000000000..a5343a1cf3 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_default_passwd_cb.pod | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_default_passwd_cb, SSL_CTX_set_default_passwd_cb_userdata - set passwd callback for encrypted PEM file handling | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); | ||
| 12 | void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); | ||
| 13 | |||
| 14 | int pem_passwd_cb(char *buf, int size, int rwflag, void *userdata); | ||
| 15 | |||
| 16 | =head1 DESCRIPTION | ||
| 17 | |||
| 18 | SSL_CTX_set_default_passwd_cb() sets the default password callback called | ||
| 19 | when loading/storing a PEM certificate with encryption. | ||
| 20 | |||
| 21 | SSL_CTX_set_default_passwd_cb_userdata() sets a pointer to B<userdata> which | ||
| 22 | will be provided to the password callback on invocation. | ||
| 23 | |||
| 24 | The pem_passwd_cb(), which must be provided by the application, hands back the | ||
| 25 | password to be used during decryption. On invocation a pointer to B<userdata> | ||
| 26 | is provided. The pem_passwd_cb must write the password into the provided buffer | ||
| 27 | B<buf> which is of size B<size>. The actual length of the password must | ||
| 28 | be returned to the calling function. B<rwflag> indicates whether the | ||
| 29 | callback is used for reading/decryption (rwflag=0) or writing/encryption | ||
| 30 | (rwflag=1). | ||
| 31 | |||
| 32 | =head1 NOTES | ||
| 33 | |||
| 34 | When loading or storing private keys, a password might be supplied to | ||
| 35 | protect the private key. The way this password can be supplied may depend | ||
| 36 | on the application. If only one private key is handled, it can be practical | ||
| 37 | to have pem_passwd_cb() handle the password dialog interactively. If several | ||
| 38 | keys have to be handled, it can be practical to ask for the password once, | ||
| 39 | then keep it in memory and use it several times. In the last case, the | ||
| 40 | password could be stored into the B<userdata> storage and the | ||
| 41 | pem_passwd_cb() only returns the password already stored. | ||
| 42 | |||
| 43 | Other items in PEM formatting (certificates) can also be encrypted, it is | ||
| 44 | however not usual, as certificate information is considered public. | ||
| 45 | |||
| 46 | =head1 RETURN VALUES | ||
| 47 | |||
| 48 | SSL_CTX_set_default_passwd_cb() and SSL_CTX_set_default_passwd_cb_userdata() | ||
| 49 | do not provide diagnostic information. | ||
| 50 | |||
| 51 | =head1 EXAMPLES | ||
| 52 | |||
| 53 | The following example returns the password provided as B<userdata> to the | ||
| 54 | calling function. The password is considered to be a '\0' terminated | ||
| 55 | string. If the password does not fit into the buffer, the password is | ||
| 56 | truncated. | ||
| 57 | |||
| 58 | int pem_passwd_cb(char *buf, int size, int rwflag, void *password) | ||
| 59 | { | ||
| 60 | strncpy(buf, (char *)(password), size); | ||
| 61 | buf[size - 1] = '\0'; | ||
| 62 | return(strlen(buf)); | ||
| 63 | } | ||
| 64 | |||
| 65 | =head1 SEE ALSO | ||
| 66 | |||
| 67 | L<ssl(3)|ssl(3)>, | ||
| 68 | L<SSL_CTX_use_certificate(3)|SSL_CTX_use_certificate(3)> | ||
| 69 | |||
| 70 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod new file mode 100644 index 0000000000..9a035bb4d1 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_mode, SSL_set_mode, SSL_CTX_get_mode, SSL_get_mode - manipulate SSL engine mode | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_CTX_set_mode(SSL_CTX *ctx, long mode); | ||
| 12 | long SSL_set_mode(SSL *ssl, long mode); | ||
| 13 | |||
| 14 | long SSL_CTX_get_mode(SSL_CTX *ctx); | ||
| 15 | long SSL_get_mode(SSL *ssl); | ||
| 16 | |||
| 17 | =head1 DESCRIPTION | ||
| 18 | |||
| 19 | SSL_CTX_set_mode() adds the mode set via bitmask in B<mode> to B<ctx>. | ||
| 20 | Options already set before are not cleared. | ||
| 21 | |||
| 22 | SSL_set_mode() adds the mode set via bitmask in B<mode> to B<ssl>. | ||
| 23 | Options already set before are not cleared. | ||
| 24 | |||
| 25 | SSL_CTX_get_mode() returns the mode set for B<ctx>. | ||
| 26 | |||
| 27 | SSL_get_mode() returns the mode set for B<ssl>. | ||
| 28 | |||
| 29 | =head1 NOTES | ||
| 30 | |||
| 31 | The following mode changes are available: | ||
| 32 | |||
| 33 | =over 4 | ||
| 34 | |||
| 35 | =item SSL_MODE_ENABLE_PARTIAL_WRITE | ||
| 36 | |||
| 37 | Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success | ||
| 38 | when just a single record has been written). When not set (the default), | ||
| 39 | SSL_write() will only report success once the complete chunk was written. | ||
| 40 | |||
| 41 | =item SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER | ||
| 42 | |||
| 43 | Make it possible to retry SSL_write() with changed buffer location | ||
| 44 | (the buffer contents must stay the same). This is not the default to avoid | ||
| 45 | the misconception that non-blocking SSL_write() behaves like | ||
| 46 | non-blocking write(). | ||
| 47 | |||
| 48 | =item SSL_MODE_AUTO_RETRY | ||
| 49 | |||
| 50 | Never bother the application with retries if the transport is blocking. | ||
| 51 | If a renegotiation take place during normal operation, a | ||
| 52 | L<SSL_read(3)|SSL_read(3)> or L<SSL_write(3)|SSL_write(3)> would return | ||
| 53 | with -1 and indicate the need to retry with SSL_ERROR_WANT_READ. | ||
| 54 | In a non-blocking environment applications must be prepared to handle | ||
| 55 | incomplete read/write operations. | ||
| 56 | In a blocking environment, applications are not always prepared to | ||
| 57 | deal with read/write operations returning without success report. The | ||
| 58 | flag SSL_MODE_AUTO_RETRY will cause read/write operations to only | ||
| 59 | return after the handshake and successful completion. | ||
| 60 | |||
| 61 | =back | ||
| 62 | |||
| 63 | =head1 RETURN VALUES | ||
| 64 | |||
| 65 | SSL_CTX_set_mode() and SSL_set_mode() return the new mode bitmask | ||
| 66 | after adding B<mode>. | ||
| 67 | |||
| 68 | SSL_CTX_get_mode() and SSL_get_mode() return the current bitmask. | ||
| 69 | |||
| 70 | =head1 SEE ALSO | ||
| 71 | |||
| 72 | L<ssl(3)|ssl(3)>, L<SSL_read(3)|SSL_read(3)>, L<SSL_write(3)|SSL_write(3)> | ||
| 73 | |||
| 74 | =head1 HISTORY | ||
| 75 | |||
| 76 | SSL_MODE_AUTO_RETRY as been added in OpenSSL 0.9.6. | ||
| 77 | |||
| 78 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod new file mode 100644 index 0000000000..3dc7cc74ad --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod | |||
| @@ -0,0 +1,183 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_options, SSL_set_options, SSL_CTX_get_options, SSL_get_options - manipulate SSL engine options | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_CTX_set_options(SSL_CTX *ctx, long options); | ||
| 12 | long SSL_set_options(SSL *ssl, long options); | ||
| 13 | |||
| 14 | long SSL_CTX_get_options(SSL_CTX *ctx); | ||
| 15 | long SSL_get_options(SSL *ssl); | ||
| 16 | |||
| 17 | =head1 DESCRIPTION | ||
| 18 | |||
| 19 | SSL_CTX_set_options() adds the options set via bitmask in B<options> to B<ctx>. | ||
| 20 | Options already set before are not cleared. | ||
| 21 | |||
| 22 | SSL_set_options() adds the options set via bitmask in B<options> to B<ssl>. | ||
| 23 | Options already set before are not cleared. | ||
| 24 | |||
| 25 | SSL_CTX_get_options() returns the options set for B<ctx>. | ||
| 26 | |||
| 27 | SSL_get_options() returns the options set for B<ssl>. | ||
| 28 | |||
| 29 | =head1 NOTES | ||
| 30 | |||
| 31 | The behaviour of the SSL library can be changed by setting several options. | ||
| 32 | The options are coded as bitmasks and can be combined by a logical B<or> | ||
| 33 | operation (|). Options can only be added but can never be reset. | ||
| 34 | |||
| 35 | During a handshake, the option settings of the SSL object used. When | ||
| 36 | a new SSL object is created from a context using SSL_new(), the current | ||
| 37 | option setting is copied. Changes to B<ctx> do not affect already created | ||
| 38 | SSL objects. SSL_clear() does not affect the settings. | ||
| 39 | |||
| 40 | The following B<bug workaround> options are available: | ||
| 41 | |||
| 42 | =over 4 | ||
| 43 | |||
| 44 | =item SSL_OP_MICROSOFT_SESS_ID_BUG | ||
| 45 | |||
| 46 | www.microsoft.com - when talking SSLv2, if session-id reuse is | ||
| 47 | performed, the session-id passed back in the server-finished message | ||
| 48 | is different from the one decided upon. | ||
| 49 | |||
| 50 | =item SSL_OP_NETSCAPE_CHALLENGE_BUG | ||
| 51 | |||
| 52 | Netscape-Commerce/1.12, when talking SSLv2, accepts a 32 byte | ||
| 53 | challenge but then appears to only use 16 bytes when generating the | ||
| 54 | encryption keys. Using 16 bytes is ok but it should be ok to use 32. | ||
| 55 | According to the SSLv3 spec, one should use 32 bytes for the challenge | ||
| 56 | when operating in SSLv2/v3 compatibility mode, but as mentioned above, | ||
| 57 | this breaks this server so 16 bytes is the way to go. | ||
| 58 | |||
| 59 | =item SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG | ||
| 60 | |||
| 61 | ssl3.netscape.com:443, first a connection is established with RC4-MD5. | ||
| 62 | If it is then resumed, we end up using DES-CBC3-SHA. It should be | ||
| 63 | RC4-MD5 according to 7.6.1.3, 'cipher_suite'. | ||
| 64 | |||
| 65 | Netscape-Enterprise/2.01 (https://merchant.netscape.com) has this bug. | ||
| 66 | It only really shows up when connecting via SSLv2/v3 then reconnecting | ||
| 67 | via SSLv3. The cipher list changes.... | ||
| 68 | |||
| 69 | NEW INFORMATION. Try connecting with a cipher list of just | ||
| 70 | DES-CBC-SHA:RC4-MD5. For some weird reason, each new connection uses | ||
| 71 | RC4-MD5, but a re-connect tries to use DES-CBC-SHA. So netscape, when | ||
| 72 | doing a re-connect, always takes the first cipher in the cipher list. | ||
| 73 | |||
| 74 | =item SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG | ||
| 75 | |||
| 76 | ... | ||
| 77 | |||
| 78 | =item SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER | ||
| 79 | |||
| 80 | ... | ||
| 81 | |||
| 82 | =item SSL_OP_MSIE_SSLV2_RSA_PADDING | ||
| 83 | |||
| 84 | ... | ||
| 85 | |||
| 86 | =item SSL_OP_SSLEAY_080_CLIENT_DH_BUG | ||
| 87 | |||
| 88 | ... | ||
| 89 | |||
| 90 | =item SSL_OP_TLS_D5_BUG | ||
| 91 | |||
| 92 | ... | ||
| 93 | |||
| 94 | =item SSL_OP_TLS_BLOCK_PADDING_BUG | ||
| 95 | |||
| 96 | ... | ||
| 97 | |||
| 98 | =item SSL_OP_TLS_ROLLBACK_BUG | ||
| 99 | |||
| 100 | Disable version rollback attack detection. | ||
| 101 | |||
| 102 | During the client key exchange, the client must send the same information | ||
| 103 | about acceptable SSL/TLS protocol levels as during the first hello. Some | ||
| 104 | clients violate this rule by adapting to the server's answer. (Example: | ||
| 105 | the client sends a SSLv2 hello and accepts up to SSLv3.1=TLSv1, the server | ||
| 106 | only understands up to SSLv3. In this case the client must still use the | ||
| 107 | same SSLv3.1=TLSv1 announcement. Some clients step down to SSLv3 with respect | ||
| 108 | to the server's answer and violate the version rollback protection.) | ||
| 109 | |||
| 110 | =item SSL_OP_ALL | ||
| 111 | |||
| 112 | All of the above bug workarounds. | ||
| 113 | |||
| 114 | =back | ||
| 115 | |||
| 116 | It is save and recommended to use SSL_OP_ALL to enable the bug workaround | ||
| 117 | options. | ||
| 118 | |||
| 119 | The following B<modifying> options are available: | ||
| 120 | |||
| 121 | =over 4 | ||
| 122 | |||
| 123 | =item SSL_OP_SINGLE_DH_USE | ||
| 124 | |||
| 125 | Always create a new key when using temporary DH parameters. | ||
| 126 | |||
| 127 | =item SSL_OP_EPHEMERAL_RSA | ||
| 128 | |||
| 129 | Also use the temporary RSA key when doing RSA operations. | ||
| 130 | |||
| 131 | =item SSL_OP_PKCS1_CHECK_1 | ||
| 132 | |||
| 133 | ... | ||
| 134 | |||
| 135 | =item SSL_OP_PKCS1_CHECK_2 | ||
| 136 | |||
| 137 | ... | ||
| 138 | |||
| 139 | =item SSL_OP_NETSCAPE_CA_DN_BUG | ||
| 140 | |||
| 141 | If we accept a netscape connection, demand a client cert, have a | ||
| 142 | non-self-sighed CA which does not have it's CA in netscape, and the | ||
| 143 | browser has a cert, it will crash/hang. Works for 3.x and 4.xbeta | ||
| 144 | |||
| 145 | =item SSL_OP_NON_EXPORT_FIRST | ||
| 146 | |||
| 147 | On servers try to use non-export (stronger) ciphers first. This option does | ||
| 148 | not work under all circumstances (in the code it is declared "broken"). | ||
| 149 | |||
| 150 | =item SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG | ||
| 151 | |||
| 152 | ... | ||
| 153 | |||
| 154 | =item SSL_OP_NO_SSLv2 | ||
| 155 | |||
| 156 | Do not use the SSLv2 protocol. | ||
| 157 | |||
| 158 | =item SSL_OP_NO_SSLv3 | ||
| 159 | |||
| 160 | Do not use the SSLv3 protocol. | ||
| 161 | |||
| 162 | =item SSL_OP_NO_TLSv1 | ||
| 163 | |||
| 164 | Do not use the TLSv1 protocol. | ||
| 165 | |||
| 166 | =back | ||
| 167 | |||
| 168 | =head1 RETURN VALUES | ||
| 169 | |||
| 170 | SSL_CTX_set_options() and SSL_set_options() return the new options bitmask | ||
| 171 | after adding B<options>. | ||
| 172 | |||
| 173 | SSL_CTX_get_options() and SSL_get_options() return the current bitmask. | ||
| 174 | |||
| 175 | =head1 SEE ALSO | ||
| 176 | |||
| 177 | L<ssl(3)|ssl(3)>, L<SSL_new(3)|SSL_new(3)>, L<SSL_clear(3)|SSL_clear(3)> | ||
| 178 | |||
| 179 | =head1 HISTORY | ||
| 180 | |||
| 181 | SSL_OP_TLS_ROLLBACK_BUG has been added in OpenSSL 0.9.6. | ||
| 182 | |||
| 183 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_session_cache_mode.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_session_cache_mode.pod new file mode 100644 index 0000000000..083766f8d0 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_session_cache_mode.pod | |||
| @@ -0,0 +1,107 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_session_cache_mode, SSL_CTX_get_session_cache_mode - enable/disable session caching | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_CTX_set_session_cache_mode(SSL_CTX ctx, long mode); | ||
| 12 | long SSL_CTX_get_session_cache_mode(SSL_CTX ctx); | ||
| 13 | |||
| 14 | =head1 DESCRIPTION | ||
| 15 | |||
| 16 | SSL_CTX_set_session_cache_mode() enables/disables session caching | ||
| 17 | by setting the operational mode for B<ctx> to <mode>. | ||
| 18 | |||
| 19 | SSL_CTX_get_session_cache_mode() returns the currently used cache mode. | ||
| 20 | |||
| 21 | =head1 NOTES | ||
| 22 | |||
| 23 | The OpenSSL library can store/retrieve SSL/TLS sessions for later reuse. | ||
| 24 | The sessions can be held in memory for each B<ctx>, if more than one | ||
| 25 | SSL_CTX object is being maintained, the sessions are unique for each SSL_CTX | ||
| 26 | object. | ||
| 27 | |||
| 28 | In order to reuse a session, a client must send the session's id to the | ||
| 29 | server. It can only send exactly one id. The server then decides whether it | ||
| 30 | agrees in reusing the session or starts the handshake for a new session. | ||
| 31 | |||
| 32 | A server will lookup up the session in its internal session storage. If | ||
| 33 | the session is not found in internal storage or internal storage is | ||
| 34 | deactivated, the server will try the external storage if available. | ||
| 35 | |||
| 36 | Since a client may try to reuse a session intended for use in a different | ||
| 37 | context, the session id context must be set by the server (see | ||
| 38 | L<SSL_CTX_set_session_id_context(3)|SSL_CTX_set_session_id_context(3)>). | ||
| 39 | |||
| 40 | The following session cache modes and modifiers are available: | ||
| 41 | |||
| 42 | =over 4 | ||
| 43 | |||
| 44 | =item SSL_SESS_CACHE_OFF | ||
| 45 | |||
| 46 | No session caching for client or server takes place. | ||
| 47 | |||
| 48 | =item SSL_SESS_CACHE_CLIENT | ||
| 49 | |||
| 50 | Client sessions are added to the session cache. As there is no reliable way | ||
| 51 | for the OpenSSL library to know whether a session should be reused or which | ||
| 52 | session to choose (due to the abstract BIO layer the SSL engine does not | ||
| 53 | have details about the connection), the application must select the session | ||
| 54 | to be reused by using the L<SSL_set_session(3)|SSL_set_session(3)> | ||
| 55 | function. This option is not activated by default. | ||
| 56 | |||
| 57 | =item SSL_SESS_CACHE_SERVER | ||
| 58 | |||
| 59 | Server sessions are added to the session cache. When a client proposes a | ||
| 60 | session to be reused, the session is looked up in the internal session cache. | ||
| 61 | If the session is found, the server will try to reuse the session. | ||
| 62 | This is the default. | ||
| 63 | |||
| 64 | =item SSL_SESS_CACHE_BOTH | ||
| 65 | |||
| 66 | Enable both SSL_SESS_CACHE_CLIENT and SSL_SESS_CACHE_SERVER at the same time. | ||
| 67 | |||
| 68 | =item SSL_SESS_CACHE_NO_AUTO_CLEAR | ||
| 69 | |||
| 70 | Normally the session cache is checked for expired sessions every | ||
| 71 | 255 connections using the | ||
| 72 | L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> function. Since | ||
| 73 | this may lead to a delay which cannot be controlled, the automatic | ||
| 74 | flushing may be disabled and | ||
| 75 | L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> can be called | ||
| 76 | explicitly by the application. | ||
| 77 | |||
| 78 | =item SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | ||
| 79 | |||
| 80 | By setting this flag sessions are cached in the internal storage but | ||
| 81 | they are not looked up automatically. If an external session cache | ||
| 82 | is enabled, sessions are looked up in the external cache. As automatic | ||
| 83 | lookup only applies for SSL/TLS servers, the flag has no effect on | ||
| 84 | clients. | ||
| 85 | |||
| 86 | =back | ||
| 87 | |||
| 88 | The default mode is SSL_SESS_CACHE_SERVER. | ||
| 89 | |||
| 90 | =head1 RETURN VALUES | ||
| 91 | |||
| 92 | SSL_CTX_set_session_cache_mode() returns the previously set cache mode. | ||
| 93 | |||
| 94 | SSL_CTX_get_session_cache_mode() returns the currently set cache mode. | ||
| 95 | |||
| 96 | |||
| 97 | =head1 SEE ALSO | ||
| 98 | |||
| 99 | L<ssl(3)|ssl(3)>, L<SSL_set_session(3)|SSL_set_session(3)>, | ||
| 100 | L<SSL_CTX_sess_number(3)|SSL_CTX_sess_number(3)>, | ||
| 101 | L<SSL_CTX_sess_set_cache_size(3)|SSL_CTX_sess_set_cache_size(3)>, | ||
| 102 | L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)>, | ||
| 103 | L<SSL_CTX_set_session_id_context(3)|SSL_CTX_set_session_id_context(3)>, | ||
| 104 | L<SSL_CTX_set_timeout.pod(3)|SSL_CTX_set_timeout.pod(3)>, | ||
| 105 | L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> | ||
| 106 | |||
| 107 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_session_id_context.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_session_id_context.pod new file mode 100644 index 0000000000..5949395159 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_session_id_context.pod | |||
| @@ -0,0 +1,82 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_session_id_context, SSL_set_session_id_context - set context within which session can be reused (server side only) | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, | ||
| 12 | unsigned int sid_ctx_len); | ||
| 13 | int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, | ||
| 14 | unsigned int sid_ctx_len); | ||
| 15 | |||
| 16 | =head1 DESCRIPTION | ||
| 17 | |||
| 18 | SSL_CTX_set_session_id_context() sets the context B<sid_ctx> of length | ||
| 19 | B<sid_ctx_len> within which a session can be reused for the B<ctx> object. | ||
| 20 | |||
| 21 | SSL_set_session_id_context() sets the context B<sid_ctx> of length | ||
| 22 | B<sid_ctx_len> within which a session can be reused for the B<ssl> object. | ||
| 23 | |||
| 24 | =head1 NOTES | ||
| 25 | |||
| 26 | Sessions are generated within a certain context. When exporting/importing | ||
| 27 | sessions with B<i2d_SSL_SESSION>/B<d2i_SSL_SESSION> it would be possible, | ||
| 28 | to re-import a session generated from another context (e.g. another | ||
| 29 | application), which might lead to malfunctions. Therefore each application | ||
| 30 | must set its own session id context B<sid_ctx> which is used to distinguish | ||
| 31 | the contexts and is stored in exported sessions. The B<sid_ctx> can be | ||
| 32 | any kind of binary data with a given length, it is therefore possible | ||
| 33 | to use e.g. the name of the application and/or the hostname and/or service | ||
| 34 | name ... | ||
| 35 | |||
| 36 | The session id context becomes part of the session. The session id context | ||
| 37 | is set by the SSL/TLS server. The SSL_CTX_set_session_id_context() and | ||
| 38 | SSL_set_session_id_context() functions are therefore only useful on the | ||
| 39 | server side. | ||
| 40 | |||
| 41 | OpenSSL clients will check the session id context returned by the server | ||
| 42 | when reusing a session. | ||
| 43 | |||
| 44 | The maximum length of the B<sid_ctx> is limited to | ||
| 45 | B<SSL_MAX_SSL_SESSION_ID_LENGTH>. | ||
| 46 | |||
| 47 | =head1 WARNINGS | ||
| 48 | |||
| 49 | If the session id context is not set on an SSL/TLS server, stored sessions | ||
| 50 | will not be reused but a fatal error will be flagged and the handshake | ||
| 51 | will fail. | ||
| 52 | |||
| 53 | If a server returns a different session id context to an OpenSSL client | ||
| 54 | when reusing a session, an error will be flagged and the handshake will | ||
| 55 | fail. OpenSSL servers will always return the correct session id context, | ||
| 56 | as an OpenSSL server checks the session id context itself before reusing | ||
| 57 | a session as described above. | ||
| 58 | |||
| 59 | =head1 RETURN VALUES | ||
| 60 | |||
| 61 | SSL_CTX_set_session_id_context() and SSL_set_session_id_context() | ||
| 62 | return the following values: | ||
| 63 | |||
| 64 | =over 4 | ||
| 65 | |||
| 66 | =item 0 | ||
| 67 | |||
| 68 | The length B<sid_ctx_len> of the session id context B<sid_ctx> exceeded | ||
| 69 | the maximum allowed length of B<SSL_MAX_SSL_SESSION_ID_LENGTH>. The error | ||
| 70 | is logged to the error stack. | ||
| 71 | |||
| 72 | =item 1 | ||
| 73 | |||
| 74 | The operation succeeded. | ||
| 75 | |||
| 76 | =back | ||
| 77 | |||
| 78 | =head1 SEE ALSO | ||
| 79 | |||
| 80 | L<ssl(3)|ssl(3)> | ||
| 81 | |||
| 82 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod index 3091bd6895..0020180965 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod | |||
| @@ -17,8 +17,8 @@ SSL_CTX_set_ssl_version, SSL_set_ssl_method, SSL_get_ssl_method | |||
| 17 | 17 | ||
| 18 | SSL_CTX_set_ssl_version() sets a new default TLS/SSL B<method> for SSL objects | 18 | SSL_CTX_set_ssl_version() sets a new default TLS/SSL B<method> for SSL objects | 
| 19 | newly created from this B<ctx>. SSL objects already created with | 19 | newly created from this B<ctx>. SSL objects already created with | 
| 20 | L<SSL_new(3)|SSL_new(3)> are not affected, except when SSL_clear() is | 20 | L<SSL_new(3)|SSL_new(3)> are not affected, except when | 
| 21 | being called. | 21 | L<SSL_clear(3)|SSL_clear(3)> is being called. | 
| 22 | 22 | ||
| 23 | SSL_set_ssl_method() sets a new TLS/SSL B<method> for a particular B<ssl> | 23 | SSL_set_ssl_method() sets a new TLS/SSL B<method> for a particular B<ssl> | 
| 24 | object. It may be reset, when SSL_clear() is called. | 24 | object. It may be reset, when SSL_clear() is called. | 
| @@ -31,9 +31,9 @@ set in B<ssl>. | |||
| 31 | The available B<method> choices are described in | 31 | The available B<method> choices are described in | 
| 32 | L<SSL_CTX_new(3)|SSL_CTX_new(3)>. | 32 | L<SSL_CTX_new(3)|SSL_CTX_new(3)>. | 
| 33 | 33 | ||
| 34 | When SSL_clear() is called and no session is connected to an SSL object, | 34 | When L<SSL_clear(3)|SSL_clear(3)> is called and no session is connected to | 
| 35 | the method of the SSL object is reset to the method currently set in | 35 | an SSL object, the method of the SSL object is reset to the method currently | 
| 36 | the corresponding SSL_CTX object. | 36 | set in the corresponding SSL_CTX object. | 
| 37 | 37 | ||
| 38 | =head1 RETURN VALUES | 38 | =head1 RETURN VALUES | 
| 39 | 39 | ||
| @@ -55,6 +55,7 @@ The operation succeeded. | |||
| 55 | =head1 SEE ALSO | 55 | =head1 SEE ALSO | 
| 56 | 56 | ||
| 57 | L<SSL_CTX_new(3)|SSL_CTX_new(3)>, L<SSL_new(3)|SSL_new(3)>, | 57 | L<SSL_CTX_new(3)|SSL_CTX_new(3)>, L<SSL_new(3)|SSL_new(3)>, | 
| 58 | L<SSL_clear(3)|SSL_clear(3)>, L<ssl(3)|ssl(3)> | 58 | L<SSL_clear(3)|SSL_clear(3)>, L<ssl(3)|ssl(3)>, | 
| 59 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)> | ||
| 59 | 60 | ||
| 60 | =cut | 61 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_timeout.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_timeout.pod new file mode 100644 index 0000000000..21faed12d4 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_timeout.pod | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_timeout, SSL_CTX_get_timeout - manipulate timeout values for session caching | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); | ||
| 12 | long SSL_CTX_get_timeout(SSL_CTX *ctx); | ||
| 13 | |||
| 14 | =head1 DESCRIPTION | ||
| 15 | |||
| 16 | SSL_CTX_set_timeout() sets the timeout for newly created sessions for | ||
| 17 | B<ctx> to B<t>. The timeout value B<t> must be given in seconds. | ||
| 18 | |||
| 19 | SSL_CTX_get_timeout() returns the currently set timeout value for B<ctx>. | ||
| 20 | |||
| 21 | =head1 NOTES | ||
| 22 | |||
| 23 | Whenever a new session is created, it is assigned a maximum lifetime. This | ||
| 24 | lifetime is specified by storing the creation time of the session and the | ||
| 25 | timeout value valid at this time. If the actual time is later than creation | ||
| 26 | time plus timeout, the session is not reused. | ||
| 27 | |||
| 28 | Due to this realization, all sessions behave according to the timeout value | ||
| 29 | valid at the time of the session negotiation. Changes of the timeout value | ||
| 30 | do not affect already established sessions. | ||
| 31 | |||
| 32 | The expiration time of a single session can be modified using the | ||
| 33 | L<SSL_SESSION_get_time(3)|SSL_SESSION_get_time(3)> family of functions. | ||
| 34 | |||
| 35 | Expired sessions are removed from the internal session cache, whenever | ||
| 36 | L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> is called, either | ||
| 37 | directly by the application or automatically (see | ||
| 38 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>) | ||
| 39 | |||
| 40 | The default value for session timeout is 300 seconds. | ||
| 41 | |||
| 42 | =head1 RETURN VALUES | ||
| 43 | |||
| 44 | SSL_CTX_set_timeout() returns the previously set timeout value. | ||
| 45 | |||
| 46 | SSL_CTX_get_timeout() returns the currently set timeout value. | ||
| 47 | |||
| 48 | =head1 SEE ALSO | ||
| 49 | |||
| 50 | L<ssl(3)|ssl(3)>, | ||
| 51 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>, | ||
| 52 | L<SSL_SESSION_get_time(3)|SSL_SESSION_get_time(3)>, | ||
| 53 | L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> | ||
| 54 | |||
| 55 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod new file mode 100644 index 0000000000..fc0b76118f --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod | |||
| @@ -0,0 +1,284 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_set_verify, SSL_set_verify, SSL_CTX_set_verify_depth, SSL_set_verify_depth - set peer certificate verification parameters | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, | ||
| 12 | int (*verify_callback)(int, X509_STORE_CTX *)); | ||
| 13 | void SSL_set_verify(SSL *s, int mode, | ||
| 14 | int (*verify_callback)(int, X509_STORE_CTX *)); | ||
| 15 | void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth); | ||
| 16 | void SSL_set_verify_depth(SSL *s, int depth); | ||
| 17 | |||
| 18 | int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx); | ||
| 19 | |||
| 20 | =head1 DESCRIPTION | ||
| 21 | |||
| 22 | SSL_CTX_set_verify() sets the verification flags for B<ctx> to be B<mode> and | ||
| 23 | specifies the B<verify_callback> function to be used. If no callback function | ||
| 24 | shall be specified, the NULL pointer can be used for B<verify_callback>. | ||
| 25 | |||
| 26 | SSL_set_verify() sets the verification flags for B<ssl> to be B<mode> and | ||
| 27 | specifies the B<verify_callback> function to be used. If no callback function | ||
| 28 | shall be specified, the NULL pointer can be used for B<verify_callback>. In | ||
| 29 | this case last B<verify_callback> set specifically for this B<ssl> remains. If | ||
| 30 | no special B<callback> was set before, the default callback for the underlying | ||
| 31 | B<ctx> is used, that was valid at the the time B<ssl> was created with | ||
| 32 | L<SSL_new(3)|SSL_new(3)>. | ||
| 33 | |||
| 34 | SSL_CTX_set_verify_depth() sets the maximum B<depth> for the certificate chain | ||
| 35 | verification that shall be allowed for B<ctx>. (See the BUGS section.) | ||
| 36 | |||
| 37 | SSL_set_verify_depth() sets the maximum B<depth> for the certificate chain | ||
| 38 | verification that shall be allowed for B<ssl>. (See the BUGS section.) | ||
| 39 | |||
| 40 | =head1 NOTES | ||
| 41 | |||
| 42 | The verification of certificates can be controlled by a set of logically | ||
| 43 | or'ed B<mode> flags: | ||
| 44 | |||
| 45 | =over 4 | ||
| 46 | |||
| 47 | =item SSL_VERIFY_NONE | ||
| 48 | |||
| 49 | B<Server mode:> the server will not send a client certificate request to the | ||
| 50 | client, so the client will not send a certificate. | ||
| 51 | |||
| 52 | B<Client mode:> if not using an anonymous cipher (by default disabled), the | ||
| 53 | server will send a certificate which will be checked. The result of the | ||
| 54 | certificate verification process can be checked after the TLS/SSL handshake | ||
| 55 | using the L<SSL_get_verify_result(3)|SSL_get_verify_result(3)> function. | ||
| 56 | The handshake will be continued regardless of the verification result. | ||
| 57 | |||
| 58 | =item SSL_VERIFY_PEER | ||
| 59 | |||
| 60 | B<Server mode:> the server sends a client certificate request to the client. | ||
| 61 | The certificate returned (if any) is checked. If the verification process | ||
| 62 | fails as indicated by B<verify_callback>, the TLS/SSL handshake is | ||
| 63 | immediately terminated with an alert message containing the reason for | ||
| 64 | the verification failure. | ||
| 65 | The behaviour can be controlled by the additional | ||
| 66 | SSL_VERIFY_FAIL_IF_NO_PEER_CERT and SSL_VERIFY_CLIENT_ONCE flags. | ||
| 67 | |||
| 68 | B<Client mode:> the server certificate is verified. If the verification process | ||
| 69 | fails as indicated by B<verify_callback>, the TLS/SSL handshake is | ||
| 70 | immediately terminated with an alert message containing the reason for | ||
| 71 | the verification failure. If no server certificate is sent, because an | ||
| 72 | anonymous cipher is used, SSL_VERIFY_PEER is ignored. | ||
| 73 | |||
| 74 | =item SSL_VERIFY_FAIL_IF_NO_PEER_CERT | ||
| 75 | |||
| 76 | B<Server mode:> if the client did not return a certificate, the TLS/SSL | ||
| 77 | handshake is immediately terminated with a "handshake failure" alert. | ||
| 78 | This flag must be used together with SSL_VERIFY_PEER. | ||
| 79 | |||
| 80 | B<Client mode:> ignored | ||
| 81 | |||
| 82 | =item SSL_VERIFY_CLIENT_ONCE | ||
| 83 | |||
| 84 | B<Server mode:> only request a client certificate on the initial TLS/SSL | ||
| 85 | handshake. Do not ask for a client certificate again in case of a | ||
| 86 | renegotiation. This flag must be used together with SSL_VERIFY_PEER. | ||
| 87 | |||
| 88 | B<Client mode:> ignored | ||
| 89 | |||
| 90 | =back | ||
| 91 | |||
| 92 | Exactly one of the B<mode> flags SSL_VERIFY_NONE and SSL_VERIFY_PEER must be | ||
| 93 | set at any time. | ||
| 94 | |||
| 95 | SSL_CTX_set_verify_depth() and SSL_set_verify_depth() set the limit up | ||
| 96 | to which depth certificates in a chain are used during the verification | ||
| 97 | procedure. If the certificate chain is longer than allowed, the certificates | ||
| 98 | above the limit are ignored. Error messages are generated as if these | ||
| 99 | certificates would not be present, most likely a | ||
| 100 | X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY will be issued. | ||
| 101 | The depth count is "level 0:peer certificate", "level 1: CA certificate", | ||
| 102 | "level 2: higher level CA certificate", and so on. Setting the maximum | ||
| 103 | depth to 2 allows the levels 0, 1, and 2. The default depth limit is 9, | ||
| 104 | allowing for the peer certificate and additional 9 CA certificates. | ||
| 105 | |||
| 106 | The B<verify_callback> function is used to control the behaviour when the | ||
| 107 | SSL_VERIFY_PEER flag is set. It must be supplied by the application and | ||
| 108 | receives two arguments: B<preverify_ok> indicates, whether the verification of | ||
| 109 | the certificate in question was passed (preverify_ok=1) or not | ||
| 110 | (preverify_ok=0). B<x509_ctx> is a pointer to the complete context used | ||
| 111 | for the certificate chain verification. | ||
| 112 | |||
| 113 | The certificate chain is checked starting with the deepest nesting level | ||
| 114 | (the root CA certificate) and worked upward to the peer's certificate. | ||
| 115 | At each level signatures and issuer attributes are checked. Whenever | ||
| 116 | a verification error is found, the error number is stored in B<x509_ctx> | ||
| 117 | and B<verify_callback> is called with B<preverify_ok>=0. By applying | ||
| 118 | X509_CTX_store_* functions B<verify_callback> can locate the certificate | ||
| 119 | in question and perform additional steps (see EXAMPLES). If no error is | ||
| 120 | found for a certificate, B<verify_callback> is called with B<preverify_ok>=1 | ||
| 121 | before advancing to the next level. | ||
| 122 | |||
| 123 | The return value of B<verify_callback> controls the strategy of the further | ||
| 124 | verification process. If B<verify_callback> returns 0, the verification | ||
| 125 | process is immediately stopped with "verification failed" state. If | ||
| 126 | SSL_VERIFY_PEER is set, a verification failure alert is sent to the peer and | ||
| 127 | the TLS/SSL handshake is terminated. If B<verify_callback> returns 1, | ||
| 128 | the verification process is continued. If B<verify_callback> always returns | ||
| 129 | 1, the TLS/SSL handshake will never be terminated because of this application | ||
| 130 | experiencing a verification failure. The calling process can however | ||
| 131 | retrieve the error code of the last verification error using | ||
| 132 | L<SSL_get_verify_result(3)|SSL_get_verify_result(3)> or by maintaining its | ||
| 133 | own error storage managed by B<verify_callback>. | ||
| 134 | |||
| 135 | If no B<verify_callback> is specified, the default callback will be used. | ||
| 136 | Its return value is identical to B<preverify_ok>, so that any verification | ||
| 137 | failure will lead to a termination of the TLS/SSL handshake with an | ||
| 138 | alert message, if SSL_VERIFY_PEER is set. | ||
| 139 | |||
| 140 | =head1 BUGS | ||
| 141 | |||
| 142 | In client mode, it is not checked whether the SSL_VERIFY_PEER flag | ||
| 143 | is set, but whether SSL_VERIFY_NONE is not set. This can lead to | ||
| 144 | unexpected behaviour, if the SSL_VERIFY_PEER and SSL_VERIFY_NONE are not | ||
| 145 | used as required (exactly one must be set at any time). | ||
| 146 | |||
| 147 | The certificate verification depth set with SSL[_CTX]_verify_depth() | ||
| 148 | stops the verification at a certain depth. The error message produced | ||
| 149 | will be that of an incomplete certificate chain and not | ||
| 150 | X509_V_ERR_CERT_CHAIN_TOO_LONG as may be expected. | ||
| 151 | |||
| 152 | =head1 RETURN VALUES | ||
| 153 | |||
| 154 | The SSL*_set_verify*() functions do not provide diagnostic information. | ||
| 155 | |||
| 156 | =head1 EXAMPLES | ||
| 157 | |||
| 158 | The following code sequence realizes an example B<verify_callback> function | ||
| 159 | that will always continue the TLS/SSL handshake regardless of verification | ||
| 160 | failure, if wished. The callback realizes a verification depth limit with | ||
| 161 | more informational output. | ||
| 162 | |||
| 163 | All verification errors are printed, informations about the certificate chain | ||
| 164 | are printed on request. | ||
| 165 | The example is realized for a server that does allow but not require client | ||
| 166 | certificates. | ||
| 167 | |||
| 168 | The example makes use of the ex_data technique to store application data | ||
| 169 | into/retrieve application data from the SSL structure | ||
| 170 | (see L<SSL_get_ex_new_index(3)|SSL_get_ex_new_index(3)>, | ||
| 171 | L<SSL_get_ex_data_X509_STORE_CTX_idx(3)|SSL_get_ex_data_X509_STORE_CTX_idx(3)>). | ||
| 172 | |||
| 173 | ... | ||
| 174 | typedef struct { | ||
| 175 | int verbose_mode; | ||
| 176 | int verify_depth; | ||
| 177 | int always_continue; | ||
| 178 | } mydata_t; | ||
| 179 | int mydata_index; | ||
| 180 | ... | ||
| 181 | static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) | ||
| 182 | { | ||
| 183 | char buf[256]; | ||
| 184 | X509 *err_cert; | ||
| 185 | int err, depth; | ||
| 186 | SSL *ssl; | ||
| 187 | mydata_t *mydata; | ||
| 188 | |||
| 189 | err_cert = X509_STORE_CTX_get_current_cert(ctx); | ||
| 190 | err = X509_STORE_CTX_get_error(ctx); | ||
| 191 | depth = X509_STORE_CTX_get_error_depth(ctx); | ||
| 192 | |||
| 193 | /* | ||
| 194 | * Retrieve the pointer to the SSL of the connection currently treated | ||
| 195 | * and the application specific data stored into the SSL object. | ||
| 196 | */ | ||
| 197 | ssl = X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx()); | ||
| 198 | mydata = SSL_get_ex_data(ssl, mydata_index); | ||
| 199 | |||
| 200 | X509_NAME_oneline(X509_get_subject_name(err_cert), buf, 256); | ||
| 201 | |||
| 202 | /* | ||
| 203 | * Catch a too long certificate chain. The depth limit set using | ||
| 204 | * SSL_CTX_set_verify_depth() is by purpose set to "limit+1" so | ||
| 205 | * that whenever the "depth>verify_depth" condition is met, we | ||
| 206 | * have violated the limit and want to log this error condition. | ||
| 207 | * We must do it here, because the CHAIN_TOO_LONG error would not | ||
| 208 | * be found explicitly; only errors introduced by cutting off the | ||
| 209 | * additional certificates would be logged. | ||
| 210 | */ | ||
| 211 | if (depth > mydata->verify_depth) { | ||
| 212 | preverify_ok = 0; | ||
| 213 | err = X509_V_ERR_CERT_CHAIN_TOO_LONG; | ||
| 214 | X509_STORE_CTX_set_error(ctx, err); | ||
| 215 | } | ||
| 216 | if (!preverify_ok) { | ||
| 217 | printf("verify error:num=%d:%s:depth=%d:%s\n", err, | ||
| 218 | X509_verify_cert_error_string(err), depth, buf); | ||
| 219 | } | ||
| 220 | else if (mydata->verbose_mode) | ||
| 221 | { | ||
| 222 | printf("depth=%d:%s\n", depth, buf); | ||
| 223 | } | ||
| 224 | |||
| 225 | /* | ||
| 226 | * At this point, err contains the last verification error. We can use | ||
| 227 | * it for something special | ||
| 228 | */ | ||
| 229 | if (!preverify_ok && (err == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT) | ||
| 230 | { | ||
| 231 | X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert), buf, 256); | ||
| 232 | printf("issuer= %s\n", buf); | ||
| 233 | } | ||
| 234 | |||
| 235 | if (mydata->always_continue) | ||
| 236 | return 1; | ||
| 237 | else | ||
| 238 | return preverify_ok; | ||
| 239 | } | ||
| 240 | ... | ||
| 241 | |||
| 242 | mydata_t mydata; | ||
| 243 | |||
| 244 | ... | ||
| 245 | mydata_index = SSL_get_ex_new_index(0, "mydata index", NULL, NULL, NULL); | ||
| 246 | |||
| 247 | ... | ||
| 248 | SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER|SSL_VERIFY_CLIENT_ONCE, | ||
| 249 | verify_callback); | ||
| 250 | |||
| 251 | /* | ||
| 252 | * Let the verify_callback catch the verify_depth error so that we get | ||
| 253 | * an appropriate error in the logfile. | ||
| 254 | */ | ||
| 255 | SSL_CTX_set_verify_depth(verify_depth + 1); | ||
| 256 | |||
| 257 | /* | ||
| 258 | * Set up the SSL specific data into "mydata" and store it into th SSL | ||
| 259 | * structure. | ||
| 260 | */ | ||
| 261 | mydata.verify_depth = verify_depth; ... | ||
| 262 | SSL_set_ex_data(ssl, mydata_index, &mydata); | ||
| 263 | |||
| 264 | ... | ||
| 265 | SSL_accept(ssl); /* check of success left out for clarity */ | ||
| 266 | if (peer = SSL_get_peer_certificate(ssl)) | ||
| 267 | { | ||
| 268 | if (SSL_get_verify_result(ssl) == X509_V_OK) | ||
| 269 | { | ||
| 270 | /* The client sent a certificate which verified OK */ | ||
| 271 | } | ||
| 272 | } | ||
| 273 | |||
| 274 | =head1 SEE ALSO | ||
| 275 | |||
| 276 | L<ssl(3)|ssl(3)>, L<SSL_new(3)|SSL_new(3)>, | ||
| 277 | L<SSL_CTX_get_verify_mode(3)|SSL_CTX_get_verify_mode(3)>, | ||
| 278 | L<SSL_get_verify_result(3)|SSL_get_verify_result(3)>, | ||
| 279 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>, | ||
| 280 | L<SSL_get_peer_certificate(3)|SSL_get_peer_certificate(3)>, | ||
| 281 | L<SSL_get_ex_data_X509_STORE_CTX_idx(3)|SSL_get_ex_data_X509_STORE_CTX_idx(3)>, | ||
| 282 | L<SSL_get_ex_new_index(3)|SSL_get_ex_new_index(3)> | ||
| 283 | |||
| 284 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_use_certificate.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_use_certificate.pod new file mode 100644 index 0000000000..3b2fe6fc50 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_use_certificate.pod | |||
| @@ -0,0 +1,154 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_CTX_use_certificate, SSL_CTX_use_certificate_ASN1, SSL_CTX_use_certificate_file, SSL_use_certificate, SSL_use_certificate_ASN1, SSL_use_certificate_file, SSL_CTX_use_certificate_chain_file, SSL_CTX_use_PrivateKey, SSL_CTX_use_PrivateKey_ASN1, SSL_CTX_use_PrivateKey_file, SSL_CTX_use_RSAPrivateKey, SSL_CTX_use_RSAPrivateKey_ASN1, SSL_CTX_use_RSAPrivateKey_file, SSL_use_PrivateKey_file, SSL_use_PrivateKey_ASN1, SSL_use_PrivateKey, SSL_use_RSAPrivateKey, SSL_use_RSAPrivateKey_ASN1, SSL_use_RSAPrivateKey_file, SSL_CTX_check_private_key, SSL_check_private_key - load certificate and key data | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); | ||
| 12 | int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, unsigned char *d); | ||
| 13 | int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); | ||
| 14 | int SSL_use_certificate(SSL *ssl, X509 *x); | ||
| 15 | int SSL_use_certificate_ASN1(SSL *ssl, unsigned char *d, int len); | ||
| 16 | int SSL_use_certificate_file(SSL *ssl, const char *file, int type); | ||
| 17 | |||
| 18 | int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); | ||
| 19 | |||
| 20 | int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); | ||
| 21 | int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, unsigned char *d, | ||
| 22 | long len); | ||
| 23 | int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); | ||
| 24 | int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); | ||
| 25 | int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len); | ||
| 26 | int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type); | ||
| 27 | int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); | ||
| 28 | int SSL_use_PrivateKey_ASN1(int pk,SSL *ssl, unsigned char *d, long len); | ||
| 29 | int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); | ||
| 30 | int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); | ||
| 31 | int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); | ||
| 32 | int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); | ||
| 33 | |||
| 34 | int SSL_CTX_check_private_key(SSL_CTX *ctx); | ||
| 35 | int SSL_check_private_key(SSL *ssl); | ||
| 36 | |||
| 37 | =head1 DESCRIPTION | ||
| 38 | |||
| 39 | These functions load the certificates and private keys into the SSL_CTX | ||
| 40 | or SSL object, respectively. | ||
| 41 | |||
| 42 | The SSL_CTX_* class of functions loads the certificates and keys into the | ||
| 43 | SSL_CTX object B<ctx>. The information is passed to SSL objects B<ssl> | ||
| 44 | created from B<ctx> with L<SSL_new(3)|SSL_new(3)> by copying, so that | ||
| 45 | changes applied to B<ctx> do not propagate to already existing SSL objects. | ||
| 46 | |||
| 47 | The SSL_* class of functions only loads certificates and keys into a | ||
| 48 | specific SSL object. The specific information is kept, when | ||
| 49 | L<SSL_clear(3)|SSL_clear(3)> is called for this SSL object. | ||
| 50 | |||
| 51 | SSL_CTX_use_certificate() loads the certificate B<x> into B<ctx>, | ||
| 52 | SSL_use_certificate() loads B<x> into B<ssl>. The rest of the | ||
| 53 | certificates needed to form the complete certificate chain can be | ||
| 54 | specified using the | ||
| 55 | L<SSL_CTX_add_extra_chain_cert(3)|SSL_CTX_add_extra_chain_cert(3)> | ||
| 56 | function. | ||
| 57 | |||
| 58 | SSL_CTX_use_certificate_ASN1() loads the ASN1 encoded certificate from | ||
| 59 | the memory location B<d> (with length B<len>) into B<ctx>, | ||
| 60 | SSL_use_certificate_ASN1() loads the ASN1 encoded certificate into B<ssl>. | ||
| 61 | |||
| 62 | SSL_CTX_use_certificate_file() loads the first certificate stored in B<file> | ||
| 63 | into B<ctx>. The formatting B<type> of the certificate must be specified | ||
| 64 | from the known types SSL_FILETYPE_PEM, SSL_FILETYPE_ASN1. | ||
| 65 | SSL_use_certificate_file() loads the certificate from B<file> into B<ssl>. | ||
| 66 | See the NOTES section on why SSL_CTX_use_certificate_chain_file() | ||
| 67 | should be preferred. | ||
| 68 | |||
| 69 | SSL_CTX_use_certificate_chain_file() loads a certificate chain from | ||
| 70 | B<file> into B<ctx>. The certificates must be in PEM format and must | ||
| 71 | be sorted starting with the certificate to the highest level (root CA). | ||
| 72 | There is no corresponding function working on a single SSL object. | ||
| 73 | |||
| 74 | SSL_CTX_use_PrivateKey() adds B<pkey> as private key to B<ctx>. | ||
| 75 | SSL_CTX_use_RSAPrivateKey() adds the private key B<rsa> of type RSA | ||
| 76 | to B<ctx>. SSL_use_PrivateKey() adds B<pkey> as private key to B<ssl>; | ||
| 77 | SSL_use_RSAPrivateKey() adds B<rsa> as private key of type RSA to B<ssl>. | ||
| 78 | |||
| 79 | SSL_CTX_use_PrivateKey_ASN1() adds the private key of type B<pk> | ||
| 80 | stored at memory location B<d> (length B<len>) to B<ctx>. | ||
| 81 | SSL_CTX_use_RSAPrivateKey_ASN1() adds the private key of type RSA | ||
| 82 | stored at memory location B<d> (length B<len>) to B<ctx>. | ||
| 83 | SSL_use_PrivateKey_ASN1() and SSL_use_RSAPrivateKey_ASN1() add the private | ||
| 84 | key to B<ssl>. | ||
| 85 | |||
| 86 | SSL_CTX_use_PrivateKey_file() adds the first private key found in | ||
| 87 | B<file> to B<ctx>. The formatting B<type> of the certificate must be specified | ||
| 88 | from the known types SSL_FILETYPE_PEM, SSL_FILETYPE_ASN1. | ||
| 89 | SSL_CTX_use_RSAPrivateKey_file() adds the first private RSA key found in | ||
| 90 | B<file> to B<ctx>. SSL_use_PrivateKey_file() adds the first private key found | ||
| 91 | in B<file> to B<ssl>; SSL_use_RSAPrivateKey_file() adds the first private | ||
| 92 | RSA key found to B<ssl>. | ||
| 93 | |||
| 94 | SSL_CTX_check_private_key() checks the consistency of a private key with | ||
| 95 | the corresponding certificate loaded into B<ctx>. If more than one | ||
| 96 | key/certificate pair (RSA/DSA) is installed, the last item installed will | ||
| 97 | be checked. If e.g. the last item was a RSA certificate or key, the RSA | ||
| 98 | key/certificate pair will be checked. SSL_check_private_key() performs | ||
| 99 | the same check for B<ssl>. If no key/certificate was explicitly added for | ||
| 100 | this B<ssl>, the last item added into B<ctx> will be checked. | ||
| 101 | |||
| 102 | =head1 NOTES | ||
| 103 | |||
| 104 | The internal certificate store of OpenSSL can hold two private key/certificate | ||
| 105 | pairs at a time: one key/certificate of type RSA and one key/certificate | ||
| 106 | of type DSA. The certificate used depends on the cipher select, see | ||
| 107 | also L<SSL_CTX_set_cipher_list(3)|SSL_CTX_set_cipher_list(3)>. | ||
| 108 | |||
| 109 | When reading certificates and private keys from file, files of type | ||
| 110 | SSL_FILETYPE_ASN1 (also known as B<DER>, binary encoding) can only contain | ||
| 111 | one certificate or private key, consequently | ||
| 112 | SSL_CTX_use_certificate_chain_file() is only applicable to PEM formatting. | ||
| 113 | Files of type SSL_FILETYPE_PEM can contain more than one item. | ||
| 114 | |||
| 115 | SSL_CTX_use_certificate_chain_file() adds the first certificate found | ||
| 116 | in the file to the certificate store. The other certificates are added | ||
| 117 | to the store of chain certificates using | ||
| 118 | L<SSL_CTX_add_extra_chain_cert(3)|SSL_CTX_add_extra_chain_cert(3)>. | ||
| 119 | There exists only one extra chain store, so that the same chain is appended | ||
| 120 | to both types of certificates, RSA and DSA! If it is not intended to use | ||
| 121 | both type of certificate at the same time, it is recommended to use the | ||
| 122 | SSL_CTX_use_certificate_chain_file() instead of the | ||
| 123 | SSL_CTX_use_certificate_file() function in order to allow the use of | ||
| 124 | complete certificate chains even when no trusted CA storage is used or | ||
| 125 | when the CA issuing the certificate shall not be added to the trusted | ||
| 126 | CA storage. | ||
| 127 | |||
| 128 | If additional certificates are needed to complete the chain during the | ||
| 129 | TLS negotiation, CA certificates are additionally looked up in the | ||
| 130 | locations of trusted CA certificates, see | ||
| 131 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>. | ||
| 132 | |||
| 133 | The private keys loaded from file can be encrypted. In order to successfully | ||
| 134 | load encrypted keys, a function returning the passphrase must have been | ||
| 135 | supplied, see | ||
| 136 | L<SSL_CTX_set_default_passwd_cb(3)|SSL_CTX_set_default_passwd_cb(3)>. | ||
| 137 | (Certificate files might be encrypted as well from the technical point | ||
| 138 | of view, it however does not make sense as the data in the certificate | ||
| 139 | is considered public anyway.) | ||
| 140 | |||
| 141 | =head1 RETURN VALUES | ||
| 142 | |||
| 143 | On success, the functions return 1. | ||
| 144 | Otherwise check out the error stack to find out the reason. | ||
| 145 | |||
| 146 | =head1 SEE ALSO | ||
| 147 | |||
| 148 | L<ssl(3)|ssl(3)>, L<SSL_new(3)|SSL_new(3)>, L<SSL_clear(3)|SSL_clear(3)>, | ||
| 149 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>, | ||
| 150 | L<SSL_CTX_set_default_passwd_cb(3)|SSL_CTX_set_default_passwd_cb(3)>, | ||
| 151 | L<SSL_CTX_set_cipher_list(3)|SSL_CTX_set_cipher_list(3)>, | ||
| 152 | L<SSL_CTX_add_extra_chain_cert(3)|SSL_CTX_add_extra_chain_cert(3)> | ||
| 153 | |||
| 154 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_SESSION_get_ex_new_index.pod b/src/lib/libssl/src/doc/ssl/SSL_SESSION_get_ex_new_index.pod new file mode 100644 index 0000000000..dd5cb4f04b --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_SESSION_get_ex_new_index.pod | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_SESSION_get_ex_new_index, SSL_SESSION_set_ex_data, SSL_SESSION_get_ex_data - internal application specific data functions | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | int SSL_SESSION_get_ex_new_index(long argl, void *argp, | ||
| 12 | CRYPTO_EX_new *new_func, | ||
| 13 | CRYPTO_EX_dup *dup_func, | ||
| 14 | CRYPTO_EX_free *free_func); | ||
| 15 | |||
| 16 | int SSL_SESSION_set_ex_data(SSL_SESSION *session, int idx, void *arg); | ||
| 17 | |||
| 18 | void *SSL_SESSION_get_ex_data(SSL_SESSION *session, int idx); | ||
| 19 | |||
| 20 | typedef int new_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 21 | int idx, long argl, void *argp); | ||
| 22 | typedef void free_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 23 | int idx, long argl, void *argp); | ||
| 24 | typedef int dup_func(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, void *from_d, | ||
| 25 | int idx, long argl, void *argp); | ||
| 26 | |||
| 27 | =head1 DESCRIPTION | ||
| 28 | |||
| 29 | Several OpenSSL structures can have application specific data attached to them. | ||
| 30 | These functions are used internally by OpenSSL to manipulate application | ||
| 31 | specific data attached to a specific structure. | ||
| 32 | |||
| 33 | SSL_SESSION_get_ex_new_index() is used to register a new index for application | ||
| 34 | specific data. | ||
| 35 | |||
| 36 | SSL_SESSION_set_ex_data() is used to store application data at B<arg> for B<idx> | ||
| 37 | into the B<session> object. | ||
| 38 | |||
| 39 | SSL_SESSION_get_ex_data() is used to retrieve the information for B<idx> from | ||
| 40 | B<session>. | ||
| 41 | |||
| 42 | A detailed description for the B<*_get_ex_new_index()> functionality | ||
| 43 | can be found in L<RSA_get_ex_new_index.pod(3)|RSA_get_ex_new_index.pod(3)>. | ||
| 44 | The B<*_get_ex_data()> and B<*_set_ex_data()> functionality is described in | ||
| 45 | L<CRYPTO_set_ex_data(3)|CRYPTO_set_ex_data(3)>. | ||
| 46 | |||
| 47 | =head1 WARNINGS | ||
| 48 | |||
| 49 | The application data is only maintained for sessions held in memory. The | ||
| 50 | application data is not included when dumping the session with | ||
| 51 | i2d_SSL_SESSION() (and all functions indirectly calling the dump functions | ||
| 52 | like PEM_write_SSL_SESSION() and PEM_write_bio_SSL_SESSION()) and can | ||
| 53 | therefore not be restored. | ||
| 54 | |||
| 55 | =head1 SEE ALSO | ||
| 56 | |||
| 57 | L<ssl(3)|ssl(3)>, | ||
| 58 | L<RSA_get_ex_new_index(3)|RSA_get_ex_new_index(3)>, | ||
| 59 | L<CRYPTO_set_ex_data(3)|CRYPTO_set_ex_data(3)> | ||
| 60 | |||
| 61 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_SESSION_get_time.pod b/src/lib/libssl/src/doc/ssl/SSL_SESSION_get_time.pod new file mode 100644 index 0000000000..cd33b73aa3 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_SESSION_get_time.pod | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_SESSION_get_time, SSL_SESSION_set_time, SSL_SESSION_get_timeout, SSL_SESSION_get_timeout - retrieve and manipulate session time and timeout settings | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | long SSL_SESSION_get_time(SSL_SESSION *s); | ||
| 12 | long SSL_SESSION_set_time(SSL_SESSION *s, long tm); | ||
| 13 | long SSL_SESSION_get_timeout(SSL_SESSION *s); | ||
| 14 | long SSL_SESSION_set_timeout(SSL_SESSION *s, long tm); | ||
| 15 | |||
| 16 | long SSL_get_time(SSL_SESSION *s); | ||
| 17 | long SSL_set_time(SSL_SESSION *s, long tm); | ||
| 18 | long SSL_get_timeout(SSL_SESSION *s); | ||
| 19 | long SSL_set_timeout(SSL_SESSION *s, long tm); | ||
| 20 | |||
| 21 | =head1 DESCRIPTION | ||
| 22 | |||
| 23 | SSL_SESSION_get_time() returns the time at which the session B<s> was | ||
| 24 | established. The time is given in seconds since the Epoch and therefore | ||
| 25 | compatible to the time delivered by the time() call. | ||
| 26 | |||
| 27 | SSL_SESSION_set_time() replaces the creation time of the session B<s> with | ||
| 28 | the chosen value B<tm>. | ||
| 29 | |||
| 30 | SSL_SESSION_get_timeout() returns the timeout value set for session B<s> | ||
| 31 | in seconds. | ||
| 32 | |||
| 33 | SSL_SESSION_set_timeout() sets the timeout value for session B<s> in seconds | ||
| 34 | to B<tm>. | ||
| 35 | |||
| 36 | The SSL_get_time(), SSL_set_time(), SSL_get_timeout(), and SSL_set_timeout() | ||
| 37 | functions are synonyms for the SSL_SESSION_*() counterparts. | ||
| 38 | |||
| 39 | =head1 NOTES | ||
| 40 | |||
| 41 | Sessions are expired by examining the creation time and the timeout value. | ||
| 42 | Both are set at creation time of the session to the actual time and the | ||
| 43 | default timeout value at creation, respectively, as set by | ||
| 44 | L<SSL_CTX_set_timeout(3)|SSL_CTX_set_timeout(3)>. | ||
| 45 | Using these functions it is possible to extend or shorten the lifetime | ||
| 46 | of the session. | ||
| 47 | |||
| 48 | =head1 RETURN VALUES | ||
| 49 | |||
| 50 | SSL_SESSION_get_time() and SSL_SESSION_get_timeout() return the currently | ||
| 51 | valid values. | ||
| 52 | |||
| 53 | SSL_SESSION_set_time() and SSL_SESSION_set_timeout() return 1 on success. | ||
| 54 | |||
| 55 | If any of the function is passed the NULL pointer for the session B<s>, | ||
| 56 | 0 is returned. | ||
| 57 | |||
| 58 | =head1 SEE ALSO | ||
| 59 | |||
| 60 | L<ssl(3)|ssl(3)>, | ||
| 61 | L<SSL_CTX_set_timeout(3)|SSL_CTX_set_timeout(3)> | ||
| 62 | |||
| 63 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_accept.pod b/src/lib/libssl/src/doc/ssl/SSL_accept.pod index 0c79ac515e..86f980de41 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_accept.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_accept.pod | |||
| @@ -37,6 +37,11 @@ nothing is to be done, but select() can be used to check for the required | |||
| 37 | condition. When using a buffering BIO, like a BIO pair, data must be written | 37 | condition. When using a buffering BIO, like a BIO pair, data must be written | 
| 38 | into or retrieved out of the BIO before being able to continue. | 38 | into or retrieved out of the BIO before being able to continue. | 
| 39 | 39 | ||
| 40 | When using a generic method (see L<SSL_CTX_new(3)|SSL_CTX_new(3)>), it | ||
| 41 | is necessary to call SSL_set_accept_state() | ||
| 42 | before calling SSL_accept() to explicitly switch the B<ssl> to server | ||
| 43 | mode. | ||
| 44 | |||
| 40 | =head1 RETURN VALUES | 45 | =head1 RETURN VALUES | 
| 41 | 46 | ||
| 42 | The following return values can occur: | 47 | The following return values can occur: | 
| @@ -54,7 +59,7 @@ The TLS/SSL handshake was not successful but was shut down controlled and | |||
| 54 | by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the | 59 | by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the | 
| 55 | return value B<ret> to find out the reason. | 60 | return value B<ret> to find out the reason. | 
| 56 | 61 | ||
| 57 | =item -1 | 62 | =item E<lt>0 | 
| 58 | 63 | ||
| 59 | The TLS/SSL handshake was not successful because a fatal error occurred either | 64 | The TLS/SSL handshake was not successful because a fatal error occurred either | 
| 60 | at the protocol level or a connection failure occurred. The shutdown was | 65 | at the protocol level or a connection failure occurred. The shutdown was | 
| @@ -67,6 +72,8 @@ to find out the reason. | |||
| 67 | =head1 SEE ALSO | 72 | =head1 SEE ALSO | 
| 68 | 73 | ||
| 69 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_connect(3)|SSL_connect(3)>, | 74 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_connect(3)|SSL_connect(3)>, | 
| 70 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)> | 75 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)>, | 
| 76 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)>, | ||
| 77 | L<SSL_CTX_new(3)|SSL_CTX_new(3)> | ||
| 71 | 78 | ||
| 72 | =cut | 79 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_clear.pod b/src/lib/libssl/src/doc/ssl/SSL_clear.pod index 862fd8291d..8b735d81dc 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_clear.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_clear.pod | |||
| @@ -13,8 +13,17 @@ SSL_clear - reset SSL object to allow another connection | |||
| 13 | =head1 DESCRIPTION | 13 | =head1 DESCRIPTION | 
| 14 | 14 | ||
| 15 | Reset B<ssl> to allow another connection. All settings (method, ciphers, | 15 | Reset B<ssl> to allow another connection. All settings (method, ciphers, | 
| 16 | BIOs) are kept. A completely negotiated B<SSL_SESSION> is not freed but left | 16 | BIOs) are kept. | 
| 17 | untouched for the underlying B<SSL_CTX>. | 17 | |
| 18 | =head1 NOTES | ||
| 19 | |||
| 20 | SSL_clear is used to prepare an SSL object for a new connection. While all | ||
| 21 | settings are kept, a side effect is the handling of the current SSL session. | ||
| 22 | If a session is still B<open>, it is considered bad and will be removed | ||
| 23 | from the session cache, as required by RFC2246. A session is considered open, | ||
| 24 | if L<SSL_shutdown(3)|SSL_shutdown(3)> was not called for the connection | ||
| 25 | or at least L<SSL_set_shutdown(3)|SSL_set_shutdown(3)> was used to | ||
| 26 | set the SSL_SENT_SHUTDOWN state. | ||
| 18 | 27 | ||
| 19 | =head1 RETURN VALUES | 28 | =head1 RETURN VALUES | 
| 20 | 29 | ||
| @@ -34,6 +43,7 @@ The SSL_clear() operation was successful. | |||
| 34 | =back | 43 | =back | 
| 35 | 44 | ||
| 36 | L<SSL_new(3)|SSL_new(3)>, L<SSL_free(3)|SSL_free(3)>, | 45 | L<SSL_new(3)|SSL_new(3)>, L<SSL_free(3)|SSL_free(3)>, | 
| 37 | L<ssl(3)|ssl(3)> | 46 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<SSL_set_shutdown(3)|SSL_set_shutdown(3)>, | 
| 47 | L<SSL_CTX_set_options(3)|SSL_CTX_set_options(3)>, L<ssl(3)|ssl(3)> | ||
| 38 | 48 | ||
| 39 | =cut | 49 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_connect.pod b/src/lib/libssl/src/doc/ssl/SSL_connect.pod index debe41744f..bcc167745b 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_connect.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_connect.pod | |||
| @@ -34,6 +34,11 @@ nothing is to be done, but select() can be used to check for the required | |||
| 34 | condition. When using a buffering BIO, like a BIO pair, data must be written | 34 | condition. When using a buffering BIO, like a BIO pair, data must be written | 
| 35 | into or retrieved out of the BIO before being able to continue. | 35 | into or retrieved out of the BIO before being able to continue. | 
| 36 | 36 | ||
| 37 | When using a generic method (see L<SSL_CTX_new(3)|SSL_CTX_new(3)>), it | ||
| 38 | is necessary to call L<SSL_set_connect_state(3)|SSL_set_connect_state(3)> | ||
| 39 | before calling SSL_connect() to explicitly switch the B<ssl> to client | ||
| 40 | mode. | ||
| 41 | |||
| 37 | =head1 RETURN VALUES | 42 | =head1 RETURN VALUES | 
| 38 | 43 | ||
| 39 | The following return values can occur: | 44 | The following return values can occur: | 
| @@ -51,7 +56,7 @@ The TLS/SSL handshake was not successful but was shut down controlled and | |||
| 51 | by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the | 56 | by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the | 
| 52 | return value B<ret> to find out the reason. | 57 | return value B<ret> to find out the reason. | 
| 53 | 58 | ||
| 54 | =item -1 | 59 | =item E<lt>0 | 
| 55 | 60 | ||
| 56 | The TLS/SSL handshake was not successful, because a fatal error occurred either | 61 | The TLS/SSL handshake was not successful, because a fatal error occurred either | 
| 57 | at the protocol level or a connection failure occurred. The shutdown was | 62 | at the protocol level or a connection failure occurred. The shutdown was | 
| @@ -64,6 +69,8 @@ to find out the reason. | |||
| 64 | =head1 SEE ALSO | 69 | =head1 SEE ALSO | 
| 65 | 70 | ||
| 66 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_accept(3)|SSL_accept(3)>, | 71 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_accept(3)|SSL_accept(3)>, | 
| 67 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<ssl(3)|ssl(3)> , L<bio(3)|bio(3)> | 72 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)>, | 
| 73 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)>, | ||
| 74 | L<SSL_CTX_new(3)|SSL_CTX_new(3)> | ||
| 68 | 75 | ||
| 69 | =cut | 76 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_free.pod b/src/lib/libssl/src/doc/ssl/SSL_free.pod index f3f0c345f8..2d4f8b6168 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_free.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_free.pod | |||
| @@ -16,18 +16,29 @@ SSL_free() decrements the reference count of B<ssl>, and removes the SSL | |||
| 16 | structure pointed to by B<ssl> and frees up the allocated memory if the | 16 | structure pointed to by B<ssl> and frees up the allocated memory if the | 
| 17 | the reference count has reached 0. | 17 | the reference count has reached 0. | 
| 18 | 18 | ||
| 19 | It also calls the free()ing procedures for indirectly affected items, if | 19 | =head1 NOTES | 
| 20 | |||
| 21 | SSL_free() also calls the free()ing procedures for indirectly affected items, if | ||
| 20 | applicable: the buffering BIO, the read and write BIOs, | 22 | applicable: the buffering BIO, the read and write BIOs, | 
| 21 | cipher lists specially created for this B<ssl>, the B<SSL_SESSION>. | 23 | cipher lists specially created for this B<ssl>, the B<SSL_SESSION>. | 
| 22 | Do not explicitly free these indirectly freed up items before or after | 24 | Do not explicitly free these indirectly freed up items before or after | 
| 23 | calling SSL_free(), as trying to free things twice may lead to program | 25 | calling SSL_free(), as trying to free things twice may lead to program | 
| 24 | failure. | 26 | failure. | 
| 25 | 27 | ||
| 28 | The ssl session has reference counts from two users: the SSL object, for | ||
| 29 | which the reference count is removed by SSL_free() and the internal | ||
| 30 | session cache. If the session is considered bad, because | ||
| 31 | L<SSL_shutdown(3)|SSL_shutdown(3)> was not called for the connection | ||
| 32 | and L<SSL_set_shutdown(3)|SSL_set_shutdown(3)> was not used to set the | ||
| 33 | SSL_SENT_SHUTDOWN state, the session will also be removed | ||
| 34 | from the session cache as required by RFC2246. | ||
| 35 | |||
| 26 | =head1 RETURN VALUES | 36 | =head1 RETURN VALUES | 
| 27 | 37 | ||
| 28 | SSL_free() does not provide diagnostic information. | 38 | SSL_free() does not provide diagnostic information. | 
| 29 | 39 | ||
| 30 | L<SSL_new(3)|SSL_new(3)>, L<SSL_clear(3)|SSL_clear(3)>, | 40 | L<SSL_new(3)|SSL_new(3)>, L<SSL_clear(3)|SSL_clear(3)>, | 
| 41 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<SSL_set_shutdown(3)|SSL_set_shutdown(3)>, | ||
| 31 | L<ssl(3)|ssl(3)> | 42 | L<ssl(3)|ssl(3)> | 
| 32 | 43 | ||
| 33 | =cut | 44 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_client_CA_list.pod b/src/lib/libssl/src/doc/ssl/SSL_get_client_CA_list.pod new file mode 100644 index 0000000000..40e01cf9c8 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_get_client_CA_list.pod | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_get_client_CA_list, SSL_CTX_get_client_CA_list - get list of client CAs | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | STACK_OF(X509_NAME) *SSL_get_client_CA_list(SSL *s); | ||
| 12 | STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(SSL_CTX *ctx); | ||
| 13 | |||
| 14 | =head1 DESCRIPTION | ||
| 15 | |||
| 16 | SSL_CTX_get_client_CA_list() returns the list of client CAs explicitly set for | ||
| 17 | B<ctx> using L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)>. | ||
| 18 | |||
| 19 | SSL_get_client_CA_list() returns the list of client CAs explicitly | ||
| 20 | set for B<ssl> using SSL_set_client_CA_list() or B<ssl>'s SSL_CTX object with | ||
| 21 | L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)>, when in | ||
| 22 | server mode. In client mode, SSL_get_client_CA_list returns the list of | ||
| 23 | client CAs sent from the server, if any. | ||
| 24 | |||
| 25 | =head1 RETURN VALUES | ||
| 26 | |||
| 27 | SSL_CTX_set_client_CA_list() and SSL_set_client_CA_list() do not return | ||
| 28 | diagnostic information. | ||
| 29 | |||
| 30 | SSL_CTX_add_client_CA() and SSL_add_client_CA() have the following return | ||
| 31 | values: | ||
| 32 | |||
| 33 | =over 4 | ||
| 34 | |||
| 35 | =item STACK_OF(X509_NAMES) | ||
| 36 | |||
| 37 | List of CA names explicitly set (for B<ctx> or in server mode) or send | ||
| 38 | by the server (client mode). | ||
| 39 | |||
| 40 | =item NULL | ||
| 41 | |||
| 42 | No client CA list was explicitly set (for B<ctx> or in server mode) or | ||
| 43 | the server did not send a list of CAs (client mode). | ||
| 44 | |||
| 45 | =back | ||
| 46 | |||
| 47 | =head1 SEE ALSO | ||
| 48 | |||
| 49 | L<ssl(3)|ssl(3)>, | ||
| 50 | L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)> | ||
| 51 | |||
| 52 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_error.pod b/src/lib/libssl/src/doc/ssl/SSL_get_error.pod index d85b564258..fefaf61936 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_error.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_error.pod | |||
| @@ -14,8 +14,8 @@ SSL_get_error - obtain result code for TLS/SSL I/O operation | |||
| 14 | 14 | ||
| 15 | SSL_get_error() returns a result code (suitable for the C "switch" | 15 | SSL_get_error() returns a result code (suitable for the C "switch" | 
| 16 | statement) for a preceding call to SSL_connect(), SSL_accept(), | 16 | statement) for a preceding call to SSL_connect(), SSL_accept(), | 
| 17 | SSL_read(), or SSL_write() on B<ssl>. The value returned by that | 17 | SSL_read(), SSL_peek(), or SSL_write() on B<ssl>. The value returned by | 
| 18 | TLS/SSL I/O function must be passed to SSL_get_error() in parameter | 18 | that TLS/SSL I/O function must be passed to SSL_get_error() in parameter | 
| 19 | B<ret>. | 19 | B<ret>. | 
| 20 | 20 | ||
| 21 | In addition to B<ssl> and B<ret>, SSL_get_error() inspects the | 21 | In addition to B<ssl> and B<ret>, SSL_get_error() inspects the | 
| @@ -48,16 +48,26 @@ has been closed. | |||
| 48 | =item SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE | 48 | =item SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE | 
| 49 | 49 | ||
| 50 | The operation did not complete; the same TLS/SSL I/O function should be | 50 | The operation did not complete; the same TLS/SSL I/O function should be | 
| 51 | called again later. There will be protocol progress if, by then, the | 51 | called again later. If, by then, the underlying B<BIO> has data | 
| 52 | underlying B<BIO> has data available for reading (if the result code is | 52 | available for reading (if the result code is B<SSL_ERROR_WANT_READ>) | 
| 53 | B<SSL_ERROR_WANT_READ>) or allows writing data (B<SSL_ERROR_WANT_WRITE>). | 53 | or allows writing data (B<SSL_ERROR_WANT_WRITE>), then some TLS/SSL | 
| 54 | For socket B<BIO>s (e.g. when SSL_set_fd() was used) this means that | 54 | protocol progress will take place, i.e. at least part of an TLS/SSL | 
| 55 | select() or poll() on the underlying socket can be used to find out | 55 | record will be read or written. Note that the retry may again lead to | 
| 56 | when the TLS/SSL I/O function should be retried. | 56 | a B<SSL_ERROR_WANT_READ> or B<SSL_ERROR_WANT_WRITE> condition. | 
| 57 | There is no fixed upper limit for the number of iterations that | ||
| 58 | may be necessary until progress becomes visible at application | ||
| 59 | protocol level. | ||
| 60 | |||
| 61 | For socket B<BIO>s (e.g. when SSL_set_fd() was used), select() or | ||
| 62 | poll() on the underlying socket can be used to find out when the | ||
| 63 | TLS/SSL I/O function should be retried. | ||
| 57 | 64 | ||
| 58 | Caveat: Any TLS/SSL I/O function can lead to either of | 65 | Caveat: Any TLS/SSL I/O function can lead to either of | 
| 59 | B<SSL_ERROR_WANT_READ> and B<SSL_ERROR_WANT_WRITE>, i.e. SSL_read() | 66 | B<SSL_ERROR_WANT_READ> and B<SSL_ERROR_WANT_WRITE>. In particular, | 
| 60 | may want to write data and SSL_write() may want to read data. | 67 | SSL_read() or SSL_peek() may want to write data and SSL_write() may want | 
| 68 | to read data. This is mainly because TLS/SSL handshakes may occur at any | ||
| 69 | time during the protocol (initiated by either the client or the server); | ||
| 70 | SSL_read(), SSL_peek(), and SSL_write() will handle any pending handshakes. | ||
| 61 | 71 | ||
| 62 | =item SSL_ERROR_WANT_X509_LOOKUP | 72 | =item SSL_ERROR_WANT_X509_LOOKUP | 
| 63 | 73 | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_ex_data_X509_STORE_CTX_idx.pod b/src/lib/libssl/src/doc/ssl/SSL_get_ex_data_X509_STORE_CTX_idx.pod new file mode 100644 index 0000000000..165c6a5b2c --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_get_ex_data_X509_STORE_CTX_idx.pod | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_get_ex_data_X509_STORE_CTX_idx - get ex_data index to access SSL structure | ||
| 6 | from X509_STORE_CTX | ||
| 7 | |||
| 8 | =head1 SYNOPSIS | ||
| 9 | |||
| 10 | #include <openssl/ssl.h> | ||
| 11 | |||
| 12 | int SSL_get_ex_data_X509_STORE_CTX_idx(void); | ||
| 13 | |||
| 14 | =head1 DESCRIPTION | ||
| 15 | |||
| 16 | SSL_get_ex_data_X509_STORE_CTX_idx() returns the index number under which | ||
| 17 | the pointer to the SSL object is stored into the X509_STORE_CTX object. | ||
| 18 | |||
| 19 | =head1 NOTES | ||
| 20 | |||
| 21 | Whenever a X509_STORE_CTX object is created for the verification of the | ||
| 22 | peers certificate during a handshake, a pointer to the SSL object is | ||
| 23 | stored into the X509_STORE_CTX object to identify the connection affected. | ||
| 24 | To retrieve this pointer the X509_STORE_CTX_get_ex_data() function can | ||
| 25 | be used with the correct index. This index is globally the same for all | ||
| 26 | X509_STORE_CTX objects and can be retrieved using | ||
| 27 | SSL_get_ex_data_X509_STORE_CTX_idx(). The index value is set when | ||
| 28 | SSL_get_ex_data_X509_STORE_CTX_idx() is first called either by the application | ||
| 29 | program directly or indirectly during other SSL setup functions or during | ||
| 30 | the handshake. | ||
| 31 | |||
| 32 | The value depends on other index values defined for X509_STORE_CTX objects | ||
| 33 | before the SSL index is created. | ||
| 34 | |||
| 35 | =head1 RETURN VALUES | ||
| 36 | |||
| 37 | =over 4 | ||
| 38 | |||
| 39 | =item E<gt>=0 | ||
| 40 | |||
| 41 | The index value to access the pointer. | ||
| 42 | |||
| 43 | =item E<lt>0 | ||
| 44 | |||
| 45 | An error occurred, check the error stack for a detailed error message. | ||
| 46 | |||
| 47 | =back | ||
| 48 | |||
| 49 | =head1 EXAMPLES | ||
| 50 | |||
| 51 | The index returned from SSL_get_ex_data_X509_STORE_CTX_idx() allows to | ||
| 52 | access the SSL object for the connection to be accessed during the | ||
| 53 | verify_callback() when checking the peers certificate. Please check | ||
| 54 | the example in L<SSL_CTX_set_verify(3)|SSL_CTX_set_verify(3)>, | ||
| 55 | |||
| 56 | =head1 SEE ALSO | ||
| 57 | |||
| 58 | L<ssl(3)|ssl(3)>, L<SSL_CTX_set_verify(3)|SSL_CTX_set_verify(3)>, | ||
| 59 | L<CRYPTO_set_ex_data(3)|CRYPTO_set_ex_data(3)> | ||
| 60 | |||
| 61 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_ex_new_index.pod b/src/lib/libssl/src/doc/ssl/SSL_get_ex_new_index.pod new file mode 100644 index 0000000000..2b69bb1050 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_get_ex_new_index.pod | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_get_ex_new_index, SSL_set_ex_data, SSL_get_ex_data - internal application specific data functions | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | int SSL_get_ex_new_index(long argl, void *argp, | ||
| 12 | CRYPTO_EX_new *new_func, | ||
| 13 | CRYPTO_EX_dup *dup_func, | ||
| 14 | CRYPTO_EX_free *free_func); | ||
| 15 | |||
| 16 | int SSL_set_ex_data(SSL *ssl, int idx, void *arg); | ||
| 17 | |||
| 18 | void *SSL_get_ex_data(SSL *ssl, int idx); | ||
| 19 | |||
| 20 | typedef int new_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 21 | int idx, long argl, void *argp); | ||
| 22 | typedef void free_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 23 | int idx, long argl, void *argp); | ||
| 24 | typedef int dup_func(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, void *from_d, | ||
| 25 | int idx, long argl, void *argp); | ||
| 26 | |||
| 27 | =head1 DESCRIPTION | ||
| 28 | |||
| 29 | Several OpenSSL structures can have application specific data attached to them. | ||
| 30 | These functions are used internally by OpenSSL to manipulate application | ||
| 31 | specific data attached to a specific structure. | ||
| 32 | |||
| 33 | SSL_get_ex_new_index() is used to register a new index for application | ||
| 34 | specific data. | ||
| 35 | |||
| 36 | SSL_set_ex_data() is used to store application data at B<arg> for B<idx> into | ||
| 37 | the B<ssl> object. | ||
| 38 | |||
| 39 | SSL_get_ex_data() is used to retrieve the information for B<idx> from | ||
| 40 | B<ssl>. | ||
| 41 | |||
| 42 | A detailed description for the B<*_get_ex_new_index()> functionality | ||
| 43 | can be found in L<RSA_get_ex_new_index.pod(3)|RSA_get_ex_new_index.pod(3)>. | ||
| 44 | The B<*_get_ex_data()> and B<*_set_ex_data()> functionality is described in | ||
| 45 | L<CRYPTO_set_ex_data(3)|CRYPTO_set_ex_data(3)>. | ||
| 46 | |||
| 47 | =head1 EXAMPLES | ||
| 48 | |||
| 49 | An example on how to use the functionality is included in the example | ||
| 50 | verify_callback() in L<SSL_CTX_set_verify(3)|SSL_CTX_set_verify(3)>. | ||
| 51 | |||
| 52 | =head1 SEE ALSO | ||
| 53 | |||
| 54 | L<ssl(3)|ssl(3)>, | ||
| 55 | L<RSA_get_ex_new_index(3)|RSA_get_ex_new_index(3)>, | ||
| 56 | L<CRYPTO_set_ex_data(3)|CRYPTO_set_ex_data(3)>, | ||
| 57 | L<SSL_CTX_set_verify(3)|SSL_CTX_set_verify(3)> | ||
| 58 | |||
| 59 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod b/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod index e93e8206fa..390ce0b41b 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod | |||
| @@ -15,7 +15,7 @@ SSL_get_peer_cert_chain - get the X509 certificate chain of the peer | |||
| 15 | SSL_get_peer_cert_chain() returns a pointer to STACKOF(X509) certificates | 15 | SSL_get_peer_cert_chain() returns a pointer to STACKOF(X509) certificates | 
| 16 | forming the certificate chain of the peer. If called on the client side, | 16 | forming the certificate chain of the peer. If called on the client side, | 
| 17 | the stack also contains the peer's certificate; if called on the server | 17 | the stack also contains the peer's certificate; if called on the server | 
| 18 | side, the peer's certificate must be obtained seperately using | 18 | side, the peer's certificate must be obtained separately using | 
| 19 | L<SSL_get_peer_certificate(3)|SSL_get_peer_certificate(3)>. | 19 | L<SSL_get_peer_certificate(3)|SSL_get_peer_certificate(3)>. | 
| 20 | If the peer did not present a certificate, NULL is returned. | 20 | If the peer did not present a certificate, NULL is returned. | 
| 21 | 21 | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_peer_certificate.pod b/src/lib/libssl/src/doc/ssl/SSL_get_peer_certificate.pod index 79c089aa51..1102c7fba9 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_peer_certificate.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_peer_certificate.pod | |||
| @@ -23,7 +23,7 @@ to check the verification state. | |||
| 23 | 23 | ||
| 24 | The reference count of the X509 object is incremented by one, so that it | 24 | The reference count of the X509 object is incremented by one, so that it | 
| 25 | will not be destroyed when the session containing the peer certificate is | 25 | will not be destroyed when the session containing the peer certificate is | 
| 26 | freed. The X509 object must be explicitely freed using X509_free(). | 26 | freed. The X509 object must be explicitly freed using X509_free(). | 
| 27 | 27 | ||
| 28 | =head1 RETURN VALUES | 28 | =head1 RETURN VALUES | 
| 29 | 29 | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_session.pod b/src/lib/libssl/src/doc/ssl/SSL_get_session.pod index aff41fb9cf..a0266e2ac6 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_session.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_session.pod | |||
| @@ -16,14 +16,30 @@ SSL_get_session - retrieve TLS/SSL session data | |||
| 16 | 16 | ||
| 17 | SSL_get_session() returns a pointer to the B<SSL_SESSION> actually used in | 17 | SSL_get_session() returns a pointer to the B<SSL_SESSION> actually used in | 
| 18 | B<ssl>. The reference count of the B<SSL_SESSION> is not incremented, so | 18 | B<ssl>. The reference count of the B<SSL_SESSION> is not incremented, so | 
| 19 | that the pointer can become invalid when the B<ssl> is freed and | 19 | that the pointer can become invalid by other operations. | 
| 20 | SSL_SESSION_free() is implicitly called. | ||
| 21 | 20 | ||
| 22 | SSL_get0_session() is the same as SSL_get_session(). | 21 | SSL_get0_session() is the same as SSL_get_session(). | 
| 23 | 22 | ||
| 24 | SSL_get1_session() is the same as SSL_get_session(), but the reference | 23 | SSL_get1_session() is the same as SSL_get_session(), but the reference | 
| 25 | count of the B<SSL_SESSION> is incremented by one. | 24 | count of the B<SSL_SESSION> is incremented by one. | 
| 26 | 25 | ||
| 26 | =head1 NOTES | ||
| 27 | |||
| 28 | The ssl session contains all information required to re-establish the | ||
| 29 | connection without a new handshake. | ||
| 30 | |||
| 31 | SSL_get0_session() returns a pointer to the actual session. As the | ||
| 32 | reference counter is not incremented, the pointer is only valid while | ||
| 33 | the connection is in use. If L<SSL_clear(3)|SSL_clear(3)> or | ||
| 34 | L<SSL_free(3)|SSL_free(3)> is called, the session may be removed completely | ||
| 35 | (if considered bad), and the pointer obtained will become invalid. Even | ||
| 36 | if the session is valid, it can be removed at any time due to timeout | ||
| 37 | during L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)>. | ||
| 38 | |||
| 39 | If the data is to be kept, SSL_get1_session() will increment the reference | ||
| 40 | count and the session will stay in memory until explicitly freed with | ||
| 41 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>, regardless of its state. | ||
| 42 | |||
| 27 | =head1 RETURN VALUES | 43 | =head1 RETURN VALUES | 
| 28 | 44 | ||
| 29 | The following return values can occur: | 45 | The following return values can occur: | 
| @@ -43,6 +59,7 @@ The return value points to the data of an SSL session. | |||
| 43 | =head1 SEE ALSO | 59 | =head1 SEE ALSO | 
| 44 | 60 | ||
| 45 | L<ssl(3)|ssl(3)>, L<SSL_free(3)|SSL_free(3)>, | 61 | L<ssl(3)|ssl(3)>, L<SSL_free(3)|SSL_free(3)>, | 
| 62 | L<SSL_clear(3)|SSL_clear(3)>, | ||
| 46 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)> | 63 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)> | 
| 47 | 64 | ||
| 48 | =cut | 65 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_verify_result.pod b/src/lib/libssl/src/doc/ssl/SSL_get_verify_result.pod index 4d66236a05..e6bac9c35a 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_verify_result.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_verify_result.pod | |||
| @@ -19,7 +19,7 @@ X509 certificate presented by the peer, if any. | |||
| 19 | 19 | ||
| 20 | SSL_get_verify_result() can only return one error code while the verification | 20 | SSL_get_verify_result() can only return one error code while the verification | 
| 21 | of a certificate can fail because of many reasons at the same time. Only | 21 | of a certificate can fail because of many reasons at the same time. Only | 
| 22 | the last verification error that occured during the processing is available | 22 | the last verification error that occurred during the processing is available | 
| 23 | from SSL_get_verify_result(). | 23 | from SSL_get_verify_result(). | 
| 24 | 24 | ||
| 25 | The verification result is part of the established session and is restored | 25 | The verification result is part of the established session and is restored | 
| @@ -28,7 +28,7 @@ when a session is reused. | |||
| 28 | =head1 BUGS | 28 | =head1 BUGS | 
| 29 | 29 | ||
| 30 | If no peer certificate was presented, the returned result code is | 30 | If no peer certificate was presented, the returned result code is | 
| 31 | X509_V_OK. This is because no verification error occured, it does however | 31 | X509_V_OK. This is because no verification error occurred, it does however | 
| 32 | not indicate success. SSL_get_verify_result() is only useful in connection | 32 | not indicate success. SSL_get_verify_result() is only useful in connection | 
| 33 | with L<SSL_get_peer_certificate(3)|SSL_get_peer_certificate(3)>. | 33 | with L<SSL_get_peer_certificate(3)|SSL_get_peer_certificate(3)>. | 
| 34 | 34 | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_version.pod b/src/lib/libssl/src/doc/ssl/SSL_get_version.pod new file mode 100644 index 0000000000..24d5291256 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_get_version.pod | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_get_version - get the protocol version of a connection. | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | const char *SSL_get_version(SSL *ssl); | ||
| 12 | |||
| 13 | =head1 DESCRIPTION | ||
| 14 | |||
| 15 | SSL_get_cipher_version() returns the name of the protocol used for the | ||
| 16 | connection B<ssl>. | ||
| 17 | |||
| 18 | =head1 RETURN VALUES | ||
| 19 | |||
| 20 | The following strings can occur: | ||
| 21 | |||
| 22 | =over 4 | ||
| 23 | |||
| 24 | =item SSLv2 | ||
| 25 | |||
| 26 | The connection uses the SSLv2 protocol. | ||
| 27 | |||
| 28 | =item SSLv3 | ||
| 29 | |||
| 30 | The connection uses the SSLv3 protocol. | ||
| 31 | |||
| 32 | =item TLSv1 | ||
| 33 | |||
| 34 | The connection uses the TLSv1 protocol. | ||
| 35 | |||
| 36 | =item unknown | ||
| 37 | |||
| 38 | This indicates that no version has been set (no connection established). | ||
| 39 | |||
| 40 | =back | ||
| 41 | |||
| 42 | =head1 SEE ALSO | ||
| 43 | |||
| 44 | L<ssl(3)|ssl(3)> | ||
| 45 | |||
| 46 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_load_client_CA_file.pod b/src/lib/libssl/src/doc/ssl/SSL_load_client_CA_file.pod new file mode 100644 index 0000000000..02527dc2ed --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_load_client_CA_file.pod | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_load_client_CA_file - load certificate names from file | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); | ||
| 12 | |||
| 13 | =head1 DESCRIPTION | ||
| 14 | |||
| 15 | SSL_load_client_CA_file() reads certificates from B<file> and returns | ||
| 16 | a STACK_OF(X509_NAME) with the subject names found. | ||
| 17 | |||
| 18 | =head1 NOTES | ||
| 19 | |||
| 20 | SSL_load_client_CA_file() reads a file of PEM formatted certificates and | ||
| 21 | extracts the X509_NAMES of the certificates found. While the name suggests | ||
| 22 | the specific usage as support function for | ||
| 23 | L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)>, | ||
| 24 | it is not limited to CA certificates. | ||
| 25 | |||
| 26 | =head1 EXAMPLES | ||
| 27 | |||
| 28 | Load names of CAs from file and use it as a client CA list: | ||
| 29 | |||
| 30 | SSL_CTX *ctx; | ||
| 31 | STACK_OF(X509_NAME) *cert_names; | ||
| 32 | |||
| 33 | ... | ||
| 34 | cert_names = SSL_load_client_CA_file("/path/to/CAfile.pem"); | ||
| 35 | if (cert_names != NULL) | ||
| 36 | SSL_CTX_set_client_CA_list(ctx, cert_names); | ||
| 37 | else | ||
| 38 | error_handling(); | ||
| 39 | ... | ||
| 40 | |||
| 41 | =head1 RETURN VALUES | ||
| 42 | |||
| 43 | The following return values can occur: | ||
| 44 | |||
| 45 | =over 4 | ||
| 46 | |||
| 47 | =item NULL | ||
| 48 | |||
| 49 | The operation failed, check out the error stack for the reason. | ||
| 50 | |||
| 51 | =item Pointer to STACK_OF(X509_NAME) | ||
| 52 | |||
| 53 | Pointer to the subject names of the successfully read certificates. | ||
| 54 | |||
| 55 | =back | ||
| 56 | |||
| 57 | =head1 SEE ALSO | ||
| 58 | |||
| 59 | L<ssl(3)|ssl(3)>, | ||
| 60 | L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)> | ||
| 61 | |||
| 62 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_new.pod b/src/lib/libssl/src/doc/ssl/SSL_new.pod index 8e8638fa95..3b084e867d 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_new.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_new.pod | |||
| @@ -37,6 +37,7 @@ The return value points to an allocated SSL structure. | |||
| 37 | =head1 SEE ALSO | 37 | =head1 SEE ALSO | 
| 38 | 38 | ||
| 39 | L<SSL_free(3)|SSL_free(3)>, L<SSL_clear(3)|SSL_clear(3)>, | 39 | L<SSL_free(3)|SSL_free(3)>, L<SSL_clear(3)|SSL_clear(3)>, | 
| 40 | L<SSL_CTX_set_options(3)|SSL_CTX_set_options(3)>, | ||
| 40 | L<ssl(3)|ssl(3)> | 41 | L<ssl(3)|ssl(3)> | 
| 41 | 42 | ||
| 42 | =cut | 43 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_pending.pod b/src/lib/libssl/src/doc/ssl/SSL_pending.pod index 744e1855e1..b4c48598b2 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_pending.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_pending.pod | |||
| @@ -25,6 +25,19 @@ L<SSL_read(3)|SSL_read(3)>. | |||
| 25 | 25 | ||
| 26 | The number of bytes pending is returned. | 26 | The number of bytes pending is returned. | 
| 27 | 27 | ||
| 28 | =head1 BUGS | ||
| 29 | |||
| 30 | SSL_pending() takes into account only bytes from the TLS/SSL record | ||
| 31 | that is currently being processed (if any). If the B<SSL> object's | ||
| 32 | I<read_ahead> flag is set, additional protocol bytes may have been | ||
| 33 | read containing more TLS/SSL records; these are ignored by | ||
| 34 | SSL_pending(). | ||
| 35 | |||
| 36 | Up to OpenSSL 0.9.6, SSL_pending() does not check if the record type | ||
| 37 | of pending data is application data. | ||
| 38 | |||
| 39 | =head1 SEE ALSO | ||
| 40 | |||
| 28 | L<SSL_read(3)|SSL_read(3)>, L<ssl(3)|ssl(3)> | 41 | L<SSL_read(3)|SSL_read(3)>, L<ssl(3)|ssl(3)> | 
| 29 | 42 | ||
| 30 | =cut | 43 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_read.pod b/src/lib/libssl/src/doc/ssl/SSL_read.pod index 072dc26cf2..7db5ee0a22 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_read.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_read.pod | |||
| @@ -8,7 +8,7 @@ SSL_read - read bytes from a TLS/SSL connection. | |||
| 8 | 8 | ||
| 9 | #include <openssl/ssl.h> | 9 | #include <openssl/ssl.h> | 
| 10 | 10 | ||
| 11 | int SSL_read(SSL *ssl, char *buf, int num); | 11 | int SSL_read(SSL *ssl, void *buf, int num); | 
| 12 | 12 | ||
| 13 | =head1 DESCRIPTION | 13 | =head1 DESCRIPTION | 
| 14 | 14 | ||
| @@ -18,17 +18,29 @@ buffer B<buf>. | |||
| 18 | =head1 NOTES | 18 | =head1 NOTES | 
| 19 | 19 | ||
| 20 | If necessary, SSL_read() will negotiate a TLS/SSL session, if | 20 | If necessary, SSL_read() will negotiate a TLS/SSL session, if | 
| 21 | not already explicitly performed by SSL_connect() or SSL_accept(). If the | 21 | not already explicitly performed by L<SSL_connect(3)|SSL_connect(3)> or | 
| 22 | L<SSL_accept(3)|SSL_accept(3)>. If the | ||
| 22 | peer requests a re-negotiation, it will be performed transparently during | 23 | peer requests a re-negotiation, it will be performed transparently during | 
| 23 | the SSL_read() operation. The behaviour of SSL_read() depends on the | 24 | the SSL_read() operation. The behaviour of SSL_read() depends on the | 
| 24 | underlying BIO. | 25 | underlying BIO. | 
| 25 | 26 | ||
| 27 | For the transparent negotiation to succeed, the B<ssl> must have been | ||
| 28 | initialized to client or server mode. This is not the case if a generic | ||
| 29 | method is being used (see L<SSL_CTX_new(3)|SSL_CTX_new(3)>, so that | ||
| 30 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)> or SSL_set_accept_state() | ||
| 31 | must be used before the first call to an SSL_read() or | ||
| 32 | L<SSL_write(3)|SSL_write(3)> function. | ||
| 33 | |||
| 26 | If the underlying BIO is B<blocking>, SSL_read() will only return, once the | 34 | If the underlying BIO is B<blocking>, SSL_read() will only return, once the | 
| 27 | read operation has been finished or an error occurred. | 35 | read operation has been finished or an error occurred, except when a | 
| 36 | renegotiation take place, in which case a SSL_ERROR_WANT_READ may occur. | ||
| 37 | This behaviour can be controlled with the SSL_MODE_AUTO_RETRY flag of the | ||
| 38 | L<SSL_CTX_set_mode(3)|SSL_CTX_set_mode(3)> call. | ||
| 28 | 39 | ||
| 29 | If the underlying BIO is B<non-blocking>, SSL_read() will also return | 40 | If the underlying BIO is B<non-blocking>, SSL_read() will also return | 
| 30 | when the underlying BIO could not satisfy the needs of SSL_read() | 41 | when the underlying BIO could not satisfy the needs of SSL_read() | 
| 31 | to continue the operation. In this case a call to SSL_get_error() with the | 42 | to continue the operation. In this case a call to | 
| 43 | L<SSL_get_error(3)|SSL_get_error(3)> with the | ||
| 32 | return value of SSL_read() will yield B<SSL_ERROR_WANT_READ> or | 44 | return value of SSL_read() will yield B<SSL_ERROR_WANT_READ> or | 
| 33 | B<SSL_ERROR_WANT_WRITE>. As at any time a re-negotiation is possible, a | 45 | B<SSL_ERROR_WANT_WRITE>. As at any time a re-negotiation is possible, a | 
| 34 | call to SSL_read() can also cause write operations! The calling process | 46 | call to SSL_read() can also cause write operations! The calling process | 
| @@ -61,7 +73,7 @@ The read operation was not successful, probably because no data was | |||
| 61 | available. Call SSL_get_error() with the return value B<ret> to find out, | 73 | available. Call SSL_get_error() with the return value B<ret> to find out, | 
| 62 | whether an error occurred. | 74 | whether an error occurred. | 
| 63 | 75 | ||
| 64 | =item -1 | 76 | =item E<lt>0 | 
| 65 | 77 | ||
| 66 | The read operation was not successful, because either an error occurred | 78 | The read operation was not successful, because either an error occurred | 
| 67 | or action must be taken by the calling process. Call SSL_get_error() with the | 79 | or action must be taken by the calling process. Call SSL_get_error() with the | 
| @@ -72,6 +84,9 @@ return value B<ret> to find out the reason. | |||
| 72 | =head1 SEE ALSO | 84 | =head1 SEE ALSO | 
| 73 | 85 | ||
| 74 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_write(3)|SSL_write(3)>, | 86 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_write(3)|SSL_write(3)>, | 
| 87 | L<SSL_CTX_set_mode(3)|SSL_CTX_set_mode(3)>, L<SSL_CTX_new(3)|SSL_CTX_new(3)>, | ||
| 88 | L<SSL_connect(3)|SSL_connect(3)>, L<SSL_accept(3)|SSL_accept(3)> | ||
| 89 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)>, | ||
| 75 | L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)> | 90 | L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)> | 
| 76 | 91 | ||
| 77 | =cut | 92 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_set_connect_state.pod b/src/lib/libssl/src/doc/ssl/SSL_set_connect_state.pod new file mode 100644 index 0000000000..a8c4463c64 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_set_connect_state.pod | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_set_connect_state, SSL_get_accept_state - prepare SSL object to work in client or server mode | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | void SSL_set_connect_state(SSL *ssl); | ||
| 12 | |||
| 13 | void SSL_set_accept_state(SSL *ssl); | ||
| 14 | |||
| 15 | =head1 DESCRIPTION | ||
| 16 | |||
| 17 | SSL_set_connect_state() B<ssl> to work in client mode. | ||
| 18 | |||
| 19 | SSL_set_accept_state() B<ssl> to work in server mode. | ||
| 20 | |||
| 21 | =head1 NOTES | ||
| 22 | |||
| 23 | When the SSL_CTX object was created with L<SSL_CTX_new(3)|SSL_CTX_new(3)>, | ||
| 24 | it was either assigned a dedicated client method, a dedicated server | ||
| 25 | method, or a generic method, that can be used for both client and | ||
| 26 | server connections. (The method might have been changed with | ||
| 27 | L<SSL_CTX_set_ssl_version(3)|SSL_CTX_set_ssl_version(3)> or | ||
| 28 | SSL_set_ssl_method().) | ||
| 29 | |||
| 30 | In order to successfully accomplish the handshake, the SSL routines need | ||
| 31 | to know whether they should act in server or client mode. If the generic | ||
| 32 | method was used, this is not clear from the method itself and must be set | ||
| 33 | with either SSL_set_connect_state() or SSL_set_accept_state(). If these | ||
| 34 | routines are not called, the default value set when L<SSL_new(3)|SSL_new(3)> | ||
| 35 | is called is server mode. | ||
| 36 | |||
| 37 | =head1 RETURN VALUES | ||
| 38 | |||
| 39 | SSL_set_connect_state() and SSL_set_accept_state() do not return diagnostic | ||
| 40 | information. | ||
| 41 | |||
| 42 | =head1 SEE ALSO | ||
| 43 | |||
| 44 | L<ssl(3)|ssl(3)>, L<SSL_new(3)|SSL_new(3)>, L<SSL_CTX_new(3)|SSL_CTX_new(3)>, | ||
| 45 | L<SSL_CTX_set_ssl_version(3)|SSL_CTX_set_ssl_version(3)> | ||
| 46 | |||
| 47 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_set_session.pod b/src/lib/libssl/src/doc/ssl/SSL_set_session.pod index 9f78d9e434..c4f7878579 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_set_session.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_set_session.pod | |||
| @@ -40,6 +40,7 @@ The operation succeeded. | |||
| 40 | 40 | ||
| 41 | =head1 SEE ALSO | 41 | =head1 SEE ALSO | 
| 42 | 42 | ||
| 43 | L<ssl(3)|ssl(3)>, L<SSL_SESSION_free(3)|SSL_SESSION_free(3)> | 43 | L<ssl(3)|ssl(3)>, L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>, | 
| 44 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)> | ||
| 44 | 45 | ||
| 45 | =cut | 46 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_set_shutdown.pod b/src/lib/libssl/src/doc/ssl/SSL_set_shutdown.pod new file mode 100644 index 0000000000..6b196c1f15 --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/SSL_set_shutdown.pod | |||
| @@ -0,0 +1,68 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | SSL_set_shutdown, SSL_get_shutdown - manipulate shutdown state of an SSL connection | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | void SSL_set_shutdown(SSL *ssl, int mode); | ||
| 12 | |||
| 13 | int SSL_get_shutdown(SSL *ssl); | ||
| 14 | |||
| 15 | =head1 DESCRIPTION | ||
| 16 | |||
| 17 | SSL_set_shutdown() sets the shutdown state of B<ssl> to B<mode>. | ||
| 18 | |||
| 19 | SSL_get_shutdown() returns the shutdown mode of B<ssl>. | ||
| 20 | |||
| 21 | =head1 NOTES | ||
| 22 | |||
| 23 | The shutdown state of an ssl connection is a bitmask of: | ||
| 24 | |||
| 25 | =over 4 | ||
| 26 | |||
| 27 | =item 0 | ||
| 28 | |||
| 29 | No shutdown setting, yet. | ||
| 30 | |||
| 31 | =item SSL_SENT_SHUTDOWN | ||
| 32 | |||
| 33 | A "close notify" shutdown alert was sent to the peer, the connection is being | ||
| 34 | considered closed and the session is closed and correct. | ||
| 35 | |||
| 36 | =item SSL_RECEIVED_SHUTDOWN | ||
| 37 | |||
| 38 | A shutdown alert was received form the peer, either a normal "close notify" | ||
| 39 | or a fatal error. | ||
| 40 | |||
| 41 | =back | ||
| 42 | |||
| 43 | SSL_SENT_SHUTDOWN and SSL_RECEIVED_SHUTDOWN can be set at the same time. | ||
| 44 | |||
| 45 | The shutdown state of the connection is used to determine the state of | ||
| 46 | the ssl session. If the session is still open, when | ||
| 47 | L<SSL_clear(3)|SSL_clear(3)> or L<SSL_free(3)|SSL_free(3)> is called, | ||
| 48 | it is considered bad and removed according to RFC2246. | ||
| 49 | The actual condition for a correctly closed session is SSL_SENT_SHUTDOWN. | ||
| 50 | SSL_set_shutdown() can be used to set this state without sending a | ||
| 51 | close alert to the peer (see L<SSL_shutdown(3)|SSL_shutdown(3)>). | ||
| 52 | |||
| 53 | If a "close notify" was received, SSL_RECEIVED_SHUTDOWN will be set, | ||
| 54 | for setting SSL_SENT_SHUTDOWN the application must however still call | ||
| 55 | L<SSL_shutdown(3)|SSL_shutdown(3)> or SSL_set_shutdown() itself. | ||
| 56 | |||
| 57 | =head1 RETURN VALUES | ||
| 58 | |||
| 59 | SSL_set_shutdown() does not return diagnostic information. | ||
| 60 | |||
| 61 | SSL_get_shutdown() returns the current setting. | ||
| 62 | |||
| 63 | =head1 SEE ALSO | ||
| 64 | |||
| 65 | L<ssl(3)|ssl(3)>, L<SSL_shutdown(3)|SSL_shutdown(3)>, | ||
| 66 | L<SSL_clear(3)|SSL_clear(3)>, L<SSL_free(3)|SSL_free(3)> | ||
| 67 | |||
| 68 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_shutdown.pod b/src/lib/libssl/src/doc/ssl/SSL_shutdown.pod index 20e273bd4d..7988dd3c90 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_shutdown.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_shutdown.pod | |||
| @@ -12,9 +12,17 @@ SSL_shutdown - shut down a TLS/SSL connection | |||
| 12 | 12 | ||
| 13 | =head1 DESCRIPTION | 13 | =head1 DESCRIPTION | 
| 14 | 14 | ||
| 15 | SSL_shutdown() shuts down an active TLS/SSL connection. It sends the shutdown | 15 | SSL_shutdown() shuts down an active TLS/SSL connection. It sends the | 
| 16 | alert to the peer. The behaviour of SSL_shutdown() depends on the underlying | 16 | "close notify" shutdown alert to the peer. | 
| 17 | BIO. | 17 | |
| 18 | =head1 NOTES | ||
| 19 | |||
| 20 | SSL_shutdown() tries to send the "close notify" shutdown alert to the peer. | ||
| 21 | Whether the operation succeeds or not, the SSL_SENT_SHUTDOWN flag is set and | ||
| 22 | a currently open session is considered closed and good and will be kept in the | ||
| 23 | session cache for further reuse. | ||
| 24 | |||
| 25 | The behaviour of SSL_shutdown() depends on the underlying BIO. | ||
| 18 | 26 | ||
| 19 | If the underlying BIO is B<blocking>, SSL_shutdown() will only return once the | 27 | If the underlying BIO is B<blocking>, SSL_shutdown() will only return once the | 
| 20 | handshake has been finished or an error occurred. | 28 | handshake has been finished or an error occurred. | 
| @@ -57,6 +65,8 @@ Call SSL_get_error() with the return value B<ret> to find out the reason. | |||
| 57 | =head1 SEE ALSO | 65 | =head1 SEE ALSO | 
| 58 | 66 | ||
| 59 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_connect(3)|SSL_connect(3)>, | 67 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_connect(3)|SSL_connect(3)>, | 
| 60 | L<SSL_accept(3)|SSL_accept(3)>, L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)> | 68 | L<SSL_accept(3)|SSL_accept(3)>, L<SSL_set_shutdown(3)|SSL_set_shutdown(3)>, | 
| 69 | L<SSL_clear(3)|SSL_clear(3), L<SSL_free(3)|SSL_free(3)>, | ||
| 70 | L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)> | ||
| 61 | 71 | ||
| 62 | =cut | 72 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/SSL_write.pod b/src/lib/libssl/src/doc/ssl/SSL_write.pod index db67c187e0..be1ad76d3b 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_write.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_write.pod | |||
| @@ -2,13 +2,13 @@ | |||
| 2 | 2 | ||
| 3 | =head1 NAME | 3 | =head1 NAME | 
| 4 | 4 | ||
| 5 | SSL_read - write bytes to a TLS/SSL connection. | 5 | SSL_write - write bytes to a TLS/SSL connection. | 
| 6 | 6 | ||
| 7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS | 
| 8 | 8 | ||
| 9 | #include <openssl/ssl.h> | 9 | #include <openssl/ssl.h> | 
| 10 | 10 | ||
| 11 | int SSL_write(SSL *ssl, char *buf, int num); | 11 | int SSL_write(SSL *ssl, const void *buf, int num); | 
| 12 | 12 | ||
| 13 | =head1 DESCRIPTION | 13 | =head1 DESCRIPTION | 
| 14 | 14 | ||
| @@ -18,20 +18,32 @@ B<ssl> connection. | |||
| 18 | =head1 NOTES | 18 | =head1 NOTES | 
| 19 | 19 | ||
| 20 | If necessary, SSL_write() will negotiate a TLS/SSL session, if | 20 | If necessary, SSL_write() will negotiate a TLS/SSL session, if | 
| 21 | not already explicitly performed by SSL_connect() or SSL_accept(). If the | 21 | not already explicitly performed by L<SSL_connect(3)|SSL_connect(3)> or | 
| 22 | L<SSL_accept(3)|SSL_accept(3)>. If the | ||
| 22 | peer requests a re-negotiation, it will be performed transparently during | 23 | peer requests a re-negotiation, it will be performed transparently during | 
| 23 | the SSL_write() operation. The behaviour of SSL_write() depends on the | 24 | the SSL_write() operation. The behaviour of SSL_write() depends on the | 
| 24 | underlying BIO. | 25 | underlying BIO. | 
| 25 | 26 | ||
| 27 | For the transparent negotiation to succeed, the B<ssl> must have been | ||
| 28 | initialized to client or server mode. This is not the case if a generic | ||
| 29 | method is being used (see L<SSL_CTX_new(3)|SSL_CTX_new(3)>, so that | ||
| 30 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)> or SSL_set_accept_state() | ||
| 31 | must be used before the first call to an L<SSL_read(3)|SSL_read(3)> | ||
| 32 | or SSL_write() function. | ||
| 33 | |||
| 26 | If the underlying BIO is B<blocking>, SSL_write() will only return, once the | 34 | If the underlying BIO is B<blocking>, SSL_write() will only return, once the | 
| 27 | write operation has been finished or an error occurred. | 35 | write operation has been finished or an error occurred, except when a | 
| 36 | renegotiation take place, in which case a SSL_ERROR_WANT_READ may occur. | ||
| 37 | This behaviour can be controlled with the SSL_MODE_AUTO_RETRY flag of the | ||
| 38 | L<SSL_CTX_set_mode(3)|SSL_CTX_set_mode(3)> call. | ||
| 28 | 39 | ||
| 29 | If the underlying BIO is B<non-blocking>, SSL_write() will also return, | 40 | If the underlying BIO is B<non-blocking>, SSL_write() will also return, | 
| 30 | when the underlying BIO could not satisfy the needs of SSL_write() | 41 | when the underlying BIO could not satisfy the needs of SSL_write() | 
| 31 | to continue the operation. In this case a call to SSL_get_error() with the | 42 | to continue the operation. In this case a call to | 
| 43 | L<SSL_get_error(3)|SSL_get_error(3)> with the | ||
| 32 | return value of SSL_write() will yield B<SSL_ERROR_WANT_READ> or | 44 | return value of SSL_write() will yield B<SSL_ERROR_WANT_READ> or | 
| 33 | B<SSL_ERROR_WANT_WRITE>. As at any time a re-negotiation is possible, a | 45 | B<SSL_ERROR_WANT_WRITE>. As at any time a re-negotiation is possible, a | 
| 34 | call to SSL_write() can also cause write operations! The calling process | 46 | call to SSL_write() can also cause read operations! The calling process | 
| 35 | then must repeat the call after taking appropriate action to satisfy the | 47 | then must repeat the call after taking appropriate action to satisfy the | 
| 36 | needs of SSL_write(). The action depends on the underlying BIO. When using a | 48 | needs of SSL_write(). The action depends on the underlying BIO. When using a | 
| 37 | non-blocking socket, nothing is to be done, but select() can be used to check | 49 | non-blocking socket, nothing is to be done, but select() can be used to check | 
| @@ -60,9 +72,9 @@ bytes actually written to the TLS/SSL connection. | |||
| 60 | The write operation was not successful. Call SSL_get_error() with the return | 72 | The write operation was not successful. Call SSL_get_error() with the return | 
| 61 | value B<ret> to find out, whether an error occurred. | 73 | value B<ret> to find out, whether an error occurred. | 
| 62 | 74 | ||
| 63 | =item -1 | 75 | =item E<lt>0 | 
| 64 | 76 | ||
| 65 | The read operation was not successful, because either an error occurred | 77 | The write operation was not successful, because either an error occurred | 
| 66 | or action must be taken by the calling process. Call SSL_get_error() with the | 78 | or action must be taken by the calling process. Call SSL_get_error() with the | 
| 67 | return value B<ret> to find out the reason. | 79 | return value B<ret> to find out the reason. | 
| 68 | 80 | ||
| @@ -71,6 +83,9 @@ return value B<ret> to find out the reason. | |||
| 71 | =head1 SEE ALSO | 83 | =head1 SEE ALSO | 
| 72 | 84 | ||
| 73 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_read(3)|SSL_read(3)>, | 85 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_read(3)|SSL_read(3)>, | 
| 86 | L<SSL_CTX_set_mode(3)|SSL_CTX_set_mode(3)>, L<SSL_CTX_new(3)|SSL_CTX_new(3)>, | ||
| 87 | L<SSL_connect(3)|SSL_connect(3)>, L<SSL_accept(3)|SSL_accept(3)> | ||
| 88 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)>, | ||
| 74 | L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)> | 89 | L<ssl(3)|ssl(3)>, L<bio(3)|bio(3)> | 
| 75 | 90 | ||
| 76 | =cut | 91 | =cut | 
| diff --git a/src/lib/libssl/src/doc/ssl/d2i_SSL_SESSION.pod b/src/lib/libssl/src/doc/ssl/d2i_SSL_SESSION.pod new file mode 100644 index 0000000000..9a1ba6c47b --- /dev/null +++ b/src/lib/libssl/src/doc/ssl/d2i_SSL_SESSION.pod | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | =pod | ||
| 2 | |||
| 3 | =head1 NAME | ||
| 4 | |||
| 5 | d2i_SSL_SESSION, i2d_SSL_SESSION - convert SSL_SESSION object from/to ASN1 representation | ||
| 6 | |||
| 7 | =head1 SYNOPSIS | ||
| 8 | |||
| 9 | #include <openssl/ssl.h> | ||
| 10 | |||
| 11 | SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, unsigned char **pp, long length); | ||
| 12 | int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); | ||
| 13 | |||
| 14 | =head1 DESCRIPTION | ||
| 15 | |||
| 16 | d2i_SSL_SESSION() transforms the external ASN1 representation of an SSL/TLS | ||
| 17 | session, stored as binary data at location B<pp> with length B<length>, into | ||
| 18 | an SSL_SESSION object. | ||
| 19 | |||
| 20 | i2d_SSL_SESSION() transforms the SSL_SESSION object B<in> into the ASN1 | ||
| 21 | representation and stores it into the memory location pointed to by B<pp>. | ||
| 22 | The length of the resulting ASN1 representation is returned. If B<pp> is | ||
| 23 | the NULL pointer, only the length is calculated and returned. | ||
| 24 | |||
| 25 | =head1 NOTES | ||
| 26 | |||
| 27 | The SSL_SESSION object is built from several malloc()ed parts, it can | ||
| 28 | therefore not be moved, copied or stored directly. In order to store | ||
| 29 | session data on disk or into a database, it must be transformed into | ||
| 30 | a binary ASN1 representation. | ||
| 31 | |||
| 32 | When using d2i_SSL_SESSION(), the SSL_SESSION object is automatically | ||
| 33 | allocated. | ||
| 34 | |||
| 35 | When using i2d_SSL_SESSION(), the memory location pointed to by B<pp> must be | ||
| 36 | large enough to hold the binary representation of the session. There is no | ||
| 37 | known limit on the size of the created ASN1 representation, so the necessary | ||
| 38 | amount of space should be obtained by first calling i2d_SSL_SESSION() with | ||
| 39 | B<pp=NULL>, and obtain the size needed, then allocate the memory and | ||
| 40 | call i2d_SSL_SESSION() again. | ||
| 41 | |||
| 42 | =head1 RETURN VALUES | ||
| 43 | |||
| 44 | d2i_SSL_SESSION() returns a pointer to the newly allocated SSL_SESSION | ||
| 45 | object. In case of failure the NULL-pointer is returned and the error message | ||
| 46 | can be retrieved from the error stack. | ||
| 47 | |||
| 48 | i2d_SSL_SESSION() returns the size of the ASN1 representation in bytes. | ||
| 49 | When the session is not valid, B<0> is returned and no operation is performed. | ||
| 50 | |||
| 51 | =head1 SEE ALSO | ||
| 52 | |||
| 53 | L<ssl(3)|ssl(3)>, | ||
| 54 | L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)> | ||
| 55 | |||
| 56 | =cut | ||
| diff --git a/src/lib/libssl/src/doc/ssl/ssl.pod b/src/lib/libssl/src/doc/ssl/ssl.pod index 7787376f7b..16292a05f2 100644 --- a/src/lib/libssl/src/doc/ssl/ssl.pod +++ b/src/lib/libssl/src/doc/ssl/ssl.pod | |||
| @@ -13,6 +13,69 @@ The OpenSSL B<ssl> library implements the Secure Sockets Layer (SSL v2/v3) and | |||
| 13 | Transport Layer Security (TLS v1) protocols. It provides a rich API which is | 13 | Transport Layer Security (TLS v1) protocols. It provides a rich API which is | 
| 14 | documented here. | 14 | documented here. | 
| 15 | 15 | ||
| 16 | At first the library must be initialized; see | ||
| 17 | L<SSL_library_init(3)|SSL_library_init(3)>. | ||
| 18 | |||
| 19 | Then an B<SSL_CTX> object is created as a framework to establish | ||
| 20 | TLS/SSL enabled connections (see L<SSL_CTX_new(3)|SSL_CTX_new(3)>). | ||
| 21 | Various options regarding certificates, algorithms etc. can be set | ||
| 22 | in this object. | ||
| 23 | |||
| 24 | When a network connection has been created, it can be assigned to an | ||
| 25 | B<SSL> object. After the B<SSL> object has been created using | ||
| 26 | L<SSL_new(3)|SSL_new(3)>, L<SSL_set_fd(3)|SSL_set_fd(3)> or | ||
| 27 | L<SSL_set_bio(3)|SSL_set_bio(3)> can be used to associate the network | ||
| 28 | connection with the object. | ||
| 29 | |||
| 30 | Then the TLS/SSL handshake is performed using | ||
| 31 | L<SSL_accept(3)|SSL_accept(3)> or L<SSL_connect(3)|SSL_connect(3)> | ||
| 32 | respectively. | ||
| 33 | L<SSL_read(3)|SSL_read(3)> and L<SSL_write(3)|SSL_write(3)> are used | ||
| 34 | to read and write data on the TLS/SSL connection. | ||
| 35 | L<SSL_shutdown(3)|SSL_shutdown(3)> can be used to shut down the | ||
| 36 | TLS/SSL connection. | ||
| 37 | |||
| 38 | =head1 DATA STRUCTURES | ||
| 39 | |||
| 40 | Currently the OpenSSL B<ssl> library functions deals with the following data | ||
| 41 | structures: | ||
| 42 | |||
| 43 | =over 4 | ||
| 44 | |||
| 45 | =item B<SSL_METHOD> (SSL Method) | ||
| 46 | |||
| 47 | That's a dispatch structure describing the internal B<ssl> library | ||
| 48 | methods/functions which implement the various protocol versions (SSLv1, SSLv2 | ||
| 49 | and TLSv1). It's needed to create an B<SSL_CTX>. | ||
| 50 | |||
| 51 | =item B<SSL_CIPHER> (SSL Cipher) | ||
| 52 | |||
| 53 | This structure holds the algorithm information for a particular cipher which | ||
| 54 | are a core part of the SSL/TLS protocol. The available ciphers are configured | ||
| 55 | on a B<SSL_CTX> basis and the actually used ones are then part of the | ||
| 56 | B<SSL_SESSION>. | ||
| 57 | |||
| 58 | =item B<SSL_CTX> (SSL Context) | ||
| 59 | |||
| 60 | That's the global context structure which is created by a server or client | ||
| 61 | once per program life-time and which holds mainly default values for the | ||
| 62 | B<SSL> structures which are later created for the connections. | ||
| 63 | |||
| 64 | =item B<SSL_SESSION> (SSL Session) | ||
| 65 | |||
| 66 | This is a structure containing the current TLS/SSL session details for a | ||
| 67 | connection: B<SSL_CIPHER>s, client and server certificates, keys, etc. | ||
| 68 | |||
| 69 | =item B<SSL> (SSL Connection) | ||
| 70 | |||
| 71 | That's the main SSL/TLS structure which is created by a server or client per | ||
| 72 | established connection. This actually is the core structure in the SSL API. | ||
| 73 | Under run-time the application usually deals with this structure which has | ||
| 74 | links to mostly all other structures. | ||
| 75 | |||
| 76 | =back | ||
| 77 | |||
| 78 | |||
| 16 | =head1 HEADER FILES | 79 | =head1 HEADER FILES | 
| 17 | 80 | ||
| 18 | Currently the OpenSSL B<ssl> library provides the following C header files | 81 | Currently the OpenSSL B<ssl> library provides the following C header files | 
| @@ -55,46 +118,6 @@ it's already included by ssl.h>. | |||
| 55 | 118 | ||
| 56 | =back | 119 | =back | 
| 57 | 120 | ||
| 58 | =head1 DATA STRUCTURES | ||
| 59 | |||
| 60 | Currently the OpenSSL B<ssl> library functions deals with the following data | ||
| 61 | structures: | ||
| 62 | |||
| 63 | =over 4 | ||
| 64 | |||
| 65 | =item B<SSL_METHOD> (SSL Method) | ||
| 66 | |||
| 67 | That's a dispatch structure describing the internal B<ssl> library | ||
| 68 | methods/functions which implement the various protocol versions (SSLv1, SSLv2 | ||
| 69 | and TLSv1). It's needed to create an B<SSL_CTX>. | ||
| 70 | |||
| 71 | =item B<SSL_CIPHER> (SSL Cipher) | ||
| 72 | |||
| 73 | This structure holds the algorithm information for a particular cipher which | ||
| 74 | are a core part of the SSL/TLS protocol. The available ciphers are configured | ||
| 75 | on a B<SSL_CTX> basis and the actually used ones are then part of the | ||
| 76 | B<SSL_SESSION>. | ||
| 77 | |||
| 78 | =item B<SSL_CTX> (SSL Context) | ||
| 79 | |||
| 80 | That's the global context structure which is created by a server or client | ||
| 81 | once per program life-time and which holds mainly default values for the | ||
| 82 | B<SSL> structures which are later created for the connections. | ||
| 83 | |||
| 84 | =item B<SSL_SESSION> (SSL Session) | ||
| 85 | |||
| 86 | This is a structure containing the current TLS/SSL session details for a | ||
| 87 | connection: B<SSL_CIPHER>s, client and server certificates, keys, etc. | ||
| 88 | |||
| 89 | =item B<SSL> (SSL Connection) | ||
| 90 | |||
| 91 | That's the main SSL/TLS structure which is created by a server or client per | ||
| 92 | established connection. This actually is the core structure in the SSL API. | ||
| 93 | Under run-time the application usually deals with this structure which has | ||
| 94 | links to mostly all other structures. | ||
| 95 | |||
| 96 | =back | ||
| 97 | |||
| 98 | =head1 API FUNCTIONS | 121 | =head1 API FUNCTIONS | 
| 99 | 122 | ||
| 100 | Currently the OpenSSL B<ssl> library exports 214 API functions. | 123 | Currently the OpenSSL B<ssl> library exports 214 API functions. | 
| @@ -521,11 +544,11 @@ connection defined in the B<SSL> structure. | |||
| 521 | 544 | ||
| 522 | =item long B<SSL_num_renegotiations>(SSL *ssl); | 545 | =item long B<SSL_num_renegotiations>(SSL *ssl); | 
| 523 | 546 | ||
| 524 | =item int B<SSL_peek>(SSL *ssl, char *buf, int num); | 547 | =item int B<SSL_peek>(SSL *ssl, void *buf, int num); | 
| 525 | 548 | ||
| 526 | =item int B<SSL_pending>(SSL *ssl); | 549 | =item int B<SSL_pending>(SSL *ssl); | 
| 527 | 550 | ||
| 528 | =item int B<SSL_read>(SSL *ssl, char *buf, int num); | 551 | =item int B<SSL_read>(SSL *ssl, void *buf, int num); | 
| 529 | 552 | ||
| 530 | =item int B<SSL_renegotiate>(SSL *ssl); | 553 | =item int B<SSL_renegotiate>(SSL *ssl); | 
| 531 | 554 | ||
| @@ -617,7 +640,7 @@ connection defined in the B<SSL> structure. | |||
| 617 | 640 | ||
| 618 | =item int B<SSL_want_x509_lookup>(s); | 641 | =item int B<SSL_want_x509_lookup>(s); | 
| 619 | 642 | ||
| 620 | =item int B<SSL_write>(SSL *ssl, char *buf, int num); | 643 | =item int B<SSL_write>(SSL *ssl, const void *buf, int num); | 
| 621 | 644 | ||
| 622 | =back | 645 | =back | 
| 623 | 646 | ||
| @@ -625,20 +648,53 @@ connection defined in the B<SSL> structure. | |||
| 625 | 648 | ||
| 626 | L<openssl(1)|openssl(1)>, L<crypto(3)|crypto(3)>, | 649 | L<openssl(1)|openssl(1)>, L<crypto(3)|crypto(3)>, | 
| 627 | L<SSL_accept(3)|SSL_accept(3)>, L<SSL_clear(3)|SSL_clear(3)>, | 650 | L<SSL_accept(3)|SSL_accept(3)>, L<SSL_clear(3)|SSL_clear(3)>, | 
| 628 | L<SSL_connect(3)|SSL_connect(3)>, L<SSL_CTX_new(3)|SSL_CTX_new(3)>, | 651 | L<SSL_connect(3)|SSL_connect(3)>, | 
| 652 | L<SSL_CIPHER_get_name(3)|SSL_CIPHER_get_name(3)>, | ||
| 653 | L<SSL_CTX_add_extra_chain_cert(3)|SSL_CTX_add_extra_chain_cert(3)>, | ||
| 654 | L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)>, | ||
| 655 | L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)>, | ||
| 656 | L<SSL_CTX_get_ex_new_index(3)|SSL_CTX_get_ex_new_index(3)>, | ||
| 657 | L<SSL_CTX_get_verify_mode(3)|SSL_CTX_get_verify_mode(3)>, | ||
| 658 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)> | ||
| 659 | L<SSL_CTX_new(3)|SSL_CTX_new(3)>, | ||
| 660 | L<SSL_CTX_sess_number(3)|SSL_CTX_sess_number(3)>, | ||
| 661 | L<SSL_CTX_sess_set_cache_size(3)|SSL_CTX_sess_set_cache_size(3)>, | ||
| 662 | L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)>, | ||
| 663 | L<SSL_CTX_sessions(3)|SSL_CTX_sessions(3)>, | ||
| 664 | L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)>, | ||
| 665 | L<SSL_CTX_set_default_passwd_cb(3)|SSL_CTX_set_default_passwd_cb(3)>, | ||
| 666 | L<SSL_CTX_set_mode(3)|SSL_CTX_set_mode(3)>, | ||
| 667 | L<SSL_CTX_set_options(3)|SSL_CTX_set_options(3)>, | ||
| 668 | L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>, | ||
| 669 | L<SSL_CTX_set_session_id_context(3)|SSL_CTX_set_session_id_context(3)>, | ||
| 629 | L<SSL_CTX_set_ssl_version(3)|SSL_CTX_set_ssl_version(3)>, | 670 | L<SSL_CTX_set_ssl_version(3)|SSL_CTX_set_ssl_version(3)>, | 
| 671 | L<SSL_CTX_set_timeout(3)|SSL_CTX_set_timeout(3)>, | ||
| 672 | L<SSL_CTX_set_verify(3)|SSL_CTX_set_verify(3)>, | ||
| 673 | L<SSL_CTX_use_certificate(3)|SSL_CTX_use_certificate(3)>, | ||
| 630 | L<SSL_get_ciphers(3)|SSL_get_ciphers(3)>, | 674 | L<SSL_get_ciphers(3)|SSL_get_ciphers(3)>, | 
| 631 | L<SSL_get_error(3)|SSL_get_error(3)>, L<SSL_get_fd(3)|SSL_get_fd(3)>, | 675 | L<SSL_get_client_CA_list(3)|SSL_get_client_CA_list(3)>, | 
| 676 | L<SSL_get_error(3)|SSL_get_error(3)>, | ||
| 677 | L<SSL_get_ex_data_X509_STORE_CTX_idx(3)|SSL_get_ex_data_X509_STORE_CTX_idx(3)>, | ||
| 678 | L<SSL_get_ex_new_index(3)|SSL_get_ex_new_index(3)>, | ||
| 679 | L<SSL_get_fd(3)|SSL_get_fd(3)>, | ||
| 632 | L<SSL_get_peer_cert_chain(3)|SSL_get_peer_cert_chain(3)>, | 680 | L<SSL_get_peer_cert_chain(3)|SSL_get_peer_cert_chain(3)>, | 
| 633 | L<SSL_get_rbio(3)|SSL_get_rbio(3)>, | 681 | L<SSL_get_rbio(3)|SSL_get_rbio(3)>, | 
| 634 | L<SSL_get_session(3)|SSL_get_session(3)>, | 682 | L<SSL_get_session(3)|SSL_get_session(3)>, | 
| 635 | L<SSL_get_verify_result(3)|SSL_get_verify_result(3)>, | 683 | L<SSL_get_verify_result(3)|SSL_get_verify_result(3)>, | 
| 636 | L<SSL_library_init(3)|SSL_library_init(3)>, L<SSL_new(3)|SSL_new(3)>, | 684 | L<SSL_get_version(3)|SSL_get_version(3)>, | 
| 685 | L<SSL_library_init(3)|SSL_library_init(3)>, | ||
| 686 | L<SSL_load_client_CA_file(3)|SSL_load_client_CA_file(3)>, | ||
| 687 | L<SSL_new(3)|SSL_new(3)>, | ||
| 637 | L<SSL_read(3)|SSL_read(3)>, L<SSL_set_bio(3)|SSL_set_bio(3)>, | 688 | L<SSL_read(3)|SSL_read(3)>, L<SSL_set_bio(3)|SSL_set_bio(3)>, | 
| 689 | L<SSL_set_connect_state(3)|SSL_set_connect_state(3)>, | ||
| 638 | L<SSL_set_fd(3)|SSL_set_fd(3)>, L<SSL_pending(3)|SSL_pending(3)>, | 690 | L<SSL_set_fd(3)|SSL_set_fd(3)>, L<SSL_pending(3)|SSL_pending(3)>, | 
| 639 | L<SSL_set_session(3)|SSL_set_session(3)>, | 691 | L<SSL_set_session(3)|SSL_set_session(3)>, | 
| 692 | L<SSL_set_shutdown(3)|SSL_set_shutdown(3)>, | ||
| 640 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<SSL_write(3)|SSL_write(3)>, | 693 | L<SSL_shutdown(3)|SSL_shutdown(3)>, L<SSL_write(3)|SSL_write(3)>, | 
| 641 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)> | 694 | L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>, | 
| 695 | L<SSL_SESSION_get_ex_new_index(3)|SSL_SESSION_get_ex_new_index(3)>, | ||
| 696 | L<SSL_SESSION_get_time(3)|SSL_SESSION_get_time(3)>, | ||
| 697 | L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)> | ||
| 642 | 698 | ||
| 643 | =head1 HISTORY | 699 | =head1 HISTORY | 
| 644 | 700 | ||
| diff --git a/src/lib/libssl/src/doc/ssleay.txt b/src/lib/libssl/src/doc/ssleay.txt index 3e964c2e9a..fab8d42c42 100644 --- a/src/lib/libssl/src/doc/ssleay.txt +++ b/src/lib/libssl/src/doc/ssleay.txt | |||
| @@ -5743,7 +5743,7 @@ strucutre but also the private key and certificate associated with | |||
| 5743 | 5743 | ||
| 5744 | EXAMPLES. | 5744 | EXAMPLES. | 
| 5745 | 5745 | ||
| 5746 | So lets play at being a wierd SSL server. | 5746 | So lets play at being a weird SSL server. | 
| 5747 | 5747 | ||
| 5748 | /* setup a context */ | 5748 | /* setup a context */ | 
| 5749 | ctx=SSL_CTX_new(); | 5749 | ctx=SSL_CTX_new(); | 
| diff --git a/src/lib/libssl/src/e_os.h b/src/lib/libssl/src/e_os.h index 318e83edb5..fc61e0e00b 100644 --- a/src/lib/libssl/src/e_os.h +++ b/src/lib/libssl/src/e_os.h | |||
| @@ -340,12 +340,14 @@ extern HINSTANCE _hInstance; | |||
| 340 | # if defined(VMS) && !defined(__DECC) | 340 | # if defined(VMS) && !defined(__DECC) | 
| 341 | # include <socket.h> | 341 | # include <socket.h> | 
| 342 | # include <in.h> | 342 | # include <in.h> | 
| 343 | # include <inet.h> | ||
| 343 | # else | 344 | # else | 
| 344 | # include <sys/socket.h> | 345 | # include <sys/socket.h> | 
| 345 | # ifdef FILIO_H | 346 | # ifdef FILIO_H | 
| 346 | # include <sys/filio.h> /* Added for FIONBIO under unixware */ | 347 | # include <sys/filio.h> /* Added for FIONBIO under unixware */ | 
| 347 | # endif | 348 | # endif | 
| 348 | # include <netinet/in.h> | 349 | # include <netinet/in.h> | 
| 350 | # include <arpa/inet.h> | ||
| 349 | # endif | 351 | # endif | 
| 350 | 352 | ||
| 351 | # if defined(NeXT) || defined(_NEXT_SOURCE) | 353 | # if defined(NeXT) || defined(_NEXT_SOURCE) | 
| diff --git a/src/lib/libssl/src/ms/16all.bat b/src/lib/libssl/src/ms/16all.bat index e57e177177..62ccf78963 100644 --- a/src/lib/libssl/src/ms/16all.bat +++ b/src/lib/libssl/src/ms/16all.bat | |||
| @@ -1,10 +1,13 @@ | |||
| 1 | set OPTS=no_asm | 1 | set OPTS=no_asm | 
| 2 | 2 | ||
| 3 | perl Configure VC-WIN16 | 3 | perl Configure VC-WIN16 | 
| 4 | perl util\mkfiles.pl >MINFO | ||
| 4 | perl util\mk1mf.pl %OPTS% debug VC-WIN16 >d16.mak | 5 | perl util\mk1mf.pl %OPTS% debug VC-WIN16 >d16.mak | 
| 5 | perl util\mk1mf.pl %OPTS% VC-WIN16 >16.mak | 6 | perl util\mk1mf.pl %OPTS% VC-WIN16 >16.mak | 
| 6 | perl util\mk1mf.pl %OPTS% debug dll VC-WIN16 >d16dll.mak | 7 | perl util\mk1mf.pl %OPTS% debug dll VC-WIN16 >d16dll.mak | 
| 7 | perl util\mk1mf.pl %OPTS% dll VC-WIN16 >16dll.mak | 8 | perl util\mk1mf.pl %OPTS% dll VC-WIN16 >16dll.mak | 
| 9 | perl util\mkdef.pl 16 libeay > ms\libeay32.def | ||
| 10 | perl util\mkdef.pl 16 ssleay > ms\ssleay32.def | ||
| 8 | 11 | ||
| 9 | nmake -f d16.mak | 12 | nmake -f d16.mak | 
| 10 | nmake -f 16.mak | 13 | nmake -f 16.mak | 
| diff --git a/src/lib/libssl/src/ms/32all.bat b/src/lib/libssl/src/ms/32all.bat index d1f014c4e0..09f47059ad 100644 --- a/src/lib/libssl/src/ms/32all.bat +++ b/src/lib/libssl/src/ms/32all.bat | |||
| @@ -1,10 +1,13 @@ | |||
| 1 | set OPTS=no-asm | 1 | set OPTS=no-asm | 
| 2 | 2 | ||
| 3 | perl Configure VC-WIN32 | 3 | perl Configure VC-WIN32 | 
| 4 | perl util\mkfiles.pl >MINFO | ||
| 4 | perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak | 5 | perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak | 
| 5 | perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak | 6 | perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak | 
| 6 | perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak | 7 | perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak | 
| 7 | perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak | 8 | perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak | 
| 9 | perl util\mkdef.pl 32 libeay > ms\libeay32.def | ||
| 10 | perl util\mkdef.pl 32 ssleay > ms\ssleay32.def | ||
| 8 | 11 | ||
| 9 | nmake -f d32.mak | 12 | nmake -f d32.mak | 
| 10 | nmake -f 32.mak | 13 | nmake -f 32.mak | 
| diff --git a/src/lib/libssl/src/ms/test.bat b/src/lib/libssl/src/ms/test.bat index ef37beaa22..8f69194283 100644 --- a/src/lib/libssl/src/ms/test.bat +++ b/src/lib/libssl/src/ms/test.bat | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | @echo=off | 1 | @echo off | 
| 2 | 2 | ||
| 3 | set test=..\ms | 3 | set test=..\ms | 
| 4 | set opath=%PATH% | 4 | set opath=%PATH% | 
| diff --git a/src/lib/libssl/src/openssl.spec b/src/lib/libssl/src/openssl.spec index 1c8f4e9d81..d00e461e37 100644 --- a/src/lib/libssl/src/openssl.spec +++ b/src/lib/libssl/src/openssl.spec | |||
| @@ -1,15 +1,15 @@ | |||
| 1 | %define libmaj 0 | 1 | %define libmaj 0 | 
| 2 | %define libmin 9 | 2 | %define libmin 9 | 
| 3 | %define librel 6 | 3 | %define librel 6 | 
| 4 | #%define librev | 4 | %define librev a | 
| 5 | Release: 1 | 5 | Release: 1 | 
| 6 | 6 | ||
| 7 | %define openssldir /var/ssl | 7 | %define openssldir /var/ssl | 
| 8 | 8 | ||
| 9 | Summary: Secure Sockets Layer and cryptography libraries and tools | 9 | Summary: Secure Sockets Layer and cryptography libraries and tools | 
| 10 | Name: openssl-engine | 10 | Name: openssl-engine | 
| 11 | Version: %{libmaj}.%{libmin}.%{librel} | 11 | #Version: %{libmaj}.%{libmin}.%{librel} | 
| 12 | #Version: %{libmaj}.%{libmin}.%{librel}%{librev} | 12 | Version: %{libmaj}.%{libmin}.%{librel}%{librev} | 
| 13 | Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz | 13 | Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz | 
| 14 | Copyright: Freely distributable | 14 | Copyright: Freely distributable | 
| 15 | Group: System Environment/Libraries | 15 | Group: System Environment/Libraries | 
| @@ -105,7 +105,7 @@ LD_LIBRARY_PATH=`pwd` make test | |||
| 105 | 105 | ||
| 106 | %install | 106 | %install | 
| 107 | rm -rf $RPM_BUILD_ROOT | 107 | rm -rf $RPM_BUILD_ROOT | 
| 108 | make install MANDIR=/usr/man INSTALL_PREFIX="$RPM_BUILD_ROOT" | 108 | make MANDIR=/usr/man INSTALL_PREFIX="$RPM_BUILD_ROOT" install | 
| 109 | 109 | ||
| 110 | # Rename manpages | 110 | # Rename manpages | 
| 111 | for x in $RPM_BUILD_ROOT/usr/man/man*/* | 111 | for x in $RPM_BUILD_ROOT/usr/man/man*/* | 
| @@ -119,19 +119,6 @@ install -m644 libRSAglue.a $RPM_BUILD_ROOT/usr/lib | |||
| 119 | # Make backwards-compatibility symlink to ssleay | 119 | # Make backwards-compatibility symlink to ssleay | 
| 120 | ln -s /usr/bin/openssl $RPM_BUILD_ROOT/usr/bin/ssleay | 120 | ln -s /usr/bin/openssl $RPM_BUILD_ROOT/usr/bin/ssleay | 
| 121 | 121 | ||
| 122 | # Install shared libs | ||
| 123 | install -m644 libcrypto.a $RPM_BUILD_ROOT/usr/lib | ||
| 124 | #!#install -m755 libcrypto.so.%{libmaj}.%{libmin}.%{librel} $RPM_BUILD_ROOT/usr/lib | ||
| 125 | install -m644 libssl.a $RPM_BUILD_ROOT/usr/lib | ||
| 126 | #!#install -m755 libssl.so.%{libmaj}.%{libmin}.%{librel} $RPM_BUILD_ROOT/usr/lib | ||
| 127 | ( | ||
| 128 | cd $RPM_BUILD_ROOT/usr/lib | ||
| 129 | #!#ln -s libcrypto.so.%{libmaj}.%{libmin}.%{librel} libcrypto.so.%{libmaj} | ||
| 130 | #!#ln -s libcrypto.so.%{libmaj}.%{libmin}.%{librel} libcrypto.so | ||
| 131 | #!#ln -s libssl.so.%{libmaj}.%{libmin}.%{librel} libssl.so.%{libmaj} | ||
| 132 | #!#ln -s libssl.so.%{libmaj}.%{libmin}.%{librel} libssl.so | ||
| 133 | ) | ||
| 134 | |||
| 135 | %clean | 122 | %clean | 
| 136 | rm -rf $RPM_BUILD_ROOT | 123 | rm -rf $RPM_BUILD_ROOT | 
| 137 | 124 | ||
| @@ -169,6 +156,21 @@ ldconfig | |||
| 169 | ldconfig | 156 | ldconfig | 
| 170 | 157 | ||
| 171 | %changelog | 158 | %changelog | 
| 159 | * Thu Mar 22 2001 Richard Levitte <richard@levitte.org> | ||
| 160 | - Removed redundant subsection that re-installed libcrypto.a and libssl.a | ||
| 161 | as well. | ||
| 162 | * Thu Mar 15 2001 Jeremiah Johnson <jjohnson@penguincomputing.com> | ||
| 163 | - Removed redundant subsection that re-installed libcrypto.so.0.9.6 and | ||
| 164 | libssl.so.0.9.6. As well as the subsection that created symlinks for | ||
| 165 | these. make install handles all this. | ||
| 166 | * Sat Oct 21 2000 Horms <horms@vergenet.net> | ||
| 167 | - Make sure symlinks are created by using -f flag to ln. | ||
| 168 | Otherwise some .so libraries are copied rather than | ||
| 169 | linked in the resulting binary RPM. This causes the package | ||
| 170 | to be larger than neccessary and makes ldconfig complain. | ||
| 171 | * Fri Oct 13 2000 Horms <horms@vergenet.net> | ||
| 172 | - Make defattr is set for files in all packages so packages built as | ||
| 173 | non-root will still be installed with files owned by root. | ||
| 172 | * Thu Sep 14 2000 Richard Levitte <richard@levitte.org> | 174 | * Thu Sep 14 2000 Richard Levitte <richard@levitte.org> | 
| 173 | - Changed to adapt to the new (supported) way of making shared libraries | 175 | - Changed to adapt to the new (supported) way of making shared libraries | 
| 174 | - Installs all static libraries, not just libRSAglue.a | 176 | - Installs all static libraries, not just libRSAglue.a | 
| diff --git a/src/lib/libssl/src/rsaref/Makefile.ssl b/src/lib/libssl/src/rsaref/Makefile.ssl index a17e38f9a5..861193d39c 100644 --- a/src/lib/libssl/src/rsaref/Makefile.ssl +++ b/src/lib/libssl/src/rsaref/Makefile.ssl | |||
| @@ -39,7 +39,8 @@ all: lib | |||
| 39 | 39 | ||
| 40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) | 
| 41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) | 
| 42 | $(RANLIB) $(LIB) | 42 | @echo You may get an error following this line. Please ignore. | 
| 43 | - $(RANLIB) $(LIB) | ||
| 43 | @touch lib | 44 | @touch lib | 
| 44 | 45 | ||
| 45 | files: | 46 | files: | 
| diff --git a/src/lib/libssl/src/ssl/Makefile.ssl b/src/lib/libssl/src/ssl/Makefile.ssl index ad8da5c4be..cfb627d29a 100644 --- a/src/lib/libssl/src/ssl/Makefile.ssl +++ b/src/lib/libssl/src/ssl/Makefile.ssl | |||
| @@ -55,7 +55,8 @@ all: lib | |||
| 55 | 55 | ||
| 56 | lib: $(LIBOBJ) | 56 | lib: $(LIBOBJ) | 
| 57 | $(AR) $(LIB) $(LIBOBJ) | 57 | $(AR) $(LIB) $(LIBOBJ) | 
| 58 | $(RANLIB) $(LIB) | 58 | @echo You may get an error following this line. Please ignore. | 
| 59 | - $(RANLIB) $(LIB) | ||
| 59 | @touch lib | 60 | @touch lib | 
| 60 | 61 | ||
| 61 | files: | 62 | files: | 
| diff --git a/src/lib/libssl/src/ssl/s23_lib.c b/src/lib/libssl/src/ssl/s23_lib.c index dded7a19c5..ad2d8dadf7 100644 --- a/src/lib/libssl/src/ssl/s23_lib.c +++ b/src/lib/libssl/src/ssl/s23_lib.c | |||
| @@ -63,6 +63,7 @@ | |||
| 63 | static int ssl23_num_ciphers(void ); | 63 | static int ssl23_num_ciphers(void ); | 
| 64 | static SSL_CIPHER *ssl23_get_cipher(unsigned int u); | 64 | static SSL_CIPHER *ssl23_get_cipher(unsigned int u); | 
| 65 | static int ssl23_read(SSL *s, void *buf, int len); | 65 | static int ssl23_read(SSL *s, void *buf, int len); | 
| 66 | static int ssl23_peek(SSL *s, void *buf, int len); | ||
| 66 | static int ssl23_write(SSL *s, const void *buf, int len); | 67 | static int ssl23_write(SSL *s, const void *buf, int len); | 
| 67 | static long ssl23_default_timeout(void ); | 68 | static long ssl23_default_timeout(void ); | 
| 68 | static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); | 69 | static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); | 
| @@ -77,7 +78,7 @@ static SSL_METHOD SSLv23_data= { | |||
| 77 | ssl_undefined_function, | 78 | ssl_undefined_function, | 
| 78 | ssl_undefined_function, | 79 | ssl_undefined_function, | 
| 79 | ssl23_read, | 80 | ssl23_read, | 
| 80 | (int (*)(struct ssl_st *, char *, int))ssl_undefined_function, | 81 | ssl23_peek, | 
| 81 | ssl23_write, | 82 | ssl23_write, | 
| 82 | ssl_undefined_function, | 83 | ssl_undefined_function, | 
| 83 | ssl_undefined_function, | 84 | ssl_undefined_function, | 
| @@ -169,13 +170,6 @@ static int ssl23_read(SSL *s, void *buf, int len) | |||
| 169 | { | 170 | { | 
| 170 | int n; | 171 | int n; | 
| 171 | 172 | ||
| 172 | #if 0 | ||
| 173 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | ||
| 174 | { | ||
| 175 | s->rwstate=SSL_NOTHING; | ||
| 176 | return(0); | ||
| 177 | } | ||
| 178 | #endif | ||
| 179 | clear_sys_error(); | 173 | clear_sys_error(); | 
| 180 | if (SSL_in_init(s) && (!s->in_handshake)) | 174 | if (SSL_in_init(s) && (!s->in_handshake)) | 
| 181 | { | 175 | { | 
| @@ -195,17 +189,33 @@ static int ssl23_read(SSL *s, void *buf, int len) | |||
| 195 | } | 189 | } | 
| 196 | } | 190 | } | 
| 197 | 191 | ||
| 198 | static int ssl23_write(SSL *s, const void *buf, int len) | 192 | static int ssl23_peek(SSL *s, void *buf, int len) | 
| 199 | { | 193 | { | 
| 200 | int n; | 194 | int n; | 
| 201 | 195 | ||
| 202 | #if 0 | 196 | clear_sys_error(); | 
| 203 | if (s->shutdown & SSL_SENT_SHUTDOWN) | 197 | if (SSL_in_init(s) && (!s->in_handshake)) | 
| 198 | { | ||
| 199 | n=s->handshake_func(s); | ||
| 200 | if (n < 0) return(n); | ||
| 201 | if (n == 0) | ||
| 202 | { | ||
| 203 | SSLerr(SSL_F_SSL23_PEEK,SSL_R_SSL_HANDSHAKE_FAILURE); | ||
| 204 | return(-1); | ||
| 205 | } | ||
| 206 | return(SSL_peek(s,buf,len)); | ||
| 207 | } | ||
| 208 | else | ||
| 204 | { | 209 | { | 
| 205 | s->rwstate=SSL_NOTHING; | 210 | ssl_undefined_function(s); | 
| 206 | return(0); | 211 | return(-1); | 
| 207 | } | 212 | } | 
| 208 | #endif | 213 | } | 
| 214 | |||
| 215 | static int ssl23_write(SSL *s, const void *buf, int len) | ||
| 216 | { | ||
| 217 | int n; | ||
| 218 | |||
| 209 | clear_sys_error(); | 219 | clear_sys_error(); | 
| 210 | if (SSL_in_init(s) && (!s->in_handshake)) | 220 | if (SSL_in_init(s) && (!s->in_handshake)) | 
| 211 | { | 221 | { | 
| diff --git a/src/lib/libssl/src/ssl/s23_meth.c b/src/lib/libssl/src/ssl/s23_meth.c index b52ca1d58b..40684311db 100644 --- a/src/lib/libssl/src/ssl/s23_meth.c +++ b/src/lib/libssl/src/ssl/s23_meth.c | |||
| @@ -64,7 +64,7 @@ static SSL_METHOD *ssl23_get_method(int ver); | |||
| 64 | static SSL_METHOD *ssl23_get_method(int ver) | 64 | static SSL_METHOD *ssl23_get_method(int ver) | 
| 65 | { | 65 | { | 
| 66 | if (ver == SSL2_VERSION) | 66 | if (ver == SSL2_VERSION) | 
| 67 | return(SSLv23_method()); | 67 | return(SSLv2_method()); | 
| 68 | else if (ver == SSL3_VERSION) | 68 | else if (ver == SSL3_VERSION) | 
| 69 | return(SSLv3_method()); | 69 | return(SSLv3_method()); | 
| 70 | else if (ver == TLS1_VERSION) | 70 | else if (ver == TLS1_VERSION) | 
| diff --git a/src/lib/libssl/src/ssl/s2_clnt.c b/src/lib/libssl/src/ssl/s2_clnt.c index 47dd09c286..28d6d65296 100644 --- a/src/lib/libssl/src/ssl/s2_clnt.c +++ b/src/lib/libssl/src/ssl/s2_clnt.c | |||
| @@ -921,6 +921,7 @@ int ssl2_set_certificate(SSL *s, int type, int len, unsigned char *data) | |||
| 921 | goto err; | 921 | goto err; | 
| 922 | } | 922 | } | 
| 923 | ERR_clear_error(); /* but we keep s->verify_result */ | 923 | ERR_clear_error(); /* but we keep s->verify_result */ | 
| 924 | s->session->verify_result = s->verify_result; | ||
| 924 | 925 | ||
| 925 | /* server's cert for this session */ | 926 | /* server's cert for this session */ | 
| 926 | sc=ssl_sess_cert_new(); | 927 | sc=ssl_sess_cert_new(); | 
| diff --git a/src/lib/libssl/src/ssl/s2_lib.c b/src/lib/libssl/src/ssl/s2_lib.c index 129ed89d97..a590dbfa5c 100644 --- a/src/lib/libssl/src/ssl/s2_lib.c +++ b/src/lib/libssl/src/ssl/s2_lib.c | |||
| @@ -260,7 +260,7 @@ SSL_CIPHER *ssl2_get_cipher(unsigned int u) | |||
| 260 | 260 | ||
| 261 | int ssl2_pending(SSL *s) | 261 | int ssl2_pending(SSL *s) | 
| 262 | { | 262 | { | 
| 263 | return(s->s2->ract_data_length); | 263 | return SSL_in_init(s) ? 0 : s->s2->ract_data_length; | 
| 264 | } | 264 | } | 
| 265 | 265 | ||
| 266 | int ssl2_new(SSL *s) | 266 | int ssl2_new(SSL *s) | 
| @@ -270,10 +270,16 @@ int ssl2_new(SSL *s) | |||
| 270 | if ((s2=OPENSSL_malloc(sizeof *s2)) == NULL) goto err; | 270 | if ((s2=OPENSSL_malloc(sizeof *s2)) == NULL) goto err; | 
| 271 | memset(s2,0,sizeof *s2); | 271 | memset(s2,0,sizeof *s2); | 
| 272 | 272 | ||
| 273 | #if SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER + 3 > SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER + 2 | ||
| 274 | # error "assertion failed" | ||
| 275 | #endif | ||
| 276 | |||
| 273 | if ((s2->rbuf=OPENSSL_malloc( | 277 | if ((s2->rbuf=OPENSSL_malloc( | 
| 274 | SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER+2)) == NULL) goto err; | 278 | SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER+2)) == NULL) goto err; | 
| 279 | /* wbuf needs one byte more because when using two-byte headers, | ||
| 280 | * we leave the first byte unused in do_ssl_write (s2_pkt.c) */ | ||
| 275 | if ((s2->wbuf=OPENSSL_malloc( | 281 | if ((s2->wbuf=OPENSSL_malloc( | 
| 276 | SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER+2)) == NULL) goto err; | 282 | SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER+3)) == NULL) goto err; | 
| 277 | s->s2=s2; | 283 | s->s2=s2; | 
| 278 | 284 | ||
| 279 | ssl2_clear(s); | 285 | ssl2_clear(s); | 
| diff --git a/src/lib/libssl/src/ssl/s2_pkt.c b/src/lib/libssl/src/ssl/s2_pkt.c index 56662f29fa..f2f46ff377 100644 --- a/src/lib/libssl/src/ssl/s2_pkt.c +++ b/src/lib/libssl/src/ssl/s2_pkt.c | |||
| @@ -55,6 +55,59 @@ | |||
| 55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence | 
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] | 
| 57 | */ | 57 | */ | 
| 58 | /* ==================================================================== | ||
| 59 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | ||
| 60 | * | ||
| 61 | * Redistribution and use in source and binary forms, with or without | ||
| 62 | * modification, are permitted provided that the following conditions | ||
| 63 | * are met: | ||
| 64 | * | ||
| 65 | * 1. Redistributions of source code must retain the above copyright | ||
| 66 | * notice, this list of conditions and the following disclaimer. | ||
| 67 | * | ||
| 68 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 69 | * notice, this list of conditions and the following disclaimer in | ||
| 70 | * the documentation and/or other materials provided with the | ||
| 71 | * distribution. | ||
| 72 | * | ||
| 73 | * 3. All advertising materials mentioning features or use of this | ||
| 74 | * software must display the following acknowledgment: | ||
| 75 | * "This product includes software developed by the OpenSSL Project | ||
| 76 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
| 77 | * | ||
| 78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
| 79 | * endorse or promote products derived from this software without | ||
| 80 | * prior written permission. For written permission, please contact | ||
| 81 | * openssl-core@openssl.org. | ||
| 82 | * | ||
| 83 | * 5. Products derived from this software may not be called "OpenSSL" | ||
| 84 | * nor may "OpenSSL" appear in their names without prior written | ||
| 85 | * permission of the OpenSSL Project. | ||
| 86 | * | ||
| 87 | * 6. Redistributions of any form whatsoever must retain the following | ||
| 88 | * acknowledgment: | ||
| 89 | * "This product includes software developed by the OpenSSL Project | ||
| 90 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
| 91 | * | ||
| 92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
| 93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
| 96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
| 101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
| 103 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 104 | * ==================================================================== | ||
| 105 | * | ||
| 106 | * This product includes cryptographic software written by Eric Young | ||
| 107 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
| 108 | * Hudson (tjh@cryptsoft.com). | ||
| 109 | * | ||
| 110 | */ | ||
| 58 | 111 | ||
| 59 | #include "ssl_locl.h" | 112 | #include "ssl_locl.h" | 
| 60 | #ifndef NO_SSL2 | 113 | #ifndef NO_SSL2 | 
| @@ -66,23 +119,12 @@ static int read_n(SSL *s,unsigned int n,unsigned int max,unsigned int extend); | |||
| 66 | static int do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len); | 119 | static int do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len); | 
| 67 | static int write_pending(SSL *s, const unsigned char *buf, unsigned int len); | 120 | static int write_pending(SSL *s, const unsigned char *buf, unsigned int len); | 
| 68 | static int ssl_mt_error(int n); | 121 | static int ssl_mt_error(int n); | 
| 69 | int ssl2_peek(SSL *s, char *buf, int len) | ||
| 70 | { | ||
| 71 | int ret; | ||
| 72 | 122 | ||
| 73 | ret=ssl2_read(s,buf,len); | ||
| 74 | if (ret > 0) | ||
| 75 | { | ||
| 76 | s->s2->ract_data_length+=ret; | ||
| 77 | s->s2->ract_data-=ret; | ||
| 78 | } | ||
| 79 | return(ret); | ||
| 80 | } | ||
| 81 | 123 | ||
| 82 | /* SSL_read - | 124 | /* SSL 2.0 imlementation for SSL_read/SSL_peek - | 
| 83 | * This routine will return 0 to len bytes, decrypted etc if required. | 125 | * This routine will return 0 to len bytes, decrypted etc if required. | 
| 84 | */ | 126 | */ | 
| 85 | int ssl2_read(SSL *s, void *buf, int len) | 127 | static int ssl2_read_internal(SSL *s, void *buf, int len, int peek) | 
| 86 | { | 128 | { | 
| 87 | int n; | 129 | int n; | 
| 88 | unsigned char mac[MAX_MAC_SIZE]; | 130 | unsigned char mac[MAX_MAC_SIZE]; | 
| @@ -90,14 +132,14 @@ int ssl2_read(SSL *s, void *buf, int len) | |||
| 90 | int i; | 132 | int i; | 
| 91 | unsigned int mac_size=0; | 133 | unsigned int mac_size=0; | 
| 92 | 134 | ||
| 93 | ssl2_read_again: | 135 | ssl2_read_again: | 
| 94 | if (SSL_in_init(s) && !s->in_handshake) | 136 | if (SSL_in_init(s) && !s->in_handshake) | 
| 95 | { | 137 | { | 
| 96 | n=s->handshake_func(s); | 138 | n=s->handshake_func(s); | 
| 97 | if (n < 0) return(n); | 139 | if (n < 0) return(n); | 
| 98 | if (n == 0) | 140 | if (n == 0) | 
| 99 | { | 141 | { | 
| 100 | SSLerr(SSL_F_SSL2_READ,SSL_R_SSL_HANDSHAKE_FAILURE); | 142 | SSLerr(SSL_F_SSL2_READ_INTERNAL,SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 101 | return(-1); | 143 | return(-1); | 
| 102 | } | 144 | } | 
| 103 | } | 145 | } | 
| @@ -114,13 +156,22 @@ ssl2_read_again: | |||
| 114 | n=len; | 156 | n=len; | 
| 115 | 157 | ||
| 116 | memcpy(buf,s->s2->ract_data,(unsigned int)n); | 158 | memcpy(buf,s->s2->ract_data,(unsigned int)n); | 
| 117 | s->s2->ract_data_length-=n; | 159 | if (!peek) | 
| 118 | s->s2->ract_data+=n; | 160 | { | 
| 119 | if (s->s2->ract_data_length == 0) | 161 | s->s2->ract_data_length-=n; | 
| 120 | s->rstate=SSL_ST_READ_HEADER; | 162 | s->s2->ract_data+=n; | 
| 163 | if (s->s2->ract_data_length == 0) | ||
| 164 | s->rstate=SSL_ST_READ_HEADER; | ||
| 165 | } | ||
| 166 | |||
| 121 | return(n); | 167 | return(n); | 
| 122 | } | 168 | } | 
| 123 | 169 | ||
| 170 | /* s->s2->ract_data_length == 0 | ||
| 171 | * | ||
| 172 | * Fill the buffer, then goto ssl2_read_again. | ||
| 173 | */ | ||
| 174 | |||
| 124 | if (s->rstate == SSL_ST_READ_HEADER) | 175 | if (s->rstate == SSL_ST_READ_HEADER) | 
| 125 | { | 176 | { | 
| 126 | if (s->first_packet) | 177 | if (s->first_packet) | 
| @@ -133,7 +184,7 @@ ssl2_read_again: | |||
| 133 | (p[2] == SSL2_MT_CLIENT_HELLO) || | 184 | (p[2] == SSL2_MT_CLIENT_HELLO) || | 
| 134 | (p[2] == SSL2_MT_SERVER_HELLO)))) | 185 | (p[2] == SSL2_MT_SERVER_HELLO)))) | 
| 135 | { | 186 | { | 
| 136 | SSLerr(SSL_F_SSL2_READ,SSL_R_NON_SSLV2_INITIAL_PACKET); | 187 | SSLerr(SSL_F_SSL2_READ_INTERNAL,SSL_R_NON_SSLV2_INITIAL_PACKET); | 
| 137 | return(-1); | 188 | return(-1); | 
| 138 | } | 189 | } | 
| 139 | } | 190 | } | 
| @@ -211,48 +262,49 @@ ssl2_read_again: | |||
| 211 | (unsigned int)mac_size) != 0) || | 262 | (unsigned int)mac_size) != 0) || | 
| 212 | (s->s2->rlength%EVP_CIPHER_CTX_block_size(s->enc_read_ctx) != 0)) | 263 | (s->s2->rlength%EVP_CIPHER_CTX_block_size(s->enc_read_ctx) != 0)) | 
| 213 | { | 264 | { | 
| 214 | SSLerr(SSL_F_SSL2_READ,SSL_R_BAD_MAC_DECODE); | 265 | SSLerr(SSL_F_SSL2_READ_INTERNAL,SSL_R_BAD_MAC_DECODE); | 
| 215 | return(-1); | 266 | return(-1); | 
| 216 | } | 267 | } | 
| 217 | } | 268 | } | 
| 218 | INC32(s->s2->read_sequence); /* expect next number */ | 269 | INC32(s->s2->read_sequence); /* expect next number */ | 
| 219 | /* s->s2->ract_data is now available for processing */ | 270 | /* s->s2->ract_data is now available for processing */ | 
| 220 | 271 | ||
| 221 | #if 1 | 272 | /* Possibly the packet that we just read had 0 actual data bytes. | 
| 222 | /* How should we react when a packet containing 0 | 273 | * (SSLeay/OpenSSL itself never sends such packets; see ssl2_write.) | 
| 223 | * bytes is received? (Note that SSLeay/OpenSSL itself | 274 | * In this case, returning 0 would be interpreted by the caller | 
| 224 | * never sends such packets; see ssl2_write.) | 275 | * as indicating EOF, so it's not a good idea. Instead, we just | 
| 225 | * Returning 0 would be interpreted by the caller as | 276 | * continue reading; thus ssl2_read_internal may have to process | 
| 226 | * indicating EOF, so it's not a good idea. | 277 | * multiple packets before it can return. | 
| 227 | * Instead, we just continue reading. Note that using | 278 | * | 
| 228 | * select() for blocking sockets *never* guarantees | 279 | * [Note that using select() for blocking sockets *never* guarantees | 
| 229 | * that the next SSL_read will not block -- the available | 280 | * that the next SSL_read will not block -- the available | 
| 230 | * data may contain incomplete packets, and except for SSL 2 | 281 | * data may contain incomplete packets, and except for SSL 2, | 
| 231 | * renegotiation can confuse things even more. */ | 282 | * renegotiation can confuse things even more.] */ | 
| 232 | 283 | ||
| 233 | goto ssl2_read_again; /* This should really be | 284 | goto ssl2_read_again; /* This should really be | 
| 234 | * "return ssl2_read(s,buf,len)", | 285 | * "return ssl2_read(s,buf,len)", | 
| 235 | * but that would allow for | 286 | * but that would allow for | 
| 236 | * denial-of-service attacks if a | 287 | * denial-of-service attacks if a | 
| 237 | * C compiler is used that does not | 288 | * C compiler is used that does not | 
| 238 | * recognize end-recursion. */ | 289 | * recognize end-recursion. */ | 
| 239 | #else | ||
| 240 | /* If a 0 byte packet was sent, return 0, otherwise | ||
| 241 | * we play havoc with people using select with | ||
| 242 | * blocking sockets. Let them handle a packet at a time, | ||
| 243 | * they should really be using non-blocking sockets. */ | ||
| 244 | if (s->s2->ract_data_length == 0) | ||
| 245 | return(0); | ||
| 246 | return(ssl2_read(s,buf,len)); | ||
| 247 | #endif | ||
| 248 | } | 290 | } | 
| 249 | else | 291 | else | 
| 250 | { | 292 | { | 
| 251 | SSLerr(SSL_F_SSL2_READ,SSL_R_BAD_STATE); | 293 | SSLerr(SSL_F_SSL2_READ_INTERNAL,SSL_R_BAD_STATE); | 
| 252 | return(-1); | 294 | return(-1); | 
| 253 | } | 295 | } | 
| 254 | } | 296 | } | 
| 255 | 297 | ||
| 298 | int ssl2_read(SSL *s, void *buf, int len) | ||
| 299 | { | ||
| 300 | return ssl2_read_internal(s, buf, len, 0); | ||
| 301 | } | ||
| 302 | |||
| 303 | int ssl2_peek(SSL *s, void *buf, int len) | ||
| 304 | { | ||
| 305 | return ssl2_read_internal(s, buf, len, 1); | ||
| 306 | } | ||
| 307 | |||
| 256 | static int read_n(SSL *s, unsigned int n, unsigned int max, | 308 | static int read_n(SSL *s, unsigned int n, unsigned int max, | 
| 257 | unsigned int extend) | 309 | unsigned int extend) | 
| 258 | { | 310 | { | 
| @@ -483,6 +535,9 @@ static int do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len) | |||
| 483 | { | 535 | { | 
| 484 | bs=EVP_CIPHER_CTX_block_size(s->enc_read_ctx); | 536 | bs=EVP_CIPHER_CTX_block_size(s->enc_read_ctx); | 
| 485 | j=len+mac_size; | 537 | j=len+mac_size; | 
| 538 | /* Two-byte headers allow for a larger record length than | ||
| 539 | * three-byte headers, but we can't use them if we need | ||
| 540 | * padding or if we have to set the escape bit. */ | ||
| 486 | if ((j > SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER) && | 541 | if ((j > SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER) && | 
| 487 | (!s->s2->escape)) | 542 | (!s->s2->escape)) | 
| 488 | { | 543 | { | 
| @@ -498,25 +553,39 @@ static int do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len) | |||
| 498 | } | 553 | } | 
| 499 | else if ((bs <= 1) && (!s->s2->escape)) | 554 | else if ((bs <= 1) && (!s->s2->escape)) | 
| 500 | { | 555 | { | 
| 501 | /* len=len; */ | 556 | /* j <= SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER, thus | 
| 557 | * j < SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER */ | ||
| 502 | s->s2->three_byte_header=0; | 558 | s->s2->three_byte_header=0; | 
| 503 | p=0; | 559 | p=0; | 
| 504 | } | 560 | } | 
| 505 | else /* 3 byte header */ | 561 | else /* we may have to use a 3 byte header */ | 
| 506 | { | 562 | { | 
| 507 | /*len=len; */ | 563 | /* If s->s2->escape is not set, then | 
| 564 | * j <= SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER, and thus | ||
| 565 | * j < SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER. */ | ||
| 508 | p=(j%bs); | 566 | p=(j%bs); | 
| 509 | p=(p == 0)?0:(bs-p); | 567 | p=(p == 0)?0:(bs-p); | 
| 510 | if (s->s2->escape) | 568 | if (s->s2->escape) | 
| 569 | { | ||
| 511 | s->s2->three_byte_header=1; | 570 | s->s2->three_byte_header=1; | 
| 571 | if (j > SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER) | ||
| 572 | j=SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER; | ||
| 573 | } | ||
| 512 | else | 574 | else | 
| 513 | s->s2->three_byte_header=(p == 0)?0:1; | 575 | s->s2->three_byte_header=(p == 0)?0:1; | 
| 514 | } | 576 | } | 
| 515 | } | 577 | } | 
| 578 | |||
| 579 | /* Now | ||
| 580 | * j <= SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER | ||
| 581 | * holds, and if s->s2->three_byte_header is set, then even | ||
| 582 | * j <= SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER. | ||
| 583 | */ | ||
| 584 | |||
| 516 | /* mac_size is the number of MAC bytes | 585 | /* mac_size is the number of MAC bytes | 
| 517 | * len is the number of data bytes we are going to send | 586 | * len is the number of data bytes we are going to send | 
| 518 | * p is the number of padding bytes | 587 | * p is the number of padding bytes | 
| 519 | * if p == 0, it is a 2 byte header */ | 588 | * (if it is a two-byte header, then p == 0) */ | 
| 520 | 589 | ||
| 521 | s->s2->wlength=len; | 590 | s->s2->wlength=len; | 
| 522 | s->s2->padding=p; | 591 | s->s2->padding=p; | 
| diff --git a/src/lib/libssl/src/ssl/s3_both.c b/src/lib/libssl/src/ssl/s3_both.c index d92c164b0f..10d8d3b15a 100644 --- a/src/lib/libssl/src/ssl/s3_both.c +++ b/src/lib/libssl/src/ssl/s3_both.c | |||
| @@ -365,7 +365,7 @@ long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 365 | while (s->init_num < 4) | 365 | while (s->init_num < 4) | 
| 366 | { | 366 | { | 
| 367 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num], | 367 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num], | 
| 368 | 4 - s->init_num); | 368 | 4 - s->init_num, 0); | 
| 369 | if (i <= 0) | 369 | if (i <= 0) | 
| 370 | { | 370 | { | 
| 371 | s->rwstate=SSL_READING; | 371 | s->rwstate=SSL_READING; | 
| @@ -434,7 +434,7 @@ long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 434 | n=s->s3->tmp.message_size; | 434 | n=s->s3->tmp.message_size; | 
| 435 | while (n > 0) | 435 | while (n > 0) | 
| 436 | { | 436 | { | 
| 437 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],n); | 437 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],n,0); | 
| 438 | if (i <= 0) | 438 | if (i <= 0) | 
| 439 | { | 439 | { | 
| 440 | s->rwstate=SSL_READING; | 440 | s->rwstate=SSL_READING; | 
| diff --git a/src/lib/libssl/src/ssl/s3_clnt.c b/src/lib/libssl/src/ssl/s3_clnt.c index 62040f9f1d..eec45cfa48 100644 --- a/src/lib/libssl/src/ssl/s3_clnt.c +++ b/src/lib/libssl/src/ssl/s3_clnt.c | |||
| @@ -815,6 +815,7 @@ static int ssl3_get_server_certificate(SSL *s) | |||
| 815 | X509_free(s->session->peer); | 815 | X509_free(s->session->peer); | 
| 816 | CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509); | 816 | CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509); | 
| 817 | s->session->peer=x; | 817 | s->session->peer=x; | 
| 818 | s->session->verify_result = s->verify_result; | ||
| 818 | 819 | ||
| 819 | x=NULL; | 820 | x=NULL; | 
| 820 | ret=1; | 821 | ret=1; | 
| diff --git a/src/lib/libssl/src/ssl/s3_enc.c b/src/lib/libssl/src/ssl/s3_enc.c index 012a4b8740..9f52c39ca9 100644 --- a/src/lib/libssl/src/ssl/s3_enc.c +++ b/src/lib/libssl/src/ssl/s3_enc.c | |||
| @@ -504,7 +504,10 @@ int ssl3_mac(SSL *ssl, unsigned char *md, int send) | |||
| 504 | EVP_DigestFinal( &md_ctx,md,&md_size); | 504 | EVP_DigestFinal( &md_ctx,md,&md_size); | 
| 505 | 505 | ||
| 506 | for (i=7; i>=0; i--) | 506 | for (i=7; i>=0; i--) | 
| 507 | if (++seq[i]) break; | 507 | { | 
| 508 | ++seq[i]; | ||
| 509 | if (seq[i] != 0) break; | ||
| 510 | } | ||
| 508 | 511 | ||
| 509 | return(md_size); | 512 | return(md_size); | 
| 510 | } | 513 | } | 
| diff --git a/src/lib/libssl/src/ssl/s3_lib.c b/src/lib/libssl/src/ssl/s3_lib.c index cee2021b6b..c32c06de32 100644 --- a/src/lib/libssl/src/ssl/s3_lib.c +++ b/src/lib/libssl/src/ssl/s3_lib.c | |||
| @@ -55,6 +55,59 @@ | |||
| 55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence | 
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] | 
| 57 | */ | 57 | */ | 
| 58 | /* ==================================================================== | ||
| 59 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | ||
| 60 | * | ||
| 61 | * Redistribution and use in source and binary forms, with or without | ||
| 62 | * modification, are permitted provided that the following conditions | ||
| 63 | * are met: | ||
| 64 | * | ||
| 65 | * 1. Redistributions of source code must retain the above copyright | ||
| 66 | * notice, this list of conditions and the following disclaimer. | ||
| 67 | * | ||
| 68 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 69 | * notice, this list of conditions and the following disclaimer in | ||
| 70 | * the documentation and/or other materials provided with the | ||
| 71 | * distribution. | ||
| 72 | * | ||
| 73 | * 3. All advertising materials mentioning features or use of this | ||
| 74 | * software must display the following acknowledgment: | ||
| 75 | * "This product includes software developed by the OpenSSL Project | ||
| 76 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
| 77 | * | ||
| 78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
| 79 | * endorse or promote products derived from this software without | ||
| 80 | * prior written permission. For written permission, please contact | ||
| 81 | * openssl-core@openssl.org. | ||
| 82 | * | ||
| 83 | * 5. Products derived from this software may not be called "OpenSSL" | ||
| 84 | * nor may "OpenSSL" appear in their names without prior written | ||
| 85 | * permission of the OpenSSL Project. | ||
| 86 | * | ||
| 87 | * 6. Redistributions of any form whatsoever must retain the following | ||
| 88 | * acknowledgment: | ||
| 89 | * "This product includes software developed by the OpenSSL Project | ||
| 90 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
| 91 | * | ||
| 92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
| 93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
| 96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
| 101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
| 103 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 104 | * ==================================================================== | ||
| 105 | * | ||
| 106 | * This product includes cryptographic software written by Eric Young | ||
| 107 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
| 108 | * Hudson (tjh@cryptsoft.com). | ||
| 109 | * | ||
| 110 | */ | ||
| 58 | 111 | ||
| 59 | #include <stdio.h> | 112 | #include <stdio.h> | 
| 60 | #include <openssl/md5.h> | 113 | #include <openssl/md5.h> | 
| @@ -638,10 +691,9 @@ SSL_CIPHER *ssl3_get_cipher(unsigned int u) | |||
| 638 | return(NULL); | 691 | return(NULL); | 
| 639 | } | 692 | } | 
| 640 | 693 | ||
| 641 | /* The problem is that it may not be the correct record type */ | ||
| 642 | int ssl3_pending(SSL *s) | 694 | int ssl3_pending(SSL *s) | 
| 643 | { | 695 | { | 
| 644 | return(s->s3->rrec.length); | 696 | return (s->s3->rrec.type == SSL3_RT_APPLICATION_DATA) ? s->s3->rrec.length : 0; | 
| 645 | } | 697 | } | 
| 646 | 698 | ||
| 647 | int ssl3_new(SSL *s) | 699 | int ssl3_new(SSL *s) | 
| @@ -1189,7 +1241,7 @@ int ssl3_shutdown(SSL *s) | |||
| 1189 | else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) | 1241 | else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) | 
| 1190 | { | 1242 | { | 
| 1191 | /* If we are waiting for a close from our peer, we are closed */ | 1243 | /* If we are waiting for a close from our peer, we are closed */ | 
| 1192 | ssl3_read_bytes(s,0,NULL,0); | 1244 | ssl3_read_bytes(s,0,NULL,0,0); | 
| 1193 | } | 1245 | } | 
| 1194 | 1246 | ||
| 1195 | if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) && | 1247 | if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) && | 
| @@ -1252,14 +1304,14 @@ int ssl3_write(SSL *s, const void *buf, int len) | |||
| 1252 | return(ret); | 1304 | return(ret); | 
| 1253 | } | 1305 | } | 
| 1254 | 1306 | ||
| 1255 | int ssl3_read(SSL *s, void *buf, int len) | 1307 | static int ssl3_read_internal(SSL *s, void *buf, int len, int peek) | 
| 1256 | { | 1308 | { | 
| 1257 | int ret; | 1309 | int ret; | 
| 1258 | 1310 | ||
| 1259 | clear_sys_error(); | 1311 | clear_sys_error(); | 
| 1260 | if (s->s3->renegotiate) ssl3_renegotiate_check(s); | 1312 | if (s->s3->renegotiate) ssl3_renegotiate_check(s); | 
| 1261 | s->s3->in_read_app_data=1; | 1313 | s->s3->in_read_app_data=1; | 
| 1262 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len); | 1314 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek); | 
| 1263 | if ((ret == -1) && (s->s3->in_read_app_data == 0)) | 1315 | if ((ret == -1) && (s->s3->in_read_app_data == 0)) | 
| 1264 | { | 1316 | { | 
| 1265 | /* ssl3_read_bytes decided to call s->handshake_func, which | 1317 | /* ssl3_read_bytes decided to call s->handshake_func, which | 
| @@ -1269,7 +1321,7 @@ int ssl3_read(SSL *s, void *buf, int len) | |||
| 1269 | * by resetting 'in_read_app_data', strangely); so disable | 1321 | * by resetting 'in_read_app_data', strangely); so disable | 
| 1270 | * handshake processing and try to read application data again. */ | 1322 | * handshake processing and try to read application data again. */ | 
| 1271 | s->in_handshake++; | 1323 | s->in_handshake++; | 
| 1272 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len); | 1324 | ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek); | 
| 1273 | s->in_handshake--; | 1325 | s->in_handshake--; | 
| 1274 | } | 1326 | } | 
| 1275 | else | 1327 | else | 
| @@ -1278,26 +1330,14 @@ int ssl3_read(SSL *s, void *buf, int len) | |||
| 1278 | return(ret); | 1330 | return(ret); | 
| 1279 | } | 1331 | } | 
| 1280 | 1332 | ||
| 1281 | int ssl3_peek(SSL *s, char *buf, int len) | 1333 | int ssl3_read(SSL *s, void *buf, int len) | 
| 1282 | { | 1334 | { | 
| 1283 | SSL3_RECORD *rr; | 1335 | return ssl3_read_internal(s, buf, len, 0); | 
| 1284 | int n; | 1336 | } | 
| 1285 | |||
| 1286 | rr= &(s->s3->rrec); | ||
| 1287 | if ((rr->length == 0) || (rr->type != SSL3_RT_APPLICATION_DATA)) | ||
| 1288 | { | ||
| 1289 | n=ssl3_read(s,buf,1); | ||
| 1290 | if (n <= 0) return(n); | ||
| 1291 | rr->length++; | ||
| 1292 | rr->off--; | ||
| 1293 | } | ||
| 1294 | 1337 | ||
| 1295 | if ((unsigned int)len > rr->length) | 1338 | int ssl3_peek(SSL *s, void *buf, int len) | 
| 1296 | n=rr->length; | 1339 | { | 
| 1297 | else | 1340 | return ssl3_read_internal(s, buf, len, 1); | 
| 1298 | n=len; | ||
| 1299 | memcpy(buf,&(rr->data[rr->off]),(unsigned int)n); | ||
| 1300 | return(n); | ||
| 1301 | } | 1341 | } | 
| 1302 | 1342 | ||
| 1303 | int ssl3_renegotiate(SSL *s) | 1343 | int ssl3_renegotiate(SSL *s) | 
| diff --git a/src/lib/libssl/src/ssl/s3_pkt.c b/src/lib/libssl/src/ssl/s3_pkt.c index 1414079853..9ab76604a6 100644 --- a/src/lib/libssl/src/ssl/s3_pkt.c +++ b/src/lib/libssl/src/ssl/s3_pkt.c | |||
| @@ -704,7 +704,7 @@ static int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, | |||
| 704 | * Application data protocol | 704 | * Application data protocol | 
| 705 | * none of our business | 705 | * none of our business | 
| 706 | */ | 706 | */ | 
| 707 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len) | 707 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | 
| 708 | { | 708 | { | 
| 709 | int al,i,j,ret; | 709 | int al,i,j,ret; | 
| 710 | unsigned int n; | 710 | unsigned int n; | 
| @@ -715,7 +715,8 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len) | |||
| 715 | if (!ssl3_setup_buffers(s)) | 715 | if (!ssl3_setup_buffers(s)) | 
| 716 | return(-1); | 716 | return(-1); | 
| 717 | 717 | ||
| 718 | if ((type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) | 718 | if ((type && (type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) || | 
| 719 | (peek && (type != SSL3_RT_APPLICATION_DATA))) | ||
| 719 | { | 720 | { | 
| 720 | SSLerr(SSL_F_SSL3_READ_BYTES, SSL_R_INTERNAL_ERROR); | 721 | SSLerr(SSL_F_SSL3_READ_BYTES, SSL_R_INTERNAL_ERROR); | 
| 721 | return -1; | 722 | return -1; | 
| @@ -728,6 +729,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len) | |||
| 728 | unsigned char *dst = buf; | 729 | unsigned char *dst = buf; | 
| 729 | unsigned int k; | 730 | unsigned int k; | 
| 730 | 731 | ||
| 732 | /* peek == 0 */ | ||
| 731 | n = 0; | 733 | n = 0; | 
| 732 | while ((len > 0) && (s->s3->handshake_fragment_len > 0)) | 734 | while ((len > 0) && (s->s3->handshake_fragment_len > 0)) | 
| 733 | { | 735 | { | 
| @@ -763,7 +765,7 @@ start: | |||
| 763 | * s->s3->rrec.length, - number of bytes. */ | 765 | * s->s3->rrec.length, - number of bytes. */ | 
| 764 | rr = &(s->s3->rrec); | 766 | rr = &(s->s3->rrec); | 
| 765 | 767 | ||
| 766 | /* get new packet */ | 768 | /* get new packet if necessary */ | 
| 767 | if ((rr->length == 0) || (s->rstate == SSL_ST_READ_BODY)) | 769 | if ((rr->length == 0) || (s->rstate == SSL_ST_READ_BODY)) | 
| 768 | { | 770 | { | 
| 769 | ret=ssl3_get_record(s); | 771 | ret=ssl3_get_record(s); | 
| @@ -781,7 +783,8 @@ start: | |||
| 781 | goto err; | 783 | goto err; | 
| 782 | } | 784 | } | 
| 783 | 785 | ||
| 784 | /* If the other end has shutdown, throw anything we read away */ | 786 | /* If the other end has shut down, throw anything we read away | 
| 787 | * (even in 'peek' mode) */ | ||
| 785 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 788 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 
| 786 | { | 789 | { | 
| 787 | rr->length=0; | 790 | rr->length=0; | 
| @@ -810,12 +813,15 @@ start: | |||
| 810 | n = (unsigned int)len; | 813 | n = (unsigned int)len; | 
| 811 | 814 | ||
| 812 | memcpy(buf,&(rr->data[rr->off]),n); | 815 | memcpy(buf,&(rr->data[rr->off]),n); | 
| 813 | rr->length-=n; | 816 | if (!peek) | 
| 814 | rr->off+=n; | ||
| 815 | if (rr->length == 0) | ||
| 816 | { | 817 | { | 
| 817 | s->rstate=SSL_ST_READ_HEADER; | 818 | rr->length-=n; | 
| 818 | rr->off=0; | 819 | rr->off+=n; | 
| 820 | if (rr->length == 0) | ||
| 821 | { | ||
| 822 | s->rstate=SSL_ST_READ_HEADER; | ||
| 823 | rr->off=0; | ||
| 824 | } | ||
| 819 | } | 825 | } | 
| 820 | return(n); | 826 | return(n); | 
| 821 | } | 827 | } | 
| diff --git a/src/lib/libssl/src/ssl/ssl.h b/src/lib/libssl/src/ssl/ssl.h index fdbdc70ba7..9de9e611ab 100644 --- a/src/lib/libssl/src/ssl/ssl.h +++ b/src/lib/libssl/src/ssl/ssl.h | |||
| @@ -206,7 +206,7 @@ typedef struct ssl_method_st | |||
| 206 | int (*ssl_accept)(SSL *s); | 206 | int (*ssl_accept)(SSL *s); | 
| 207 | int (*ssl_connect)(SSL *s); | 207 | int (*ssl_connect)(SSL *s); | 
| 208 | int (*ssl_read)(SSL *s,void *buf,int len); | 208 | int (*ssl_read)(SSL *s,void *buf,int len); | 
| 209 | int (*ssl_peek)(SSL *s,char *buf,int len); | 209 | int (*ssl_peek)(SSL *s,void *buf,int len); | 
| 210 | int (*ssl_write)(SSL *s,const void *buf,int len); | 210 | int (*ssl_write)(SSL *s,const void *buf,int len); | 
| 211 | int (*ssl_shutdown)(SSL *s); | 211 | int (*ssl_shutdown)(SSL *s); | 
| 212 | int (*ssl_renegotiate)(SSL *s); | 212 | int (*ssl_renegotiate)(SSL *s); | 
| @@ -1061,9 +1061,9 @@ int SSL_set_trust(SSL *s, int trust); | |||
| 1061 | void SSL_free(SSL *ssl); | 1061 | void SSL_free(SSL *ssl); | 
| 1062 | int SSL_accept(SSL *ssl); | 1062 | int SSL_accept(SSL *ssl); | 
| 1063 | int SSL_connect(SSL *ssl); | 1063 | int SSL_connect(SSL *ssl); | 
| 1064 | int SSL_read(SSL *ssl,char *buf,int num); | 1064 | int SSL_read(SSL *ssl,void *buf,int num); | 
| 1065 | int SSL_peek(SSL *ssl,char *buf,int num); | 1065 | int SSL_peek(SSL *ssl,void *buf,int num); | 
| 1066 | int SSL_write(SSL *ssl,const char *buf,int num); | 1066 | int SSL_write(SSL *ssl,const void *buf,int num); | 
| 1067 | long SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg); | 1067 | long SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg); | 
| 1068 | long SSL_callback_ctrl(SSL *, int, void (*)()); | 1068 | long SSL_callback_ctrl(SSL *, int, void (*)()); | 
| 1069 | long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, char *parg); | 1069 | long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, char *parg); | 
| @@ -1178,7 +1178,7 @@ int SSL_get_ex_data_X509_STORE_CTX_idx(void ); | |||
| 1178 | #define SSL_CTX_get_read_ahead(ctx) \ | 1178 | #define SSL_CTX_get_read_ahead(ctx) \ | 
| 1179 | SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) | 1179 | SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) | 
| 1180 | #define SSL_CTX_set_read_ahead(ctx,m) \ | 1180 | #define SSL_CTX_set_read_ahead(ctx,m) \ | 
| 1181 | SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,0,NULL) | 1181 | SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) | 
| 1182 | 1182 | ||
| 1183 | /* NB: the keylength is only applicable when is_export is true */ | 1183 | /* NB: the keylength is only applicable when is_export is true */ | 
| 1184 | #ifndef NO_RSA | 1184 | #ifndef NO_RSA | 
| @@ -1209,6 +1209,7 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1209 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 1209 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 
| 1210 | * made after this point may be overwritten when the script is next run. | 1210 | * made after this point may be overwritten when the script is next run. | 
| 1211 | */ | 1211 | */ | 
| 1212 | void ERR_load_SSL_strings(void); | ||
| 1212 | 1213 | ||
| 1213 | /* Error codes for the SSL functions. */ | 1214 | /* Error codes for the SSL functions. */ | 
| 1214 | 1215 | ||
| @@ -1233,12 +1234,15 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1233 | #define SSL_F_SSL23_CONNECT 117 | 1234 | #define SSL_F_SSL23_CONNECT 117 | 
| 1234 | #define SSL_F_SSL23_GET_CLIENT_HELLO 118 | 1235 | #define SSL_F_SSL23_GET_CLIENT_HELLO 118 | 
| 1235 | #define SSL_F_SSL23_GET_SERVER_HELLO 119 | 1236 | #define SSL_F_SSL23_GET_SERVER_HELLO 119 | 
| 1237 | #define SSL_F_SSL23_PEEK 237 | ||
| 1236 | #define SSL_F_SSL23_READ 120 | 1238 | #define SSL_F_SSL23_READ 120 | 
| 1237 | #define SSL_F_SSL23_WRITE 121 | 1239 | #define SSL_F_SSL23_WRITE 121 | 
| 1238 | #define SSL_F_SSL2_ACCEPT 122 | 1240 | #define SSL_F_SSL2_ACCEPT 122 | 
| 1239 | #define SSL_F_SSL2_CONNECT 123 | 1241 | #define SSL_F_SSL2_CONNECT 123 | 
| 1240 | #define SSL_F_SSL2_ENC_INIT 124 | 1242 | #define SSL_F_SSL2_ENC_INIT 124 | 
| 1243 | #define SSL_F_SSL2_PEEK 234 | ||
| 1241 | #define SSL_F_SSL2_READ 125 | 1244 | #define SSL_F_SSL2_READ 125 | 
| 1245 | #define SSL_F_SSL2_READ_INTERNAL 236 | ||
| 1242 | #define SSL_F_SSL2_SET_CERTIFICATE 126 | 1246 | #define SSL_F_SSL2_SET_CERTIFICATE 126 | 
| 1243 | #define SSL_F_SSL2_WRITE 127 | 1247 | #define SSL_F_SSL2_WRITE 127 | 
| 1244 | #define SSL_F_SSL3_ACCEPT 128 | 1248 | #define SSL_F_SSL3_ACCEPT 128 | 
| @@ -1263,6 +1267,7 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1263 | #define SSL_F_SSL3_GET_SERVER_DONE 145 | 1267 | #define SSL_F_SSL3_GET_SERVER_DONE 145 | 
| 1264 | #define SSL_F_SSL3_GET_SERVER_HELLO 146 | 1268 | #define SSL_F_SSL3_GET_SERVER_HELLO 146 | 
| 1265 | #define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 | 1269 | #define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 | 
| 1270 | #define SSL_F_SSL3_PEEK 235 | ||
| 1266 | #define SSL_F_SSL3_READ_BYTES 148 | 1271 | #define SSL_F_SSL3_READ_BYTES 148 | 
| 1267 | #define SSL_F_SSL3_READ_N 149 | 1272 | #define SSL_F_SSL3_READ_N 149 | 
| 1268 | #define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 | 1273 | #define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 | 
| @@ -1559,4 +1564,3 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1559 | } | 1564 | } | 
| 1560 | #endif | 1565 | #endif | 
| 1561 | #endif | 1566 | #endif | 
| 1562 | |||
| diff --git a/src/lib/libssl/src/ssl/ssl2.h b/src/lib/libssl/src/ssl/ssl2.h index df7d03c18f..f8b56afb6b 100644 --- a/src/lib/libssl/src/ssl/ssl2.h +++ b/src/lib/libssl/src/ssl/ssl2.h | |||
| @@ -134,11 +134,11 @@ extern "C" { | |||
| 134 | /* Upper/Lower Bounds */ | 134 | /* Upper/Lower Bounds */ | 
| 135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 | 135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 | 
| 136 | #ifdef MPE | 136 | #ifdef MPE | 
| 137 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER (unsigned int)29998 | 137 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 29998u | 
| 138 | #else | 138 | #else | 
| 139 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER (unsigned int)32767 | 139 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u /* 2^15-1 */ | 
| 140 | #endif | 140 | #endif | 
| 141 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /**/ | 141 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /* 2^14-1 */ | 
| 142 | 142 | ||
| 143 | #define SSL2_CHALLENGE_LENGTH 16 | 143 | #define SSL2_CHALLENGE_LENGTH 16 | 
| 144 | /*#define SSL2_CHALLENGE_LENGTH 32 */ | 144 | /*#define SSL2_CHALLENGE_LENGTH 32 */ | 
| diff --git a/src/lib/libssl/src/ssl/ssl_algs.c b/src/lib/libssl/src/ssl/ssl_algs.c index a91ee6d22e..dde8918fe0 100644 --- a/src/lib/libssl/src/ssl/ssl_algs.c +++ b/src/lib/libssl/src/ssl/ssl_algs.c | |||
| @@ -88,9 +88,13 @@ int SSL_library_init(void) | |||
| 88 | #ifndef NO_SHA | 88 | #ifndef NO_SHA | 
| 89 | EVP_add_digest(EVP_sha1()); /* RSA with sha1 */ | 89 | EVP_add_digest(EVP_sha1()); /* RSA with sha1 */ | 
| 90 | EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); | 90 | EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); | 
| 91 | EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); | ||
| 91 | #endif | 92 | #endif | 
| 92 | #if !defined(NO_SHA) && !defined(NO_DSA) | 93 | #if !defined(NO_SHA) && !defined(NO_DSA) | 
| 93 | EVP_add_digest(EVP_dss1()); /* DSA with sha1 */ | 94 | EVP_add_digest(EVP_dss1()); /* DSA with sha1 */ | 
| 95 | EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2); | ||
| 96 | EVP_add_digest_alias(SN_dsaWithSHA1,"DSS1"); | ||
| 97 | EVP_add_digest_alias(SN_dsaWithSHA1,"dss1"); | ||
| 94 | #endif | 98 | #endif | 
| 95 | 99 | ||
| 96 | /* If you want support for phased out ciphers, add the following */ | 100 | /* If you want support for phased out ciphers, add the following */ | 
| diff --git a/src/lib/libssl/src/ssl/ssl_cert.c b/src/lib/libssl/src/ssl/ssl_cert.c index c26df62c20..27e7fcc60a 100644 --- a/src/lib/libssl/src/ssl/ssl_cert.c +++ b/src/lib/libssl/src/ssl/ssl_cert.c | |||
| @@ -271,7 +271,9 @@ CERT *ssl_cert_dup(CERT *cert) | |||
| 271 | 271 | ||
| 272 | return(ret); | 272 | return(ret); | 
| 273 | 273 | ||
| 274 | #ifndef NO_DH /* avoid 'unreferenced label' warning if NO_DH is defined */ | ||
| 274 | err: | 275 | err: | 
| 276 | #endif | ||
| 275 | #ifndef NO_RSA | 277 | #ifndef NO_RSA | 
| 276 | if (ret->rsa_tmp != NULL) | 278 | if (ret->rsa_tmp != NULL) | 
| 277 | RSA_free(ret->rsa_tmp); | 279 | RSA_free(ret->rsa_tmp); | 
| diff --git a/src/lib/libssl/src/ssl/ssl_err.c b/src/lib/libssl/src/ssl/ssl_err.c index 17b4caf528..1ae3333407 100644 --- a/src/lib/libssl/src/ssl/ssl_err.c +++ b/src/lib/libssl/src/ssl/ssl_err.c | |||
| @@ -86,12 +86,15 @@ static ERR_STRING_DATA SSL_str_functs[]= | |||
| 86 | {ERR_PACK(0,SSL_F_SSL23_CONNECT,0), "SSL23_CONNECT"}, | 86 | {ERR_PACK(0,SSL_F_SSL23_CONNECT,0), "SSL23_CONNECT"}, | 
| 87 | {ERR_PACK(0,SSL_F_SSL23_GET_CLIENT_HELLO,0), "SSL23_GET_CLIENT_HELLO"}, | 87 | {ERR_PACK(0,SSL_F_SSL23_GET_CLIENT_HELLO,0), "SSL23_GET_CLIENT_HELLO"}, | 
| 88 | {ERR_PACK(0,SSL_F_SSL23_GET_SERVER_HELLO,0), "SSL23_GET_SERVER_HELLO"}, | 88 | {ERR_PACK(0,SSL_F_SSL23_GET_SERVER_HELLO,0), "SSL23_GET_SERVER_HELLO"}, | 
| 89 | {ERR_PACK(0,SSL_F_SSL23_PEEK,0), "SSL23_PEEK"}, | ||
| 89 | {ERR_PACK(0,SSL_F_SSL23_READ,0), "SSL23_READ"}, | 90 | {ERR_PACK(0,SSL_F_SSL23_READ,0), "SSL23_READ"}, | 
| 90 | {ERR_PACK(0,SSL_F_SSL23_WRITE,0), "SSL23_WRITE"}, | 91 | {ERR_PACK(0,SSL_F_SSL23_WRITE,0), "SSL23_WRITE"}, | 
| 91 | {ERR_PACK(0,SSL_F_SSL2_ACCEPT,0), "SSL2_ACCEPT"}, | 92 | {ERR_PACK(0,SSL_F_SSL2_ACCEPT,0), "SSL2_ACCEPT"}, | 
| 92 | {ERR_PACK(0,SSL_F_SSL2_CONNECT,0), "SSL2_CONNECT"}, | 93 | {ERR_PACK(0,SSL_F_SSL2_CONNECT,0), "SSL2_CONNECT"}, | 
| 93 | {ERR_PACK(0,SSL_F_SSL2_ENC_INIT,0), "SSL2_ENC_INIT"}, | 94 | {ERR_PACK(0,SSL_F_SSL2_ENC_INIT,0), "SSL2_ENC_INIT"}, | 
| 95 | {ERR_PACK(0,SSL_F_SSL2_PEEK,0), "SSL2_PEEK"}, | ||
| 94 | {ERR_PACK(0,SSL_F_SSL2_READ,0), "SSL2_READ"}, | 96 | {ERR_PACK(0,SSL_F_SSL2_READ,0), "SSL2_READ"}, | 
| 97 | {ERR_PACK(0,SSL_F_SSL2_READ_INTERNAL,0), "SSL2_READ_INTERNAL"}, | ||
| 95 | {ERR_PACK(0,SSL_F_SSL2_SET_CERTIFICATE,0), "SSL2_SET_CERTIFICATE"}, | 98 | {ERR_PACK(0,SSL_F_SSL2_SET_CERTIFICATE,0), "SSL2_SET_CERTIFICATE"}, | 
| 96 | {ERR_PACK(0,SSL_F_SSL2_WRITE,0), "SSL2_WRITE"}, | 99 | {ERR_PACK(0,SSL_F_SSL2_WRITE,0), "SSL2_WRITE"}, | 
| 97 | {ERR_PACK(0,SSL_F_SSL3_ACCEPT,0), "SSL3_ACCEPT"}, | 100 | {ERR_PACK(0,SSL_F_SSL3_ACCEPT,0), "SSL3_ACCEPT"}, | 
| @@ -116,6 +119,7 @@ static ERR_STRING_DATA SSL_str_functs[]= | |||
| 116 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_DONE,0), "SSL3_GET_SERVER_DONE"}, | 119 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_DONE,0), "SSL3_GET_SERVER_DONE"}, | 
| 117 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_HELLO,0), "SSL3_GET_SERVER_HELLO"}, | 120 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_HELLO,0), "SSL3_GET_SERVER_HELLO"}, | 
| 118 | {ERR_PACK(0,SSL_F_SSL3_OUTPUT_CERT_CHAIN,0), "SSL3_OUTPUT_CERT_CHAIN"}, | 121 | {ERR_PACK(0,SSL_F_SSL3_OUTPUT_CERT_CHAIN,0), "SSL3_OUTPUT_CERT_CHAIN"}, | 
| 122 | {ERR_PACK(0,SSL_F_SSL3_PEEK,0), "SSL3_PEEK"}, | ||
| 119 | {ERR_PACK(0,SSL_F_SSL3_READ_BYTES,0), "SSL3_READ_BYTES"}, | 123 | {ERR_PACK(0,SSL_F_SSL3_READ_BYTES,0), "SSL3_READ_BYTES"}, | 
| 120 | {ERR_PACK(0,SSL_F_SSL3_READ_N,0), "SSL3_READ_N"}, | 124 | {ERR_PACK(0,SSL_F_SSL3_READ_N,0), "SSL3_READ_N"}, | 
| 121 | {ERR_PACK(0,SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,0), "SSL3_SEND_CERTIFICATE_REQUEST"}, | 125 | {ERR_PACK(0,SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,0), "SSL3_SEND_CERTIFICATE_REQUEST"}, | 
| diff --git a/src/lib/libssl/src/ssl/ssl_lib.c b/src/lib/libssl/src/ssl/ssl_lib.c index 635b25062e..1fe85b6cb7 100644 --- a/src/lib/libssl/src/ssl/ssl_lib.c +++ b/src/lib/libssl/src/ssl/ssl_lib.c | |||
| @@ -119,7 +119,9 @@ int SSL_clear(SSL *s) | |||
| 119 | s->client_version=s->version; | 119 | s->client_version=s->version; | 
| 120 | s->rwstate=SSL_NOTHING; | 120 | s->rwstate=SSL_NOTHING; | 
| 121 | s->rstate=SSL_ST_READ_HEADER; | 121 | s->rstate=SSL_ST_READ_HEADER; | 
| 122 | #if 0 | ||
| 122 | s->read_ahead=s->ctx->read_ahead; | 123 | s->read_ahead=s->ctx->read_ahead; | 
| 124 | #endif | ||
| 123 | 125 | ||
| 124 | if (s->init_buf != NULL) | 126 | if (s->init_buf != NULL) | 
| 125 | { | 127 | { | 
| @@ -229,6 +231,7 @@ SSL *SSL_new(SSL_CTX *ctx) | |||
| 229 | s->server=(ctx->method->ssl_accept == ssl_undefined_function)?0:1; | 231 | s->server=(ctx->method->ssl_accept == ssl_undefined_function)?0:1; | 
| 230 | s->options=ctx->options; | 232 | s->options=ctx->options; | 
| 231 | s->mode=ctx->mode; | 233 | s->mode=ctx->mode; | 
| 234 | s->read_ahead=ctx->read_ahead; /* used to happen in SSL_clear */ | ||
| 232 | SSL_clear(s); | 235 | SSL_clear(s); | 
| 233 | 236 | ||
| 234 | CRYPTO_new_ex_data(ssl_meth,s,&s->ex_data); | 237 | CRYPTO_new_ex_data(ssl_meth,s,&s->ex_data); | 
| @@ -705,7 +708,7 @@ long SSL_get_default_timeout(SSL *s) | |||
| 705 | return(s->method->get_timeout()); | 708 | return(s->method->get_timeout()); | 
| 706 | } | 709 | } | 
| 707 | 710 | ||
| 708 | int SSL_read(SSL *s,char *buf,int num) | 711 | int SSL_read(SSL *s,void *buf,int num) | 
| 709 | { | 712 | { | 
| 710 | if (s->handshake_func == 0) | 713 | if (s->handshake_func == 0) | 
| 711 | { | 714 | { | 
| @@ -721,8 +724,14 @@ int SSL_read(SSL *s,char *buf,int num) | |||
| 721 | return(s->method->ssl_read(s,buf,num)); | 724 | return(s->method->ssl_read(s,buf,num)); | 
| 722 | } | 725 | } | 
| 723 | 726 | ||
| 724 | int SSL_peek(SSL *s,char *buf,int num) | 727 | int SSL_peek(SSL *s,void *buf,int num) | 
| 725 | { | 728 | { | 
| 729 | if (s->handshake_func == 0) | ||
| 730 | { | ||
| 731 | SSLerr(SSL_F_SSL_READ, SSL_R_UNINITIALIZED); | ||
| 732 | return -1; | ||
| 733 | } | ||
| 734 | |||
| 726 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 735 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 
| 727 | { | 736 | { | 
| 728 | return(0); | 737 | return(0); | 
| @@ -730,7 +739,7 @@ int SSL_peek(SSL *s,char *buf,int num) | |||
| 730 | return(s->method->ssl_peek(s,buf,num)); | 739 | return(s->method->ssl_peek(s,buf,num)); | 
| 731 | } | 740 | } | 
| 732 | 741 | ||
| 733 | int SSL_write(SSL *s,const char *buf,int num) | 742 | int SSL_write(SSL *s,const void *buf,int num) | 
| 734 | { | 743 | { | 
| 735 | if (s->handshake_func == 0) | 744 | if (s->handshake_func == 0) | 
| 736 | { | 745 | { | 
| @@ -1676,6 +1685,10 @@ SSL *SSL_dup(SSL *s) | |||
| 1676 | 1685 | ||
| 1677 | if (s->cert != NULL) | 1686 | if (s->cert != NULL) | 
| 1678 | { | 1687 | { | 
| 1688 | if (ret->cert != NULL) | ||
| 1689 | { | ||
| 1690 | ssl_cert_free(ret->cert); | ||
| 1691 | } | ||
| 1679 | ret->cert = ssl_cert_dup(s->cert); | 1692 | ret->cert = ssl_cert_dup(s->cert); | 
| 1680 | if (ret->cert == NULL) | 1693 | if (ret->cert == NULL) | 
| 1681 | goto err; | 1694 | goto err; | 
| diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h index d70fff4627..516d3cc5ae 100644 --- a/src/lib/libssl/src/ssl/ssl_locl.h +++ b/src/lib/libssl/src/ssl/ssl_locl.h | |||
| @@ -55,6 +55,59 @@ | |||
| 55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence | 
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] | 
| 57 | */ | 57 | */ | 
| 58 | /* ==================================================================== | ||
| 59 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | ||
| 60 | * | ||
| 61 | * Redistribution and use in source and binary forms, with or without | ||
| 62 | * modification, are permitted provided that the following conditions | ||
| 63 | * are met: | ||
| 64 | * | ||
| 65 | * 1. Redistributions of source code must retain the above copyright | ||
| 66 | * notice, this list of conditions and the following disclaimer. | ||
| 67 | * | ||
| 68 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 69 | * notice, this list of conditions and the following disclaimer in | ||
| 70 | * the documentation and/or other materials provided with the | ||
| 71 | * distribution. | ||
| 72 | * | ||
| 73 | * 3. All advertising materials mentioning features or use of this | ||
| 74 | * software must display the following acknowledgment: | ||
| 75 | * "This product includes software developed by the OpenSSL Project | ||
| 76 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
| 77 | * | ||
| 78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
| 79 | * endorse or promote products derived from this software without | ||
| 80 | * prior written permission. For written permission, please contact | ||
| 81 | * openssl-core@openssl.org. | ||
| 82 | * | ||
| 83 | * 5. Products derived from this software may not be called "OpenSSL" | ||
| 84 | * nor may "OpenSSL" appear in their names without prior written | ||
| 85 | * permission of the OpenSSL Project. | ||
| 86 | * | ||
| 87 | * 6. Redistributions of any form whatsoever must retain the following | ||
| 88 | * acknowledgment: | ||
| 89 | * "This product includes software developed by the OpenSSL Project | ||
| 90 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
| 91 | * | ||
| 92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
| 93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
| 96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
| 101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
| 103 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 104 | * ==================================================================== | ||
| 105 | * | ||
| 106 | * This product includes cryptographic software written by Eric Young | ||
| 107 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
| 108 | * Hudson (tjh@cryptsoft.com). | ||
| 109 | * | ||
| 110 | */ | ||
| 58 | 111 | ||
| 59 | #ifndef HEADER_SSL_LOCL_H | 112 | #ifndef HEADER_SSL_LOCL_H | 
| 60 | #define HEADER_SSL_LOCL_H | 113 | #define HEADER_SSL_LOCL_H | 
| @@ -463,7 +516,7 @@ void ssl2_free(SSL *s); | |||
| 463 | int ssl2_accept(SSL *s); | 516 | int ssl2_accept(SSL *s); | 
| 464 | int ssl2_connect(SSL *s); | 517 | int ssl2_connect(SSL *s); | 
| 465 | int ssl2_read(SSL *s, void *buf, int len); | 518 | int ssl2_read(SSL *s, void *buf, int len); | 
| 466 | int ssl2_peek(SSL *s, char *buf, int len); | 519 | int ssl2_peek(SSL *s, void *buf, int len); | 
| 467 | int ssl2_write(SSL *s, const void *buf, int len); | 520 | int ssl2_write(SSL *s, const void *buf, int len); | 
| 468 | int ssl2_shutdown(SSL *s); | 521 | int ssl2_shutdown(SSL *s); | 
| 469 | void ssl2_clear(SSL *s); | 522 | void ssl2_clear(SSL *s); | 
| @@ -494,7 +547,7 @@ SSL_CIPHER *ssl3_get_cipher(unsigned int u); | |||
| 494 | int ssl3_renegotiate(SSL *ssl); | 547 | int ssl3_renegotiate(SSL *ssl); | 
| 495 | int ssl3_renegotiate_check(SSL *ssl); | 548 | int ssl3_renegotiate_check(SSL *ssl); | 
| 496 | int ssl3_dispatch_alert(SSL *s); | 549 | int ssl3_dispatch_alert(SSL *s); | 
| 497 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len); | 550 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); | 
| 498 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); | 551 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); | 
| 499 | int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2, | 552 | int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2, | 
| 500 | const char *sender, int slen,unsigned char *p); | 553 | const char *sender, int slen,unsigned char *p); | 
| @@ -511,7 +564,7 @@ void ssl3_free(SSL *s); | |||
| 511 | int ssl3_accept(SSL *s); | 564 | int ssl3_accept(SSL *s); | 
| 512 | int ssl3_connect(SSL *s); | 565 | int ssl3_connect(SSL *s); | 
| 513 | int ssl3_read(SSL *s, void *buf, int len); | 566 | int ssl3_read(SSL *s, void *buf, int len); | 
| 514 | int ssl3_peek(SSL *s,char *buf, int len); | 567 | int ssl3_peek(SSL *s, void *buf, int len); | 
| 515 | int ssl3_write(SSL *s, const void *buf, int len); | 568 | int ssl3_write(SSL *s, const void *buf, int len); | 
| 516 | int ssl3_shutdown(SSL *s); | 569 | int ssl3_shutdown(SSL *s); | 
| 517 | void ssl3_clear(SSL *s); | 570 | void ssl3_clear(SSL *s); | 
| diff --git a/src/lib/libssl/src/ssl/ssl_sess.c b/src/lib/libssl/src/ssl/ssl_sess.c index 416def8908..7064262def 100644 --- a/src/lib/libssl/src/ssl/ssl_sess.c +++ b/src/lib/libssl/src/ssl/ssl_sess.c | |||
| @@ -508,6 +508,7 @@ int SSL_set_session(SSL *s, SSL_SESSION *session) | |||
| 508 | if (s->session != NULL) | 508 | if (s->session != NULL) | 
| 509 | SSL_SESSION_free(s->session); | 509 | SSL_SESSION_free(s->session); | 
| 510 | s->session=session; | 510 | s->session=session; | 
| 511 | s->verify_result = s->session->verify_result; | ||
| 511 | /* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/ | 512 | /* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/ | 
| 512 | ret=1; | 513 | ret=1; | 
| 513 | } | 514 | } | 
| diff --git a/src/lib/libssl/src/ssl/t1_enc.c b/src/lib/libssl/src/ssl/t1_enc.c index 0d34357eb4..d10a23af8e 100644 --- a/src/lib/libssl/src/ssl/t1_enc.c +++ b/src/lib/libssl/src/ssl/t1_enc.c | |||
| @@ -572,7 +572,10 @@ printf("rec="); | |||
| 572 | #endif | 572 | #endif | 
| 573 | 573 | ||
| 574 | for (i=7; i>=0; i--) | 574 | for (i=7; i>=0; i--) | 
| 575 | if (++seq[i]) break; | 575 | { | 
| 576 | ++seq[i]; | ||
| 577 | if (seq[i] != 0) break; | ||
| 578 | } | ||
| 576 | 579 | ||
| 577 | #ifdef TLS_DEBUG | 580 | #ifdef TLS_DEBUG | 
| 578 | {unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",md[z]); printf("\n"); } | 581 | {unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",md[z]); printf("\n"); } | 
| diff --git a/src/lib/libssl/src/test/Makefile.ssl b/src/lib/libssl/src/test/Makefile.ssl index b961dabc3c..9c7b7dd158 100644 --- a/src/lib/libssl/src/test/Makefile.ssl +++ b/src/lib/libssl/src/test/Makefile.ssl | |||
| @@ -192,7 +192,7 @@ test_bn: | |||
| 192 | @./$(BNTEST) >tmp.bntest | 192 | @./$(BNTEST) >tmp.bntest | 
| 193 | @echo quit >>tmp.bntest | 193 | @echo quit >>tmp.bntest | 
| 194 | @echo "running bc" | 194 | @echo "running bc" | 
| 195 | @bc tmp.bntest 2>&1 | $(PERL) -e 'while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $$1";} elsif (!/^0$$/) {die "\nFailed! bc: $$_";} print STDERR "."; $$i++;} print STDERR "\n$$i tests passed\n"' | 195 | @<tmp.bntest sh -c "`sh ./bctest || true`" | $(PERL) -e '$$i=0; while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $$1";} elsif (!/^0$$/) {die "\nFailed! bc: $$_";} else {print STDERR "."; $$i++;}} print STDERR "\n$$i tests passed\n"' | 
| 196 | @echo 'test a^b%c implementations' | 196 | @echo 'test a^b%c implementations' | 
| 197 | ./$(EXPTEST) | 197 | ./$(EXPTEST) | 
| 198 | 198 | ||
| @@ -241,7 +241,7 @@ dclean: | |||
| 241 | mv -f Makefile.new $(MAKEFILE) | 241 | mv -f Makefile.new $(MAKEFILE) | 
| 242 | 242 | ||
| 243 | clean: | 243 | clean: | 
| 244 | rm -f .rnd tmp.bntest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss log | 244 | rm -f .rnd tmp.bntest tmp.bctest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss log | 
| 245 | 245 | ||
| 246 | $(DLIBSSL): | 246 | $(DLIBSSL): | 
| 247 | (cd ../ssl; $(MAKE)) | 247 | (cd ../ssl; $(MAKE)) | 
| diff --git a/src/lib/libssl/src/tools/c_rehash.in b/src/lib/libssl/src/tools/c_rehash.in index baec7c14ff..26db8999d8 100644 --- a/src/lib/libssl/src/tools/c_rehash.in +++ b/src/lib/libssl/src/tools/c_rehash.in | |||
| @@ -117,7 +117,12 @@ sub link_hash_cert { | |||
| 117 | } | 117 | } | 
| 118 | $hash .= ".$suffix"; | 118 | $hash .= ".$suffix"; | 
| 119 | print "$fname => $hash\n"; | 119 | print "$fname => $hash\n"; | 
| 120 | symlink $fname, $hash; | 120 | $symlink_exists=eval {symlink("",""); 1}; | 
| 121 | if ($symlink_exists) { | ||
| 122 | symlink $fname, $hash; | ||
| 123 | } else { | ||
| 124 | system ("cp", $fname, $hash); | ||
| 125 | } | ||
| 121 | $hashlist{$hash} = $fprint; | 126 | $hashlist{$hash} = $fprint; | 
| 122 | } | 127 | } | 
| 123 | 128 | ||
| @@ -142,7 +147,12 @@ sub link_hash_crl { | |||
| 142 | } | 147 | } | 
| 143 | $hash .= ".r$suffix"; | 148 | $hash .= ".r$suffix"; | 
| 144 | print "$fname => $hash\n"; | 149 | print "$fname => $hash\n"; | 
| 145 | symlink $fname, $hash; | 150 | $symlink_exists=eval {symlink("",""); 1}; | 
| 151 | if ($symlink_exists) { | ||
| 152 | symlink $fname, $hash; | ||
| 153 | } else { | ||
| 154 | system ("cp", $fname, $hash); | ||
| 155 | } | ||
| 146 | $hashlist{$hash} = $fprint; | 156 | $hashlist{$hash} = $fprint; | 
| 147 | } | 157 | } | 
| 148 | 158 | ||
| diff --git a/src/lib/libssl/src/util/clean-depend.pl b/src/lib/libssl/src/util/clean-depend.pl index af676af751..0193e726fe 100644 --- a/src/lib/libssl/src/util/clean-depend.pl +++ b/src/lib/libssl/src/util/clean-depend.pl | |||
| @@ -15,8 +15,8 @@ while(<STDIN>) { | |||
| 15 | my ($file,$deps)=/^(.*): (.*)$/; | 15 | my ($file,$deps)=/^(.*): (.*)$/; | 
| 16 | next if !defined $deps; | 16 | next if !defined $deps; | 
| 17 | my @deps=split ' ',$deps; | 17 | my @deps=split ' ',$deps; | 
| 18 | @deps=grep(!/^\/usr\/include/,@deps); | 18 | @deps=grep(!/^\//,@deps); | 
| 19 | @deps=grep(!/^\/usr\/lib\/gcc-lib/,@deps); | 19 | @deps=grep(!/^\\$/,@deps); | 
| 20 | push @{$files{$file}},@deps; | 20 | push @{$files{$file}},@deps; | 
| 21 | } | 21 | } | 
| 22 | 22 | ||
| diff --git a/src/lib/libssl/src/util/libeay.num b/src/lib/libssl/src/util/libeay.num index e8eebbf50c..84ae840804 100644 --- a/src/lib/libssl/src/util/libeay.num +++ b/src/lib/libssl/src/util/libeay.num | |||
| @@ -301,8 +301,8 @@ EVP_des_ede_cfb 308 EXIST::FUNCTION:DES | |||
| 301 | EVP_des_ede_ofb 309 EXIST::FUNCTION:DES | 301 | EVP_des_ede_ofb 309 EXIST::FUNCTION:DES | 
| 302 | EVP_des_ofb 310 EXIST::FUNCTION:DES | 302 | EVP_des_ofb 310 EXIST::FUNCTION:DES | 
| 303 | EVP_desx_cbc 311 EXIST::FUNCTION:DES | 303 | EVP_desx_cbc 311 EXIST::FUNCTION:DES | 
| 304 | EVP_dss 312 EXIST::FUNCTION:DSA | 304 | EVP_dss 312 EXIST::FUNCTION:DSA,SHA | 
| 305 | EVP_dss1 313 EXIST::FUNCTION:DSA | 305 | EVP_dss1 313 EXIST::FUNCTION:DSA,SHA | 
| 306 | EVP_enc_null 314 EXIST::FUNCTION: | 306 | EVP_enc_null 314 EXIST::FUNCTION: | 
| 307 | EVP_get_cipherbyname 315 EXIST::FUNCTION: | 307 | EVP_get_cipherbyname 315 EXIST::FUNCTION: | 
| 308 | EVP_get_digestbyname 316 EXIST::FUNCTION: | 308 | EVP_get_digestbyname 316 EXIST::FUNCTION: | 
| @@ -779,7 +779,7 @@ des_ede3_cfb64_encrypt 786 EXIST::FUNCTION:DES | |||
| 779 | des_ede3_ofb64_encrypt 787 EXIST::FUNCTION:DES | 779 | des_ede3_ofb64_encrypt 787 EXIST::FUNCTION:DES | 
| 780 | des_enc_read 788 EXIST::FUNCTION:DES | 780 | des_enc_read 788 EXIST::FUNCTION:DES | 
| 781 | des_enc_write 789 EXIST::FUNCTION:DES | 781 | des_enc_write 789 EXIST::FUNCTION:DES | 
| 782 | des_encrypt 790 EXIST::FUNCTION:DES | 782 | des_encrypt1 790 EXIST::FUNCTION:DES | 
| 783 | des_encrypt2 791 EXIST::FUNCTION:DES | 783 | des_encrypt2 791 EXIST::FUNCTION:DES | 
| 784 | des_encrypt3 792 EXIST::FUNCTION:DES | 784 | des_encrypt3 792 EXIST::FUNCTION:DES | 
| 785 | des_fcrypt 793 EXIST::FUNCTION:DES | 785 | des_fcrypt 793 EXIST::FUNCTION:DES | 
| @@ -926,7 +926,7 @@ PKCS7_add_signature 938 EXIST::FUNCTION: | |||
| 926 | PKCS7_cert_from_signer_info 939 EXIST::FUNCTION: | 926 | PKCS7_cert_from_signer_info 939 EXIST::FUNCTION: | 
| 927 | PKCS7_get_signer_info 940 EXIST::FUNCTION: | 927 | PKCS7_get_signer_info 940 EXIST::FUNCTION: | 
| 928 | EVP_delete_alias 941 NOEXIST::FUNCTION: | 928 | EVP_delete_alias 941 NOEXIST::FUNCTION: | 
| 929 | EVP_mdc2 942 EXIST::FUNCTION: | 929 | EVP_mdc2 942 EXIST::FUNCTION:MDC2 | 
| 930 | PEM_read_bio_RSAPublicKey 943 EXIST::FUNCTION:RSA | 930 | PEM_read_bio_RSAPublicKey 943 EXIST::FUNCTION:RSA | 
| 931 | PEM_write_bio_RSAPublicKey 944 EXIST::FUNCTION:RSA | 931 | PEM_write_bio_RSAPublicKey 944 EXIST::FUNCTION:RSA | 
| 932 | d2i_RSAPublicKey_bio 945 EXIST::FUNCTION:RSA | 932 | d2i_RSAPublicKey_bio 945 EXIST::FUNCTION:RSA | 
| @@ -1870,61 +1870,64 @@ X509_keyid_set1 2460 EXIST::FUNCTION: | |||
| 1870 | BIO_next 2461 EXIST::FUNCTION: | 1870 | BIO_next 2461 EXIST::FUNCTION: | 
| 1871 | DSO_METHOD_vms 2462 EXIST::FUNCTION: | 1871 | DSO_METHOD_vms 2462 EXIST::FUNCTION: | 
| 1872 | BIO_f_linebuffer 2463 EXIST:VMS:FUNCTION: | 1872 | BIO_f_linebuffer 2463 EXIST:VMS:FUNCTION: | 
| 1873 | ERR_load_ENGINE_strings 2464 EXIST::FUNCTION: | 1873 | BN_bntest_rand 2464 EXIST::FUNCTION: | 
| 1874 | ENGINE_set_DSA 2465 EXIST::FUNCTION: | 1874 | OPENSSL_issetugid 2465 EXIST::FUNCTION: | 
| 1875 | ENGINE_get_finish_function 2466 EXIST::FUNCTION: | 1875 | BN_rand_range 2466 EXIST::FUNCTION: | 
| 1876 | ENGINE_get_default_RSA 2467 EXIST::FUNCTION: | 1876 | ERR_load_ENGINE_strings 2467 EXIST::FUNCTION: | 
| 1877 | ENGINE_get_BN_mod_exp 2468 EXIST::FUNCTION: | 1877 | ENGINE_set_DSA 2468 EXIST::FUNCTION: | 
| 1878 | DSA_get_default_openssl_method 2469 EXIST::FUNCTION:DSA | 1878 | ENGINE_get_finish_function 2469 EXIST::FUNCTION: | 
| 1879 | ENGINE_set_DH 2470 EXIST::FUNCTION: | 1879 | ENGINE_get_default_RSA 2470 EXIST::FUNCTION: | 
| 1880 | ENGINE_set_default_BN_mod_exp_crt 2471 EXIST:!VMS:FUNCTION: | 1880 | ENGINE_get_BN_mod_exp 2471 EXIST::FUNCTION: | 
| 1881 | ENGINE_set_def_BN_mod_exp_crt 2471 EXIST:VMS:FUNCTION: | 1881 | DSA_get_default_openssl_method 2472 EXIST::FUNCTION:DSA | 
| 1882 | ENGINE_init 2472 EXIST::FUNCTION: | 1882 | ENGINE_set_DH 2473 EXIST::FUNCTION: | 
| 1883 | DH_get_default_openssl_method 2473 EXIST::FUNCTION:DH | 1883 | ENGINE_set_default_BN_mod_exp_crt 2474 EXIST:!VMS:FUNCTION: | 
| 1884 | RSA_set_default_openssl_method 2474 EXIST::FUNCTION:RSA | 1884 | ENGINE_set_def_BN_mod_exp_crt 2474 EXIST:VMS:FUNCTION: | 
| 1885 | ENGINE_finish 2475 EXIST::FUNCTION: | 1885 | ENGINE_init 2475 EXIST::FUNCTION: | 
| 1886 | ENGINE_load_public_key 2476 EXIST::FUNCTION: | 1886 | DH_get_default_openssl_method 2476 EXIST::FUNCTION:DH | 
| 1887 | ENGINE_get_DH 2477 EXIST::FUNCTION: | 1887 | RSA_set_default_openssl_method 2477 EXIST::FUNCTION:RSA | 
| 1888 | ENGINE_ctrl 2478 EXIST::FUNCTION: | 1888 | ENGINE_finish 2478 EXIST::FUNCTION: | 
| 1889 | ENGINE_get_init_function 2479 EXIST::FUNCTION: | 1889 | ENGINE_load_public_key 2479 EXIST::FUNCTION: | 
| 1890 | ENGINE_set_init_function 2480 EXIST::FUNCTION: | 1890 | ENGINE_get_DH 2480 EXIST::FUNCTION: | 
| 1891 | ENGINE_set_default_DSA 2481 EXIST::FUNCTION: | 1891 | ENGINE_ctrl 2481 EXIST::FUNCTION: | 
| 1892 | ENGINE_get_name 2482 EXIST::FUNCTION: | 1892 | ENGINE_get_init_function 2482 EXIST::FUNCTION: | 
| 1893 | ENGINE_get_last 2483 EXIST::FUNCTION: | 1893 | ENGINE_set_init_function 2483 EXIST::FUNCTION: | 
| 1894 | ENGINE_get_prev 2484 EXIST::FUNCTION: | 1894 | ENGINE_set_default_DSA 2484 EXIST::FUNCTION: | 
| 1895 | ENGINE_get_default_DH 2485 EXIST::FUNCTION: | 1895 | ENGINE_get_name 2485 EXIST::FUNCTION: | 
| 1896 | ENGINE_get_RSA 2486 EXIST::FUNCTION: | 1896 | ENGINE_get_last 2486 EXIST::FUNCTION: | 
| 1897 | ENGINE_set_default 2487 EXIST::FUNCTION: | 1897 | ENGINE_get_prev 2487 EXIST::FUNCTION: | 
| 1898 | ENGINE_get_RAND 2488 EXIST::FUNCTION: | 1898 | ENGINE_get_default_DH 2488 EXIST::FUNCTION: | 
| 1899 | ENGINE_get_first 2489 EXIST::FUNCTION: | 1899 | ENGINE_get_RSA 2489 EXIST::FUNCTION: | 
| 1900 | ENGINE_by_id 2490 EXIST::FUNCTION: | 1900 | ENGINE_set_default 2490 EXIST::FUNCTION: | 
| 1901 | ENGINE_set_finish_function 2491 EXIST::FUNCTION: | 1901 | ENGINE_get_RAND 2491 EXIST::FUNCTION: | 
| 1902 | ENGINE_get_default_BN_mod_exp_crt 2492 EXIST:!VMS:FUNCTION: | 1902 | ENGINE_get_first 2492 EXIST::FUNCTION: | 
| 1903 | ENGINE_get_def_BN_mod_exp_crt 2492 EXIST:VMS:FUNCTION: | 1903 | ENGINE_by_id 2493 EXIST::FUNCTION: | 
| 1904 | RSA_get_default_openssl_method 2493 EXIST::FUNCTION:RSA | 1904 | ENGINE_set_finish_function 2494 EXIST::FUNCTION: | 
| 1905 | ENGINE_set_RSA 2494 EXIST::FUNCTION: | 1905 | ENGINE_get_default_BN_mod_exp_crt 2495 EXIST:!VMS:FUNCTION: | 
| 1906 | ENGINE_load_private_key 2495 EXIST::FUNCTION: | 1906 | ENGINE_get_def_BN_mod_exp_crt 2495 EXIST:VMS:FUNCTION: | 
| 1907 | ENGINE_set_default_RAND 2496 EXIST::FUNCTION: | 1907 | RSA_get_default_openssl_method 2496 EXIST::FUNCTION:RSA | 
| 1908 | ENGINE_set_BN_mod_exp 2497 EXIST::FUNCTION: | 1908 | ENGINE_set_RSA 2497 EXIST::FUNCTION: | 
| 1909 | ENGINE_remove 2498 EXIST::FUNCTION: | 1909 | ENGINE_load_private_key 2498 EXIST::FUNCTION: | 
| 1910 | ENGINE_free 2499 EXIST::FUNCTION: | 1910 | ENGINE_set_default_RAND 2499 EXIST::FUNCTION: | 
| 1911 | ENGINE_get_BN_mod_exp_crt 2500 EXIST::FUNCTION: | 1911 | ENGINE_set_BN_mod_exp 2500 EXIST::FUNCTION: | 
| 1912 | ENGINE_get_next 2501 EXIST::FUNCTION: | 1912 | ENGINE_remove 2501 EXIST::FUNCTION: | 
| 1913 | ENGINE_set_name 2502 EXIST::FUNCTION: | 1913 | ENGINE_free 2502 EXIST::FUNCTION: | 
| 1914 | ENGINE_get_default_DSA 2503 EXIST::FUNCTION: | 1914 | ENGINE_get_BN_mod_exp_crt 2503 EXIST::FUNCTION: | 
| 1915 | ENGINE_set_default_BN_mod_exp 2504 EXIST::FUNCTION: | 1915 | ENGINE_get_next 2504 EXIST::FUNCTION: | 
| 1916 | ENGINE_set_default_RSA 2505 EXIST::FUNCTION: | 1916 | ENGINE_set_name 2505 EXIST::FUNCTION: | 
| 1917 | ENGINE_get_default_RAND 2506 EXIST::FUNCTION: | 1917 | ENGINE_get_default_DSA 2506 EXIST::FUNCTION: | 
| 1918 | ENGINE_get_default_BN_mod_exp 2507 EXIST::FUNCTION: | 1918 | ENGINE_set_default_BN_mod_exp 2507 EXIST::FUNCTION: | 
| 1919 | ENGINE_set_RAND 2508 EXIST::FUNCTION: | 1919 | ENGINE_set_default_RSA 2508 EXIST::FUNCTION: | 
| 1920 | ENGINE_set_id 2509 EXIST::FUNCTION: | 1920 | ENGINE_get_default_RAND 2509 EXIST::FUNCTION: | 
| 1921 | ENGINE_set_BN_mod_exp_crt 2510 EXIST::FUNCTION: | 1921 | ENGINE_get_default_BN_mod_exp 2510 EXIST::FUNCTION: | 
| 1922 | ENGINE_set_default_DH 2511 EXIST::FUNCTION: | 1922 | ENGINE_set_RAND 2511 EXIST::FUNCTION: | 
| 1923 | ENGINE_new 2512 EXIST::FUNCTION: | 1923 | ENGINE_set_id 2512 EXIST::FUNCTION: | 
| 1924 | ENGINE_get_id 2513 EXIST::FUNCTION: | 1924 | ENGINE_set_BN_mod_exp_crt 2513 EXIST::FUNCTION: | 
| 1925 | DSA_set_default_openssl_method 2514 EXIST::FUNCTION:DSA | 1925 | ENGINE_set_default_DH 2514 EXIST::FUNCTION: | 
| 1926 | ENGINE_add 2515 EXIST::FUNCTION: | 1926 | ENGINE_new 2515 EXIST::FUNCTION: | 
| 1927 | DH_set_default_openssl_method 2516 EXIST::FUNCTION:DH | 1927 | ENGINE_get_id 2516 EXIST::FUNCTION: | 
| 1928 | ENGINE_get_DSA 2517 EXIST::FUNCTION: | 1928 | DSA_set_default_openssl_method 2517 EXIST::FUNCTION:DSA | 
| 1929 | ENGINE_get_ctrl_function 2518 EXIST::FUNCTION: | 1929 | ENGINE_add 2518 EXIST::FUNCTION: | 
| 1930 | ENGINE_set_ctrl_function 2519 EXIST::FUNCTION: | 1930 | DH_set_default_openssl_method 2519 EXIST::FUNCTION:DH | 
| 1931 | ENGINE_get_DSA 2520 EXIST::FUNCTION: | ||
| 1932 | ENGINE_get_ctrl_function 2521 EXIST::FUNCTION: | ||
| 1933 | ENGINE_set_ctrl_function 2522 EXIST::FUNCTION: | ||
| diff --git a/src/lib/libssl/src/util/mkdef.pl b/src/lib/libssl/src/util/mkdef.pl index cc41a1813e..ba453358cf 100644 --- a/src/lib/libssl/src/util/mkdef.pl +++ b/src/lib/libssl/src/util/mkdef.pl | |||
| @@ -119,7 +119,7 @@ foreach (@ARGV, split(/ /, $options)) | |||
| 119 | elsif (/^no-rc4$/) { $no_rc4=1; } | 119 | elsif (/^no-rc4$/) { $no_rc4=1; } | 
| 120 | elsif (/^no-rc5$/) { $no_rc5=1; } | 120 | elsif (/^no-rc5$/) { $no_rc5=1; } | 
| 121 | elsif (/^no-idea$/) { $no_idea=1; } | 121 | elsif (/^no-idea$/) { $no_idea=1; } | 
| 122 | elsif (/^no-des$/) { $no_des=1; } | 122 | elsif (/^no-des$/) { $no_des=1; $no_mdc2=1; } | 
| 123 | elsif (/^no-bf$/) { $no_bf=1; } | 123 | elsif (/^no-bf$/) { $no_bf=1; } | 
| 124 | elsif (/^no-cast$/) { $no_cast=1; } | 124 | elsif (/^no-cast$/) { $no_cast=1; } | 
| 125 | elsif (/^no-md2$/) { $no_md2=1; } | 125 | elsif (/^no-md2$/) { $no_md2=1; } | 
| @@ -705,7 +705,8 @@ EOF | |||
| 705 | } else { | 705 | } else { | 
| 706 | (my $n, my $i) = split /\\/, $nums{$s}; | 706 | (my $n, my $i) = split /\\/, $nums{$s}; | 
| 707 | my %pf = (); | 707 | my %pf = (); | 
| 708 | my @p = split(/,/, ($i =~ /^.*?:(.*?):/,$1)); | 708 | my @p = split(/,/, ($i =~ /^[^:]*:([^:]*):/,$1)); | 
| 709 | my @a = split(/,/, ($i =~ /^[^:]*:[^:]*:[^:]*:([^:]*)/,$1)); | ||
| 709 | # @p_purged must contain hardware platforms only | 710 | # @p_purged must contain hardware platforms only | 
| 710 | my @p_purged = (); | 711 | my @p_purged = (); | 
| 711 | foreach $ptmp (@p) { | 712 | foreach $ptmp (@p) { | 
| @@ -727,7 +728,26 @@ EOF | |||
| 727 | || (!$negatives | 728 | || (!$negatives | 
| 728 | && ($rsaref || !grep(/^RSAREF$/,@p))) | 729 | && ($rsaref || !grep(/^RSAREF$/,@p))) | 
| 729 | || ($negatives | 730 | || ($negatives | 
| 730 | && (!$rsaref || !grep(/^!RSAREF$/,@p))))) { | 731 | && (!$rsaref || !grep(/^!RSAREF$/,@p)))) | 
| 732 | && (!@a || (!$no_rc2 || !grep(/^RC2$/,@a))) | ||
| 733 | && (!@a || (!$no_rc4 || !grep(/^RC4$/,@a))) | ||
| 734 | && (!@a || (!$no_rc5 || !grep(/^RC5$/,@a))) | ||
| 735 | && (!@a || (!$no_idea || !grep(/^IDEA$/,@a))) | ||
| 736 | && (!@a || (!$no_des || !grep(/^DES$/,@a))) | ||
| 737 | && (!@a || (!$no_bf || !grep(/^BF$/,@a))) | ||
| 738 | && (!@a || (!$no_cast || !grep(/^CAST$/,@a))) | ||
| 739 | && (!@a || (!$no_md2 || !grep(/^MD2$/,@a))) | ||
| 740 | && (!@a || (!$no_md4 || !grep(/^MD4$/,@a))) | ||
| 741 | && (!@a || (!$no_md5 || !grep(/^MD5$/,@a))) | ||
| 742 | && (!@a || (!$no_sha || !grep(/^SHA$/,@a))) | ||
| 743 | && (!@a || (!$no_ripemd || !grep(/^RIPEMD$/,@a))) | ||
| 744 | && (!@a || (!$no_mdc2 || !grep(/^MDC2$/,@a))) | ||
| 745 | && (!@a || (!$no_rsa || !grep(/^RSA$/,@a))) | ||
| 746 | && (!@a || (!$no_dsa || !grep(/^DSA$/,@a))) | ||
| 747 | && (!@a || (!$no_dh || !grep(/^DH$/,@a))) | ||
| 748 | && (!@a || (!$no_hmac || !grep(/^HMAC$/,@a))) | ||
| 749 | && (!@a || (!$no_fp_api || !grep(/^FP_API$/,@a))) | ||
| 750 | ) { | ||
| 731 | printf OUT " %s%-40s@%d\n",($W32)?"":"_",$s,$n; | 751 | printf OUT " %s%-40s@%d\n",($W32)?"":"_",$s,$n; | 
| 732 | # } else { | 752 | # } else { | 
| 733 | # print STDERR "DEBUG: \"$sym\" (@p):", | 753 | # print STDERR "DEBUG: \"$sym\" (@p):", | 
| diff --git a/src/lib/libssl/src/util/mklink.pl b/src/lib/libssl/src/util/mklink.pl index d7b997ada7..9e9c9a5146 100644 --- a/src/lib/libssl/src/util/mklink.pl +++ b/src/lib/libssl/src/util/mklink.pl | |||
| @@ -48,8 +48,13 @@ foreach $dirname (@from_path) { | |||
| 48 | my $to = join('/', @to_path); | 48 | my $to = join('/', @to_path); | 
| 49 | 49 | ||
| 50 | my $file; | 50 | my $file; | 
| 51 | $symlink_exists=eval {symlink("",""); 1}; | ||
| 51 | foreach $file (@files) { | 52 | foreach $file (@files) { | 
| 52 | my $err = ""; | 53 | my $err = ""; | 
| 53 | symlink("$to/$file", "$from/$file") or $err = " [$!]"; | 54 | if ($symlink_exists) { | 
| 55 | symlink("$to/$file", "$from/$file") or $err = " [$!]"; | ||
| 56 | } else { | ||
| 57 | system ("cp", "$file", "$from/$file") and $err = " [$!]"; | ||
| 58 | } | ||
| 54 | print $file . " => $from/$file$err\n"; | 59 | print $file . " => $from/$file$err\n"; | 
| 55 | } | 60 | } | 
| diff --git a/src/lib/libssl/src/util/pod2man.pl b/src/lib/libssl/src/util/pod2man.pl index f5ec0767ed..c6b64add60 100644 --- a/src/lib/libssl/src/util/pod2man.pl +++ b/src/lib/libssl/src/util/pod2man.pl | |||
| @@ -416,6 +416,8 @@ if ($name ne 'something') { | |||
| 416 | warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n" | 416 | warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n" | 
| 417 | } | 417 | } | 
| 418 | else { | 418 | else { | 
| 419 | $n[0] =~ s/\n/ /; | ||
| 420 | $n[1] =~ s/\n/ /; | ||
| 419 | %namedesc = @n; | 421 | %namedesc = @n; | 
| 420 | } | 422 | } | 
| 421 | } | 423 | } | 
| diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h index fdbdc70ba7..9de9e611ab 100644 --- a/src/lib/libssl/ssl.h +++ b/src/lib/libssl/ssl.h | |||
| @@ -206,7 +206,7 @@ typedef struct ssl_method_st | |||
| 206 | int (*ssl_accept)(SSL *s); | 206 | int (*ssl_accept)(SSL *s); | 
| 207 | int (*ssl_connect)(SSL *s); | 207 | int (*ssl_connect)(SSL *s); | 
| 208 | int (*ssl_read)(SSL *s,void *buf,int len); | 208 | int (*ssl_read)(SSL *s,void *buf,int len); | 
| 209 | int (*ssl_peek)(SSL *s,char *buf,int len); | 209 | int (*ssl_peek)(SSL *s,void *buf,int len); | 
| 210 | int (*ssl_write)(SSL *s,const void *buf,int len); | 210 | int (*ssl_write)(SSL *s,const void *buf,int len); | 
| 211 | int (*ssl_shutdown)(SSL *s); | 211 | int (*ssl_shutdown)(SSL *s); | 
| 212 | int (*ssl_renegotiate)(SSL *s); | 212 | int (*ssl_renegotiate)(SSL *s); | 
| @@ -1061,9 +1061,9 @@ int SSL_set_trust(SSL *s, int trust); | |||
| 1061 | void SSL_free(SSL *ssl); | 1061 | void SSL_free(SSL *ssl); | 
| 1062 | int SSL_accept(SSL *ssl); | 1062 | int SSL_accept(SSL *ssl); | 
| 1063 | int SSL_connect(SSL *ssl); | 1063 | int SSL_connect(SSL *ssl); | 
| 1064 | int SSL_read(SSL *ssl,char *buf,int num); | 1064 | int SSL_read(SSL *ssl,void *buf,int num); | 
| 1065 | int SSL_peek(SSL *ssl,char *buf,int num); | 1065 | int SSL_peek(SSL *ssl,void *buf,int num); | 
| 1066 | int SSL_write(SSL *ssl,const char *buf,int num); | 1066 | int SSL_write(SSL *ssl,const void *buf,int num); | 
| 1067 | long SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg); | 1067 | long SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg); | 
| 1068 | long SSL_callback_ctrl(SSL *, int, void (*)()); | 1068 | long SSL_callback_ctrl(SSL *, int, void (*)()); | 
| 1069 | long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, char *parg); | 1069 | long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, char *parg); | 
| @@ -1178,7 +1178,7 @@ int SSL_get_ex_data_X509_STORE_CTX_idx(void ); | |||
| 1178 | #define SSL_CTX_get_read_ahead(ctx) \ | 1178 | #define SSL_CTX_get_read_ahead(ctx) \ | 
| 1179 | SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) | 1179 | SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) | 
| 1180 | #define SSL_CTX_set_read_ahead(ctx,m) \ | 1180 | #define SSL_CTX_set_read_ahead(ctx,m) \ | 
| 1181 | SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,0,NULL) | 1181 | SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) | 
| 1182 | 1182 | ||
| 1183 | /* NB: the keylength is only applicable when is_export is true */ | 1183 | /* NB: the keylength is only applicable when is_export is true */ | 
| 1184 | #ifndef NO_RSA | 1184 | #ifndef NO_RSA | 
| @@ -1209,6 +1209,7 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1209 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 1209 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 
| 1210 | * made after this point may be overwritten when the script is next run. | 1210 | * made after this point may be overwritten when the script is next run. | 
| 1211 | */ | 1211 | */ | 
| 1212 | void ERR_load_SSL_strings(void); | ||
| 1212 | 1213 | ||
| 1213 | /* Error codes for the SSL functions. */ | 1214 | /* Error codes for the SSL functions. */ | 
| 1214 | 1215 | ||
| @@ -1233,12 +1234,15 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1233 | #define SSL_F_SSL23_CONNECT 117 | 1234 | #define SSL_F_SSL23_CONNECT 117 | 
| 1234 | #define SSL_F_SSL23_GET_CLIENT_HELLO 118 | 1235 | #define SSL_F_SSL23_GET_CLIENT_HELLO 118 | 
| 1235 | #define SSL_F_SSL23_GET_SERVER_HELLO 119 | 1236 | #define SSL_F_SSL23_GET_SERVER_HELLO 119 | 
| 1237 | #define SSL_F_SSL23_PEEK 237 | ||
| 1236 | #define SSL_F_SSL23_READ 120 | 1238 | #define SSL_F_SSL23_READ 120 | 
| 1237 | #define SSL_F_SSL23_WRITE 121 | 1239 | #define SSL_F_SSL23_WRITE 121 | 
| 1238 | #define SSL_F_SSL2_ACCEPT 122 | 1240 | #define SSL_F_SSL2_ACCEPT 122 | 
| 1239 | #define SSL_F_SSL2_CONNECT 123 | 1241 | #define SSL_F_SSL2_CONNECT 123 | 
| 1240 | #define SSL_F_SSL2_ENC_INIT 124 | 1242 | #define SSL_F_SSL2_ENC_INIT 124 | 
| 1243 | #define SSL_F_SSL2_PEEK 234 | ||
| 1241 | #define SSL_F_SSL2_READ 125 | 1244 | #define SSL_F_SSL2_READ 125 | 
| 1245 | #define SSL_F_SSL2_READ_INTERNAL 236 | ||
| 1242 | #define SSL_F_SSL2_SET_CERTIFICATE 126 | 1246 | #define SSL_F_SSL2_SET_CERTIFICATE 126 | 
| 1243 | #define SSL_F_SSL2_WRITE 127 | 1247 | #define SSL_F_SSL2_WRITE 127 | 
| 1244 | #define SSL_F_SSL3_ACCEPT 128 | 1248 | #define SSL_F_SSL3_ACCEPT 128 | 
| @@ -1263,6 +1267,7 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1263 | #define SSL_F_SSL3_GET_SERVER_DONE 145 | 1267 | #define SSL_F_SSL3_GET_SERVER_DONE 145 | 
| 1264 | #define SSL_F_SSL3_GET_SERVER_HELLO 146 | 1268 | #define SSL_F_SSL3_GET_SERVER_HELLO 146 | 
| 1265 | #define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 | 1269 | #define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 | 
| 1270 | #define SSL_F_SSL3_PEEK 235 | ||
| 1266 | #define SSL_F_SSL3_READ_BYTES 148 | 1271 | #define SSL_F_SSL3_READ_BYTES 148 | 
| 1267 | #define SSL_F_SSL3_READ_N 149 | 1272 | #define SSL_F_SSL3_READ_N 149 | 
| 1268 | #define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 | 1273 | #define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 | 
| @@ -1559,4 +1564,3 @@ int SSL_COMP_add_compression_method(int id,char *cm); | |||
| 1559 | } | 1564 | } | 
| 1560 | #endif | 1565 | #endif | 
| 1561 | #endif | 1566 | #endif | 
| 1562 | |||
| diff --git a/src/lib/libssl/ssl/shlib_version b/src/lib/libssl/ssl/shlib_version index 890c57389b..3066b9771e 100644 --- a/src/lib/libssl/ssl/shlib_version +++ b/src/lib/libssl/ssl/shlib_version | |||
| @@ -1,2 +1,2 @@ | |||
| 1 | major=4 | 1 | major=5 | 
| 2 | minor=1 | 2 | minor=0 | 
| diff --git a/src/lib/libssl/ssl2.h b/src/lib/libssl/ssl2.h index df7d03c18f..f8b56afb6b 100644 --- a/src/lib/libssl/ssl2.h +++ b/src/lib/libssl/ssl2.h | |||
| @@ -134,11 +134,11 @@ extern "C" { | |||
| 134 | /* Upper/Lower Bounds */ | 134 | /* Upper/Lower Bounds */ | 
| 135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 | 135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 | 
| 136 | #ifdef MPE | 136 | #ifdef MPE | 
| 137 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER (unsigned int)29998 | 137 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 29998u | 
| 138 | #else | 138 | #else | 
| 139 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER (unsigned int)32767 | 139 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u /* 2^15-1 */ | 
| 140 | #endif | 140 | #endif | 
| 141 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /**/ | 141 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /* 2^14-1 */ | 
| 142 | 142 | ||
| 143 | #define SSL2_CHALLENGE_LENGTH 16 | 143 | #define SSL2_CHALLENGE_LENGTH 16 | 
| 144 | /*#define SSL2_CHALLENGE_LENGTH 32 */ | 144 | /*#define SSL2_CHALLENGE_LENGTH 32 */ | 
| diff --git a/src/lib/libssl/ssl_algs.c b/src/lib/libssl/ssl_algs.c index a91ee6d22e..dde8918fe0 100644 --- a/src/lib/libssl/ssl_algs.c +++ b/src/lib/libssl/ssl_algs.c | |||
| @@ -88,9 +88,13 @@ int SSL_library_init(void) | |||
| 88 | #ifndef NO_SHA | 88 | #ifndef NO_SHA | 
| 89 | EVP_add_digest(EVP_sha1()); /* RSA with sha1 */ | 89 | EVP_add_digest(EVP_sha1()); /* RSA with sha1 */ | 
| 90 | EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); | 90 | EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); | 
| 91 | EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); | ||
| 91 | #endif | 92 | #endif | 
| 92 | #if !defined(NO_SHA) && !defined(NO_DSA) | 93 | #if !defined(NO_SHA) && !defined(NO_DSA) | 
| 93 | EVP_add_digest(EVP_dss1()); /* DSA with sha1 */ | 94 | EVP_add_digest(EVP_dss1()); /* DSA with sha1 */ | 
| 95 | EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2); | ||
| 96 | EVP_add_digest_alias(SN_dsaWithSHA1,"DSS1"); | ||
| 97 | EVP_add_digest_alias(SN_dsaWithSHA1,"dss1"); | ||
| 94 | #endif | 98 | #endif | 
| 95 | 99 | ||
| 96 | /* If you want support for phased out ciphers, add the following */ | 100 | /* If you want support for phased out ciphers, add the following */ | 
| diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c index c26df62c20..27e7fcc60a 100644 --- a/src/lib/libssl/ssl_cert.c +++ b/src/lib/libssl/ssl_cert.c | |||
| @@ -271,7 +271,9 @@ CERT *ssl_cert_dup(CERT *cert) | |||
| 271 | 271 | ||
| 272 | return(ret); | 272 | return(ret); | 
| 273 | 273 | ||
| 274 | #ifndef NO_DH /* avoid 'unreferenced label' warning if NO_DH is defined */ | ||
| 274 | err: | 275 | err: | 
| 276 | #endif | ||
| 275 | #ifndef NO_RSA | 277 | #ifndef NO_RSA | 
| 276 | if (ret->rsa_tmp != NULL) | 278 | if (ret->rsa_tmp != NULL) | 
| 277 | RSA_free(ret->rsa_tmp); | 279 | RSA_free(ret->rsa_tmp); | 
| diff --git a/src/lib/libssl/ssl_err.c b/src/lib/libssl/ssl_err.c index 17b4caf528..1ae3333407 100644 --- a/src/lib/libssl/ssl_err.c +++ b/src/lib/libssl/ssl_err.c | |||
| @@ -86,12 +86,15 @@ static ERR_STRING_DATA SSL_str_functs[]= | |||
| 86 | {ERR_PACK(0,SSL_F_SSL23_CONNECT,0), "SSL23_CONNECT"}, | 86 | {ERR_PACK(0,SSL_F_SSL23_CONNECT,0), "SSL23_CONNECT"}, | 
| 87 | {ERR_PACK(0,SSL_F_SSL23_GET_CLIENT_HELLO,0), "SSL23_GET_CLIENT_HELLO"}, | 87 | {ERR_PACK(0,SSL_F_SSL23_GET_CLIENT_HELLO,0), "SSL23_GET_CLIENT_HELLO"}, | 
| 88 | {ERR_PACK(0,SSL_F_SSL23_GET_SERVER_HELLO,0), "SSL23_GET_SERVER_HELLO"}, | 88 | {ERR_PACK(0,SSL_F_SSL23_GET_SERVER_HELLO,0), "SSL23_GET_SERVER_HELLO"}, | 
| 89 | {ERR_PACK(0,SSL_F_SSL23_PEEK,0), "SSL23_PEEK"}, | ||
| 89 | {ERR_PACK(0,SSL_F_SSL23_READ,0), "SSL23_READ"}, | 90 | {ERR_PACK(0,SSL_F_SSL23_READ,0), "SSL23_READ"}, | 
| 90 | {ERR_PACK(0,SSL_F_SSL23_WRITE,0), "SSL23_WRITE"}, | 91 | {ERR_PACK(0,SSL_F_SSL23_WRITE,0), "SSL23_WRITE"}, | 
| 91 | {ERR_PACK(0,SSL_F_SSL2_ACCEPT,0), "SSL2_ACCEPT"}, | 92 | {ERR_PACK(0,SSL_F_SSL2_ACCEPT,0), "SSL2_ACCEPT"}, | 
| 92 | {ERR_PACK(0,SSL_F_SSL2_CONNECT,0), "SSL2_CONNECT"}, | 93 | {ERR_PACK(0,SSL_F_SSL2_CONNECT,0), "SSL2_CONNECT"}, | 
| 93 | {ERR_PACK(0,SSL_F_SSL2_ENC_INIT,0), "SSL2_ENC_INIT"}, | 94 | {ERR_PACK(0,SSL_F_SSL2_ENC_INIT,0), "SSL2_ENC_INIT"}, | 
| 95 | {ERR_PACK(0,SSL_F_SSL2_PEEK,0), "SSL2_PEEK"}, | ||
| 94 | {ERR_PACK(0,SSL_F_SSL2_READ,0), "SSL2_READ"}, | 96 | {ERR_PACK(0,SSL_F_SSL2_READ,0), "SSL2_READ"}, | 
| 97 | {ERR_PACK(0,SSL_F_SSL2_READ_INTERNAL,0), "SSL2_READ_INTERNAL"}, | ||
| 95 | {ERR_PACK(0,SSL_F_SSL2_SET_CERTIFICATE,0), "SSL2_SET_CERTIFICATE"}, | 98 | {ERR_PACK(0,SSL_F_SSL2_SET_CERTIFICATE,0), "SSL2_SET_CERTIFICATE"}, | 
| 96 | {ERR_PACK(0,SSL_F_SSL2_WRITE,0), "SSL2_WRITE"}, | 99 | {ERR_PACK(0,SSL_F_SSL2_WRITE,0), "SSL2_WRITE"}, | 
| 97 | {ERR_PACK(0,SSL_F_SSL3_ACCEPT,0), "SSL3_ACCEPT"}, | 100 | {ERR_PACK(0,SSL_F_SSL3_ACCEPT,0), "SSL3_ACCEPT"}, | 
| @@ -116,6 +119,7 @@ static ERR_STRING_DATA SSL_str_functs[]= | |||
| 116 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_DONE,0), "SSL3_GET_SERVER_DONE"}, | 119 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_DONE,0), "SSL3_GET_SERVER_DONE"}, | 
| 117 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_HELLO,0), "SSL3_GET_SERVER_HELLO"}, | 120 | {ERR_PACK(0,SSL_F_SSL3_GET_SERVER_HELLO,0), "SSL3_GET_SERVER_HELLO"}, | 
| 118 | {ERR_PACK(0,SSL_F_SSL3_OUTPUT_CERT_CHAIN,0), "SSL3_OUTPUT_CERT_CHAIN"}, | 121 | {ERR_PACK(0,SSL_F_SSL3_OUTPUT_CERT_CHAIN,0), "SSL3_OUTPUT_CERT_CHAIN"}, | 
| 122 | {ERR_PACK(0,SSL_F_SSL3_PEEK,0), "SSL3_PEEK"}, | ||
| 119 | {ERR_PACK(0,SSL_F_SSL3_READ_BYTES,0), "SSL3_READ_BYTES"}, | 123 | {ERR_PACK(0,SSL_F_SSL3_READ_BYTES,0), "SSL3_READ_BYTES"}, | 
| 120 | {ERR_PACK(0,SSL_F_SSL3_READ_N,0), "SSL3_READ_N"}, | 124 | {ERR_PACK(0,SSL_F_SSL3_READ_N,0), "SSL3_READ_N"}, | 
| 121 | {ERR_PACK(0,SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,0), "SSL3_SEND_CERTIFICATE_REQUEST"}, | 125 | {ERR_PACK(0,SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,0), "SSL3_SEND_CERTIFICATE_REQUEST"}, | 
| diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 635b25062e..1fe85b6cb7 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
| @@ -119,7 +119,9 @@ int SSL_clear(SSL *s) | |||
| 119 | s->client_version=s->version; | 119 | s->client_version=s->version; | 
| 120 | s->rwstate=SSL_NOTHING; | 120 | s->rwstate=SSL_NOTHING; | 
| 121 | s->rstate=SSL_ST_READ_HEADER; | 121 | s->rstate=SSL_ST_READ_HEADER; | 
| 122 | #if 0 | ||
| 122 | s->read_ahead=s->ctx->read_ahead; | 123 | s->read_ahead=s->ctx->read_ahead; | 
| 124 | #endif | ||
| 123 | 125 | ||
| 124 | if (s->init_buf != NULL) | 126 | if (s->init_buf != NULL) | 
| 125 | { | 127 | { | 
| @@ -229,6 +231,7 @@ SSL *SSL_new(SSL_CTX *ctx) | |||
| 229 | s->server=(ctx->method->ssl_accept == ssl_undefined_function)?0:1; | 231 | s->server=(ctx->method->ssl_accept == ssl_undefined_function)?0:1; | 
| 230 | s->options=ctx->options; | 232 | s->options=ctx->options; | 
| 231 | s->mode=ctx->mode; | 233 | s->mode=ctx->mode; | 
| 234 | s->read_ahead=ctx->read_ahead; /* used to happen in SSL_clear */ | ||
| 232 | SSL_clear(s); | 235 | SSL_clear(s); | 
| 233 | 236 | ||
| 234 | CRYPTO_new_ex_data(ssl_meth,s,&s->ex_data); | 237 | CRYPTO_new_ex_data(ssl_meth,s,&s->ex_data); | 
| @@ -705,7 +708,7 @@ long SSL_get_default_timeout(SSL *s) | |||
| 705 | return(s->method->get_timeout()); | 708 | return(s->method->get_timeout()); | 
| 706 | } | 709 | } | 
| 707 | 710 | ||
| 708 | int SSL_read(SSL *s,char *buf,int num) | 711 | int SSL_read(SSL *s,void *buf,int num) | 
| 709 | { | 712 | { | 
| 710 | if (s->handshake_func == 0) | 713 | if (s->handshake_func == 0) | 
| 711 | { | 714 | { | 
| @@ -721,8 +724,14 @@ int SSL_read(SSL *s,char *buf,int num) | |||
| 721 | return(s->method->ssl_read(s,buf,num)); | 724 | return(s->method->ssl_read(s,buf,num)); | 
| 722 | } | 725 | } | 
| 723 | 726 | ||
| 724 | int SSL_peek(SSL *s,char *buf,int num) | 727 | int SSL_peek(SSL *s,void *buf,int num) | 
| 725 | { | 728 | { | 
| 729 | if (s->handshake_func == 0) | ||
| 730 | { | ||
| 731 | SSLerr(SSL_F_SSL_READ, SSL_R_UNINITIALIZED); | ||
| 732 | return -1; | ||
| 733 | } | ||
| 734 | |||
| 726 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 735 | if (s->shutdown & SSL_RECEIVED_SHUTDOWN) | 
| 727 | { | 736 | { | 
| 728 | return(0); | 737 | return(0); | 
| @@ -730,7 +739,7 @@ int SSL_peek(SSL *s,char *buf,int num) | |||
| 730 | return(s->method->ssl_peek(s,buf,num)); | 739 | return(s->method->ssl_peek(s,buf,num)); | 
| 731 | } | 740 | } | 
| 732 | 741 | ||
| 733 | int SSL_write(SSL *s,const char *buf,int num) | 742 | int SSL_write(SSL *s,const void *buf,int num) | 
| 734 | { | 743 | { | 
| 735 | if (s->handshake_func == 0) | 744 | if (s->handshake_func == 0) | 
| 736 | { | 745 | { | 
| @@ -1676,6 +1685,10 @@ SSL *SSL_dup(SSL *s) | |||
| 1676 | 1685 | ||
| 1677 | if (s->cert != NULL) | 1686 | if (s->cert != NULL) | 
| 1678 | { | 1687 | { | 
| 1688 | if (ret->cert != NULL) | ||
| 1689 | { | ||
| 1690 | ssl_cert_free(ret->cert); | ||
| 1691 | } | ||
| 1679 | ret->cert = ssl_cert_dup(s->cert); | 1692 | ret->cert = ssl_cert_dup(s->cert); | 
| 1680 | if (ret->cert == NULL) | 1693 | if (ret->cert == NULL) | 
| 1681 | goto err; | 1694 | goto err; | 
| diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index d70fff4627..516d3cc5ae 100644 --- a/src/lib/libssl/ssl_locl.h +++ b/src/lib/libssl/ssl_locl.h | |||
| @@ -55,6 +55,59 @@ | |||
| 55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence | 
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] | 
| 57 | */ | 57 | */ | 
| 58 | /* ==================================================================== | ||
| 59 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | ||
| 60 | * | ||
| 61 | * Redistribution and use in source and binary forms, with or without | ||
| 62 | * modification, are permitted provided that the following conditions | ||
| 63 | * are met: | ||
| 64 | * | ||
| 65 | * 1. Redistributions of source code must retain the above copyright | ||
| 66 | * notice, this list of conditions and the following disclaimer. | ||
| 67 | * | ||
| 68 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 69 | * notice, this list of conditions and the following disclaimer in | ||
| 70 | * the documentation and/or other materials provided with the | ||
| 71 | * distribution. | ||
| 72 | * | ||
| 73 | * 3. All advertising materials mentioning features or use of this | ||
| 74 | * software must display the following acknowledgment: | ||
| 75 | * "This product includes software developed by the OpenSSL Project | ||
| 76 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
| 77 | * | ||
| 78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
| 79 | * endorse or promote products derived from this software without | ||
| 80 | * prior written permission. For written permission, please contact | ||
| 81 | * openssl-core@openssl.org. | ||
| 82 | * | ||
| 83 | * 5. Products derived from this software may not be called "OpenSSL" | ||
| 84 | * nor may "OpenSSL" appear in their names without prior written | ||
| 85 | * permission of the OpenSSL Project. | ||
| 86 | * | ||
| 87 | * 6. Redistributions of any form whatsoever must retain the following | ||
| 88 | * acknowledgment: | ||
| 89 | * "This product includes software developed by the OpenSSL Project | ||
| 90 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
| 91 | * | ||
| 92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
| 93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| 94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
| 96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
| 100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
| 101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
| 103 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 104 | * ==================================================================== | ||
| 105 | * | ||
| 106 | * This product includes cryptographic software written by Eric Young | ||
| 107 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
| 108 | * Hudson (tjh@cryptsoft.com). | ||
| 109 | * | ||
| 110 | */ | ||
| 58 | 111 | ||
| 59 | #ifndef HEADER_SSL_LOCL_H | 112 | #ifndef HEADER_SSL_LOCL_H | 
| 60 | #define HEADER_SSL_LOCL_H | 113 | #define HEADER_SSL_LOCL_H | 
| @@ -463,7 +516,7 @@ void ssl2_free(SSL *s); | |||
| 463 | int ssl2_accept(SSL *s); | 516 | int ssl2_accept(SSL *s); | 
| 464 | int ssl2_connect(SSL *s); | 517 | int ssl2_connect(SSL *s); | 
| 465 | int ssl2_read(SSL *s, void *buf, int len); | 518 | int ssl2_read(SSL *s, void *buf, int len); | 
| 466 | int ssl2_peek(SSL *s, char *buf, int len); | 519 | int ssl2_peek(SSL *s, void *buf, int len); | 
| 467 | int ssl2_write(SSL *s, const void *buf, int len); | 520 | int ssl2_write(SSL *s, const void *buf, int len); | 
| 468 | int ssl2_shutdown(SSL *s); | 521 | int ssl2_shutdown(SSL *s); | 
| 469 | void ssl2_clear(SSL *s); | 522 | void ssl2_clear(SSL *s); | 
| @@ -494,7 +547,7 @@ SSL_CIPHER *ssl3_get_cipher(unsigned int u); | |||
| 494 | int ssl3_renegotiate(SSL *ssl); | 547 | int ssl3_renegotiate(SSL *ssl); | 
| 495 | int ssl3_renegotiate_check(SSL *ssl); | 548 | int ssl3_renegotiate_check(SSL *ssl); | 
| 496 | int ssl3_dispatch_alert(SSL *s); | 549 | int ssl3_dispatch_alert(SSL *s); | 
| 497 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len); | 550 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); | 
| 498 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); | 551 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); | 
| 499 | int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2, | 552 | int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2, | 
| 500 | const char *sender, int slen,unsigned char *p); | 553 | const char *sender, int slen,unsigned char *p); | 
| @@ -511,7 +564,7 @@ void ssl3_free(SSL *s); | |||
| 511 | int ssl3_accept(SSL *s); | 564 | int ssl3_accept(SSL *s); | 
| 512 | int ssl3_connect(SSL *s); | 565 | int ssl3_connect(SSL *s); | 
| 513 | int ssl3_read(SSL *s, void *buf, int len); | 566 | int ssl3_read(SSL *s, void *buf, int len); | 
| 514 | int ssl3_peek(SSL *s,char *buf, int len); | 567 | int ssl3_peek(SSL *s, void *buf, int len); | 
| 515 | int ssl3_write(SSL *s, const void *buf, int len); | 568 | int ssl3_write(SSL *s, const void *buf, int len); | 
| 516 | int ssl3_shutdown(SSL *s); | 569 | int ssl3_shutdown(SSL *s); | 
| 517 | void ssl3_clear(SSL *s); | 570 | void ssl3_clear(SSL *s); | 
| diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c index 416def8908..7064262def 100644 --- a/src/lib/libssl/ssl_sess.c +++ b/src/lib/libssl/ssl_sess.c | |||
| @@ -508,6 +508,7 @@ int SSL_set_session(SSL *s, SSL_SESSION *session) | |||
| 508 | if (s->session != NULL) | 508 | if (s->session != NULL) | 
| 509 | SSL_SESSION_free(s->session); | 509 | SSL_SESSION_free(s->session); | 
| 510 | s->session=session; | 510 | s->session=session; | 
| 511 | s->verify_result = s->session->verify_result; | ||
| 511 | /* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/ | 512 | /* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/ | 
| 512 | ret=1; | 513 | ret=1; | 
| 513 | } | 514 | } | 
| diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c index 0d34357eb4..d10a23af8e 100644 --- a/src/lib/libssl/t1_enc.c +++ b/src/lib/libssl/t1_enc.c | |||
| @@ -572,7 +572,10 @@ printf("rec="); | |||
| 572 | #endif | 572 | #endif | 
| 573 | 573 | ||
| 574 | for (i=7; i>=0; i--) | 574 | for (i=7; i>=0; i--) | 
| 575 | if (++seq[i]) break; | 575 | { | 
| 576 | ++seq[i]; | ||
| 577 | if (seq[i] != 0) break; | ||
| 578 | } | ||
| 576 | 579 | ||
| 577 | #ifdef TLS_DEBUG | 580 | #ifdef TLS_DEBUG | 
| 578 | {unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",md[z]); printf("\n"); } | 581 | {unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",md[z]); printf("\n"); } | 
| diff --git a/src/lib/libssl/test/Makefile.ssl b/src/lib/libssl/test/Makefile.ssl index b961dabc3c..9c7b7dd158 100644 --- a/src/lib/libssl/test/Makefile.ssl +++ b/src/lib/libssl/test/Makefile.ssl | |||
| @@ -192,7 +192,7 @@ test_bn: | |||
| 192 | @./$(BNTEST) >tmp.bntest | 192 | @./$(BNTEST) >tmp.bntest | 
| 193 | @echo quit >>tmp.bntest | 193 | @echo quit >>tmp.bntest | 
| 194 | @echo "running bc" | 194 | @echo "running bc" | 
| 195 | @bc tmp.bntest 2>&1 | $(PERL) -e 'while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $$1";} elsif (!/^0$$/) {die "\nFailed! bc: $$_";} print STDERR "."; $$i++;} print STDERR "\n$$i tests passed\n"' | 195 | @<tmp.bntest sh -c "`sh ./bctest || true`" | $(PERL) -e '$$i=0; while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $$1";} elsif (!/^0$$/) {die "\nFailed! bc: $$_";} else {print STDERR "."; $$i++;}} print STDERR "\n$$i tests passed\n"' | 
| 196 | @echo 'test a^b%c implementations' | 196 | @echo 'test a^b%c implementations' | 
| 197 | ./$(EXPTEST) | 197 | ./$(EXPTEST) | 
| 198 | 198 | ||
| @@ -241,7 +241,7 @@ dclean: | |||
| 241 | mv -f Makefile.new $(MAKEFILE) | 241 | mv -f Makefile.new $(MAKEFILE) | 
| 242 | 242 | ||
| 243 | clean: | 243 | clean: | 
| 244 | rm -f .rnd tmp.bntest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss log | 244 | rm -f .rnd tmp.bntest tmp.bctest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss log | 
| 245 | 245 | ||
| 246 | $(DLIBSSL): | 246 | $(DLIBSSL): | 
| 247 | (cd ../ssl; $(MAKE)) | 247 | (cd ../ssl; $(MAKE)) | 
