commit accb726db6ebd7cf55df719a254b7681402c2aa9 Author: Nick Mathewson nickm@torproject.org Date: Fri Nov 13 09:46:32 2015 -0500
Remove a little duplicated code in TAP key expansion
patch from pfrankw; closes 17587. --- changes/cleanup_17587 | 3 +++ src/common/crypto.c | 13 +++++-------- 2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/changes/cleanup_17587 b/changes/cleanup_17587 new file mode 100644 index 0000000..05e00fd --- /dev/null +++ b/changes/cleanup_17587 @@ -0,0 +1,3 @@ + o Code simplifications and refactorings: + - Clean up a little duplicated code in crypto_expand_key_material_TAP. + Closes ticket 17587; patch from "pfrankw". diff --git a/src/common/crypto.c b/src/common/crypto.c index 4c41d44..ffbeb81 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -2159,7 +2159,7 @@ int crypto_expand_key_material_TAP(const uint8_t *key_in, size_t key_in_len, uint8_t *key_out, size_t key_out_len) { - int i; + int i, r = -1; uint8_t *cp, *tmp = tor_malloc(key_in_len+1); uint8_t digest[DIGEST_LEN];
@@ -2171,19 +2171,16 @@ crypto_expand_key_material_TAP(const uint8_t *key_in, size_t key_in_len, ++i, cp += DIGEST_LEN) { tmp[key_in_len] = i; if (crypto_digest((char*)digest, (const char *)tmp, key_in_len+1)) - goto err; + goto exit; memcpy(cp, digest, MIN(DIGEST_LEN, key_out_len-(cp-key_out))); } - memwipe(tmp, 0, key_in_len+1); - tor_free(tmp); - memwipe(digest, 0, sizeof(digest)); - return 0;
- err: + r = 0; + exit: memwipe(tmp, 0, key_in_len+1); tor_free(tmp); memwipe(digest, 0, sizeof(digest)); - return -1; + return r; }
/** Expand some secret key material according to RFC5869, using SHA256 as the