diff options
Diffstat (limited to 'src/util/gnunet-crypto-tvg.c')
-rw-r--r-- | src/util/gnunet-crypto-tvg.c | 186 |
1 files changed, 111 insertions, 75 deletions
diff --git a/src/util/gnunet-crypto-tvg.c b/src/util/gnunet-crypto-tvg.c index 7d151c10b..c3fead62e 100644 --- a/src/util/gnunet-crypto-tvg.c +++ b/src/util/gnunet-crypto-tvg.c | |||
@@ -86,62 +86,84 @@ run (void *cls, | |||
86 | display_data (" output", &hc, sizeof (struct GNUNET_HashCode)); | 86 | display_data (" output", &hc, sizeof (struct GNUNET_HashCode)); |
87 | } | 87 | } |
88 | { | 88 | { |
89 | struct GNUNET_CRYPTO_EcdhePrivateKey *priv1; | 89 | struct GNUNET_CRYPTO_EcdhePrivateKey priv1; |
90 | struct GNUNET_CRYPTO_EcdhePublicKey pub1; | 90 | struct GNUNET_CRYPTO_EcdhePublicKey pub1; |
91 | struct GNUNET_CRYPTO_EcdhePrivateKey *priv2; | 91 | struct GNUNET_CRYPTO_EcdhePrivateKey priv2; |
92 | struct GNUNET_HashCode skm; | 92 | struct GNUNET_HashCode skm; |
93 | priv1 = GNUNET_CRYPTO_ecdhe_key_create (); | 93 | |
94 | priv2 = GNUNET_CRYPTO_ecdhe_key_create (); | 94 | GNUNET_CRYPTO_ecdhe_key_create (&priv1); |
95 | GNUNET_CRYPTO_ecdhe_key_get_public (priv1, &pub1); | 95 | GNUNET_CRYPTO_ecdhe_key_create (&priv2); |
96 | GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_ecc_ecdh (priv2, &pub1, &skm)); | 96 | GNUNET_CRYPTO_ecdhe_key_get_public (&priv1, |
97 | &pub1); | ||
98 | GNUNET_assert (GNUNET_OK == | ||
99 | GNUNET_CRYPTO_ecc_ecdh (&priv2, | ||
100 | &pub1, | ||
101 | &skm)); | ||
97 | 102 | ||
98 | printf ("ecdhe key:\n"); | 103 | printf ("ecdhe key:\n"); |
99 | display_data (" priv1", priv1, sizeof (struct | 104 | display_data (" priv1", |
100 | GNUNET_CRYPTO_EcdhePrivateKey)); | 105 | &priv1, |
101 | display_data (" pub1", &pub1, sizeof (struct | 106 | sizeof (struct GNUNET_CRYPTO_EcdhePrivateKey)); |
102 | GNUNET_CRYPTO_EcdhePublicKey)); | 107 | display_data (" pub1", |
103 | display_data (" priv2", priv2, sizeof (struct | 108 | &pub1, |
104 | GNUNET_CRYPTO_EcdhePrivateKey)); | 109 | sizeof (struct GNUNET_CRYPTO_EcdhePublicKey)); |
105 | display_data (" skm", &skm, sizeof (struct GNUNET_HashCode)); | 110 | display_data (" priv2", |
106 | GNUNET_free (priv1); | 111 | &priv2, |
107 | GNUNET_free (priv2); | 112 | sizeof (struct GNUNET_CRYPTO_EcdhePrivateKey)); |
113 | display_data (" skm", | ||
114 | &skm, | ||
115 | sizeof (struct GNUNET_HashCode)); | ||
108 | } | 116 | } |
109 | 117 | ||
110 | { | 118 | { |
111 | struct GNUNET_CRYPTO_EddsaPrivateKey *priv; | 119 | struct GNUNET_CRYPTO_EddsaPrivateKey priv; |
112 | struct GNUNET_CRYPTO_EddsaPublicKey pub; | 120 | struct GNUNET_CRYPTO_EddsaPublicKey pub; |
113 | priv = GNUNET_CRYPTO_eddsa_key_create (); | 121 | |
114 | GNUNET_CRYPTO_eddsa_key_get_public (priv, &pub); | 122 | GNUNET_CRYPTO_eddsa_key_create (&priv); |
123 | GNUNET_CRYPTO_eddsa_key_get_public (&priv, | ||
124 | &pub); | ||
115 | 125 | ||
116 | printf ("eddsa key:\n"); | 126 | printf ("eddsa key:\n"); |
117 | display_data (" priv", priv, sizeof (struct | 127 | display_data (" priv", |
118 | GNUNET_CRYPTO_EddsaPrivateKey)); | 128 | &priv, |
119 | display_data (" pub", &pub, sizeof (struct GNUNET_CRYPTO_EddsaPublicKey)); | 129 | sizeof (struct GNUNET_CRYPTO_EddsaPrivateKey)); |
120 | GNUNET_free (priv); | 130 | display_data (" pub", |
131 | &pub, | ||
132 | sizeof (struct GNUNET_CRYPTO_EddsaPublicKey)); | ||
121 | } | 133 | } |
122 | { | 134 | { |
123 | struct GNUNET_CRYPTO_EddsaPrivateKey *priv; | 135 | struct GNUNET_CRYPTO_EddsaPrivateKey priv; |
124 | struct GNUNET_CRYPTO_EddsaPublicKey pub; | 136 | struct GNUNET_CRYPTO_EddsaPublicKey pub; |
125 | struct GNUNET_CRYPTO_EddsaSignature sig; | 137 | struct GNUNET_CRYPTO_EddsaSignature sig; |
126 | struct TestSignatureDataPS data = { 0 }; | 138 | struct TestSignatureDataPS data = { 0 }; |
127 | priv = GNUNET_CRYPTO_eddsa_key_create (); | 139 | |
128 | GNUNET_CRYPTO_eddsa_key_get_public (priv, &pub); | 140 | GNUNET_CRYPTO_eddsa_key_create (&priv); |
129 | data.purpose.size = htonl (sizeof (struct TestSignatureDataPS)); | 141 | GNUNET_CRYPTO_eddsa_key_get_public (&priv, |
130 | data.purpose.size = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); | 142 | &pub); |
131 | GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_eddsa_sign (priv, &data.purpose, | 143 | data.purpose.size = htonl (sizeof (data)); |
132 | &sig)); | 144 | data.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); |
133 | GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_eddsa_verify (0, | 145 | GNUNET_CRYPTO_eddsa_sign (&priv, |
134 | &data.purpose, | 146 | &data, |
135 | &sig, | 147 | &sig); |
136 | &pub)); | 148 | GNUNET_assert (GNUNET_OK == |
149 | GNUNET_CRYPTO_eddsa_verify (GNUNET_SIGNATURE_PURPOSE_TEST, | ||
150 | &data, | ||
151 | &sig, | ||
152 | &pub)); | ||
137 | 153 | ||
138 | printf ("eddsa sig:\n"); | 154 | printf ("eddsa sig:\n"); |
139 | display_data (" priv", priv, sizeof (struct | 155 | display_data (" priv", |
140 | GNUNET_CRYPTO_EddsaPrivateKey)); | 156 | &priv, |
141 | display_data (" pub", &pub, sizeof (struct GNUNET_CRYPTO_EddsaPublicKey)); | 157 | sizeof (struct GNUNET_CRYPTO_EddsaPrivateKey)); |
142 | display_data (" data", &data, sizeof (struct TestSignatureDataPS)); | 158 | display_data (" pub", |
143 | display_data (" sig", &sig, sizeof (struct GNUNET_CRYPTO_EddsaSignature)); | 159 | &pub, |
144 | GNUNET_free (priv); | 160 | sizeof (struct GNUNET_CRYPTO_EddsaPublicKey)); |
161 | display_data (" data", | ||
162 | &data, | ||
163 | sizeof (struct TestSignatureDataPS)); | ||
164 | display_data (" sig", | ||
165 | &sig, | ||
166 | sizeof (struct GNUNET_CRYPTO_EddsaSignature)); | ||
145 | } | 167 | } |
146 | 168 | ||
147 | { | 169 | { |
@@ -151,15 +173,16 @@ run (void *cls, | |||
151 | char *salt = "I'm very salty"; | 173 | char *salt = "I'm very salty"; |
152 | char *ctx = "I'm a context chunk, also known as 'info' in the RFC"; | 174 | char *ctx = "I'm a context chunk, also known as 'info' in the RFC"; |
153 | 175 | ||
154 | GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_kdf (&out, | 176 | GNUNET_assert (GNUNET_OK == |
155 | out_len, | 177 | GNUNET_CRYPTO_kdf (&out, |
156 | salt, | 178 | out_len, |
157 | strlen (salt), | 179 | salt, |
158 | ikm, | 180 | strlen (salt), |
159 | strlen (ikm), | 181 | ikm, |
160 | ctx, | 182 | strlen (ikm), |
161 | strlen (ctx), | 183 | ctx, |
162 | NULL)); | 184 | strlen (ctx), |
185 | NULL)); | ||
163 | 186 | ||
164 | printf ("kdf:\n"); | 187 | printf ("kdf:\n"); |
165 | display_data (" salt", salt, strlen (salt)); | 188 | display_data (" salt", salt, strlen (salt)); |
@@ -169,28 +192,34 @@ run (void *cls, | |||
169 | display_data (" out", out, out_len); | 192 | display_data (" out", out, out_len); |
170 | } | 193 | } |
171 | { | 194 | { |
172 | struct GNUNET_CRYPTO_EcdhePrivateKey *priv_ecdhe; | 195 | struct GNUNET_CRYPTO_EcdhePrivateKey priv_ecdhe; |
173 | struct GNUNET_CRYPTO_EcdhePublicKey pub_ecdhe; | 196 | struct GNUNET_CRYPTO_EcdhePublicKey pub_ecdhe; |
174 | struct GNUNET_CRYPTO_EddsaPrivateKey *priv_eddsa; | 197 | struct GNUNET_CRYPTO_EddsaPrivateKey priv_eddsa; |
175 | struct GNUNET_CRYPTO_EddsaPublicKey pub_eddsa; | 198 | struct GNUNET_CRYPTO_EddsaPublicKey pub_eddsa; |
176 | struct GNUNET_HashCode key_material; | 199 | struct GNUNET_HashCode key_material; |
177 | priv_ecdhe = GNUNET_CRYPTO_ecdhe_key_create (); | 200 | |
178 | GNUNET_CRYPTO_ecdhe_key_get_public (priv_ecdhe, &pub_ecdhe); | 201 | GNUNET_CRYPTO_ecdhe_key_create (&priv_ecdhe); |
179 | priv_eddsa = GNUNET_CRYPTO_eddsa_key_create (); | 202 | GNUNET_CRYPTO_ecdhe_key_get_public (&priv_ecdhe, &pub_ecdhe); |
180 | GNUNET_CRYPTO_eddsa_key_get_public (priv_eddsa, &pub_eddsa); | 203 | GNUNET_CRYPTO_eddsa_key_create (&priv_eddsa); |
181 | GNUNET_CRYPTO_ecdh_eddsa (priv_ecdhe, &pub_eddsa, &key_material); | 204 | GNUNET_CRYPTO_eddsa_key_get_public (&priv_eddsa, &pub_eddsa); |
205 | GNUNET_CRYPTO_ecdh_eddsa (&priv_ecdhe, &pub_eddsa, &key_material); | ||
182 | 206 | ||
183 | printf ("eddsa_ecdh:\n"); | 207 | printf ("eddsa_ecdh:\n"); |
184 | display_data (" priv_ecdhe", priv_ecdhe, sizeof (struct | 208 | display_data (" priv_ecdhe", |
185 | GNUNET_CRYPTO_EcdhePrivateKey)); | 209 | &priv_ecdhe, |
186 | display_data (" pub_ecdhe", &pub_ecdhe, sizeof (struct | 210 | sizeof (struct GNUNET_CRYPTO_EcdhePrivateKey)); |
187 | GNUNET_CRYPTO_EcdhePublicKey)); | 211 | display_data (" pub_ecdhe", |
188 | display_data (" priv_eddsa", priv_eddsa, sizeof (struct | 212 | &pub_ecdhe, |
189 | GNUNET_CRYPTO_EddsaPrivateKey)); | 213 | sizeof (struct GNUNET_CRYPTO_EcdhePublicKey)); |
190 | display_data (" pub_eddsa", &pub_eddsa, sizeof (struct | 214 | display_data (" priv_eddsa", |
191 | GNUNET_CRYPTO_EddsaPublicKey)); | 215 | &priv_eddsa, |
192 | display_data (" key_material", &key_material, sizeof (struct | 216 | sizeof (struct GNUNET_CRYPTO_EddsaPrivateKey)); |
193 | GNUNET_HashCode)); | 217 | display_data (" pub_eddsa", |
218 | &pub_eddsa, | ||
219 | sizeof (struct GNUNET_CRYPTO_EddsaPublicKey)); | ||
220 | display_data (" key_material", | ||
221 | &key_material, | ||
222 | sizeof (struct GNUNET_HashCode)); | ||
194 | } | 223 | } |
195 | 224 | ||
196 | { | 225 | { |
@@ -200,23 +229,29 @@ run (void *cls, | |||
200 | struct GNUNET_CRYPTO_RsaBlindingKeySecret bks; | 229 | struct GNUNET_CRYPTO_RsaBlindingKeySecret bks; |
201 | struct GNUNET_CRYPTO_RsaSignature *blinded_sig; | 230 | struct GNUNET_CRYPTO_RsaSignature *blinded_sig; |
202 | struct GNUNET_CRYPTO_RsaSignature *sig; | 231 | struct GNUNET_CRYPTO_RsaSignature *sig; |
203 | char *blinded_data; | 232 | void *blinded_data; |
204 | size_t blinded_len; | 233 | size_t blinded_len; |
205 | char *public_enc_data; | 234 | void *public_enc_data; |
206 | size_t public_enc_len; | 235 | size_t public_enc_len; |
207 | char *blinded_sig_enc_data; | 236 | void *blinded_sig_enc_data; |
208 | size_t blinded_sig_enc_length; | 237 | size_t blinded_sig_enc_length; |
209 | char *sig_enc_data; | 238 | void *sig_enc_data; |
210 | size_t sig_enc_length; | 239 | size_t sig_enc_length; |
211 | skey = GNUNET_CRYPTO_rsa_private_key_create (2048); | 240 | skey = GNUNET_CRYPTO_rsa_private_key_create (2048); |
212 | pkey = GNUNET_CRYPTO_rsa_private_key_get_public (skey); | 241 | pkey = GNUNET_CRYPTO_rsa_private_key_get_public (skey); |
213 | GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, &message_hash, | 242 | GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, |
243 | &message_hash, | ||
214 | sizeof (struct GNUNET_HashCode)); | 244 | sizeof (struct GNUNET_HashCode)); |
215 | GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, &bks, sizeof (struct | 245 | GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, |
216 | GNUNET_CRYPTO_RsaBlindingKeySecret)); | 246 | &bks, |
217 | GNUNET_assert (GNUNET_YES == GNUNET_CRYPTO_rsa_blind (&message_hash, &bks, | 247 | sizeof (struct |
218 | pkey, &blinded_data, | 248 | GNUNET_CRYPTO_RsaBlindingKeySecret)); |
219 | &blinded_len)); | 249 | GNUNET_assert (GNUNET_YES == |
250 | GNUNET_CRYPTO_rsa_blind (&message_hash, | ||
251 | &bks, | ||
252 | pkey, | ||
253 | &blinded_data, | ||
254 | &blinded_len)); | ||
220 | blinded_sig = GNUNET_CRYPTO_rsa_sign_blinded (skey, blinded_data, | 255 | blinded_sig = GNUNET_CRYPTO_rsa_sign_blinded (skey, blinded_data, |
221 | blinded_len); | 256 | blinded_len); |
222 | sig = GNUNET_CRYPTO_rsa_unblind (blinded_sig, &bks, pkey); | 257 | sig = GNUNET_CRYPTO_rsa_unblind (blinded_sig, &bks, pkey); |
@@ -275,4 +310,5 @@ main (int argc, | |||
275 | return 0; | 310 | return 0; |
276 | } | 311 | } |
277 | 312 | ||
313 | |||
278 | /* end of gnunet-crypto-tvg.c */ | 314 | /* end of gnunet-crypto-tvg.c */ |