[tor-commits] [tor/master] Remove `USE_OPENSSL_BASE64` and the associated code.

nickm at torproject.org nickm at torproject.org
Thu Apr 23 13:10:05 UTC 2015


commit ba2485f7df51b2daafaff8567320c34a22731e8e
Author: Yawning Angel <yawning at schwanenlied.me>
Date:   Fri Apr 10 09:12:47 2015 +0000

    Remove `USE_OPENSSL_BASE64` and the associated code.
    
    The alternative has been available since 2007, there's no way to
    actually enable the ifdef, and it breaks on well formed but not OpenSSL
    style inputs.
---
 changes/feature15652 |    5 +++++
 src/common/crypto.c  |   47 -----------------------------------------------
 2 files changed, 5 insertions(+), 47 deletions(-)

diff --git a/changes/feature15652 b/changes/feature15652
new file mode 100644
index 0000000..d11b76f
--- /dev/null
+++ b/changes/feature15652
@@ -0,0 +1,5 @@
+  o Removed code:
+    - Remove `USE_OPENSSL_BASE64` and the corresponding fallback code and
+      always use the internal Base64 decoder. The internal decoder has been
+      part of tor since tor-0.2.0.10-alpha, and no one should be using the
+      OpenSSL one. Part of ticket 15652.
diff --git a/src/common/crypto.c b/src/common/crypto.c
index f05be2e..c7e015b 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -2500,26 +2500,6 @@ static const uint8_t base64_decode_table[256] = {
 int
 base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
 {
-#ifdef USE_OPENSSL_BASE64
-  EVP_ENCODE_CTX ctx;
-  int len, ret;
-  /* 64 bytes of input -> *up to* 48 bytes of output.
-     Plus one more byte, in case I'm wrong.
-  */
-  if (destlen < ((srclen/64)+1)*49)
-    return -1;
-  if (destlen > SIZE_T_CEILING)
-    return -1;
-
-  memset(dest, 0, destlen);
-
-  EVP_DecodeInit(&ctx);
-  EVP_DecodeUpdate(&ctx, (unsigned char*)dest, &len,
-                   (unsigned char*)src, srclen);
-  EVP_DecodeFinal(&ctx, (unsigned char*)dest, &ret);
-  ret += len;
-  return ret;
-#else
   const char *eos = src+srclen;
   uint32_t n=0;
   int n_idx=0;
@@ -2590,7 +2570,6 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
   tor_assert((dest-dest_orig) <= INT_MAX);
 
   return (int)(dest-dest_orig);
-#endif
 }
 #undef X
 #undef SP
@@ -2615,23 +2594,10 @@ digest_to_base64(char *d64, const char *digest)
 int
 digest_from_base64(char *digest, const char *d64)
 {
-#ifdef USE_OPENSSL_BASE64
-  char buf_in[BASE64_DIGEST_LEN+3];
-  char buf[256];
-  if (strlen(d64) != BASE64_DIGEST_LEN)
-    return -1;
-  memcpy(buf_in, d64, BASE64_DIGEST_LEN);
-  memcpy(buf_in+BASE64_DIGEST_LEN, "=\n\0", 3);
-  if (base64_decode(buf, sizeof(buf), buf_in, strlen(buf_in)) != DIGEST_LEN)
-    return -1;
-  memcpy(digest, buf, DIGEST_LEN);
-  return 0;
-#else
   if (base64_decode(digest, DIGEST_LEN, d64, strlen(d64)) == DIGEST_LEN)
     return 0;
   else
     return -1;
-#endif
 }
 
 /** Base64 encode DIGEST256_LINE bytes from <b>digest</b>, remove the
@@ -2653,23 +2619,10 @@ digest256_to_base64(char *d64, const char *digest)
 int
 digest256_from_base64(char *digest, const char *d64)
 {
-#ifdef USE_OPENSSL_BASE64
-  char buf_in[BASE64_DIGEST256_LEN+3];
-  char buf[256];
-  if (strlen(d64) != BASE64_DIGEST256_LEN)
-    return -1;
-  memcpy(buf_in, d64, BASE64_DIGEST256_LEN);
-  memcpy(buf_in+BASE64_DIGEST256_LEN, "=\n\0", 3);
-  if (base64_decode(buf, sizeof(buf), buf_in, strlen(buf_in)) != DIGEST256_LEN)
-    return -1;
-  memcpy(digest, buf, DIGEST256_LEN);
-  return 0;
-#else
   if (base64_decode(digest, DIGEST256_LEN, d64, strlen(d64)) == DIGEST256_LEN)
     return 0;
   else
     return -1;
-#endif
 }
 
 /** Implements base32 encoding as in RFC 4648.  Limitation: Requires





More information about the tor-commits mailing list