Compare commits
	
		
			25 Commits
		
	
	
		
			OpenSSL_1_
			...
			OpenSSL_1_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					f9885acc8c | ||
| 
						 | 
					fa9df48401 | ||
| 
						 | 
					d414a5a0f0 | ||
| 
						 | 
					9eb4460e68 | ||
| 
						 | 
					6984d16671 | ||
| 
						 | 
					5b9d0995a1 | ||
| 
						 | 
					7ad8e1fc4e | ||
| 
						 | 
					c9b31189a9 | ||
| 
						 | 
					c76b7a1a82 | ||
| 
						 | 
					c940e07014 | ||
| 
						 | 
					88be4ebfbc | ||
| 
						 | 
					effa47b80a | ||
| 
						 | 
					067400b16e | ||
| 
						 | 
					748628ced0 | ||
| 
						 | 
					6791060eae | ||
| 
						 | 
					502dfeb8de | ||
| 
						 | 
					5bbed29518 | ||
| 
						 | 
					2f2d33f470 | ||
| 
						 | 
					be60a3feaa | ||
| 
						 | 
					e504a829a0 | ||
| 
						 | 
					0d829f6681 | ||
| 
						 | 
					d9540579c5 | ||
| 
						 | 
					ecf963b80d | ||
| 
						 | 
					7fc6d35be0 | ||
| 
						 | 
					e7d2a37158 | 
							
								
								
									
										42
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								CHANGES
									
									
									
									
									
								
							@@ -2,6 +2,47 @@
 | 
			
		||||
 OpenSSL CHANGES
 | 
			
		||||
 _______________
 | 
			
		||||
 | 
			
		||||
 Changes between 1.0.1b and 1.0.1c [10 May 2012]
 | 
			
		||||
 | 
			
		||||
  *) Sanity check record length before skipping explicit IV in TLS
 | 
			
		||||
     1.2, 1.1 and DTLS to fix DoS attack.
 | 
			
		||||
 | 
			
		||||
     Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
 | 
			
		||||
     fuzzing as a service testing platform.
 | 
			
		||||
     (CVE-2012-2333)
 | 
			
		||||
     [Steve Henson]
 | 
			
		||||
 | 
			
		||||
  *) Initialise tkeylen properly when encrypting CMS messages.
 | 
			
		||||
     Thanks to Solar Designer of Openwall for reporting this issue.
 | 
			
		||||
     [Steve Henson]
 | 
			
		||||
 | 
			
		||||
  *) In FIPS mode don't try to use composite ciphers as they are not
 | 
			
		||||
     approved.
 | 
			
		||||
     [Steve Henson]
 | 
			
		||||
 | 
			
		||||
 Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
 | 
			
		||||
 | 
			
		||||
  *) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
 | 
			
		||||
     1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
 | 
			
		||||
     mean any application compiled against OpenSSL 1.0.0 headers setting
 | 
			
		||||
     SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disablng
 | 
			
		||||
     TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
 | 
			
		||||
     0x10000000L Any application which was previously compiled against
 | 
			
		||||
     OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
 | 
			
		||||
     will need to be recompiled as a result. Letting be results in
 | 
			
		||||
     inability to disable specifically TLS 1.1 and in client context,
 | 
			
		||||
     in unlike event, limit maximum offered version to TLS 1.0 [see below].
 | 
			
		||||
     [Steve Henson]
 | 
			
		||||
 | 
			
		||||
  *) In order to ensure interoperabilty SSL_OP_NO_protocolX does not
 | 
			
		||||
     disable just protocol X, but all protocols above X *if* there are
 | 
			
		||||
     protocols *below* X still enabled. In more practical terms it means
 | 
			
		||||
     that if application wants to disable TLS1.0 in favor of TLS1.1 and
 | 
			
		||||
     above, it's not sufficient to pass SSL_OP_NO_TLSv1, one has to pass
 | 
			
		||||
     SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. This applies to
 | 
			
		||||
     client side.
 | 
			
		||||
     [Andy Polyakov]
 | 
			
		||||
 | 
			
		||||
 Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
 | 
			
		||||
 | 
			
		||||
  *) Check for potentially exploitable overflows in asn1_d2i_read_bio
 | 
			
		||||
@@ -28,6 +69,7 @@
 | 
			
		||||
        Most broken servers should now work.
 | 
			
		||||
     3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
 | 
			
		||||
	TLS 1.2 client support entirely.
 | 
			
		||||
     [Steve Henson]
 | 
			
		||||
 | 
			
		||||
  *) Fix SEGV in Vector Permutation AES module observed in OpenSSH.
 | 
			
		||||
     [Andy Polyakov]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								FAQ
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								FAQ
									
									
									
									
									
								
							@@ -10,6 +10,7 @@ OpenSSL  -  Frequently Asked Questions
 | 
			
		||||
* Why aren't tools like 'autoconf' and 'libtool' used?
 | 
			
		||||
* What is an 'engine' version?
 | 
			
		||||
* How do I check the authenticity of the OpenSSL distribution?
 | 
			
		||||
* How does the versioning scheme work?
 | 
			
		||||
 | 
			
		||||
[LEGAL] Legal questions
 | 
			
		||||
 | 
			
		||||
@@ -82,7 +83,7 @@ OpenSSL  -  Frequently Asked Questions
 | 
			
		||||
* Which is the current version of OpenSSL?
 | 
			
		||||
 | 
			
		||||
The current version is available from <URL: http://www.openssl.org>.
 | 
			
		||||
OpenSSL 1.0.1a was released on Apr 19th, 2012.
 | 
			
		||||
OpenSSL 1.0.1c was released on May 10th, 2012.
 | 
			
		||||
 | 
			
		||||
In addition to the current stable release, you can also access daily
 | 
			
		||||
snapshots of the OpenSSL development version at <URL:
 | 
			
		||||
@@ -108,7 +109,9 @@ In addition, you can read the most current versions at
 | 
			
		||||
<URL: http://www.openssl.org/docs/>. Note that the online documents refer
 | 
			
		||||
to the very latest development versions of OpenSSL and may include features
 | 
			
		||||
not present in released versions. If in doubt refer to the documentation
 | 
			
		||||
that came with the version of OpenSSL you are using.
 | 
			
		||||
that came with the version of OpenSSL you are using. The pod format
 | 
			
		||||
documentation is included in each OpenSSL distribution under the docs
 | 
			
		||||
directory.
 | 
			
		||||
 | 
			
		||||
For information on parts of libcrypto that are not yet documented, you
 | 
			
		||||
might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's
 | 
			
		||||
@@ -173,6 +176,19 @@ just do:
 | 
			
		||||
 | 
			
		||||
   pgp TARBALL.asc
 | 
			
		||||
 | 
			
		||||
* How does the versioning scheme work?
 | 
			
		||||
 | 
			
		||||
After the release of OpenSSL 1.0.0 the versioning scheme changed. Letter 
 | 
			
		||||
releases (e.g. 1.0.1a) can only contain bug and security fixes and no
 | 
			
		||||
new features. Minor releases change the last number (e.g. 1.0.2) and 
 | 
			
		||||
can contain new features that retain binary compatibility. Changes to
 | 
			
		||||
the middle number are considered major releases and neither source nor
 | 
			
		||||
binary compatibility is guaranteed.
 | 
			
		||||
 | 
			
		||||
Therefore the answer to the common question "when will feature X be
 | 
			
		||||
backported to OpenSSL 1.0.0/0.9.8?" is "never" but it could appear
 | 
			
		||||
in the next minor release.
 | 
			
		||||
 | 
			
		||||
[LEGAL] =======================================================================
 | 
			
		||||
 | 
			
		||||
* Do I need patent licenses to use OpenSSL?
 | 
			
		||||
@@ -284,7 +300,7 @@ current directory in this case, but this has changed with 0.9.6a.)
 | 
			
		||||
Check out the CA.pl(1) manual page. This provides a simple wrapper round
 | 
			
		||||
the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check
 | 
			
		||||
out the manual pages for the individual utilities and the certificate
 | 
			
		||||
extensions documentation (currently in doc/openssl.txt).
 | 
			
		||||
extensions documentation (in ca(1), req(1), x509v3_config(5) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Why can't I create certificate requests?
 | 
			
		||||
 
 | 
			
		||||
@@ -469,9 +469,9 @@ tags:
 | 
			
		||||
	find . -name '[^.]*.[ch]' | xargs etags -a
 | 
			
		||||
 | 
			
		||||
errors:
 | 
			
		||||
	$(PERL) util/ck_errf.pl -strict */*.c */*/*.c
 | 
			
		||||
	$(PERL) util/mkerr.pl -recurse -write
 | 
			
		||||
	(cd engines; $(MAKE) PERL=$(PERL) errors)
 | 
			
		||||
	$(PERL) util/ck_errf.pl -strict */*.c */*/*.c
 | 
			
		||||
 | 
			
		||||
stacks:
 | 
			
		||||
	$(PERL) util/mkstack.pl -write
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								NEWS
									
									
									
									
									
								
							@@ -5,6 +5,17 @@
 | 
			
		||||
  This file gives a brief overview of the major changes between each OpenSSL
 | 
			
		||||
  release. For more details please read the CHANGES file.
 | 
			
		||||
 | 
			
		||||
  Major changes between OpenSSL 1.0.1b and OpenSSL 1.0.1c:
 | 
			
		||||
 | 
			
		||||
      o Fix TLS/DTLS record length checking bug CVE-2012-2333
 | 
			
		||||
      o Don't attempt to use non-FIPS composite ciphers in FIPS mode.
 | 
			
		||||
 | 
			
		||||
  Major changes between OpenSSL 1.0.1a and OpenSSL 1.0.1b:
 | 
			
		||||
 | 
			
		||||
      o Fix compilation error on non-x86 platforms.
 | 
			
		||||
      o Make FIPS capable OpenSSL ciphers work in non-FIPS mode.
 | 
			
		||||
      o Fix SSL_OP_NO_TLSv1_1 clash with SSL_OP_ALL in OpenSSL 1.0.0
 | 
			
		||||
 | 
			
		||||
  Major changes between OpenSSL 1.0.1 and OpenSSL 1.0.1a:
 | 
			
		||||
 | 
			
		||||
      o Fix for ASN1 overflow bug CVE-2012-2110
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								README
									
									
									
									
									
								
							@@ -1,5 +1,5 @@
 | 
			
		||||
 | 
			
		||||
 OpenSSL 1.0.1a 19 Apr 2012
 | 
			
		||||
 OpenSSL 1.0.1c 10 May 2012
 | 
			
		||||
 | 
			
		||||
 Copyright (c) 1998-2011 The OpenSSL Project
 | 
			
		||||
 Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								STATUS
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								STATUS
									
									
									
									
									
								
							@@ -1,10 +1,12 @@
 | 
			
		||||
 | 
			
		||||
  OpenSSL STATUS                           Last modified at
 | 
			
		||||
  ______________                           $Date: 2012/04/19 12:17:17 $
 | 
			
		||||
  ______________                           $Date: 2012/05/10 15:16:36 $
 | 
			
		||||
 | 
			
		||||
  DEVELOPMENT STATE
 | 
			
		||||
 | 
			
		||||
    o  OpenSSL 1.1.0:  Under development...
 | 
			
		||||
    o  OpenSSL 1.0.1c: Released on May       10th, 2012
 | 
			
		||||
    o  OpenSSL 1.0.1b: Released on April     26th, 2012
 | 
			
		||||
    o  OpenSSL 1.0.1a: Released on April     19th, 2012
 | 
			
		||||
    o  OpenSSL 1.0.1:  Released on March     14th, 2012
 | 
			
		||||
    o  OpenSSL 1.0.0h: Released on March     12th, 2012
 | 
			
		||||
 
 | 
			
		||||
@@ -156,7 +156,7 @@ int BUF_MEM_grow_clean(BUF_MEM *str, size_t len)
 | 
			
		||||
	/* This limit is sufficient to ensure (len+3)/3*4 < 2**31 */
 | 
			
		||||
	if (len > LIMIT_BEFORE_EXPANSION)
 | 
			
		||||
		{
 | 
			
		||||
		BUFerr(BUF_F_BUF_MEM_GROW,ERR_R_MALLOC_FAILURE);
 | 
			
		||||
		BUFerr(BUF_F_BUF_MEM_GROW_CLEAN,ERR_R_MALLOC_FAILURE);
 | 
			
		||||
		return 0;
 | 
			
		||||
		}
 | 
			
		||||
	n=(len+3)/3*4;
 | 
			
		||||
 
 | 
			
		||||
@@ -139,10 +139,10 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec)
 | 
			
		||||
				CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR);
 | 
			
		||||
		goto err;
 | 
			
		||||
		}
 | 
			
		||||
	tkeylen = EVP_CIPHER_CTX_key_length(ctx);
 | 
			
		||||
	/* Generate random session key */
 | 
			
		||||
	if (!enc || !ec->key)
 | 
			
		||||
		{
 | 
			
		||||
		tkeylen = EVP_CIPHER_CTX_key_length(ctx);
 | 
			
		||||
		tkey = OPENSSL_malloc(tkeylen);
 | 
			
		||||
		if (!tkey)
 | 
			
		||||
			{
 | 
			
		||||
@@ -174,7 +174,7 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec)
 | 
			
		||||
			/* Only reveal failure if debugging so we don't
 | 
			
		||||
			 * leak information which may be useful in MMA.
 | 
			
		||||
			 */
 | 
			
		||||
			if (ec->debug)
 | 
			
		||||
			if (enc || ec->debug)
 | 
			
		||||
				{
 | 
			
		||||
				CMSerr(CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO,
 | 
			
		||||
						CMS_R_INVALID_KEY_LENGTH);
 | 
			
		||||
 
 | 
			
		||||
@@ -211,6 +211,7 @@ e_aes_cbc_hmac_sha1.o: ../../include/openssl/safestack.h
 | 
			
		||||
e_aes_cbc_hmac_sha1.o: ../../include/openssl/sha.h
 | 
			
		||||
e_aes_cbc_hmac_sha1.o: ../../include/openssl/stack.h
 | 
			
		||||
e_aes_cbc_hmac_sha1.o: ../../include/openssl/symhacks.h e_aes_cbc_hmac_sha1.c
 | 
			
		||||
e_aes_cbc_hmac_sha1.o: evp_locl.h
 | 
			
		||||
e_bf.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
			
		||||
e_bf.o: ../../include/openssl/blowfish.h ../../include/openssl/buffer.h
 | 
			
		||||
e_bf.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,8 @@ static int rc4_hmac_md5_init_key(EVP_CIPHER_CTX *ctx,
 | 
			
		||||
#if	!defined(OPENSSL_NO_ASM) &&	( \
 | 
			
		||||
	defined(__x86_64)	|| defined(__x86_64__)	|| \
 | 
			
		||||
	defined(_M_AMD64)	|| defined(_M_X64)	|| \
 | 
			
		||||
	defined(__INTEL__)		)
 | 
			
		||||
	defined(__INTEL__)		) && \
 | 
			
		||||
	!(defined(__APPLE__) && defined(__MACH__))
 | 
			
		||||
#define	STITCHED_CALL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -121,6 +122,7 @@ static int rc4_hmac_md5_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
 | 
			
		||||
		md5_off = MD5_CBLOCK-key->md.num,
 | 
			
		||||
		blocks;
 | 
			
		||||
	unsigned int l;
 | 
			
		||||
	extern unsigned int OPENSSL_ia32cap_P[];
 | 
			
		||||
#endif
 | 
			
		||||
	size_t	plen = key->payload_length;
 | 
			
		||||
 | 
			
		||||
@@ -132,7 +134,8 @@ static int rc4_hmac_md5_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
 | 
			
		||||
		/* cipher has to "fall behind" */
 | 
			
		||||
		if (rc4_off>md5_off) md5_off+=MD5_CBLOCK;
 | 
			
		||||
 | 
			
		||||
		if (plen>md5_off && (blocks=(plen-md5_off)/MD5_CBLOCK)) {
 | 
			
		||||
		if (plen>md5_off && (blocks=(plen-md5_off)/MD5_CBLOCK) &&
 | 
			
		||||
		    (OPENSSL_ia32cap_P[0]&(1<<20))==0) {
 | 
			
		||||
			MD5_Update(&key->md,in,md5_off);
 | 
			
		||||
			RC4(&key->ks,rc4_off,in,out);
 | 
			
		||||
 | 
			
		||||
@@ -172,7 +175,8 @@ static int rc4_hmac_md5_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
 | 
			
		||||
		if (md5_off>rc4_off)	rc4_off += 2*MD5_CBLOCK;
 | 
			
		||||
		else			rc4_off += MD5_CBLOCK;
 | 
			
		||||
 | 
			
		||||
		if (len>rc4_off && (blocks=(len-rc4_off)/MD5_CBLOCK)) {
 | 
			
		||||
		if (len>rc4_off && (blocks=(len-rc4_off)/MD5_CBLOCK) &&
 | 
			
		||||
		    (OPENSSL_ia32cap_P[0]&(1<<20))==0) {
 | 
			
		||||
			RC4(&key->ks,rc4_off,in,out);
 | 
			
		||||
			MD5_Update(&key->md,out,md5_off);
 | 
			
		||||
 | 
			
		||||
@@ -289,8 +293,6 @@ static EVP_CIPHER r4_hmac_md5_cipher=
 | 
			
		||||
 | 
			
		||||
const EVP_CIPHER *EVP_rc4_hmac_md5(void)
 | 
			
		||||
	{
 | 
			
		||||
	extern unsigned int OPENSSL_ia32cap_P[];
 | 
			
		||||
	/* RC4_CHAR flag ------------vvvvv */
 | 
			
		||||
	return(OPENSSL_ia32cap_P[0]&(1<<20) ? NULL : &r4_hmac_md5_cipher);
 | 
			
		||||
	return(&r4_hmac_md5_cipher);
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -172,7 +172,7 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *imp
 | 
			
		||||
#ifdef OPENSSL_FIPS
 | 
			
		||||
		if (FIPS_mode())
 | 
			
		||||
			return FIPS_cipherinit(ctx, cipher, key, iv, enc);
 | 
			
		||||
#else
 | 
			
		||||
#endif
 | 
			
		||||
		ctx->cipher=cipher;
 | 
			
		||||
		if (ctx->cipher->ctx_size)
 | 
			
		||||
			{
 | 
			
		||||
@@ -197,7 +197,6 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *imp
 | 
			
		||||
				return 0;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
#endif
 | 
			
		||||
		}
 | 
			
		||||
	else if(!ctx->cipher)
 | 
			
		||||
		{
 | 
			
		||||
@@ -210,7 +209,7 @@ skip_to_init:
 | 
			
		||||
#ifdef OPENSSL_FIPS
 | 
			
		||||
	if (FIPS_mode())
 | 
			
		||||
		return FIPS_cipherinit(ctx, cipher, key, iv, enc);
 | 
			
		||||
#else
 | 
			
		||||
#endif
 | 
			
		||||
	/* we assume block size is a power of 2 in *cryptUpdate */
 | 
			
		||||
	OPENSSL_assert(ctx->cipher->block_size == 1
 | 
			
		||||
	    || ctx->cipher->block_size == 8
 | 
			
		||||
@@ -257,7 +256,6 @@ skip_to_init:
 | 
			
		||||
	ctx->final_used=0;
 | 
			
		||||
	ctx->block_mask=ctx->cipher->block_size-1;
 | 
			
		||||
	return 1;
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
 | 
			
		||||
 
 | 
			
		||||
@@ -64,6 +64,7 @@
 | 
			
		||||
 | 
			
		||||
int FIPS_mode(void)
 | 
			
		||||
	{
 | 
			
		||||
	OPENSSL_init();
 | 
			
		||||
#ifdef OPENSSL_FIPS
 | 
			
		||||
	return FIPS_module_mode();
 | 
			
		||||
#else
 | 
			
		||||
 
 | 
			
		||||
@@ -25,11 +25,11 @@
 | 
			
		||||
 * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
 | 
			
		||||
 *  major minor fix final patch/beta)
 | 
			
		||||
 */
 | 
			
		||||
#define OPENSSL_VERSION_NUMBER	0x1000101fL
 | 
			
		||||
#define OPENSSL_VERSION_NUMBER	0x1000103fL
 | 
			
		||||
#ifdef OPENSSL_FIPS
 | 
			
		||||
#define OPENSSL_VERSION_TEXT	"OpenSSL 1.0.1a-fips 19 Apr 2012"
 | 
			
		||||
#define OPENSSL_VERSION_TEXT	"OpenSSL 1.0.1c-fips 10 May 2012"
 | 
			
		||||
#else
 | 
			
		||||
#define OPENSSL_VERSION_TEXT	"OpenSSL 1.0.1a 19 Apr 2012"
 | 
			
		||||
#define OPENSSL_VERSION_TEXT	"OpenSSL 1.0.1c 10 May 2012"
 | 
			
		||||
#endif
 | 
			
		||||
#define OPENSSL_VERSION_PTEXT	" part of " OPENSSL_VERSION_TEXT
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -105,7 +105,7 @@ Ladd:	lwarx	r5,0,r3
 | 
			
		||||
Little:	mtctr	r4
 | 
			
		||||
	stb	r0,0(r3)
 | 
			
		||||
	addi	r3,r3,1
 | 
			
		||||
	bdnz-	\$-8
 | 
			
		||||
	bdnz	\$-8
 | 
			
		||||
	blr
 | 
			
		||||
Lot:	andi.	r5,r3,3
 | 
			
		||||
	beq	Laligned
 | 
			
		||||
@@ -118,7 +118,7 @@ Laligned:
 | 
			
		||||
	mtctr	r5
 | 
			
		||||
	stw	r0,0(r3)
 | 
			
		||||
	addi	r3,r3,4
 | 
			
		||||
	bdnz-	\$-8
 | 
			
		||||
	bdnz	\$-8
 | 
			
		||||
	andi.	r4,r4,3
 | 
			
		||||
	bne	Little
 | 
			
		||||
	blr
 | 
			
		||||
 
 | 
			
		||||
@@ -225,11 +225,12 @@ rsa_pk1.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pk1.c
 | 
			
		||||
rsa_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/cms.h ../../include/openssl/crypto.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/objects.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/opensslconf.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
			
		||||
rsa_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
 | 
			
		||||
 
 | 
			
		||||
@@ -57,7 +57,7 @@ following methods:
 | 
			
		||||
 | 
			
		||||
 - in all other cases, proxy certificate validation can be enabled
 | 
			
		||||
   before starting the application by setting the envirnoment variable
 | 
			
		||||
   OPENSSL_ALLOW_PROXY with some non-empty value.
 | 
			
		||||
   OPENSSL_ALLOW_PROXY_CERTS with some non-empty value.
 | 
			
		||||
 | 
			
		||||
There are thoughts to allow proxy certificates with a line in the
 | 
			
		||||
default openssl.cnf, but that's still in the future.
 | 
			
		||||
 
 | 
			
		||||
@@ -142,13 +142,13 @@ gost94_keyx.o: ../../include/openssl/x509_vfy.h e_gost_err.h gost89.h
 | 
			
		||||
gost94_keyx.o: gost94_keyx.c gost_keywrap.h gost_lcl.h gosthash.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/objects.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/cms.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/engine.h ../../include/openssl/err.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/opensslconf.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
			
		||||
gost_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
%define libmaj 1
 | 
			
		||||
%define libmin 0
 | 
			
		||||
%define librel 1
 | 
			
		||||
%define librev a
 | 
			
		||||
%define librev c
 | 
			
		||||
Release: 1
 | 
			
		||||
 | 
			
		||||
%define openssldir /var/ssl
 | 
			
		||||
 
 | 
			
		||||
@@ -260,7 +260,7 @@ int dtls1_enc(SSL *s, int send)
 | 
			
		||||
				}
 | 
			
		||||
			/* TLS 1.0 does not bound the number of padding bytes by the block size.
 | 
			
		||||
			 * All of them must have value 'padding_length'. */
 | 
			
		||||
			if (i > (int)rec->length)
 | 
			
		||||
			if (i + bs > (int)rec->length)
 | 
			
		||||
				{
 | 
			
		||||
				/* Incorrect padding. SSLerr() and ssl3_alert are done
 | 
			
		||||
				 * by caller: we don't want to reveal whether this is
 | 
			
		||||
 
 | 
			
		||||
@@ -73,7 +73,7 @@ $ if f$parse("wrk_sslxexe:") .eqs. "" then -
 | 
			
		||||
$ if f$parse("wrk_sslxlib:") .eqs. "" then -
 | 
			
		||||
   create /directory /log wrk_sslxlib:
 | 
			
		||||
$!
 | 
			
		||||
$ exheader := ssl.h, ssl2.h, ssl3.h, ssl23.h, tls1.h, dtls1.h, kssl.h
 | 
			
		||||
$ exheader := ssl.h, ssl2.h, ssl3.h, ssl23.h, tls1.h, dtls1.h, kssl.h, srtp.h
 | 
			
		||||
$ e_exe := ssl_task
 | 
			
		||||
$ libs := ssl_libssl
 | 
			
		||||
$!
 | 
			
		||||
 
 | 
			
		||||
@@ -282,34 +282,51 @@ static int ssl23_client_hello(SSL *s)
 | 
			
		||||
	SSL_COMP *comp;
 | 
			
		||||
#endif
 | 
			
		||||
	int ret;
 | 
			
		||||
	unsigned long mask, options = s->options;
 | 
			
		||||
 | 
			
		||||
	ssl2_compat = (s->options & SSL_OP_NO_SSLv2) ? 0 : 1;
 | 
			
		||||
	ssl2_compat = (options & SSL_OP_NO_SSLv2) ? 0 : 1;
 | 
			
		||||
 | 
			
		||||
	if (ssl2_compat && ssl23_no_ssl2_ciphers(s))
 | 
			
		||||
		ssl2_compat = 0;
 | 
			
		||||
#ifndef OPENSSL_NO_TLS1_2_CLIENT
 | 
			
		||||
	if (!(s->options & SSL_OP_NO_TLSv1_2))
 | 
			
		||||
		{
 | 
			
		||||
		version = TLS1_2_VERSION;
 | 
			
		||||
		}
 | 
			
		||||
	else
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * SSL_OP_NO_X disables all protocols above X *if* there are
 | 
			
		||||
	 * some protocols below X enabled. This is required in order
 | 
			
		||||
	 * to maintain "version capability" vector contiguous. So
 | 
			
		||||
	 * that if application wants to disable TLS1.0 in favour of
 | 
			
		||||
	 * TLS1>=1, it would be insufficient to pass SSL_NO_TLSv1, the
 | 
			
		||||
	 * answer is SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2.
 | 
			
		||||
	 */
 | 
			
		||||
	mask =	SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1
 | 
			
		||||
#if !defined(OPENSSL_NO_SSL3)
 | 
			
		||||
		|SSL_OP_NO_SSLv3
 | 
			
		||||
#endif
 | 
			
		||||
	if (!(s->options & SSL_OP_NO_TLSv1_1))
 | 
			
		||||
		{
 | 
			
		||||
#if !defined(OPENSSL_NO_SSL2)
 | 
			
		||||
		|(ssl2_compat?SSL_OP_NO_SSLv2:0)
 | 
			
		||||
#endif
 | 
			
		||||
		;
 | 
			
		||||
#if !defined(OPENSSL_NO_TLS1_2_CLIENT)
 | 
			
		||||
	version = TLS1_2_VERSION;
 | 
			
		||||
 | 
			
		||||
	if ((options & SSL_OP_NO_TLSv1_2) && (options & mask) != mask)
 | 
			
		||||
		version = TLS1_1_VERSION;
 | 
			
		||||
		}
 | 
			
		||||
	else if (!(s->options & SSL_OP_NO_TLSv1))
 | 
			
		||||
		{
 | 
			
		||||
#else
 | 
			
		||||
	version = TLS1_1_VERSION;
 | 
			
		||||
#endif
 | 
			
		||||
	mask &= ~SSL_OP_NO_TLSv1_1;
 | 
			
		||||
	if ((options & SSL_OP_NO_TLSv1_1) && (options & mask) != mask)
 | 
			
		||||
		version = TLS1_VERSION;
 | 
			
		||||
		}
 | 
			
		||||
	else if (!(s->options & SSL_OP_NO_SSLv3))
 | 
			
		||||
		{
 | 
			
		||||
	mask &= ~SSL_OP_NO_TLSv1;
 | 
			
		||||
#if !defined(OPENSSL_NO_SSL3)
 | 
			
		||||
	if ((options & SSL_OP_NO_TLSv1) && (options & mask) != mask)
 | 
			
		||||
		version = SSL3_VERSION;
 | 
			
		||||
		}
 | 
			
		||||
	else if (!(s->options & SSL_OP_NO_SSLv2))
 | 
			
		||||
		{
 | 
			
		||||
	mask &= ~SSL_OP_NO_SSLv3;
 | 
			
		||||
#endif
 | 
			
		||||
#if !defined(OPENSSL_NO_SSL2)
 | 
			
		||||
	if ((options & SSL_OP_NO_SSLv3) && (options & mask) != mask)
 | 
			
		||||
		version = SSL2_VERSION;
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_TLSEXT
 | 
			
		||||
	if (version != SSL2_VERSION)
 | 
			
		||||
		{
 | 
			
		||||
 
 | 
			
		||||
@@ -556,7 +556,6 @@ struct ssl_session_st
 | 
			
		||||
#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG			0x00000080L
 | 
			
		||||
#define SSL_OP_TLS_D5_BUG				0x00000100L
 | 
			
		||||
#define SSL_OP_TLS_BLOCK_PADDING_BUG			0x00000200L
 | 
			
		||||
#define SSL_OP_NO_TLSv1_1				0x00000400L
 | 
			
		||||
 | 
			
		||||
/* Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added
 | 
			
		||||
 * in OpenSSL 0.9.6d.  Usually (depending on the application protocol)
 | 
			
		||||
@@ -604,6 +603,7 @@ struct ssl_session_st
 | 
			
		||||
#define SSL_OP_NO_SSLv3					0x02000000L
 | 
			
		||||
#define SSL_OP_NO_TLSv1					0x04000000L
 | 
			
		||||
#define SSL_OP_NO_TLSv1_2				0x08000000L
 | 
			
		||||
#define SSL_OP_NO_TLSv1_1				0x10000000L
 | 
			
		||||
 | 
			
		||||
/* These next two were never actually used for anything since SSLeay
 | 
			
		||||
 * zap so we have some more flags.
 | 
			
		||||
 
 | 
			
		||||
@@ -620,6 +620,11 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
 | 
			
		||||
		    s->ssl_version < TLS1_VERSION)
 | 
			
		||||
			return 1;
 | 
			
		||||
 | 
			
		||||
#ifdef OPENSSL_FIPS
 | 
			
		||||
		if (FIPS_mode())
 | 
			
		||||
			return 1;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		if	(c->algorithm_enc == SSL_RC4 &&
 | 
			
		||||
			 c->algorithm_mac == SSL_MD5 &&
 | 
			
		||||
			 (evp=EVP_get_cipherbyname("RC4-HMAC-MD5")))
 | 
			
		||||
 
 | 
			
		||||
@@ -889,6 +889,8 @@ int tls1_enc(SSL *s, int send)
 | 
			
		||||
			if (s->version >= TLS1_1_VERSION
 | 
			
		||||
				&& EVP_CIPHER_CTX_mode(ds) == EVP_CIPH_CBC_MODE)
 | 
			
		||||
				{
 | 
			
		||||
				if (bs > (int)rec->length)
 | 
			
		||||
					return -1;
 | 
			
		||||
				rec->data += bs;    /* skip the explicit IV */
 | 
			
		||||
				rec->input += bs;
 | 
			
		||||
				rec->length -= bs;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user