diff options
Diffstat (limited to 'src/util/crypto_kdf.c')
-rw-r--r-- | src/util/crypto_kdf.c | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/src/util/crypto_kdf.c b/src/util/crypto_kdf.c index ef96889b2..ac881b055 100644 --- a/src/util/crypto_kdf.c +++ b/src/util/crypto_kdf.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include "platform.h" | 30 | #include "platform.h" |
31 | #include "gnunet_crypto_lib.h" | 31 | #include "gnunet_crypto_lib.h" |
32 | 32 | ||
33 | #define LOG(kind, ...) GNUNET_log_from(kind, "util-crypto-kdf", __VA_ARGS__) | 33 | #define LOG(kind, ...) GNUNET_log_from (kind, "util-crypto-kdf", __VA_ARGS__) |
34 | 34 | ||
35 | /** | 35 | /** |
36 | * @brief Derive key | 36 | * @brief Derive key |
@@ -44,13 +44,13 @@ | |||
44 | * @return #GNUNET_YES on success | 44 | * @return #GNUNET_YES on success |
45 | */ | 45 | */ |
46 | int | 46 | int |
47 | GNUNET_CRYPTO_kdf_v(void *result, | 47 | GNUNET_CRYPTO_kdf_v (void *result, |
48 | size_t out_len, | 48 | size_t out_len, |
49 | const void *xts, | 49 | const void *xts, |
50 | size_t xts_len, | 50 | size_t xts_len, |
51 | const void *skm, | 51 | const void *skm, |
52 | size_t skm_len, | 52 | size_t skm_len, |
53 | va_list argp) | 53 | va_list argp) |
54 | { | 54 | { |
55 | /* | 55 | /* |
56 | * "Finally, we point out to a particularly advantageous instantiation using | 56 | * "Finally, we point out to a particularly advantageous instantiation using |
@@ -64,15 +64,15 @@ GNUNET_CRYPTO_kdf_v(void *result, | |||
64 | * http://eprint.iacr.org/2010/264 | 64 | * http://eprint.iacr.org/2010/264 |
65 | */ | 65 | */ |
66 | 66 | ||
67 | return GNUNET_CRYPTO_hkdf_v(result, | 67 | return GNUNET_CRYPTO_hkdf_v (result, |
68 | out_len, | 68 | out_len, |
69 | GCRY_MD_SHA512, | 69 | GCRY_MD_SHA512, |
70 | GCRY_MD_SHA256, | 70 | GCRY_MD_SHA256, |
71 | xts, | 71 | xts, |
72 | xts_len, | 72 | xts_len, |
73 | skm, | 73 | skm, |
74 | skm_len, | 74 | skm_len, |
75 | argp); | 75 | argp); |
76 | } | 76 | } |
77 | 77 | ||
78 | 78 | ||
@@ -88,25 +88,25 @@ GNUNET_CRYPTO_kdf_v(void *result, | |||
88 | * @return #GNUNET_YES on success | 88 | * @return #GNUNET_YES on success |
89 | */ | 89 | */ |
90 | int | 90 | int |
91 | GNUNET_CRYPTO_kdf(void *result, | 91 | GNUNET_CRYPTO_kdf (void *result, |
92 | size_t out_len, | 92 | size_t out_len, |
93 | const void *xts, | 93 | const void *xts, |
94 | size_t xts_len, | 94 | size_t xts_len, |
95 | const void *skm, | 95 | const void *skm, |
96 | size_t skm_len, ...) | 96 | size_t skm_len, ...) |
97 | { | 97 | { |
98 | va_list argp; | 98 | va_list argp; |
99 | int ret; | 99 | int ret; |
100 | 100 | ||
101 | va_start(argp, skm_len); | 101 | va_start (argp, skm_len); |
102 | ret = GNUNET_CRYPTO_kdf_v(result, | 102 | ret = GNUNET_CRYPTO_kdf_v (result, |
103 | out_len, | 103 | out_len, |
104 | xts, | 104 | xts, |
105 | xts_len, | 105 | xts_len, |
106 | skm, | 106 | skm, |
107 | skm_len, | 107 | skm_len, |
108 | argp); | 108 | argp); |
109 | va_end(argp); | 109 | va_end (argp); |
110 | 110 | ||
111 | return ret; | 111 | return ret; |
112 | } | 112 | } |
@@ -125,50 +125,50 @@ GNUNET_CRYPTO_kdf(void *result, | |||
125 | * @param ctx context string | 125 | * @param ctx context string |
126 | */ | 126 | */ |
127 | void | 127 | void |
128 | GNUNET_CRYPTO_kdf_mod_mpi(gcry_mpi_t *r, | 128 | GNUNET_CRYPTO_kdf_mod_mpi (gcry_mpi_t *r, |
129 | gcry_mpi_t n, | 129 | gcry_mpi_t n, |
130 | const void *xts, size_t xts_len, | 130 | const void *xts, size_t xts_len, |
131 | const void *skm, size_t skm_len, | 131 | const void *skm, size_t skm_len, |
132 | const char *ctx) | 132 | const char *ctx) |
133 | { | 133 | { |
134 | gcry_error_t rc; | 134 | gcry_error_t rc; |
135 | unsigned int nbits; | 135 | unsigned int nbits; |
136 | size_t rsize; | 136 | size_t rsize; |
137 | unsigned int ctr; | 137 | unsigned int ctr; |
138 | 138 | ||
139 | nbits = gcry_mpi_get_nbits(n); | 139 | nbits = gcry_mpi_get_nbits (n); |
140 | /* GNUNET_assert (nbits > 512); */ | 140 | /* GNUNET_assert (nbits > 512); */ |
141 | 141 | ||
142 | ctr = 0; | 142 | ctr = 0; |
143 | while (1) | 143 | while (1) |
144 | { | 144 | { |
145 | /* Ain't clear if n is always divisible by 8 */ | 145 | /* Ain't clear if n is always divisible by 8 */ |
146 | uint8_t buf[ (nbits - 1) / 8 + 1 ]; | 146 | uint8_t buf[ (nbits - 1) / 8 + 1 ]; |
147 | 147 | ||
148 | rc = GNUNET_CRYPTO_kdf(buf, | 148 | rc = GNUNET_CRYPTO_kdf (buf, |
149 | sizeof(buf), | 149 | sizeof(buf), |
150 | xts, xts_len, | 150 | xts, xts_len, |
151 | skm, skm_len, | 151 | skm, skm_len, |
152 | ctx, strlen(ctx), | 152 | ctx, strlen (ctx), |
153 | &ctr, sizeof(ctr), | 153 | &ctr, sizeof(ctr), |
154 | NULL, 0); | 154 | NULL, 0); |
155 | GNUNET_assert(GNUNET_YES == rc); | 155 | GNUNET_assert (GNUNET_YES == rc); |
156 | 156 | ||
157 | rc = gcry_mpi_scan(r, | 157 | rc = gcry_mpi_scan (r, |
158 | GCRYMPI_FMT_USG, | 158 | GCRYMPI_FMT_USG, |
159 | (const unsigned char *)buf, | 159 | (const unsigned char *) buf, |
160 | sizeof(buf), | 160 | sizeof(buf), |
161 | &rsize); | 161 | &rsize); |
162 | GNUNET_assert(0 == rc); /* Allocation erro? */ | 162 | GNUNET_assert (0 == rc); /* Allocation erro? */ |
163 | 163 | ||
164 | gcry_mpi_clear_highbit(*r, nbits); | 164 | gcry_mpi_clear_highbit (*r, nbits); |
165 | GNUNET_assert(0 == gcry_mpi_test_bit(*r, nbits)); | 165 | GNUNET_assert (0 == gcry_mpi_test_bit (*r, nbits)); |
166 | ++ctr; | 166 | ++ctr; |
167 | /* We reject this FDH if either *r > n and retry with another ctr */ | 167 | /* We reject this FDH if either *r > n and retry with another ctr */ |
168 | if (0 > gcry_mpi_cmp(*r, n)) | 168 | if (0 > gcry_mpi_cmp (*r, n)) |
169 | break; | 169 | break; |
170 | gcry_mpi_release(*r); | 170 | gcry_mpi_release (*r); |
171 | } | 171 | } |
172 | } | 172 | } |
173 | 173 | ||
174 | /* end of crypto_kdf.c */ | 174 | /* end of crypto_kdf.c */ |