 d872d00b2f
			
		
	
	d872d00b2f
	
	
	
		
			
			This version adds the following functionality: * TLS 1.3 * AFALG engine support for hardware accelleration * x25519 ECC curve support * CRIME protection: disable use of compression by default * Support for ChaCha20 and Poly1305 Patches fixing bugs in the /dev/crypto engine were applied, from https://github.com/openssl/openssl/pull/7585 This increses the size of the ipk binray on MIPS32 by about 32%: old: 693.941 bin/packages/mips_24kc/base/libopenssl1.0.0_1.0.2q-2_mips_24kc.ipk 193.827 bin/packages/mips_24kc/base/openssl-util_1.0.2q-2_mips_24kc.ipk new: 912.493 bin/packages/mips_24kc/base/libopenssl1.1_1.1.1a-2_mips_24kc.ipk 239.316 bin/packages/mips_24kc/base/openssl-util_1.1.1a-2_mips_24kc.ipk Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From a19d1a1d370e2959555fccbafc4e970634840352 Mon Sep 17 00:00:00 2001
 | |
| From: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | |
| Date: Tue, 13 Nov 2018 09:23:22 -0200
 | |
| Subject: [PATCH 5/7] eng_devcrypto: add cipher CTX copy function
 | |
| 
 | |
| The engine needs a custom cipher context copy function to open a new
 | |
| /dev/crypto session.
 | |
| 
 | |
| Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | |
| 
 | |
| Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
 | |
| Reviewed-by: Richard Levitte <levitte@openssl.org>
 | |
| (Merged from https://github.com/openssl/openssl/pull/7585)
 | |
| 
 | |
| (cherry picked from commit 6d99e238397859f2df58c60e28905193b2dd6762)
 | |
| 
 | |
| --- a/crypto/engine/eng_devcrypto.c
 | |
| +++ b/crypto/engine/eng_devcrypto.c
 | |
| @@ -207,6 +207,22 @@ static int cipher_do_cipher(EVP_CIPHER_C
 | |
|      return 1;
 | |
|  }
 | |
|  
 | |
| +static int cipher_ctrl(EVP_CIPHER_CTX *ctx, int type, int p1, void* p2)
 | |
| +{
 | |
| +    EVP_CIPHER_CTX *to_ctx = (EVP_CIPHER_CTX *)p2;
 | |
| +    struct cipher_ctx *cipher_ctx;
 | |
| +
 | |
| +    if (type == EVP_CTRL_COPY) {
 | |
| +        /* when copying the context, a new session needs to be initialized */
 | |
| +        cipher_ctx = (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx);
 | |
| +        return (cipher_ctx == NULL)
 | |
| +            || cipher_init(to_ctx, cipher_ctx->sess.key, EVP_CIPHER_CTX_iv(ctx),
 | |
| +                           (cipher_ctx->op == COP_ENCRYPT));
 | |
| +    }
 | |
| +
 | |
| +    return -1;
 | |
| +}
 | |
| +
 | |
|  static int cipher_cleanup(EVP_CIPHER_CTX *ctx)
 | |
|  {
 | |
|      struct cipher_ctx *cipher_ctx =
 | |
| @@ -258,10 +274,12 @@ static void prepare_cipher_methods(void)
 | |
|                                                cipher_data[i].ivlen)
 | |
|              || !EVP_CIPHER_meth_set_flags(known_cipher_methods[i],
 | |
|                                            cipher_data[i].flags
 | |
| +                                          | EVP_CIPH_CUSTOM_COPY
 | |
|                                            | EVP_CIPH_FLAG_DEFAULT_ASN1)
 | |
|              || !EVP_CIPHER_meth_set_init(known_cipher_methods[i], cipher_init)
 | |
|              || !EVP_CIPHER_meth_set_do_cipher(known_cipher_methods[i],
 | |
|                                                cipher_do_cipher)
 | |
| +            || !EVP_CIPHER_meth_set_ctrl(known_cipher_methods[i], cipher_ctrl)
 | |
|              || !EVP_CIPHER_meth_set_cleanup(known_cipher_methods[i],
 | |
|                                              cipher_cleanup)
 | |
|              || !EVP_CIPHER_meth_set_impl_ctx_size(known_cipher_methods[i],
 |