summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2017-09-06 22:30:55 +0200
committerNiels Möller <nisse@lysator.liu.se>2017-09-06 22:30:55 +0200
commit94f8644fcd59e2aa4548657241f4526a2b15ca03 (patch)
tree033f0e25ec4eea822d28ab1118ebfca777caf5a8
parent89abb7b8242515d54010d44efc6d1f8e88f2ab93 (diff)
downloadnettle-hkdf-support.tar.gz
Minor reorganization of hkdf_expand.hkdf-support
* hkdf.c (hkdf_expand): Eliminate a (signed) ssize_t variable, use break rather than return at loop termination.
-rw-r--r--ChangeLog5
-rw-r--r--hkdf.c25
2 files changed, 16 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 776597a6..145376c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/hkdf.c b/hkdf.c
index 73b10665..c55c42fd 100644
--- a/hkdf.c
+++ b/hkdf.c
@@ -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);
}