diff options
author | Nils Durner <durner@gnunet.org> | 2010-09-26 11:32:07 +0000 |
---|---|---|
committer | Nils Durner <durner@gnunet.org> | 2010-09-26 11:32:07 +0000 |
commit | da6e4e260bdf7eb4440a9ba53bcc7e497d66181f (patch) | |
tree | 76d0abcea364ac9198f2cb1479f9ff861e3c7628 /src/util/crypto_hkdf.c | |
parent | 85588b1effe525b6de67d2cb3a6bc24424a1e3f7 (diff) | |
download | gnunet-da6e4e260bdf7eb4440a9ba53bcc7e497d66181f.tar.gz gnunet-da6e4e260bdf7eb4440a9ba53bcc7e497d66181f.zip |
debug outpit
Diffstat (limited to 'src/util/crypto_hkdf.c')
-rw-r--r-- | src/util/crypto_hkdf.c | 31 |
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 | ||
81 | static 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; |