Oh!!! You did removed old support. Great. But we should do this in autoconf as well. Testing POLARSSL_VERSION_NUMBER >= 0x01010000 is enough? Which header to include?
On Mon, Apr 2, 2012 at 10:28 AM, Adriaan de Jong <dej...@fox-it.com> wrote: > PolarSSL 1.0 and earlier use only the Havege RNG. Havege is based on timing > certain operations, using the RDTSC instruction. Although this is fine on > bare metal PCs, the RDTSC instruction is virtualised on some virtual machine > implementations. This can result in issues on those virtual machines. > PolarSSL fixes this potential issue by also using platform entropy. > > To ensure that OpenVPN is always built against a decent RNG, PolarSSL <1.1 is > therefore no longer supported. > > Signed-off-by: Adriaan de Jong <dej...@fox-it.com> > --- > src/openvpn/crypto_polarssl.c | 34 ---------------------------------- > src/openvpn/crypto_polarssl.h | 13 +------------ > src/openvpn/ssl_polarssl.c | 6 ------ > src/openvpn/syshead.h | 3 --- > 4 files changed, 1 insertions(+), 55 deletions(-) > > diff --git a/src/openvpn/crypto_polarssl.c b/src/openvpn/crypto_polarssl.c > index 96d41b7..3978a3c 100644 > --- a/src/openvpn/crypto_polarssl.c > +++ b/src/openvpn/crypto_polarssl.c > @@ -50,9 +50,7 @@ > #include <polarssl/cipher.h> > #include <polarssl/havege.h> > > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > #include <polarssl/entropy.h> > -#endif > > /* > * > @@ -168,7 +166,6 @@ show_available_engines () > * Initialise the given ctr_drbg context, using a personalisation string and > an > * entropy gathering function. > */ > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > ctr_drbg_context * rand_ctx_get() > { > static entropy_context ec = {0}; > @@ -200,25 +197,6 @@ ctr_drbg_context * rand_ctx_get() > return &cd_ctx; > } > > -#else /* (POLARSSL_VERSION_NUMBER < 0x01010000) */ > - > -havege_state * rand_ctx_get() > -{ > - static havege_state hs = {0}; > - static bool rand_initialised = false; > - > - if (!rand_initialised) > - { > - /* Initialise PolarSSL RNG */ > - havege_init(&hs); > - rand_initialised = true; > - } > - > - return &hs; > -} > - > -#endif /* (POLARSSL_VERSION_NUMBER >= 0x01010000) */ > - > #ifdef ENABLE_PREDICTION_RESISTANCE > void rand_ctx_enable_prediction_resistance() > { > @@ -231,26 +209,14 @@ void rand_ctx_enable_prediction_resistance() > int > rand_bytes (uint8_t *output, int len) > { > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > ctr_drbg_context *rng_ctx = rand_ctx_get(); > -#else /* (POLARSSL_VERSION_NUMBER >= 0x01010000) */ > - havege_state *rng_ctx = rand_ctx_get(); > -#endif /* (POLARSSL_VERSION_NUMBER >= 0x01010000) */ > > while (len > 0) > { > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > const size_t blen = min_int (len, CTR_DRBG_MAX_REQUEST); > if (0 != ctr_drbg_random(rng_ctx, output, blen)) > return 0; > > -#else /* (POLARSSL_VERSION_NUMBER >= 0x01010000) */ > - const size_t blen = min_int (len, sizeof(int)); > - const int rand_int = havege_rand(rng_ctx); > - memcpy (output, &rand_int, blen); > - > -#endif /* (POLARSSL_VERSION_NUMBER >= 0x01010000) */ > - > output += blen; > len -= blen; > } > diff --git a/src/openvpn/crypto_polarssl.h b/src/openvpn/crypto_polarssl.h > index 6152878..bfabb91 100644 > --- a/src/openvpn/crypto_polarssl.h > +++ b/src/openvpn/crypto_polarssl.h > @@ -33,12 +33,7 @@ > #include <polarssl/version.h> > #include <polarssl/cipher.h> > #include <polarssl/md.h> > - > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > -# include <polarssl/ctr_drbg.h> > -#else > -# include <polarssl/havege.h> > -#endif > +#include <polarssl/ctr_drbg.h> > > /** Generic cipher key type %context. */ > typedef cipher_info_t cipher_kt_t; > @@ -81,8 +76,6 @@ typedef md_context_t hmac_ctx_t; > /** > * Returns a singleton instance of the PolarSSL random number generator. > * > - * For PolarSSL 1.0, this is the HAVEGE random number generator. > - * > * For PolarSSL 1.1+, this is the CTR_DRBG random number generator. If it > * hasn't been initialised yet, the RNG will be initialised using the default > * entropy sources. Aside from the default platform entropy sources, an > @@ -90,11 +83,7 @@ typedef md_context_t hmac_ctx_t; > * added. During initialisation, a personalisation string will be added based > * on the time, the PID, and a pointer to the random context. > */ > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > ctr_drbg_context * rand_ctx_get(); > -#else > -havege_state * rand_ctx_get(); > -#endif > > #ifdef ENABLE_PREDICTION_RESISTANCE > /** > diff --git a/src/openvpn/ssl_polarssl.c b/src/openvpn/ssl_polarssl.c > index 8f35608..fc8fa6e 100644 > --- a/src/openvpn/ssl_polarssl.c > +++ b/src/openvpn/ssl_polarssl.c > @@ -503,7 +503,6 @@ static void my_debug( void *ctx, int level, const char > *str ) > */ > void tls_ctx_personalise_random(struct tls_root_ctx *ctx) > { > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > static char old_sha256_hash[32] = {0}; > char sha256_hash[32] = {0}; > ctr_drbg_context *cd_ctx = rand_ctx_get(); > @@ -519,7 +518,6 @@ void tls_ctx_personalise_random(struct tls_root_ctx *ctx) > memcpy(old_sha256_hash, sha256_hash, sizeof(old_sha256_hash)); > } > } > -#endif /* POLARSSL_VERSION_NUMBER >= 0x01010000 */ > } > > void key_state_ssl_init(struct key_state_ssl *ks_ssl, > @@ -536,11 +534,7 @@ void key_state_ssl_init(struct key_state_ssl *ks_ssl, > ssl_set_dbg (ks_ssl->ctx, my_debug, NULL); > ssl_set_endpoint (ks_ssl->ctx, ssl_ctx->endpoint); > > -#if (POLARSSL_VERSION_NUMBER >= 0x01010000) > ssl_set_rng (ks_ssl->ctx, ctr_drbg_random, rand_ctx_get()); > -#else /* POLARSSL_VERSION_NUMBER >= 0x01010000 */ > - ssl_set_rng (ks_ssl->ctx, havege_rand, rand_ctx_get()); > -#endif /* POLARSSL_VERSION_NUMBER >= 0x01010000 */ > > ALLOC_OBJ_CLEAR (ks_ssl->ssn, ssl_session); > ssl_set_session (ks_ssl->ctx, 0, 0, ks_ssl->ssn ); > diff --git a/src/openvpn/syshead.h b/src/openvpn/syshead.h > index b14d50d..79a401b 100644 > --- a/src/openvpn/syshead.h > +++ b/src/openvpn/syshead.h > @@ -536,10 +536,7 @@ socket_defined (const socket_descriptor_t sd) > > /* Enable PolarSSL RNG prediction resistance support */ > #ifdef ENABLE_CRYPTO_POLARSSL > -#include <polarssl/version.h> > -#if POLARSSL_VERSION_NUMBER >= 0x01010000 > #define ENABLE_PREDICTION_RESISTANCE > -#endif > #endif /* ENABLE_CRYPTO_POLARSSL */ > > /* > -- > 1.7.5.4 > > > ------------------------------------------------------------------------------ > This SF email is sponsosred by: > Try Windows Azure free for 90 days Click Here > http://p.sf.net/sfu/sfd2d-msazure > _______________________________________________ > Openvpn-devel mailing list > Openvpn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/openvpn-devel