diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-01-29 17:34:37 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-01-29 17:34:37 +0100 |
commit | 41e1dd9738a58ffce765d5f837c32962907707df (patch) | |
tree | b5504190c535578a53ef3b1f6768a74150e3dc33 /src/util | |
parent | 1e3e6fa5990eb2504a69279039ee776a19ff1ec2 (diff) |
finish cleanup of /refresh/commit parsing
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/crypto.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/util/crypto.c b/src/util/crypto.c index 12f452085..25f951e86 100644 --- a/src/util/crypto.c +++ b/src/util/crypto.c @@ -269,6 +269,32 @@ TALER_refresh_encrypt (const struct TALER_RefreshLinkDecrypted *input, /** + * Decode encrypted refresh link information from buffer. + * + * @param buf buffer with refresh link data + * @param buf_len number of bytes in @a buf + * @return NULL on error (@a buf_len too small) + */ +struct TALER_RefreshLinkEncrypted * +TALER_refresh_link_encrypted_decode (const char *buf, + size_t buf_len) +{ + struct TALER_RefreshLinkEncrypted *rle; + + if (buf_len < sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)) + return NULL; + rle = GNUNET_malloc (sizeof (struct TALER_RefreshLinkEncrypted) + + buf_len - sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)); + rle->blinding_key_enc = (const char *) &rle[1]; + rle->blinding_key_enc_size = buf_len - sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey); + memcpy (rle->coin_priv_enc, + buf, + buf_len); + return rle; +} + + +/** * Check if a coin is valid; that is, whether the denomination key exists, * is not expired, and the signature is correct. * |