aboutsummaryrefslogtreecommitdiff
path: root/src/util/crypto_hkdf.c
diff options
context:
space:
mode:
authorNils Durner <durner@gnunet.org>2010-09-26 11:32:07 +0000
committerNils Durner <durner@gnunet.org>2010-09-26 11:32:07 +0000
commitda6e4e260bdf7eb4440a9ba53bcc7e497d66181f (patch)
tree76d0abcea364ac9198f2cb1479f9ff861e3c7628 /src/util/crypto_hkdf.c
parent85588b1effe525b6de67d2cb3a6bc24424a1e3f7 (diff)
downloadgnunet-da6e4e260bdf7eb4440a9ba53bcc7e497d66181f.tar.gz
gnunet-da6e4e260bdf7eb4440a9ba53bcc7e497d66181f.zip
debug outpit
Diffstat (limited to 'src/util/crypto_hkdf.c')
-rw-r--r--src/util/crypto_hkdf.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/util/crypto_hkdf.c b/src/util/crypto_hkdf.c
index cdca69ff4..e442aef1c 100644
--- a/src/util/crypto_hkdf.c
+++ b/src/util/crypto_hkdf.c
@@ -32,6 +32,8 @@
32#include "platform.h" 32#include "platform.h"
33#include "gnunet_crypto_lib.h" 33#include "gnunet_crypto_lib.h"
34 34
35#define DEBUG_HKDF GNUNET_NO
36
35/** 37/**
36 * @brief Compute the HMAC 38 * @brief Compute the HMAC
37 * @param mac gcrypt MAC handle 39 * @param mac gcrypt MAC handle
@@ -75,6 +77,20 @@ getPRK (gcry_md_hd_t mac, const void *xts, const unsigned long long xts_len,
75 return GNUNET_YES; 77 return GNUNET_YES;
76} 78}
77 79
80#if DEBUG_HKDF
81static void dump(char *src, void *p, unsigned int l)
82{
83 unsigned int i;
84
85 printf("\n%s: ", src);
86 for (i = 0; i < l; i++)
87 {
88 printf("%2x", (int) ((unsigned char *) p)[i]);
89 }
90 printf("\n");
91}
92#endif
93
78/** 94/**
79 * @brief Derive key 95 * @brief Derive key
80 * @param xtr_algo hash algorithm for the extraction phase, GCRY_MD_... 96 * @param xtr_algo hash algorithm for the extraction phase, GCRY_MD_...
@@ -118,6 +134,9 @@ GNUNET_CRYPTO_hkdf (int xtr_algo, int prf_algo, const void *xts,
118 if (getPRK (xtr, xts, xts_len, skm, skm_len, prk) 134 if (getPRK (xtr, xts, xts_len, skm, skm_len, prk)
119 != GNUNET_YES) 135 != GNUNET_YES)
120 goto hkdf_error; 136 goto hkdf_error;
137#if DEBUG_HKDF
138 dump("PRK", prk, xtr_len);
139#endif
121 140
122 t = out_len / k; 141 t = out_len / k;
123 d = out_len % k; 142 d = out_len % k;
@@ -130,6 +149,9 @@ GNUNET_CRYPTO_hkdf (int xtr_algo, int prf_algo, const void *xts,
130 memcpy (plain, ctx, ctx_len); 149 memcpy (plain, ctx, ctx_len);
131 memset (plain + ctx_len, 1, 1); 150 memset (plain + ctx_len, 1, 1);
132 gcry_md_reset (prf); 151 gcry_md_reset (prf);
152#if DEBUG_HKDF
153 dump("K(1)", plain, plain_len);
154#endif
133 hc = doHMAC (prf, prk, xtr_len, plain, ctx_len + 1); 155 hc = doHMAC (prf, prk, xtr_len, plain, ctx_len + 1);
134 if (hc == NULL) 156 if (hc == NULL)
135 goto hkdf_error; 157 goto hkdf_error;
@@ -146,6 +168,9 @@ GNUNET_CRYPTO_hkdf (int xtr_algo, int prf_algo, const void *xts,
146 memcpy (plain, result - k, k); 168 memcpy (plain, result - k, k);
147 memset (plain + k + ctx_len, i + 1, 1); 169 memset (plain + k + ctx_len, i + 1, 1);
148 gcry_md_reset (prf); 170 gcry_md_reset (prf);
171#if DEBUG_HKDF
172 dump("K(i+1)", plain, plain_len);
173#endif
149 hc = doHMAC (prf, prk, xtr_len, plain, plain_len); 174 hc = doHMAC (prf, prk, xtr_len, plain, plain_len);
150 if (hc == NULL) 175 if (hc == NULL)
151 goto hkdf_error; 176 goto hkdf_error;
@@ -160,11 +185,17 @@ GNUNET_CRYPTO_hkdf (int xtr_algo, int prf_algo, const void *xts,
160 memcpy (plain, result - k, k); 185 memcpy (plain, result - k, k);
161 memset (plain + k + ctx_len, i + 1, 1); 186 memset (plain + k + ctx_len, i + 1, 1);
162 gcry_md_reset (prf); 187 gcry_md_reset (prf);
188#if DEBUG_HKDF
189 dump("K(t):d", plain, plain_len);
190#endif
163 hc = doHMAC (prf, prk, xtr_len, plain, plain_len); 191 hc = doHMAC (prf, prk, xtr_len, plain, plain_len);
164 if (hc == NULL) 192 if (hc == NULL)
165 goto hkdf_error; 193 goto hkdf_error;
166 memcpy (result, hc, d); 194 memcpy (result, hc, d);
167 } 195 }
196#if DEBUG_HKDF
197 dump("result", result - k, out_len);
198#endif
168 199
169 ret = GNUNET_YES; 200 ret = GNUNET_YES;
170 goto hkdf_ok; 201 goto hkdf_ok;