I haven't merged from 0.9.7-stable in a loooong time. It shows :-).
authorRichard Levitte <levitte@openssl.org>
Thu, 18 Dec 2003 19:26:40 +0000 (19:26 +0000)
committerRichard Levitte <levitte@openssl.org>
Thu, 18 Dec 2003 19:26:40 +0000 (19:26 +0000)
37 files changed:
CHANGES
apps/apps.c
apps/req.c
apps/speed.c
crypto/Makefile.ssl
crypto/asn1/a_strex.c
crypto/bf/Makefile.ssl
crypto/bio/b_print.c
crypto/bn/asm/bn-586.pl
crypto/cast/Makefile.ssl
crypto/conf/conf_mod.c
crypto/des/Makefile.ssl
crypto/engine/eng_fat.c
crypto/engine/engine.h
crypto/engine/hw_cryptodev.c
crypto/evp/evp_enc.c
crypto/mem.c
crypto/rc4/Makefile.ssl
crypto/rc5/Makefile.ssl
crypto/ripemd/Makefile.ssl
crypto/sha/Makefile.ssl
crypto/x509/x509.h
crypto/x509/x509type.c
crypto/x509v3/v3_crld.c
doc/crypto/BIO_f_ssl.pod
doc/crypto/d2i_DSAPublicKey.pod
doc/crypto/d2i_RSAPublicKey.pod
doc/ssl/SSL_COMP_add_compression_method.pod
os2/OS2-EMX.cmd
ssl/Makefile.ssl
ssl/s3_clnt.c
ssl/ssl.h
ssl/ssl_cert.c
ssl/ssl_ciph.c
util/mk1mf.pl
util/mkdef.pl
util/pl/OS2-EMX.pl

diff --git a/CHANGES b/CHANGES
index 0d8d08cd806f00d593faa077d7b37384b36115f6..9504c46e7eff205f568ac757f736f60e6c4de6e6 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,9 @@
 
  Changes between 0.9.7c and 0.9.7d  [xx XXX XXXX]
 
+  *) Print out GeneralizedTime and UTCTime in ASN1_STRING_print_ex().
+     [Peter Sylvester <Peter.Sylvester@EdelWeb.fr>]
+
   *) Use the correct content when signing type "other".
      [Steve Henson]
 
index e4db04300335de1c8277e2acd1ef823145575387..2a7c7f25a2c2db880027e9c3476c67c512f6b079 100644 (file)
@@ -475,7 +475,7 @@ static int ui_read(UI *ui, UI_STRING *uis)
                        {
                        const char *password =
                                ((PW_CB_DATA *)UI_get0_user_data(ui))->password;
-                       if (password[0] != '\0')
+                       if (password && password[0] != '\0')
                                {
                                UI_set_result(ui, uis, password);
                                return 1;
@@ -499,7 +499,7 @@ static int ui_write(UI *ui, UI_STRING *uis)
                        {
                        const char *password =
                                ((PW_CB_DATA *)UI_get0_user_data(ui))->password;
-                       if (password[0] != '\0')
+                       if (password && password[0] != '\0')
                                return 1;
                        }
                default:
index 5f6ec3d33914072978595169d5f0ba880d5e5c2a..a657eaa50b7e513e23cd767825adf9e5f5390283 100644 (file)
@@ -824,7 +824,7 @@ loop:
                        if ((x509ss=X509_new()) == NULL) goto end;
 
                        /* Set version to V3 */
-                       if(!X509_set_version(x509ss, 2)) goto end;
+                       if(extensions && !X509_set_version(x509ss, 2)) goto end;
                        if (serial)
                                {
                                if (!X509_set_serialNumber(x509ss, serial)) goto end;
index ec55b4188cb4070e9f34105580fff118e959cbb0..18ce5c3fb63c67f11be014982174cb170f296177 100644 (file)
@@ -1006,6 +1006,9 @@ int MAIN(int argc, char **argv)
        c[D_CBC_RC5][0]=count;
        c[D_CBC_BF][0]=count;
        c[D_CBC_CAST][0]=count;
+       c[D_CBC_128_AES][0]=count;
+       c[D_CBC_192_AES][0]=count;
+       c[D_CBC_256_AES][0]=count;
 
        for (i=1; i<SIZE_NUM; i++)
                {
@@ -1031,6 +1034,9 @@ int MAIN(int argc, char **argv)
                c[D_CBC_RC5][i]=c[D_CBC_RC5][i-1]*l0/l1;
                c[D_CBC_BF][i]=c[D_CBC_BF][i-1]*l0/l1;
                c[D_CBC_CAST][i]=c[D_CBC_CAST][i-1]*l0/l1;
+               c[D_CBC_128_AES][i]=c[D_CBC_128_AES][i-1]*l0/l1;
+               c[D_CBC_192_AES][i]=c[D_CBC_192_AES][i-1]*l0/l1;
+               c[D_CBC_256_AES][i]=c[D_CBC_256_AES][i-1]*l0/l1;
                }
 #ifndef OPENSSL_NO_RSA
        rsa_c[R_RSA_512][0]=count/2000;
index e21648a320e2ea41ac6195f2417b12ed78db2bba..65db1dfcd654cfe4f82bb31b28c276fbd3043448 100644 (file)
@@ -50,7 +50,7 @@ ALL=    $(GENERAL) $(SRC) $(HEADER)
 top:
        @(cd ..; $(MAKE) DIRS=$(DIR) all)
 
-all: buildinf.h lib subdirs shared
+all: shared
 
 buildinf.h: ../Makefile.ssl
        ( echo "#ifndef MK1MF_BUILD"; \
@@ -96,7 +96,7 @@ lib:  $(LIBOBJ)
        $(RANLIB) $(LIB) || echo Never mind.
        @touch lib
 
-shared:
+shared: buildinf.h lib subdirs
        if [ -n "$(SHARED_LIBS)" ]; then \
                (cd ..; $(MAKE) $(SHARED_LIB)); \
        fi
index 8abfdfe59804109473cec23ec3559caa93a33a09..bde666a6ff1553328edb70ec66b04aa67790a518 100644 (file)
@@ -285,7 +285,7 @@ const static signed char tag2nbyte[] = {
        -1, -1, 0, -1,          /* 10-13 */
        -1, -1, -1, -1,         /* 15-17 */
        -1, 1, 1,               /* 18-20 */
-       -1, 1, -1,-1,           /* 21-24 */
+       -1, 1, 1, 1,            /* 21-24 */
        -1, 1, -1,              /* 25-27 */
        4, -1, 2                /* 28-30 */
 };
index bb14a0ee8250de73e9bc01ce25e83fcea3984fa9..b6124cf10f82faa9ca681aef667d7fbb76848635 100644 (file)
@@ -22,6 +22,7 @@ BF_ENC=               bf_enc.o
 #DES_ENC=      bx86-elf.o
 
 CFLAGS= $(INCLUDES) $(CFLAG)
+ASFLAGS= $(INCLUDES) $(ASFLAG)
 
 GENERAL=Makefile
 TEST=bftest.c
index 2cfc689dd6b4cbe9fa7fd96543a4ef901b2a7585..0fd5e4ee2a1e38660f637fdf209ee46e7519b607 100644 (file)
@@ -652,8 +652,8 @@ fmtfp(
             (caps ? "0123456789ABCDEF"
               : "0123456789abcdef")[intpart % 10];
         intpart = (intpart / 10);
-    } while (intpart && (iplace < sizeof iplace));
-    if (iplace == sizeof iplace)
+    } while (intpart && (iplace < sizeof iconvert));
+    if (iplace == sizeof iconvert)
         iplace--;
     iconvert[iplace] = 0;
 
@@ -664,7 +664,7 @@ fmtfp(
               : "0123456789abcdef")[fracpart % 10];
         fracpart = (fracpart / 10);
     } while (fplace < max);
-    if (fplace == sizeof fplace)
+    if (fplace == sizeof fconvert)
         fplace--;
     fconvert[fplace] = 0;
 
index 33f61259201a16c630df7c47d07f1ce2f6a8d319..c4de4a2beece42ce1e5a3eeaea60d6fd8ff55f4e 100644 (file)
@@ -11,7 +11,7 @@ require "x86asm.pl";
 &bn_div_words("bn_div_words");
 &bn_add_words("bn_add_words");
 &bn_sub_words("bn_sub_words");
-&bn_sub_part_words("bn_sub_part_words");
+#&bn_sub_part_words("bn_sub_part_words");
 
 &asm_finish();
 
index 70c47bf8e6954ace619e9adb856aa9a2827f8724..d1b2bafd38442bbb1853e5310f3f99733d04c8b9 100644 (file)
@@ -25,6 +25,7 @@ CAST_ENC=c_enc.o
 #CAST_ENC=asm/cx86bdsi.o
 
 CFLAGS= $(INCLUDES) $(CFLAG)
+ASFLAGS= $(INCLUDES) $(ASFLAG)
 
 GENERAL=Makefile
 TEST=casttest.c
index edcc08921c2fe2711ecacc990b4a4460630491cf..8ceab6a21f8fcf27100822e1930d88872459ad06 100644 (file)
@@ -576,12 +576,12 @@ char *CONF_get1_default_config_file(void)
  * be used to parse comma separated lists for example.
  */
 
-int CONF_parse_list(const char *list, int sep, int nospc,
+int CONF_parse_list(const char *list_, int sep, int nospc,
        int (*list_cb)(const char *elem, int len, void *usr), void *arg)
        {
        int ret;
        const char *lstart, *tmpend, *p;
-       lstart = list;
+       lstart = list_;
 
        for(;;)
                {
index 548573f4b185054e49bc66170b75e6ed874e80fb..4a049554587799d7d0d988fbfaa1fde205483b92 100644 (file)
@@ -22,6 +22,7 @@ DES_ENC=      des_enc.o fcrypt_b.o
 #DES_ENC=      dx86-elf.o yx86-elf.o
 
 CFLAGS= $(INCLUDES) $(CFLAG)
+ASFLAGS= $(INCLUDES) $(ASFLAG)
 
 GENERAL=Makefile
 TEST=destest.c
index 0d7dae00b24379f484afc4ad5e05e18b5a06c184..7ccf7022ee38b6e6d38f30cd2050fec6c70afc26 100644 (file)
@@ -107,14 +107,14 @@ static int int_def_cb(const char *alg, int len, void *arg)
        }
 
 
-int ENGINE_set_default_string(ENGINE *e, const char *list)
+int ENGINE_set_default_string(ENGINE *e, const char *def_list)
        {
        unsigned int flags = 0;
-       if (!CONF_parse_list(list, ',', 1, int_def_cb, &flags))
+       if (!CONF_parse_list(def_list, ',', 1, int_def_cb, &flags))
                {
                ENGINEerr(ENGINE_F_ENGINE_SET_DEFAULT_STRING,
                                        ENGINE_R_INVALID_STRING);
-               ERR_add_error_data(2, "str=",list);
+               ERR_add_error_data(2, "str=",def_list);
                return 0;
                }
        return ENGINE_set_default(e, flags);
index 9c3ab182d3799aab2945d6a07a3ae7cfd01ce8d0..900f75ce8d6d6e1fca459715d736931605143c95 100644 (file)
@@ -513,7 +513,7 @@ ENGINE *ENGINE_get_digest_engine(int nid);
  * structure will have had its reference count up'd so the caller
  * should still free their own reference 'e'. */
 int ENGINE_set_default_RSA(ENGINE *e);
-int ENGINE_set_default_string(ENGINE *e, const char *list);
+int ENGINE_set_default_string(ENGINE *e, const char *def_list);
 /* Same for the other "methods" */
 int ENGINE_set_default_DSA(ENGINE *e);
 int ENGINE_set_default_DH(ENGINE *e);
@@ -616,17 +616,20 @@ typedef int (*dynamic_bind_engine)(ENGINE *e, const char *id,
                                const dynamic_fns *fns);
 #define IMPLEMENT_DYNAMIC_BIND_FN(fn) \
        int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \
-               if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb, \
-                       fns->mem_fns.realloc_cb, fns->mem_fns.free_cb)) \
-                       return 0; \
-               CRYPTO_set_locking_callback(fns->lock_fns.lock_locking_cb); \
-               CRYPTO_set_add_lock_callback(fns->lock_fns.lock_add_lock_cb); \
-               CRYPTO_set_dynlock_create_callback(fns->lock_fns.dynlock_create_cb); \
-               CRYPTO_set_dynlock_lock_callback(fns->lock_fns.dynlock_lock_cb); \
-               CRYPTO_set_dynlock_destroy_callback(fns->lock_fns.dynlock_destroy_cb); \
-               if(!CRYPTO_set_ex_data_implementation(fns->ex_data_fns)) \
-                       return 0; \
-               if(!ERR_set_implementation(fns->err_fns)) return 0; \
+               if (ERR_get_implementation() != fns->err_fns) \
+                       { \
+                       if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb, \
+                               fns->mem_fns.realloc_cb, fns->mem_fns.free_cb)) \
+                               return 0; \
+                       CRYPTO_set_locking_callback(fns->lock_fns.lock_locking_cb); \
+                       CRYPTO_set_add_lock_callback(fns->lock_fns.lock_add_lock_cb); \
+                       CRYPTO_set_dynlock_create_callback(fns->lock_fns.dynlock_create_cb); \
+                       CRYPTO_set_dynlock_lock_callback(fns->lock_fns.dynlock_lock_cb); \
+                       CRYPTO_set_dynlock_destroy_callback(fns->lock_fns.dynlock_destroy_cb); \
+                       if(!CRYPTO_set_ex_data_implementation(fns->ex_data_fns)) \
+                               return 0; \
+                       if(!ERR_set_implementation(fns->err_fns)) return 0; \
+                       } \
                if(!fn(e,id)) return 0; \
                return 1; }
 
index b0ac5fb04ac11c880671b467c293c3240935c7ac..be80890eceb7a58b7452d765d90cf4aeebe63282 100644 (file)
@@ -1058,14 +1058,17 @@ ENGINE_load_cryptodev(void)
 
        if (engine == NULL)
                return;
-       if ((fd = get_dev_crypto()) < 0)
+       if ((fd = get_dev_crypto()) < 0) {
+               ENGINE_free(engine);
                return;
+       }
 
        /*
         * find out what asymmetric crypto algorithms we support
         */
        if (ioctl(fd, CIOCASYMFEAT, &cryptodev_asymfeat) == -1) {
                close(fd);
+               ENGINE_free(engine);
                return;
        }
        close(fd);
index be0758a87965feeb7b0c0494c3002213cd5571e9..8ea5aa935dda7c1f03f1ed2bf12fea06bafc5c25 100644 (file)
@@ -148,7 +148,19 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *imp
 #endif
 
                ctx->cipher=cipher;
-               ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size);
+               if (ctx->cipher->ctx_size)
+                       {
+                       ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size);
+                       if (!ctx->cipher_data)
+                               {
+                               EVPerr(EVP_F_EVP_CIPHERINIT, ERR_R_MALLOC_FAILURE);
+                               return 0;
+                               }
+                       }
+               else
+                       {
+                       ctx->cipher_data = NULL;
+                       }
                ctx->key_len = cipher->key_len;
                ctx->flags = 0;
                if(ctx->cipher->flags & EVP_CIPH_CTRL_INIT)
index bb862db49975f99110349ef5e337f6df3d92eb72..dd86733b77059fdb7c440a19f82d0e4c92e61ae8 100644 (file)
@@ -252,7 +252,7 @@ void *CRYPTO_malloc_locked(int num, const char *file, int line)
        void *ret = NULL;
        extern unsigned char cleanse_ctr;
 
-       if (num < 0) return NULL;
+       if (num <= 0) return NULL;
 
        allow_customize = 0;
        if (malloc_debug_func != NULL)
@@ -293,7 +293,7 @@ void *CRYPTO_malloc(int num, const char *file, int line)
        void *ret = NULL;
        extern unsigned char cleanse_ctr;
 
-       if (num < 0) return NULL;
+       if (num <= 0) return NULL;
 
        allow_customize = 0;
        if (malloc_debug_func != NULL)
@@ -324,7 +324,7 @@ void *CRYPTO_realloc(void *str, int num, const char *file, int line)
        if (str == NULL)
                return CRYPTO_malloc(num, file, line);
 
-       if (num < 0) return NULL;
+       if (num <= 0) return NULL;
  
        if (realloc_debug_func != NULL)
                realloc_debug_func(str, NULL, num, file, line, 0);
@@ -346,7 +346,7 @@ void *CRYPTO_realloc_clean(void *str, int old_len, int num, const char *file,
        if (str == NULL)
                return CRYPTO_malloc(num, file, line);
  
-       if (num < 0) return NULL;
+       if (num <= 0) return NULL;
  
        if (realloc_debug_func != NULL)
                realloc_debug_func(str, NULL, num, file, line, 0);
index b210b42f8f4b1b3a387bf50e9a5662a2a03e98bd..59c87f166a5006f8c985d99fe2dfad2886bdce5e 100644 (file)
@@ -25,6 +25,7 @@ RC4_ENC=rc4_enc.o
 #RC4_ENC=asm/rx86bdsi.o
 
 CFLAGS= $(INCLUDES) $(CFLAG)
+ASFLAGS= $(INCLUDES) $(ASFLAG)
 
 GENERAL=Makefile
 TEST=rc4test.c
index 3ad665594686f617580521fd176495edb7bbfc3d..e7af80f0c02165b0279e8042ecaa660ee7678a7f 100644 (file)
@@ -22,6 +22,7 @@ RC5_ENC=              rc5_enc.o
 #DES_ENC=      r586-elf.o
 
 CFLAGS= $(INCLUDES) $(CFLAG)
+ASFLAGS= $(INCLUDES) $(ASFLAG)
 
 GENERAL=Makefile
 TEST=rc5test.c
index 703e99056a0627336dafaad5acb8e1de237f82bf..b333edc522ed9fefb485b6674fa6beec26800feb 100644 (file)
@@ -20,6 +20,7 @@ AR=             ar r
 RIP_ASM_OBJ=
 
 CFLAGS= $(INCLUDES) $(CFLAG)
+ASFLAGS= $(INCLUDES) $(ASFLAG)
 
 GENERAL=Makefile
 TEST=rmdtest.c
index 55dca66e403860f05fdae26db1b85030182e4408..dbd41e606585e8eb41f5201b8772c85c2ed98239 100644 (file)
@@ -20,6 +20,7 @@ AR=             ar r
 SHA1_ASM_OBJ=
 
 CFLAGS= $(INCLUDES) $(CFLAG)
+ASFLAGS= $(INCLUDES) $(ASFLAG)
 
 GENERAL=Makefile
 TEST=shatest.c sha1test.c
index eaad5685a8f80eb3753fef4d413671baf833a717..8d0c7e2e17928977bd072726e10d59fc77b0a279 100644 (file)
@@ -810,10 +810,6 @@ X509_REQ *X509_REQ_dup(X509_REQ *req);
 X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
 X509_NAME *X509_NAME_dup(X509_NAME *xn);
 X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
-#ifndef OPENSSL_NO_RSA
-RSA *RSAPublicKey_dup(RSA *rsa);
-RSA *RSAPrivateKey_dup(RSA *rsa);
-#endif
 
 #endif /* !SSLEAY_MACROS */
 
index f78c2a6b43806edc1aed901ffa7ea0db3cd8890a..c25959a74282866ee469a32a47eb6bca5b788ece 100644 (file)
@@ -106,7 +106,7 @@ int X509_certificate_type(X509 *x, EVP_PKEY *pkey)
                break;
                }
 
-       if (EVP_PKEY_size(pk) <= 512/8) /* /8 because it's 512 bits we look
+       if (EVP_PKEY_size(pk) <= 1024/8)/* /8 because it's 1024 bits we look
                                           for, not bytes */
                ret|=EVP_PKT_EXP;
        if(pkey==NULL) EVP_PKEY_free(pk);
index 894a8b94d802ded8b59bca39bd548631d524cb1a..f90829c574e7f96579f06ee5811e7b052ebc6cd5 100644 (file)
@@ -156,7 +156,7 @@ ASN1_SEQUENCE(DIST_POINT) = {
 IMPLEMENT_ASN1_FUNCTIONS(DIST_POINT)
 
 ASN1_ITEM_TEMPLATE(CRL_DIST_POINTS) = 
-       ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, DIST_POINT, DIST_POINT)
+       ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CRLDistributionPoints, DIST_POINT)
 ASN1_ITEM_TEMPLATE_END(CRL_DIST_POINTS)
 
 IMPLEMENT_ASN1_FUNCTIONS(CRL_DIST_POINTS)
index a56ee2b92f2bae32ee0b498df4da6d03e29021d9..f0b731731f505a5940d534f813bc542964e71d3b 100644 (file)
@@ -287,8 +287,8 @@ a client and also echoes the request to standard output.
        return 0;
  }
 
- BIO_puts(sbio, "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n");
- BIO_puts(sbio, "<pre>\r\nConnection Established\r\nRequest headers:\r\n");
+ BIO_puts(sbio, "HTTP/1.0 200 OK\r\nContent-type: text/plain\r\n\r\n");
+ BIO_puts(sbio, "\r\nConnection Established\r\nRequest headers:\r\n");
  BIO_puts(sbio, "--------------------------------------------------\r\n");
 
  for(;;) {
@@ -301,7 +301,7 @@ a client and also echoes the request to standard output.
  }
 
  BIO_puts(sbio, "--------------------------------------------------\r\n");
- BIO_puts(sbio, "</pre>\r\n");
+ BIO_puts(sbio, "\r\n");
 
  /* Since there is a buffering BIO present we had better flush it */
  BIO_flush(sbio);
index 6ebd30427b888f16c1aac778d998c3615597a378..22c1b50f22888e8a210e5b3803943238d23e62cd 100644 (file)
@@ -9,6 +9,7 @@ and parsing functions.
 =head1 SYNOPSIS
 
  #include <openssl/dsa.h>
+ #include <openssl/x509.h>
 
  DSA * d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length);
 
@@ -35,8 +36,8 @@ and parsing functions.
 d2i_DSAPublicKey() and i2d_DSAPublicKey() decode and encode the DSA public key
 components structure.
 
-d2i_DSA_PUKEY() and i2d_DSA_PUKEY() decode and encode an DSA public key using a
-SubjectPublicKeyInfo (certificate public key) structure.
+d2i_DSA_PUBKEY() and i2d_DSA_PUBKEY() decode and encode an DSA public key using
+SubjectPublicKeyInfo (certificate public key) structure.
 
 d2i_DSAPrivateKey(), i2d_DSAPrivateKey() decode and encode the DSA private key
 components.
index 7c71bcbf3dbddbc6ad9b0a626e01b55b43337ad8..279b29c873c05b0251a69241e1aef839ded73d34 100644 (file)
@@ -9,6 +9,7 @@ d2i_Netscape_RSA - RSA public and private key encoding functions.
 =head1 SYNOPSIS
 
  #include <openssl/rsa.h>
+ #include <openssl/x509.h>
 
  RSA * d2i_RSAPublicKey(RSA **a, unsigned char **pp, long length);
 
@@ -31,8 +32,8 @@ d2i_Netscape_RSA - RSA public and private key encoding functions.
 d2i_RSAPublicKey() and i2d_RSAPublicKey() decode and encode a PKCS#1 RSAPublicKey
 structure.
 
-d2i_RSA_PUKEY() and i2d_RSA_PUKEY() decode and encode an RSA public key using a
-SubjectPublicKeyInfo (certificate public key) structure.
+d2i_RSA_PUBKEY() and i2d_RSA_PUBKEY() decode and encode an RSA public key using
+SubjectPublicKeyInfo (certificate public key) structure.
 
 d2i_RSAPrivateKey(), i2d_RSAPrivateKey() decode and encode a PKCS#1 RSAPrivateKey
 structure.
index 2a987391147c1a1b1010ac3b58de7bca9ff2f991..42fa66b1975179192dc7a9a23d5afc7323525b98 100644 (file)
@@ -53,11 +53,11 @@ SSL_COMP_add_compression_method() may return the following values:
 
 =over 4
 
-=item 1
+=item 0
 
 The operation succeeded.
 
-=item 0
+=item 1
 
 The operation failed. Check the error queue to find out the reason.
 
index acab99ac393f929424b99fadd746d78d9a1adb1b..5924b50b6d018d412a5f7173881fc5bed9e8ed0d 100644 (file)
@@ -64,3 +64,39 @@ echo RC5\32
 cd crypto\rc5\asm
 perl rc5-586.pl a.out > r5-os2.asm
 cd ..\..\..
+
+cd os2
+
+if exist noname\backward_ssl.def goto nomkdir
+mkdir noname
+:nomkdir
+
+perl backwardify.pl            crypto.def      >backward_crypto.def
+perl backwardify.pl            ssl.def         >backward_ssl.def
+perl backwardify.pl -noname    crypto.def      >noname\backward_crypto.def
+perl backwardify.pl -noname    ssl.def         >noname\backward_ssl.def
+
+echo Creating backward compatibility forwarder dlls:
+echo  crypto.dll
+gcc -Zomf -Zdll -Zcrtdll -o crypto.dll backward_crypto.def 2>&1 | grep -v L4085
+echo  ssl.dll
+gcc -Zomf -Zdll -Zcrtdll -o ssl.dll backward_ssl.def 2>&1 | grep -v L4085
+
+echo Creating smaller backward compatibility forwarder dlls:
+echo These DLLs are not good for runtime resolution of symbols.
+echo  noname\crypto.dll
+gcc -Zomf -Zdll -Zcrtdll -o noname/crypto.dll noname/backward_crypto.def 2>&1 | grep -v L4085
+echo  noname\ssl.dll
+gcc -Zomf -Zdll -Zcrtdll -o noname/ssl.dll noname/backward_ssl.def 2>&1 | grep -v L4085
+
+echo Compressing forwarders (it is ok if lxlite is not found):
+lxlite *.dll noname/*.dll
+
+cd ..
+
+echo Now run:
+echo For static build:
+echo  make -f OS2-EMX.mak
+echo For dynamic build:
+echo  make -f OS2-EMX-DLL.mak
+echo then rename crypto.dll to cryptssl.dll, ssl.dll to open_ssl.dll
index 5e428bb57fb463a8f3e7a455d0aef61359111d3b..e7b2a2947f5a2e3784603bb0cbd67a6b4e0db2c2 100644 (file)
@@ -55,14 +55,14 @@ ALL=    $(GENERAL) $(SRC) $(HEADER)
 top:
        (cd ..; $(MAKE) DIRS=$(DIR) all)
 
-all:   lib shared
+all:   shared
 
 lib:   $(LIBOBJ)
        $(AR) $(LIB) $(LIBOBJ)
        $(RANLIB) $(LIB) || echo Never mind.
        @touch lib
 
-shared:
+shared: lib
        if [ -n "$(SHARED_LIBS)" ]; then \
                (cd ..; $(MAKE) $(SHARED_LIB)); \
        fi
index e4bb5e3f8b8a1e2dc4fb0d8a6415925357751162..1316dacfe282cd0a2624491ac4dc3164f5a9b765 100644 (file)
@@ -1957,7 +1957,7 @@ static int ssl3_check_cert_and_algorithm(SSL *s)
                if (algs & SSL_kRSA)
                        {
                        if (rsa == NULL
-                           || RSA_size(rsa) > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
+                           || RSA_size(rsa)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
                                {
                                SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_RSA_KEY);
                                goto f_err;
@@ -1969,7 +1969,7 @@ static int ssl3_check_cert_and_algorithm(SSL *s)
                        if (algs & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
                            {
                            if (dh == NULL
-                               || DH_size(dh) > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
+                               || DH_size(dh)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
                                {
                                SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_DH_KEY);
                                goto f_err;
index 4ae84582594990df9173aeef93d8b90c376d14d4..913bd40eea4a3dd7afa36265054d3830bce77f8d 100644 (file)
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -1357,8 +1357,8 @@ const char *SSL_alert_type_string(int value);
 const char *SSL_alert_desc_string_long(int value);
 const char *SSL_alert_desc_string(int value);
 
-void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *list);
-void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *list);
+void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
+void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
 STACK_OF(X509_NAME) *SSL_get_client_CA_list(SSL *s);
 STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(SSL_CTX *s);
 int SSL_add_client_CA(SSL *ssl,X509 *x);
index 38a458f9b88334cf4d99ddffd7e3efeed09c2c37..127b86a21e1c7f9deef2844ee372d21c3e14824d 100644 (file)
@@ -514,12 +514,12 @@ int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk)
        return(i);
        }
 
-static void set_client_CA_list(STACK_OF(X509_NAME) **ca_list,STACK_OF(X509_NAME) *list)
+static void set_client_CA_list(STACK_OF(X509_NAME) **ca_list,STACK_OF(X509_NAME) *name_list)
        {
        if (*ca_list != NULL)
                sk_X509_NAME_pop_free(*ca_list,X509_NAME_free);
 
-       *ca_list=list;
+       *ca_list=name_list;
        }
 
 STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk)
@@ -541,14 +541,14 @@ STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk)
        return(ret);
        }
 
-void SSL_set_client_CA_list(SSL *s,STACK_OF(X509_NAME) *list)
+void SSL_set_client_CA_list(SSL *s,STACK_OF(X509_NAME) *name_list)
        {
-       set_client_CA_list(&(s->client_CA),list);
+       set_client_CA_list(&(s->client_CA),name_list);
        }
 
-void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK_OF(X509_NAME) *list)
+void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK_OF(X509_NAME) *name_list)
        {
-       set_client_CA_list(&(ctx->client_CA),list);
+       set_client_CA_list(&(ctx->client_CA),name_list);
        }
 
 STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(SSL_CTX *ctx)
index 585c70e4b3849cc620e41e9d1b514cb4cad428ae..8fc0d3e1b885cb43ef4d8b659005d0cab1b7519c 100644 (file)
@@ -334,10 +334,10 @@ static unsigned long ssl_cipher_get_disabled(void)
        }
 
 static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
-               int num_of_ciphers, unsigned long mask, CIPHER_ORDER *list,
+               int num_of_ciphers, unsigned long mask, CIPHER_ORDER *co_list,
                CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p)
        {
-       int i, list_num;
+       int i, co_list_num;
        SSL_CIPHER *c;
 
        /*
@@ -348,18 +348,18 @@ static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
         */
 
        /* Get the initial list of ciphers */
-       list_num = 0;   /* actual count of ciphers */
+       co_list_num = 0;        /* actual count of ciphers */
        for (i = 0; i < num_of_ciphers; i++)
                {
                c = ssl_method->get_cipher(i);
                /* drop those that use any of that is not available */
                if ((c != NULL) && c->valid && !(c->algorithms & mask))
                        {
-                       list[list_num].cipher = c;
-                       list[list_num].next = NULL;
-                       list[list_num].prev = NULL;
-                       list[list_num].active = 0;
-                       list_num++;
+                       co_list[co_list_num].cipher = c;
+                       co_list[co_list_num].next = NULL;
+                       co_list[co_list_num].prev = NULL;
+                       co_list[co_list_num].active = 0;
+                       co_list_num++;
 #ifdef KSSL_DEBUG
                        printf("\t%d: %s %lx %lx\n",i,c->name,c->id,c->algorithms);
 #endif /* KSSL_DEBUG */
@@ -372,18 +372,18 @@ static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
        /*
         * Prepare linked list from list entries
         */     
-       for (i = 1; i < list_num - 1; i++)
+       for (i = 1; i < co_list_num - 1; i++)
                {
-               list[i].prev = &(list[i-1]);
-               list[i].next = &(list[i+1]);
+               co_list[i].prev = &(co_list[i-1]);
+               co_list[i].next = &(co_list[i+1]);
                }
-       if (list_num > 0)
+       if (co_list_num > 0)
                {
-               (*head_p) = &(list[0]);
+               (*head_p) = &(co_list[0]);
                (*head_p)->prev = NULL;
-               (*head_p)->next = &(list[1]);
-               (*tail_p) = &(list[list_num - 1]);
-               (*tail_p)->prev = &(list[list_num - 2]);
+               (*head_p)->next = &(co_list[1]);
+               (*tail_p) = &(co_list[co_list_num - 1]);
+               (*tail_p)->prev = &(co_list[co_list_num - 2]);
                (*tail_p)->next = NULL;
                }
        }
@@ -429,7 +429,7 @@ static void ssl_cipher_collect_aliases(SSL_CIPHER **ca_list,
 
 static void ssl_cipher_apply_rule(unsigned long algorithms, unsigned long mask,
                unsigned long algo_strength, unsigned long mask_strength,
-               int rule, int strength_bits, CIPHER_ORDER *list,
+               int rule, int strength_bits, CIPHER_ORDER *co_list,
                CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p)
        {
        CIPHER_ORDER *head, *tail, *curr, *curr2, *tail2;
@@ -524,8 +524,9 @@ static void ssl_cipher_apply_rule(unsigned long algorithms, unsigned long mask,
        *tail_p = tail;
        }
 
-static int ssl_cipher_strength_sort(CIPHER_ORDER *list, CIPHER_ORDER **head_p,
-                                    CIPHER_ORDER **tail_p)
+static int ssl_cipher_strength_sort(CIPHER_ORDER *co_list,
+                                   CIPHER_ORDER **head_p,
+                                   CIPHER_ORDER **tail_p)
        {
        int max_strength_bits, i, *number_uses;
        CIPHER_ORDER *curr;
@@ -570,14 +571,14 @@ static int ssl_cipher_strength_sort(CIPHER_ORDER *list, CIPHER_ORDER **head_p,
        for (i = max_strength_bits; i >= 0; i--)
                if (number_uses[i] > 0)
                        ssl_cipher_apply_rule(0, 0, 0, 0, CIPHER_ORD, i,
-                                       list, head_p, tail_p);
+                                       co_list, head_p, tail_p);
 
        OPENSSL_free(number_uses);
        return(1);
        }
 
 static int ssl_cipher_process_rulestr(const char *rule_str,
-               CIPHER_ORDER *list, CIPHER_ORDER **head_p,
+               CIPHER_ORDER *co_list, CIPHER_ORDER **head_p,
                CIPHER_ORDER **tail_p, SSL_CIPHER **ca_list)
        {
        unsigned long algorithms, mask, algo_strength, mask_strength;
@@ -702,7 +703,7 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
                        ok = 0;
                        if ((buflen == 8) &&
                                !strncmp(buf, "STRENGTH", 8))
-                               ok = ssl_cipher_strength_sort(list,
+                               ok = ssl_cipher_strength_sort(co_list,
                                        head_p, tail_p);
                        else
                                SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,
@@ -722,7 +723,7 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
                        {
                        ssl_cipher_apply_rule(algorithms, mask,
                                algo_strength, mask_strength, rule, -1,
-                               list, head_p, tail_p);
+                               co_list, head_p, tail_p);
                        }
                else
                        {
@@ -744,7 +745,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
        unsigned long disabled_mask;
        STACK_OF(SSL_CIPHER) *cipherstack;
        const char *rule_p;
-       CIPHER_ORDER *list = NULL, *head = NULL, *tail = NULL, *curr;
+       CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr;
        SSL_CIPHER **ca_list = NULL;
 
        /*
@@ -774,15 +775,15 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
 #ifdef KSSL_DEBUG
        printf("ssl_create_cipher_list() for %d ciphers\n", num_of_ciphers);
 #endif    /* KSSL_DEBUG */
-       list = (CIPHER_ORDER *)OPENSSL_malloc(sizeof(CIPHER_ORDER) * num_of_ciphers);
-       if (list == NULL)
+       co_list = (CIPHER_ORDER *)OPENSSL_malloc(sizeof(CIPHER_ORDER) * num_of_ciphers);
+       if (co_list == NULL)
                {
                SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST,ERR_R_MALLOC_FAILURE);
                return(NULL);   /* Failure */
                }
 
        ssl_cipher_collect_ciphers(ssl_method, num_of_ciphers, disabled_mask,
-                                  list, &head, &tail);
+                                  co_list, &head, &tail);
 
        /*
         * We also need cipher aliases for selecting based on the rule_str.
@@ -798,7 +799,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
                (SSL_CIPHER **)OPENSSL_malloc(sizeof(SSL_CIPHER *) * num_of_alias_max);
        if (ca_list == NULL)
                {
-               OPENSSL_free(list);
+               OPENSSL_free(co_list);
                SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST,ERR_R_MALLOC_FAILURE);
                return(NULL);   /* Failure */
                }
@@ -814,21 +815,21 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
        if (strncmp(rule_str,"DEFAULT",7) == 0)
                {
                ok = ssl_cipher_process_rulestr(SSL_DEFAULT_CIPHER_LIST,
-                       list, &head, &tail, ca_list);
+                       co_list, &head, &tail, ca_list);
                rule_p += 7;
                if (*rule_p == ':')
                        rule_p++;
                }
 
        if (ok && (strlen(rule_p) > 0))
-               ok = ssl_cipher_process_rulestr(rule_p, list, &head, &tail,
+               ok = ssl_cipher_process_rulestr(rule_p, co_list, &head, &tail,
                                                ca_list);
 
        OPENSSL_free(ca_list);  /* Not needed anymore */
 
        if (!ok)
                {       /* Rule processing failure */
-               OPENSSL_free(list);
+               OPENSSL_free(co_list);
                return(NULL);
                }
        /*
@@ -837,7 +838,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
         */
        if ((cipherstack = sk_SSL_CIPHER_new_null()) == NULL)
                {
-               OPENSSL_free(list);
+               OPENSSL_free(co_list);
                return(NULL);
                }
 
@@ -855,7 +856,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
 #endif
                        }
                }
-       OPENSSL_free(list);     /* Not needed any longer */
+       OPENSSL_free(co_list);  /* Not needed any longer */
 
        /*
         * The following passage is a little bit odd. If pointer variables
index 2b7c5650eeab51000ba8ebe8388d9f73778a3c64..44c07550c6d76884219a660e804271a3975c0d3b 100755 (executable)
@@ -278,6 +278,8 @@ $defs= <<"EOF";
 
 EOF
 
+$defs .= $preamble if defined $preamble;
+
 if ($platform eq "VC-CE")
        {
        $defs.= <<"EOF";
index cdd2164c4e25926283dce6de57ecb882585892b1..01a1bfda197c71506588d070e144ac8646ee709e 100755 (executable)
@@ -1116,27 +1116,55 @@ sub print_test_file
        }
 }
 
+sub get_version {
+   local *MF;
+   my $v = '?';
+   open MF, 'Makefile.ssl' or return $v;
+   while (<MF>) {
+     $v = $1, last if /^VERSION=(.*?)\s*$/;
+   }
+   close MF;
+   return $v;
+}
+
 sub print_def_file
 {
        (*OUT,my $name,*nums,my @symbols)=@_;
        my $n = 1; my @e; my @r; my @v; my $prev="";
        my $liboptions="";
+       my $libname = $name;
+       my $http_vendor = 'www.openssl.org/';
+       my $version = get_version();
+       my $what = "OpenSSL: implementation of Secure Socket Layer";
+       my $description = "$what $version, $name - http://$http_vendor";
 
        if ($W32)
-               { $name.="32"; }
+               { $libname.="32"; }
        elsif ($W16)
-               { $name.="16"; }
+               { $libname.="16"; }
        elsif ($OS2)
-               { $liboptions = "INITINSTANCE\nDATA NONSHARED"; }
+               { # DLL names should not clash on the whole system.
+                 # However, they should not have any particular relationship
+                 # to the name of the static library.  Chose descriptive names
+                 # (must be at most 8 chars).
+                 my %translate = (ssl => 'open_ssl', crypto => 'cryptssl');
+                 $libname = $translate{$name} || $name;
+                 $liboptions = <<EOO;
+INITINSTANCE
+DATA MULTIPLE NONSHARED
+EOO
+                 # Vendor field can't contain colon, drat; so we omit http://
+                 $description = "\@#$http_vendor:$version#\@$what; DLL for library $name.  Build for EMX -Zmtd";
+               }
 
        print OUT <<"EOF";
 ;
 ; Definition file for the DLL version of the $name library from OpenSSL
 ;
 
-LIBRARY         $name  $liboptions
+LIBRARY         $libname       $liboptions
 
-DESCRIPTION     'OpenSSL $name - http://www.openssl.org/'
+DESCRIPTION     '$description'
 
 EOF
 
index d695dda623dcc2c61c3e9389fe70745ab1e77e5d..ddb35242108c59872c9fac3348f2fba71657f448 100644 (file)
@@ -3,10 +3,12 @@
 # OS2-EMX.pl - for EMX GCC on OS/2
 #
 
-$o='\\';
-$cp='copy';
+$o='/';
+$cp='cp';
 $rm='rm -f';
 
+$preamble = "SHELL=sh\n";
+
 # C compiler stuff
 
 $cc='gcc';
@@ -48,24 +50,24 @@ $bf_enc_src="";
 
 if (!$no_asm)
        {
-       $bn_asm_obj="crypto\\bn\\asm\\bn-os2$obj crypto\\bn\\asm\\co-os2$obj";
-       $bn_asm_src="crypto\\bn\\asm\\bn-os2.asm crypto\\bn\\asm\\co-os2.asm";
-       $des_enc_obj="crypto\\des\\asm\\d-os2$obj crypto\\des\\asm\\y-os2$obj";
-       $des_enc_src="crypto\\des\\asm\\d-os2.asm crypto\\des\\asm\\y-os2.asm";
-       $bf_enc_obj="crypto\\bf\\asm\\b-os2$obj";
-       $bf_enc_src="crypto\\bf\\asm\\b-os2.asm";
-       $cast_enc_obj="crypto\\cast\\asm\\c-os2$obj";
-       $cast_enc_src="crypto\\cast\\asm\\c-os2.asm";
-       $rc4_enc_obj="crypto\\rc4\\asm\\r4-os2$obj";
-       $rc4_enc_src="crypto\\rc4\\asm\\r4-os2.asm";
-       $rc5_enc_obj="crypto\\rc5\\asm\\r5-os2$obj";
-       $rc5_enc_src="crypto\\rc5\\asm\\r5-os2.asm";
-       $md5_asm_obj="crypto\\md5\\asm\\m5-os2$obj";
-       $md5_asm_src="crypto\\md5\\asm\\m5-os2.asm";
-       $sha1_asm_obj="crypto\\sha\\asm\\s1-os2$obj";
-       $sha1_asm_src="crypto\\sha\\asm\\s1-os2.asm";
-       $rmd160_asm_obj="crypto\\ripemd\\asm\\rm-os2$obj";
-       $rmd160_asm_src="crypto\\ripemd\\asm\\rm-os2.asm";
+       $bn_asm_obj="crypto/bn/asm/bn-os2$obj crypto/bn/asm/co-os2$obj";
+       $bn_asm_src="crypto/bn/asm/bn-os2.asm crypto/bn/asm/co-os2.asm";
+       $des_enc_obj="crypto/des/asm/d-os2$obj crypto/des/asm/y-os2$obj";
+       $des_enc_src="crypto/des/asm/d-os2.asm crypto/des/asm/y-os2.asm";
+       $bf_enc_obj="crypto/bf/asm/b-os2$obj";
+       $bf_enc_src="crypto/bf/asm/b-os2.asm";
+       $cast_enc_obj="crypto/cast/asm/c-os2$obj";
+       $cast_enc_src="crypto/cast/asm/c-os2.asm";
+       $rc4_enc_obj="crypto/rc4/asm/r4-os2$obj";
+       $rc4_enc_src="crypto/rc4/asm/r4-os2.asm";
+       $rc5_enc_obj="crypto/rc5/asm/r5-os2$obj";
+       $rc5_enc_src="crypto/rc5/asm/r5-os2.asm";
+       $md5_asm_obj="crypto/md5/asm/m5-os2$obj";
+       $md5_asm_src="crypto/md5/asm/m5-os2.asm";
+       $sha1_asm_obj="crypto/sha/asm/s1-os2$obj";
+       $sha1_asm_src="crypto/sha/asm/s1-os2.asm";
+       $rmd160_asm_obj="crypto/ripemd/asm/rm-os2$obj";
+       $rmd160_asm_src="crypto/ripemd/asm/rm-os2.asm";
        }
 
 if ($shlib)