]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Use safe_mem_is_zero for checking curve25519 output for 0-ness
authorNick Mathewson <nickm@torproject.org>
Wed, 26 Dec 2012 03:25:09 +0000 (22:25 -0500)
committerNick Mathewson <nickm@torproject.org>
Thu, 3 Jan 2013 16:29:48 +0000 (11:29 -0500)
This should make the intent more explicit.  Probably needless, though.

src/common/crypto_curve25519.c
src/or/onion_ntor.c

index 60347065d1cd7831e132cac2ed06f42bd4120267..f3ecdb5c7e0287bf5b816b96a5f675804d9c3f60 100644 (file)
@@ -49,11 +49,7 @@ curve25519_impl(uint8_t *output, const uint8_t *secret,
 int
 curve25519_public_key_is_ok(const curve25519_public_key_t *key)
 {
-  static const uint8_t zero[] =
-    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-
-  return tor_memneq(key->public_key, zero, CURVE25519_PUBKEY_LEN);
+  return !safe_mem_is_zero(key->public_key, CURVE25519_PUBKEY_LEN);
 }
 
 /** Generate a new keypair and return the secret key.  If <b>extra_strong</b>
index 8eab55acfea87816b80f2aec7f086fdf13672d40..b601d1ebb187d60850ffe1adbcef758f925be066 100644 (file)
@@ -167,18 +167,10 @@ onion_skin_ntor_server_handshake(const uint8_t *onion_skin,
 
   /* build secret_input */
   curve25519_handshake(si, &s.seckey_y, &s.pubkey_X);
-  bad = tor_memeq(si,
-                  "\x00\x00\x00\x00\x00\x00\x00\x00"
-                  "\x00\x00\x00\x00\x00\x00\x00\x00"
-                  "\x00\x00\x00\x00\x00\x00\x00\x00"
-                  "\x00\x00\x00\x00\x00\x00\x00\x00", 32);
+  bad = safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
   si += CURVE25519_OUTPUT_LEN;
   curve25519_handshake(si, &keypair_bB->seckey, &s.pubkey_X);
-  bad |= tor_memeq(si,
-                   "\x00\x00\x00\x00\x00\x00\x00\x00"
-                   "\x00\x00\x00\x00\x00\x00\x00\x00"
-                   "\x00\x00\x00\x00\x00\x00\x00\x00"
-                   "\x00\x00\x00\x00\x00\x00\x00\x00", 32);
+  bad |= safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
   si += CURVE25519_OUTPUT_LEN;
 
   APPEND(si, my_node_id, DIGEST_LEN);
@@ -257,19 +249,11 @@ onion_skin_ntor_client_handshake(
 
   /* Compute secret_input */
   curve25519_handshake(si, &handshake_state->seckey_x, &s.pubkey_Y);
-  bad = tor_memeq(si,
-                  "\x00\x00\x00\x00\x00\x00\x00\x00"
-                  "\x00\x00\x00\x00\x00\x00\x00\x00"
-                  "\x00\x00\x00\x00\x00\x00\x00\x00"
-                  "\x00\x00\x00\x00\x00\x00\x00\x00", 32);
+  bad = safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
   si += CURVE25519_OUTPUT_LEN;
   curve25519_handshake(si, &handshake_state->seckey_x,
                        &handshake_state->pubkey_B);
-  bad |= tor_memeq(si,
-                   "\x00\x00\x00\x00\x00\x00\x00\x00"
-                   "\x00\x00\x00\x00\x00\x00\x00\x00"
-                   "\x00\x00\x00\x00\x00\x00\x00\x00"
-                   "\x00\x00\x00\x00\x00\x00\x00\x00", 32);
+  bad |= safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
   si += CURVE25519_OUTPUT_LEN;
   APPEND(si, handshake_state->router_id, DIGEST_LEN);
   APPEND(si, handshake_state->pubkey_B.public_key, CURVE25519_PUBKEY_LEN);