diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | hkdf.c | 25 |
2 files changed, 16 insertions, 14 deletions
@@ -1,5 +1,10 @@ 2017-09-06 Niels Möller <nisse@lysator.liu.se> + * hkdf.c (hkdf_expand): Eliminate a (signed) ssize_t variable, use + break rather than return at loop termination. + +2017-09-06 Niels Möller <nisse@lysator.liu.se> + HKDF implementation, contributed by Nikos Mavrogiannopoulos. * hkdf.c (hkdf_extract, hkdf_expand): New file, new functions. * hkdf.h: New file. @@ -63,23 +63,20 @@ hkdf_expand(void *mac_ctx, size_t length, uint8_t *dst) { uint8_t i = 1; - ssize_t left = length; - if (!left) + if (!length) return; - for (;; dst += digest_size, left -= digest_size, i++) { - update(mac_ctx, info_size, info); - update(mac_ctx, 1, &i); - if (left <= digest_size) { - if (left > 0) - digest(mac_ctx, left, dst); - return; - } + for (;; dst += digest_size, length -= digest_size, i++) + { + update(mac_ctx, info_size, info); + update(mac_ctx, 1, &i); + if (length <= digest_size) + break; - digest(mac_ctx, digest_size, dst); - update(mac_ctx, digest_size, dst); - } + digest(mac_ctx, digest_size, dst); + update(mac_ctx, digest_size, dst); + } - return; + digest(mac_ctx, length, dst); } |