[tor-commits] [tor/master] Fix #9043 - simplyfy the code and use EVP_PKEY_cmp instead of pkey_eq / tor_tls_evp_pkey_eq

nickm at torproject.org nickm at torproject.org
Wed Jun 12 17:02:44 UTC 2013


commit 16d1dd134a995cf62cdbcf6c2d59da7ae09d601b
Author: Marek Majkowski <marek at popcount.org>
Date:   Mon Jun 10 20:30:57 2013 +0100

    Fix #9043 - simplyfy the code and use EVP_PKEY_cmp instead of pkey_eq / tor_tls_evp_pkey_eq
---
 src/common/tortls.c    |   25 +------------------------
 src/common/tortls.h    |    5 -----
 src/test/include.am    |    1 -
 src/test/test.c        |    2 --
 src/test/test_tortls.c |   45 ---------------------------------------------
 5 files changed, 1 insertion(+), 77 deletions(-)

diff --git a/src/common/tortls.c b/src/common/tortls.c
index c0e3603..6bd557b 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -979,29 +979,6 @@ tor_tls_cert_get_key(tor_cert_t *cert)
   return result;
 }
 
-/** Return true iff <b>a</b> and <b>b</b> represent the same public key. */
-int
-tor_tls_evp_pkey_eq(EVP_PKEY *a, EVP_PKEY *b)
-{
-  /* We'd like to do this, but openssl 0.9.7 doesn't have it:
-     return EVP_PKEY_cmp(a,b) == 1;
-  */
-  unsigned char *a_enc = NULL, *b_enc = NULL;
-  int a_len, b_len, result;
-  a_len = i2d_PublicKey(a, &a_enc);
-  b_len = i2d_PublicKey(b, &b_enc);
-  if (a_len != b_len || a_len < 0) {
-    result = 0;
-  } else {
-    result = tor_memeq(a_enc, b_enc, a_len);
-  }
-  if (a_enc)
-    OPENSSL_free(a_enc);
-  if (b_enc)
-    OPENSSL_free(b_enc);
-  return result;
-}
-
 /** Return true iff the other side of <b>tls</b> has authenticated to us, and
  * the key certified in <b>cert</b> is the same as the key they used to do it.
  */
@@ -1017,7 +994,7 @@ tor_tls_cert_matches_key(const tor_tls_t *tls, const tor_cert_t *cert)
   link_key = X509_get_pubkey(peercert);
   cert_key = X509_get_pubkey(cert->cert);
 
-  result = link_key && cert_key && tor_tls_evp_pkey_eq(cert_key, link_key);
+  result = link_key && cert_key && EVP_PKEY_cmp(cert_key, link_key) == 1;
 
   X509_free(peercert);
   if (link_key)
diff --git a/src/common/tortls.h b/src/common/tortls.h
index c71ed57..49c488b 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -138,10 +138,5 @@ int tor_tls_cert_is_valid(int severity,
                           int check_rsa_1024);
 const char *tor_tls_get_ciphersuite_name(tor_tls_t *tls);
 
-#ifdef TORTLS_PRIVATE
-/* Prototypes for private functions only used by the unit tests. */
-int tor_tls_evp_pkey_eq(EVP_PKEY *a, EVP_PKEY *b);
-#endif
-
 #endif
 
diff --git a/src/test/include.am b/src/test/include.am
index af95d44..112d1a7 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -23,7 +23,6 @@ src_test_test_SOURCES = \
 	src/test/test_microdesc.c \
 	src/test/test_pt.c \
 	src/test/test_replay.c \
-	src/test/test_tortls.c \
 	src/test/test_util.c \
 	src/test/test_config.c \
 	src/ext/tinytest.c
diff --git a/src/test/test.c b/src/test/test.c
index da5b4e5..a9cf899 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -2133,7 +2133,6 @@ extern struct testcase_t config_tests[];
 extern struct testcase_t introduce_tests[];
 extern struct testcase_t replaycache_tests[];
 extern struct testcase_t cell_format_tests[];
-extern struct testcase_t tortls_tests[];
 
 static struct testgroup_t testgroups[] = {
   { "", test_array },
@@ -2148,7 +2147,6 @@ static struct testgroup_t testgroups[] = {
   { "pt/", pt_tests },
   { "config/", config_tests },
   { "replaycache/", replaycache_tests },
-  { "tortls/", tortls_tests },
   { "introduce/", introduce_tests },
   END_OF_GROUPS
 };
diff --git a/src/test/test_tortls.c b/src/test/test_tortls.c
deleted file mode 100644
index 5409ced..0000000
--- a/src/test/test_tortls.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (c) 2013-2013, The Tor Project, Inc. */
-/* See LICENSE for licensing information */
-
-#include <openssl/evp.h>
-
-#include "orconfig.h"
-#define CRYPTO_PRIVATE
-#define TORTLS_PRIVATE
-#include "or.h"
-#include "test.h"
-
-static void
-test_tortls_evp_pkey_eq(void)
-{
-  crypto_pk_t *pk1 = NULL, *pk2 = NULL;
-  EVP_PKEY *evp1 = NULL, *evp2 = NULL;
-
-  pk1 = pk_generate(0);
-  pk2 = pk_generate(1);
-  test_assert(pk1 && pk2);
-
-  evp1 = crypto_pk_get_evp_pkey_(pk1, 0);
-  evp2 = crypto_pk_get_evp_pkey_(pk2, 0);
-  test_assert(evp1 && evp2);
-
-  test_assert(tor_tls_evp_pkey_eq(evp1, evp2) == 0);
-  test_assert(tor_tls_evp_pkey_eq(evp1, evp1) == 1);
-
- done:
-  crypto_pk_free(pk1);
-  crypto_pk_free(pk2);
-  if (evp1)
-    EVP_PKEY_free(evp1);
-  if (evp2)
-    EVP_PKEY_free(evp2);
-}
-
-#define TORTLS_LEGACY(name) \
-  { #name, legacy_test_helper, 0, &legacy_setup, test_tortls_ ## name }
-
-struct testcase_t tortls_tests[] = {
-  TORTLS_LEGACY(evp_pkey_eq),
-  END_OF_TESTCASES
-};
-





More information about the tor-commits mailing list