diff options
author | Nick Mathewson <nickm@torproject.org> | 2015-11-13 09:46:32 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-11-13 09:46:32 -0500 |
commit | accb726db6ebd7cf55df719a254b7681402c2aa9 (patch) | |
tree | fb659dac7cce4c53355f4d0ed6b30315b63e3a71 | |
parent | 43609fba77ec99d73bc18b9f7368c4840c4f338a (diff) | |
download | tor-accb726db6ebd7cf55df719a254b7681402c2aa9.tar.gz tor-accb726db6ebd7cf55df719a254b7681402c2aa9.zip |
Remove a little duplicated code in TAP key expansion
patch from pfrankw; closes 17587.
-rw-r--r-- | changes/cleanup_17587 | 3 | ||||
-rw-r--r-- | 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 0000000000..05e00fd9e5 --- /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 4c41d4494d..ffbeb81089 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 |