prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Bump BoringSSL and/or OpenSSL in CI
  ## BoringSSL
  [Commit: e2e613c269a6bb3d7c0271150fff48d11fdbbace](https://boringssl.googlesource.com/boringssl/+/e2e613c269a6bb3d7c0271150fff48d11fdbbace)
  
  [Diff](https://boringssl.googlesource.com/boringssl/+/d77fdbff010ee70776036c41155d1b3711ede548..e2e613c269a6bb3d7c0271150fff48d11fdbbace) between the last commit hash merged to this repository and the new commit.
  ## OpenSSL
  [Commit: dc45d4c6faeb53bb68401141d899b9f857bbc51d](https://github.com/openssl/openssl/commit/dc45d4c6faeb53bb68401141d899b9f857bbc51d)
  
  [Diff](https://github.com/openssl/openssl/compare/efec0f4611ee854f2b0b3da0c135e839bf8e7d04...dc45d4c6faeb53bb68401141d899b9f857bbc51d) between the last commit hash merged to this repository and the new commit.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `src/_cffi_src/openssl/rsa.py`
  Content:
  ```
  1 # This file is dual licensed under the terms of the Apache License, Version
  2 # 2.0, and the BSD License. See the LICENSE file in the root of this repository
  3 # for complete details.
  4 
  5 
  6 INCLUDES = """
  7 #include <openssl/rsa.h>
  8 """
  9 
  10 TYPES = """
  11 typedef ... RSA;
  12 typedef ... BN_GENCB;
  13 static const int RSA_PKCS1_PADDING;
  14 static const int RSA_NO_PADDING;
  15 static const int RSA_PKCS1_OAEP_PADDING;
  16 static const int RSA_PKCS1_PSS_PADDING;
  17 static const int RSA_F4;
  18 static const int RSA_PSS_SALTLEN_AUTO;
  19 """
  20 
  21 FUNCTIONS = """
  22 RSA *RSA_new(void);
  23 void RSA_free(RSA *);
  24 int RSA_generate_key_ex(RSA *, int, BIGNUM *, BN_GENCB *);
  25 int RSA_check_key(const RSA *);
  26 RSA *RSAPublicKey_dup(RSA *);
  27 int RSA_blinding_on(RSA *, BN_CTX *);
  28 int RSA_print(BIO *, const RSA *, int);
  29 
  30 int RSA_set0_key(RSA *, BIGNUM *, BIGNUM *, BIGNUM *);
  31 int RSA_set0_factors(RSA *, BIGNUM *, BIGNUM *);
  32 int RSA_set0_crt_params(RSA *, BIGNUM *, BIGNUM *, BIGNUM *);
  33 void RSA_get0_key(const RSA *, const BIGNUM **, const BIGNUM **,
  34                   const BIGNUM **);
  35 void RSA_get0_factors(const RSA *, const BIGNUM **, const BIGNUM **);
  36 void RSA_get0_crt_params(const RSA *, const BIGNUM **, const BIGNUM **,
  37                          const BIGNUM **);
  38 int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *, int);
  39 int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *, int);
  40 int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *, EVP_MD *);
  41 int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *, unsigned char *, int);
  42 
  43 int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *, EVP_MD *);
  44 """
  45 
  46 CUSTOMIZATIONS = """
  47 // BoringSSL doesn't define this constant, but the value is used for
  48 // automatic salt length computation as in OpenSSL and LibreSSL
  49 #if !defined(RSA_PSS_SALTLEN_AUTO)
  50 #define RSA_PSS_SALTLEN_AUTO -2
  51 #endif
  52 """
  53
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/src/_cffi_src/openssl/rsa.py b/src/_cffi_src/openssl/rsa.py
  --- a/src/_cffi_src/openssl/rsa.py
  +++ b/src/_cffi_src/openssl/rsa.py
  @@ -16,6 +16,8 @@
   static const int RSA_PKCS1_PSS_PADDING;
   static const int RSA_F4;
   static const int RSA_PSS_SALTLEN_AUTO;
  +
  +static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION;
   """
   
   FUNCTIONS = """
  @@ -49,4 +51,10 @@
   #if !defined(RSA_PSS_SALTLEN_AUTO)
   #define RSA_PSS_SALTLEN_AUTO -2
   #endif
  +
  +#if defined(EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION)
  +static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 1;
  +#else
  +static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 0;
  +#endif
   """
  
verification_info: {"golden_diff": "diff --git a/src/_cffi_src/openssl/rsa.py b/src/_cffi_src/openssl/rsa.py\n--- a/src/_cffi_src/openssl/rsa.py\n+++ b/src/_cffi_src/openssl/rsa.py\n@@ -16,6 +16,8 @@\n static const int RSA_PKCS1_PSS_PADDING;\n static const int RSA_F4;\n static const int RSA_PSS_SALTLEN_AUTO;\n+\n+static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION;\n \"\"\"\n \n FUNCTIONS = \"\"\"\n@@ -49,4 +51,10 @@\n #if !defined(RSA_PSS_SALTLEN_AUTO)\n #define RSA_PSS_SALTLEN_AUTO -2\n #endif\n+\n+#if defined(EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION)\n+static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 1;\n+#else\n+static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 0;\n+#endif\n \"\"\"\n", "issue": "Bump BoringSSL and/or OpenSSL in CI\n## BoringSSL\n[Commit: e2e613c269a6bb3d7c0271150fff48d11fdbbace](https://boringssl.googlesource.com/boringssl/+/e2e613c269a6bb3d7c0271150fff48d11fdbbace)\n\n[Diff](https://boringssl.googlesource.com/boringssl/+/d77fdbff010ee70776036c41155d1b3711ede548..e2e613c269a6bb3d7c0271150fff48d11fdbbace) between the last commit hash merged to this repository and the new commit.\n## OpenSSL\n[Commit: dc45d4c6faeb53bb68401141d899b9f857bbc51d](https://github.com/openssl/openssl/commit/dc45d4c6faeb53bb68401141d899b9f857bbc51d)\n\n[Diff](https://github.com/openssl/openssl/compare/efec0f4611ee854f2b0b3da0c135e839bf8e7d04...dc45d4c6faeb53bb68401141d899b9f857bbc51d) between the last commit hash merged to this repository and the new commit.\n", "before_files": [{"content": "# This file is dual licensed under the terms of the Apache License, Version\n# 2.0, and the BSD License. See the LICENSE file in the root of this repository\n# for complete details.\n\n\nINCLUDES = \"\"\"\n#include <openssl/rsa.h>\n\"\"\"\n\nTYPES = \"\"\"\ntypedef ... RSA;\ntypedef ... BN_GENCB;\nstatic const int RSA_PKCS1_PADDING;\nstatic const int RSA_NO_PADDING;\nstatic const int RSA_PKCS1_OAEP_PADDING;\nstatic const int RSA_PKCS1_PSS_PADDING;\nstatic const int RSA_F4;\nstatic const int RSA_PSS_SALTLEN_AUTO;\n\"\"\"\n\nFUNCTIONS = \"\"\"\nRSA *RSA_new(void);\nvoid RSA_free(RSA *);\nint RSA_generate_key_ex(RSA *, int, BIGNUM *, BN_GENCB *);\nint RSA_check_key(const RSA *);\nRSA *RSAPublicKey_dup(RSA *);\nint RSA_blinding_on(RSA *, BN_CTX *);\nint RSA_print(BIO *, const RSA *, int);\n\nint RSA_set0_key(RSA *, BIGNUM *, BIGNUM *, BIGNUM *);\nint RSA_set0_factors(RSA *, BIGNUM *, BIGNUM *);\nint RSA_set0_crt_params(RSA *, BIGNUM *, BIGNUM *, BIGNUM *);\nvoid RSA_get0_key(const RSA *, const BIGNUM **, const BIGNUM **,\n                  const BIGNUM **);\nvoid RSA_get0_factors(const RSA *, const BIGNUM **, const BIGNUM **);\nvoid RSA_get0_crt_params(const RSA *, const BIGNUM **, const BIGNUM **,\n                         const BIGNUM **);\nint EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *, int);\nint EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *, int);\nint EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *, EVP_MD *);\nint EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *, unsigned char *, int);\n\nint EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *, EVP_MD *);\n\"\"\"\n\nCUSTOMIZATIONS = \"\"\"\n// BoringSSL doesn't define this constant, but the value is used for\n// automatic salt length computation as in OpenSSL and LibreSSL\n#if !defined(RSA_PSS_SALTLEN_AUTO)\n#define RSA_PSS_SALTLEN_AUTO -2\n#endif\n\"\"\"\n", "path": "src/_cffi_src/openssl/rsa.py"}], "after_files": [{"content": "# This file is dual licensed under the terms of the Apache License, Version\n# 2.0, and the BSD License. See the LICENSE file in the root of this repository\n# for complete details.\n\n\nINCLUDES = \"\"\"\n#include <openssl/rsa.h>\n\"\"\"\n\nTYPES = \"\"\"\ntypedef ... RSA;\ntypedef ... BN_GENCB;\nstatic const int RSA_PKCS1_PADDING;\nstatic const int RSA_NO_PADDING;\nstatic const int RSA_PKCS1_OAEP_PADDING;\nstatic const int RSA_PKCS1_PSS_PADDING;\nstatic const int RSA_F4;\nstatic const int RSA_PSS_SALTLEN_AUTO;\n\nstatic const int Cryptography_HAS_IMPLICIT_RSA_REJECTION;\n\"\"\"\n\nFUNCTIONS = \"\"\"\nRSA *RSA_new(void);\nvoid RSA_free(RSA *);\nint RSA_generate_key_ex(RSA *, int, BIGNUM *, BN_GENCB *);\nint RSA_check_key(const RSA *);\nRSA *RSAPublicKey_dup(RSA *);\nint RSA_blinding_on(RSA *, BN_CTX *);\nint RSA_print(BIO *, const RSA *, int);\n\nint RSA_set0_key(RSA *, BIGNUM *, BIGNUM *, BIGNUM *);\nint RSA_set0_factors(RSA *, BIGNUM *, BIGNUM *);\nint RSA_set0_crt_params(RSA *, BIGNUM *, BIGNUM *, BIGNUM *);\nvoid RSA_get0_key(const RSA *, const BIGNUM **, const BIGNUM **,\n                  const BIGNUM **);\nvoid RSA_get0_factors(const RSA *, const BIGNUM **, const BIGNUM **);\nvoid RSA_get0_crt_params(const RSA *, const BIGNUM **, const BIGNUM **,\n                         const BIGNUM **);\nint EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *, int);\nint EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *, int);\nint EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *, EVP_MD *);\nint EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *, unsigned char *, int);\n\nint EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *, EVP_MD *);\n\"\"\"\n\nCUSTOMIZATIONS = \"\"\"\n// BoringSSL doesn't define this constant, but the value is used for\n// automatic salt length computation as in OpenSSL and LibreSSL\n#if !defined(RSA_PSS_SALTLEN_AUTO)\n#define RSA_PSS_SALTLEN_AUTO -2\n#endif\n\n#if defined(EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION)\nstatic const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 1;\n#else\nstatic const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 0;\n#endif\n\"\"\"\n", "path": "src/_cffi_src/openssl/rsa.py"}]}