diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-01-28 20:53:21 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-01-28 20:53:21 +0100 |
commit | 9c3c6295a85a03fdad9a77799e85289ce65a109b (patch) | |
tree | 4325f5a0d8f26f32effd9b2bf4c900a83a038d8a /src/include | |
parent | c4b63c13029b9d731b826ffab4a9d59005b0c6a5 (diff) | |
download | exchange-9c3c6295a85a03fdad9a77799e85289ce65a109b.tar.xz |
even cleaner separation of PostGres-specific logic, and nicer libtalerutil headers
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/Makefile.am | 7 | ||||
-rw-r--r-- | src/include/taler_amount_lib.h | 173 | ||||
-rw-r--r-- | src/include/taler_crypto_lib.h | 208 | ||||
-rw-r--r-- | src/include/taler_db_lib.h | 186 | ||||
-rw-r--r-- | src/include/taler_util.h | 341 |
5 files changed, 392 insertions, 523 deletions
diff --git a/src/include/Makefile.am b/src/include/Makefile.am index 70dee2186..40382dcc1 100644 --- a/src/include/Makefile.am +++ b/src/include/Makefile.am @@ -2,8 +2,9 @@ talerincludedir = $(includedir)/taler talerinclude_HEADERS = \ platform.h \ - taler_db_lib.h \ + taler_amount_lib.h \ + taler_crypto_lib.h \ taler_json_lib.h \ + taler_util.h \ taler_mint_service.h \ - taler_signatures.h \ - taler_util.h + taler_signatures.h diff --git a/src/include/taler_amount_lib.h b/src/include/taler_amount_lib.h new file mode 100644 index 000000000..50b34ff15 --- /dev/null +++ b/src/include/taler_amount_lib.h @@ -0,0 +1,173 @@ +/* + This file is part of TALER + (C) 2014, 2015 Christian Grothoff (and other contributing authors) + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file include/taler_amount_lib.h + * @brief amount-representation utility functions + * @author Sree Harsha Totakura <sreeharsha@totakura.in> + */ +#ifndef TALER_AMOUNT_LIB_H +#define TALER_AMOUNT_LIB_H + + +/** + * Number of characters (plus 1 for 0-termination) we use to + * represent currency names (i.e. EUR, USD, etc.). We use + * 8 for alignment (!). + */ +#define TALER_CURRENCY_LEN 8 + + +GNUNET_NETWORK_STRUCT_BEGIN + + +/** + * Amount, encoded for network transmission. + */ +struct TALER_AmountNBO +{ + /** + * Value in the main currency, in NBO. + */ + uint32_t value; + + /** + * Additinal fractional value, in NBO. + */ + uint32_t fraction; + + /** + * Type of the currency being represented. + */ + char currency[TALER_CURRENCY_LEN]; +}; + +GNUNET_NETWORK_STRUCT_END + + +/** + * Representation of monetary value in a given currency. + */ +struct TALER_Amount +{ + /** + * Value (numerator of fraction) + */ + uint32_t value; + + /** + * Fraction (denominator of fraction) + */ + uint32_t fraction; + + /** + * Currency string, left adjusted and padded with zeros. + */ + char currency[TALER_CURRENCY_LEN]; +}; + + +/** + * Parse denomination description, in the format "T : V : F". + * + * @param str denomination description + * @param denom denomination to write the result to + * @return #GNUNET_OK if the string is a valid denomination specification, + * #GNUNET_SYSERR if it is invalid. + */ +int +TALER_string_to_amount (const char *str, + struct TALER_Amount *denom); + + +/** + * Convert amount from host to network representation. + * + * @param d amount in host representation + * @return amount in network representation + */ +struct TALER_AmountNBO +TALER_amount_hton (struct TALER_Amount d); + + +/** + * Convert amount from network to host representation. + * + * @param d amount in network representation + * @return amount in host representation + */ +struct TALER_Amount +TALER_amount_ntoh (struct TALER_AmountNBO dn); + + +/** + * Compare the value/fraction of two amounts. Does not compare the currency, + * i.e. comparing amounts with the same value and fraction but different + * currency would return 0. + * + * @param a1 first amount + * @param a2 second amount + * @return result of the comparison + */ +int +TALER_amount_cmp (struct TALER_Amount a1, + struct TALER_Amount a2); + + +/** + * Perform saturating subtraction of amounts. + * + * @param a1 amount to subtract from + * @param a2 amount to subtract + * @return (a1-a2) or 0 if a2>=a1 + */ +struct TALER_Amount +TALER_amount_subtract (struct TALER_Amount a1, + struct TALER_Amount a2); + + +/** + * Perform saturating addition of amounts + * + * @param a1 first amount to add + * @param a2 second amount to add + * @return sum of a1 and a2 + */ +struct TALER_Amount +TALER_amount_add (struct TALER_Amount a1, + struct TALER_Amount a2); + + +/** + * Normalize the given amount. + * + * @param amout amount to normalize + * @return normalized amount + */ +struct TALER_Amount +TALER_amount_normalize (struct TALER_Amount amount); + + +/** + * Convert amount to string. + * + * @param amount amount to convert to string + * @return freshly allocated string representation + */ +char * +TALER_amount_to_string (struct TALER_Amount amount); + + +#endif diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h new file mode 100644 index 000000000..597c85cdd --- /dev/null +++ b/src/include/taler_crypto_lib.h @@ -0,0 +1,208 @@ +/* + This file is part of TALER + (C) 2014, 2015 Christian Grothoff (and other contributing authors) + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file include/taler_crypto_lib.h + * @brief taler-specific crypto functions + * @author Sree Harsha Totakura <sreeharsha@totakura.in> + */ +#ifndef TALER_CRYPTO_LIB_H +#define TALER_CRYPTO_LIB_H + +#include <gnunet/gnunet_util_lib.h> +#include <gcrypt.h> + + +/* ****************** Coin crypto primitives ************* */ + +/** + * Public information about a coin (including the public key + * of the coin, the denomination key and the signature with + * the denomination key). + */ +struct TALER_CoinPublicInfo +{ + /** + * The coin's public key. + */ + struct GNUNET_CRYPTO_EcdsaPublicKey coin_pub; + + /** + * Public key representing the denomination of the coin + * that is being deposited. + */ + struct GNUNET_CRYPTO_rsa_PublicKey *denom_pub; + + /** + * (Unblinded) signature over @e coin_pub with @e denom_pub, + * which demonstrates that the coin is valid. + */ + struct GNUNET_CRYPTO_rsa_Signature *denom_sig; +}; + + +/** + * Check if a coin is valid; that is, whether the denomination key exists, + * is not expired, and the signature is correct. + * + * @param coin_public_info the coin public info to check for validity + * @return #GNUNET_YES if the coin is valid, + * #GNUNET_NO if it is invalid + * #GNUNET_SYSERROR if an internal error occured + */ +int +TALER_test_coin_valid (const struct TALER_CoinPublicInfo *coin_public_info); + + +/* ****************** Refresh crypto primitives ************* */ + +/** + * Secret used to decrypt the key to decrypt link secrets. + */ +struct TALER_TransferSecret +{ + /** + * Secret used to encrypt/decrypt the `struct TALER_LinkSecret`. + * Must be (currently) a hash as this is what + * #GNUNET_CRYPTO_ecc_ecdh() returns to us. + */ + struct GNUNET_HashCode key; +}; + + +/** + * Secret used to decrypt refresh links. + */ +struct TALER_LinkSecret +{ + /** + * Secret used to decrypt the refresh link data. + */ + char key[sizeof (struct GNUNET_HashCode)]; +}; + + +/** + * Encrypted secret used to decrypt refresh links. + */ +struct TALER_EncryptedLinkSecret +{ + /** + * Encrypted secret, must be the given size! + */ + char enc[sizeof (struct TALER_LinkSecret)]; +}; + + +/** + * Representation of an encrypted refresh link. + */ +struct TALER_RefreshLinkEncrypted +{ + + /** + * Encrypted blinding key with @e blinding_key_enc_size bytes, + * must be allocated at the end of this struct. + */ + const char *blinding_key_enc; + + /** + * Number of bytes in @e blinding_key_enc. + */ + size_t blinding_key_enc_size; + + /** + * Encrypted private key of the coin. + */ + char coin_priv_enc[sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)]; + +}; + + +/** + * Representation of an refresh link in cleartext. + */ +struct TALER_RefreshLinkDecrypted +{ + + /** + * Private key of the coin. + */ + struct GNUNET_CRYPTO_EcdsaPrivateKey coin_priv; + + /** + * Blinding key with @e blinding_key_enc_size bytes. + */ + struct GNUNET_CRYPTO_rsa_BlindingKey *blinding_key; + +}; + + +/** + * Use the @a trans_sec (from ECDHE) to decrypt the @a secret_enc + * to obtain the @a secret to decrypt the linkage data. + * + * @param secret_enc encrypted secret + * @param trans_sec transfer secret + * @param secret shared secret for refresh link decryption + * @return #GNUNET_OK on success + */ +int +TALER_transfer_decrypt (const struct TALER_EncryptedLinkSecret *secret_enc, + const struct TALER_TransferSecret *trans_sec, + struct TALER_LinkSecret *secret); + + +/** + * Use the @a trans_sec (from ECDHE) to encrypt the @a secret + * to obtain the @a secret_enc. + * + * @param secret shared secret for refresh link decryption + * @param trans_sec transfer secret + * @param secret_enc[out] encrypted secret + * @return #GNUNET_OK on success + */ +int +TALER_transfer_encrypt (const struct TALER_LinkSecret *secret, + const struct TALER_TransferSecret *trans_sec, + struct TALER_EncryptedLinkSecret *secret_enc); + + +/** + * Decrypt refresh link information. + * + * @param input encrypted refresh link data + * @param secret shared secret to use for decryption + * @return NULL on error + */ +struct TALER_RefreshLinkDecrypted * +TALER_refresh_decrypt (const struct TALER_RefreshLinkEncrypted *input, + const struct TALER_LinkSecret *secret); + + +/** + * Encrypt refresh link information. + * + * @param input plaintext refresh link data + * @param secret shared secret to use for encryption + * @return NULL on error (should never happen) + */ +struct TALER_RefreshLinkEncrypted * +TALER_refresh_encrypt (const struct TALER_RefreshLinkDecrypted *input, + const struct TALER_LinkSecret *secret); + + + +#endif diff --git a/src/include/taler_db_lib.h b/src/include/taler_db_lib.h deleted file mode 100644 index 6e2b2b2c0..000000000 --- a/src/include/taler_db_lib.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - This file is part of TALER - (C) 2014 Christian Grothoff (and other contributing authors) - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/> -*/ -/** - * @file include/taler_db_lib.h - * @brief helper functions for DB interactions - * @author Sree Harsha Totakura <sreeharsha@totakura.in> - * @author Florian Dold - * @author Christian Grothoff - */ - -#ifndef TALER_DB_LIB_H_ -#define TALER_DB_LIB_H_ - -#include <libpq-fe.h> -#include "taler_util.h" - -/** - * Description of a DB query parameter. - */ -struct TALER_DB_QueryParam -{ - /** - * Data or NULL - */ - const void *data; - - /** - * Size of @e data - */ - size_t size; - - /** - * Non-null if this is not the last parameter. - * This allows for null as sentinal value. - */ - int more; -}; - -/** - * End of query parameter specification. - */ -#define TALER_DB_QUERY_PARAM_END { NULL, 0, 0 } - -/** - * Generate fixed-size query parameter with size given explicitly. - * - * @param x pointer to the query parameter to pass - * @param s number of bytes of @a x to use for the query - */ -#define TALER_DB_QUERY_PARAM_PTR_SIZED(x, s) { (x), (s), 1 } - -/** - * Generate fixed-size query parameter with size determined - * by variable type. - * - * @param x pointer to the query parameter to pass. - */ -#define TALER_DB_QUERY_PARAM_PTR(x) TALER_DB_QUERY_PARAM_PTR_SIZED(x, sizeof (*(x))) - - -/** - * Description of a DB result cell. - */ -struct TALER_DB_ResultSpec -{ - /** - * Destination for the data. - */ - void *dst; - - /** - * Allowed size for the data, 0 for variable-size - * (in this case, the type of @e dst is a `void **` - * and we need to allocate a buffer of the right size). - */ - size_t dst_size; - - /** - * Field name of the desired result. - */ - char *fname; - - /** - * Actual size of the result. - */ - size_t *result_size; - -}; - - -/** - * End of result parameter specification. - */ -#define TALER_DB_RESULT_SPEC_END { NULL, 0, NULL, NULL } - -/** - * We expect a fixed-size result, with size given explicitly - * - * @param name name of the field in the table - * @param dst point to where to store the result - * @param s number of bytes we should use in @a dst - */ -#define TALER_DB_RESULT_SPEC_SIZED(name, dst, s) { (void *) (dst), (s), (name), NULL } - -/** - * We expect a fixed-size result, with size determined by the type of `* dst` - * - * @param name name of the field in the table - * @param dst point to where to store the result, type fits expected result size - */ -#define TALER_DB_RESULT_SPEC(name, dst) TALER_DB_RESULT_SPEC_SIZED(name, dst, sizeof (*(dst))) - -/** - * Variable-size result expected. - * - * @param name name of the field in the table - * @param dst where to store the result (of type void **), to be allocated - * @param sptr pointer to a `size_t` for where to store the size of @a dst - */ -#define TALER_DB_RESULT_SPEC_VAR(name, dst, sptr) { (void *) (dst), 0, (name), sptr } - - -/** - * Execute a prepared statement. - */ -PGresult * -TALER_DB_exec_prepared (PGconn *db_conn, - const char *name, - const struct TALER_DB_QueryParam *params); - - -/** - * Extract results from a query result according to the given specification. - * If colums are NULL, the destination is not modified, and GNUNET_NO - * is returned. - * - * @return - * #GNUNET_YES if all results could be extracted - * #GNUNET_NO if at least one result was NULL - * #GNUNET_SYSERR if a result was invalid (non-existing field) - */ -int -TALER_DB_extract_result (PGresult *result, - struct TALER_DB_ResultSpec *rs, - int row); - - -int -TALER_DB_field_isnull (PGresult *result, - int row, - const char *fname); - - -int -TALER_DB_extract_amount_nbo (PGresult *result, - int row, - const char *val_name, - const char *frac_name, - const char *curr_name, - struct TALER_AmountNBO *r_amount_nbo); - - -int -TALER_DB_extract_amount (PGresult *result, - int row, - const char *val_name, - const char *frac_name, - const char *curr_name, - struct TALER_Amount *r_amount); - -#endif /* TALER_DB_LIB_H_ */ - -/* end of include/taler_db_lib.h */ diff --git a/src/include/taler_util.h b/src/include/taler_util.h index 00f139286..f2f319720 100644 --- a/src/include/taler_util.h +++ b/src/include/taler_util.h @@ -18,11 +18,15 @@ * @brief Interface for common utility functions * @author Sree Harsha Totakura <sreeharsha@totakura.in> */ -#ifndef TALER_UTIL_H_ -#define TALER_UTIL_H_ +#ifndef TALER_UTIL_H +#define TALER_UTIL_H #include <gnunet/gnunet_util_lib.h> -#include <gcrypt.h> +#include "taler_amount_lib.h" +#include "taler_crypto_lib.h" +#include "taler_json_lib.h" + + /* Define logging functions */ #define LOG_DEBUG(...) \ @@ -50,7 +54,6 @@ } while(0) - /** * Log an error message at log-level 'level' that indicates * a failure of the command 'cmd' with the message given @@ -63,7 +66,6 @@ do {int rc; rc = cmd; if (!rc) break; LOG_ERROR("A Gcrypt call failed at %s:%d with error: %s\n", __FILE__, __LINE__, gcry_strerror(rc)); abort(); } while (0) - /** * Initialize Gcrypt library. */ @@ -83,333 +85,4 @@ TALER_config_load (const char *base_dir); -/* *********************** Amount management ****************** */ - - -/** - * Number of characters (plus 1 for 0-termination) we use to - * represent currency names (i.e. EUR, USD, etc.). We use - * 8 for alignment (!). - */ -#define TALER_CURRENCY_LEN 8 - - -GNUNET_NETWORK_STRUCT_BEGIN - -/** - * Amount, encoded for network transmission. - */ -struct TALER_AmountNBO -{ - /** - * Value in the main currency, in NBO. - */ - uint32_t value; - - /** - * Additinal fractional value, in NBO. - */ - uint32_t fraction; - - /** - * Type of the currency being represented. - */ - char currency[TALER_CURRENCY_LEN]; -}; - -GNUNET_NETWORK_STRUCT_END - - -/** - * Representation of monetary value in a given currency. - */ -struct TALER_Amount -{ - /** - * Value (numerator of fraction) - */ - uint32_t value; - - /** - * Fraction (denominator of fraction) - */ - uint32_t fraction; - - /** - * Currency string, left adjusted and padded with zeros. - */ - char currency[TALER_CURRENCY_LEN]; -}; - - -/** - * Parse denomination description, in the format "T : V : F". - * - * @param str denomination description - * @param denom denomination to write the result to - * @return #GNUNET_OK if the string is a valid denomination specification, - * #GNUNET_SYSERR if it is invalid. - */ -int -TALER_string_to_amount (const char *str, - struct TALER_Amount *denom); - - -/** - * Convert amount from host to network representation. - * - * @param d amount in host representation - * @return amount in network representation - */ -struct TALER_AmountNBO -TALER_amount_hton (struct TALER_Amount d); - - -/** - * Convert amount from network to host representation. - * - * @param d amount in network representation - * @return amount in host representation - */ -struct TALER_Amount -TALER_amount_ntoh (struct TALER_AmountNBO dn); - - -/** - * Compare the value/fraction of two amounts. Does not compare the currency, - * i.e. comparing amounts with the same value and fraction but different - * currency would return 0. - * - * @param a1 first amount - * @param a2 second amount - * @return result of the comparison - */ -int -TALER_amount_cmp (struct TALER_Amount a1, - struct TALER_Amount a2); - - -/** - * Perform saturating subtraction of amounts. - * - * @param a1 amount to subtract from - * @param a2 amount to subtract - * @return (a1-a2) or 0 if a2>=a1 - */ -struct TALER_Amount -TALER_amount_subtract (struct TALER_Amount a1, - struct TALER_Amount a2); - - -/** - * Perform saturating addition of amounts - * - * @param a1 first amount to add - * @param a2 second amount to add - * @return sum of a1 and a2 - */ -struct TALER_Amount -TALER_amount_add (struct TALER_Amount a1, - struct TALER_Amount a2); - - -/** - * Normalize the given amount. - * - * @param amout amount to normalize - * @return normalized amount - */ -struct TALER_Amount -TALER_amount_normalize (struct TALER_Amount amount); - - -/** - * Convert amount to string. - * - * @param amount amount to convert to string - * @return freshly allocated string representation - */ -char * -TALER_amount_to_string (struct TALER_Amount amount); - - -/* ****************** Coin crypto primitives ************* */ - -/** - * Public information about a coin (including the public key - * of the coin, the denomination key and the signature with - * the denomination key). - */ -struct TALER_CoinPublicInfo -{ - /** - * The coin's public key. - */ - struct GNUNET_CRYPTO_EcdsaPublicKey coin_pub; - - /** - * Public key representing the denomination of the coin - * that is being deposited. - */ - struct GNUNET_CRYPTO_rsa_PublicKey *denom_pub; - - /** - * (Unblinded) signature over @e coin_pub with @e denom_pub, - * which demonstrates that the coin is valid. - */ - struct GNUNET_CRYPTO_rsa_Signature *denom_sig; -}; - - -/** - * Check if a coin is valid; that is, whether the denomination key exists, - * is not expired, and the signature is correct. - * - * @param coin_public_info the coin public info to check for validity - * @return #GNUNET_YES if the coin is valid, - * #GNUNET_NO if it is invalid - * #GNUNET_SYSERROR if an internal error occured - */ -int -TALER_test_coin_valid (const struct TALER_CoinPublicInfo *coin_public_info); - - -/* ****************** Refresh crypto primitives ************* */ - -/** - * Secret used to decrypt the key to decrypt link secrets. - */ -struct TALER_TransferSecret -{ - /** - * Secret used to encrypt/decrypt the `struct TALER_LinkSecret`. - * Must be (currently) a hash as this is what - * #GNUNET_CRYPTO_ecc_ecdh() returns to us. - */ - struct GNUNET_HashCode key; -}; - - -/** - * Secret used to decrypt refresh links. - */ -struct TALER_LinkSecret -{ - /** - * Secret used to decrypt the refresh link data. - */ - char key[sizeof (struct GNUNET_HashCode)]; -}; - - -/** - * Encrypted secret used to decrypt refresh links. - */ -struct TALER_EncryptedLinkSecret -{ - /** - * Encrypted secret, must be the given size! - */ - char enc[sizeof (struct TALER_LinkSecret)]; -}; - - -/** - * Representation of an encrypted refresh link. - */ -struct TALER_RefreshLinkEncrypted -{ - - /** - * Encrypted blinding key with @e blinding_key_enc_size bytes, - * must be allocated at the end of this struct. - */ - const char *blinding_key_enc; - - /** - * Number of bytes in @e blinding_key_enc. - */ - size_t blinding_key_enc_size; - - /** - * Encrypted private key of the coin. - */ - char coin_priv_enc[sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)]; - -}; - - -/** - * Representation of an refresh link in cleartext. - */ -struct TALER_RefreshLinkDecrypted -{ - - /** - * Private key of the coin. - */ - struct GNUNET_CRYPTO_EcdsaPrivateKey coin_priv; - - /** - * Blinding key with @e blinding_key_enc_size bytes. - */ - struct GNUNET_CRYPTO_rsa_BlindingKey *blinding_key; - -}; - - -/** - * Use the @a trans_sec (from ECDHE) to decrypt the @a secret_enc - * to obtain the @a secret to decrypt the linkage data. - * - * @param secret_enc encrypted secret - * @param trans_sec transfer secret - * @param secret shared secret for refresh link decryption - * @return #GNUNET_OK on success - */ -int -TALER_transfer_decrypt (const struct TALER_EncryptedLinkSecret *secret_enc, - const struct TALER_TransferSecret *trans_sec, - struct TALER_LinkSecret *secret); - - -/** - * Use the @a trans_sec (from ECDHE) to encrypt the @a secret - * to obtain the @a secret_enc. - * - * @param secret shared secret for refresh link decryption - * @param trans_sec transfer secret - * @param secret_enc[out] encrypted secret - * @return #GNUNET_OK on success - */ -int -TALER_transfer_encrypt (const struct TALER_LinkSecret *secret, - const struct TALER_TransferSecret *trans_sec, - struct TALER_EncryptedLinkSecret *secret_enc); - - -/** - * Decrypt refresh link information. - * - * @param input encrypted refresh link data - * @param secret shared secret to use for decryption - * @return NULL on error - */ -struct TALER_RefreshLinkDecrypted * -TALER_refresh_decrypt (const struct TALER_RefreshLinkEncrypted *input, - const struct TALER_LinkSecret *secret); - - -/** - * Encrypt refresh link information. - * - * @param input plaintext refresh link data - * @param secret shared secret to use for encryption - * @return NULL on error (should never happen) - */ -struct TALER_RefreshLinkEncrypted * -TALER_refresh_encrypt (const struct TALER_RefreshLinkDecrypted *input, - const struct TALER_LinkSecret *secret); - - #endif |