aboutsummaryrefslogtreecommitdiff
path: root/src/util/crypto_rsa.c
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2011-03-02 11:39:01 +0000
committerNathan S. Evans <evans@in.tum.de>2011-03-02 11:39:01 +0000
commit2838de5efb2c74e0eff4d306c767d6beb668be41 (patch)
tree01a8f5d719c8aa6460eb38232138e65c0d8f6e34 /src/util/crypto_rsa.c
parent46ef10befdb1ab8e1fd1d7f5304648a578e7f833 (diff)
Remove useless hostkey dilly-dallying in testing.
Diffstat (limited to 'src/util/crypto_rsa.c')
-rw-r--r--src/util/crypto_rsa.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/util/crypto_rsa.c b/src/util/crypto_rsa.c
index c7b2c16eef..67fd4a7ba6 100644
--- a/src/util/crypto_rsa.c
+++ b/src/util/crypto_rsa.c
@@ -380,16 +380,25 @@ rsa_encode_key (const struct GNUNET_CRYPTO_RsaPrivateKey *hostkey)
/**
* Decode the private key from the file-format back
* to the "normal", internal format.
+ *
+ * @param buf the buffer where the private key data is stored
+ * @param len the length of the data in 'buffer'
*/
-static struct GNUNET_CRYPTO_RsaPrivateKey *
-rsa_decode_key (const struct RsaPrivateKeyBinaryEncoded *encoding)
+struct GNUNET_CRYPTO_RsaPrivateKey *
+GNUNET_CRYPTO_rsa_decode_key (const char *buf, uint16_t len)
{
struct GNUNET_CRYPTO_RsaPrivateKey *ret;
+ const struct RsaPrivateKeyBinaryEncoded *encoding = (const struct RsaPrivateKeyBinaryEncoded *)buf;
gcry_sexp_t res;
gcry_mpi_t n, e, d, p, q, u;
int rc;
size_t size;
int pos;
+ uint16_t enc_len;
+
+ enc_len = ntohs(encoding->len);
+ if (len != enc_len)
+ return NULL;
pos = 0;
size = ntohs (encoding->sizen);
@@ -718,7 +727,7 @@ GNUNET_CRYPTO_rsa_key_create_from_file (const char *filename)
GNUNET_assert (fs == GNUNET_DISK_file_read (fd, enc, fs));
len = ntohs (enc->len);
ret = NULL;
- if ((len != fs) || (NULL == (ret = rsa_decode_key (enc))))
+ if ((len != fs) || (NULL == (ret = GNUNET_CRYPTO_rsa_decode_key ((char *)enc, len))))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_