aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/util/crypto_rsa.c12
-rw-r--r--src/util/test_crypto_rsa.c9
2 files changed, 18 insertions, 3 deletions
diff --git a/src/util/crypto_rsa.c b/src/util/crypto_rsa.c
index 9896d8dce..2aadf2fc4 100644
--- a/src/util/crypto_rsa.c
+++ b/src/util/crypto_rsa.c
@@ -222,7 +222,6 @@ GNUNET_CRYPTO_rsa_private_key_decode (const char *buf,
222 size_t len) 222 size_t len)
223{ 223{
224 struct GNUNET_CRYPTO_rsa_PrivateKey *key; 224 struct GNUNET_CRYPTO_rsa_PrivateKey *key;
225
226 key = GNUNET_new (struct GNUNET_CRYPTO_rsa_PrivateKey); 225 key = GNUNET_new (struct GNUNET_CRYPTO_rsa_PrivateKey);
227 if (0 != 226 if (0 !=
228 gcry_sexp_new (&key->sexp, 227 gcry_sexp_new (&key->sexp,
@@ -230,11 +229,18 @@ GNUNET_CRYPTO_rsa_private_key_decode (const char *buf,
230 len, 229 len,
231 0)) 230 0))
232 { 231 {
233 GNUNET_break_op (0); 232 LOG (GNUNET_ERROR_TYPE_WARNING,
233 "Decoded private key is not valid\n");
234 GNUNET_free (key); 234 GNUNET_free (key);
235 return NULL; 235 return NULL;
236 } 236 }
237 /* FIXME: verify that this is an RSA private key */ 237 if (0 != gcry_pk_testkey (key->sexp))
238 {
239 LOG (GNUNET_ERROR_TYPE_WARNING,
240 "Decoded private key is not valid\n");
241 GNUNET_CRYPTO_rsa_private_key_free (key);
242 return NULL;
243 }
238 return key; 244 return key;
239} 245}
240 246
diff --git a/src/util/test_crypto_rsa.c b/src/util/test_crypto_rsa.c
index fc41dc24f..b2d749ab9 100644
--- a/src/util/test_crypto_rsa.c
+++ b/src/util/test_crypto_rsa.c
@@ -54,6 +54,15 @@ main (int argc,
54 char *enc; 54 char *enc;
55 enc = NULL; 55 enc = NULL;
56 size = GNUNET_CRYPTO_rsa_private_key_encode (priv, &enc); 56 size = GNUNET_CRYPTO_rsa_private_key_encode (priv, &enc);
57 /* Decoding */
58 GNUNET_CRYPTO_rsa_private_key_free (priv);
59 priv = NULL;
60 priv = GNUNET_CRYPTO_rsa_private_key_decode (enc, size);
61 GNUNET_assert (NULL != priv);
62 GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
63 enc, size);
64 GNUNET_assert (NULL == GNUNET_CRYPTO_rsa_private_key_decode (enc, size));
65 (void) fprintf (stderr, "The above warning is expected.\n");
57 GNUNET_free (enc); 66 GNUNET_free (enc);
58 67
59 /* try ordinary sig first */ 68 /* try ordinary sig first */