[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openssl-cvs
Subject:    [CVS] OpenSSL: openssl/engines/ e_chil.c
From:       "Dr. Stephen Henson" <steve () openssl ! org>
Date:       2010-05-26 16:17:17
Message-ID: 20100526161717.2BE531EAE902 () master ! openssl ! org
[Download RAW message or body]

  OpenSSL CVS Repository
  http://cvs.openssl.org/
  ____________________________________________________________________________

  Server: cvs.openssl.org                  Name:   Dr. Stephen Henson
  Root:   /v/openssl/cvs                   Email:  steve@openssl.org
  Module: openssl                          Date:   26-May-2010 18:17:16
  Branch: HEAD                             Handle: 2010052617171600

  Modified files:
    openssl/engines         e_chil.c

  Log:
    Avoid use of ex_data free function in Chil ENGINE so it can be safely
    reloaded.

  Summary:
    Revision    Changes     Path
    1.13        +18 -36     openssl/engines/e_chil.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openssl/engines/e_chil.c
  ============================================================================
  $ cvs diff -u -r1.12 -r1.13 e_chil.c
  --- openssl/engines/e_chil.c	24 Mar 2010 23:42:05 -0000	1.12
  +++ openssl/engines/e_chil.c	26 May 2010 16:17:16 -0000	1.13
  @@ -111,11 +111,10 @@
   #ifndef OPENSSL_NO_RSA
   /* RSA stuff */
   static int hwcrhk_rsa_mod_exp(BIGNUM *r, const BIGNUM *I, RSA *rsa, BN_CTX *ctx);
  -#endif
  -#ifndef OPENSSL_NO_RSA
   /* This function is aliased to mod_exp (with the mont stuff dropped). */
   static int hwcrhk_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
   		const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
  +static int hwcrhk_rsa_finish(RSA *rsa);
   #endif
   
   #ifndef OPENSSL_NO_DH
  @@ -135,10 +134,6 @@
   	UI_METHOD *ui_method, void *callback_data);
   static EVP_PKEY *hwcrhk_load_pubkey(ENGINE *eng, const char *key_id,
   	UI_METHOD *ui_method, void *callback_data);
  -#ifndef OPENSSL_NO_RSA
  -static void hwcrhk_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad,
  -	int ind,long argl, void *argp);
  -#endif
   
   /* Interaction stuff */
   static int hwcrhk_insert_card(const char *prompt_info,
  @@ -193,7 +188,7 @@
   	hwcrhk_rsa_mod_exp,
   	hwcrhk_mod_exp_mont,
   	NULL,
  -	NULL,
  +	hwcrhk_rsa_finish,
   	0,
   	NULL,
   	NULL,
  @@ -602,7 +597,7 @@
   	if (hndidx_rsa == -1)
   		hndidx_rsa = RSA_get_ex_new_index(0,
   			"nFast HWCryptoHook RSA key handle",
  -			NULL, NULL, hwcrhk_ex_free);
  +			NULL, NULL, NULL);
   #endif
   	return 1;
   err:
  @@ -1078,6 +1073,21 @@
   	{
   	return hwcrhk_mod_exp(r, a, p, m, ctx);
   	}
  +
  +static int hwcrhk_rsa_finish(RSA *rsa)
  +	{
  +	HWCryptoHook_RSAKeyHandle *hptr;
  +	int ret;
  +	hptr = RSA_get_ex_data(rsa, hndidx_rsa);
  +	if (hptr)
  +                {
  +                ret = p_hwcrhk_RSAUnloadKey(*hptr, NULL);
  +                OPENSSL_free(hptr);
  +		RSA_set_ex_data(rsa, hndidx_rsa, NULL);
  +                }
  +	return 1;
  +	}
  +
   #endif
   
   #ifndef OPENSSL_NO_DH
  @@ -1136,34 +1146,6 @@
   	return 1;
   	}
   
  -/* This cleans up an RSA KM key, called when ex_data is freed */
  -#ifndef OPENSSL_NO_RSA
  -static void hwcrhk_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad,
  -	int ind,long argl, void *argp)
  -{
  -	char tempbuf[1024];
  -	HWCryptoHook_ErrMsgBuf rmsg;
  -#ifndef OPENSSL_NO_RSA
  -	HWCryptoHook_RSAKeyHandle *hptr;
  -#endif
  -#if !defined(OPENSSL_NO_RSA)
  -	int ret;
  -#endif
  -
  -	rmsg.buf = tempbuf;
  -	rmsg.size = sizeof(tempbuf);
  -
  -#ifndef OPENSSL_NO_RSA
  -	hptr = (HWCryptoHook_RSAKeyHandle *) item;
  -	if(hptr)
  -                {
  -                ret = p_hwcrhk_RSAUnloadKey(*hptr, NULL);
  -                OPENSSL_free(hptr);
  -                }
  -#endif
  -}
  -#endif
  -
   /* Mutex calls: since the HWCryptoHook model closely follows the POSIX model
    * these just wrap the POSIX functions and add some logging.
    */
  @@ .
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
CVS Repository Commit List                     openssl-cvs@openssl.org
Automated List Manager                           majordomo@openssl.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic