diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-03-09 12:29:41 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-03-09 12:29:41 +0100 |
commit | 579f465c9b2ed1cd4602ee102073d633fda60cb9 (patch) | |
tree | 99b546c629bfa876ccbe4f829a68c3fe8d80624a /src/include/taler_signatures.h | |
parent | 7b0ae9c1d0a3c3165a8cef8cc12d04d207a49ce2 (diff) |
implementing #3632: generate proof of insufficient funds by converting transaction history to JSON
Diffstat (limited to 'src/include/taler_signatures.h')
-rw-r--r-- | src/include/taler_signatures.h | 105 |
1 files changed, 71 insertions, 34 deletions
diff --git a/src/include/taler_signatures.h b/src/include/taler_signatures.h index 905d1ed23..8984165e6 100644 --- a/src/include/taler_signatures.h +++ b/src/include/taler_signatures.h @@ -266,83 +266,120 @@ struct RefreshMeltResponseSignatureBody }; - - - /** - * FIXME + * Message signed by a coin to indicate that the coin should + * be melted. */ -struct TALER_MINT_SignKeyIssue +struct RefreshMeltSignatureBody { - struct GNUNET_CRYPTO_EddsaSignature signature; + /** + * Purpose is #TALER_SIGNATURE_REFRESH_MELT. + */ struct GNUNET_CRYPTO_EccSignaturePurpose purpose; - struct GNUNET_CRYPTO_EddsaPublicKey master_pub; - struct GNUNET_TIME_AbsoluteNBO start; - struct GNUNET_TIME_AbsoluteNBO expire; - struct GNUNET_CRYPTO_EddsaPublicKey signkey_pub; + + /** + * Which melting operation should the coin become a part of. + */ + struct GNUNET_HashCode melt_hash; + + /** + * How much of the value of the coin should be melted? + * This amount includes the fees, so the final amount contributed + * to the melt is this value minus the fee for melting the coin. + */ + struct TALER_AmountNBO amount; }; /** - * FIXME + * Message signed during melting committing the client to the + * hashed inputs. */ -struct TALER_MINT_DenomKeyIssue +struct RefreshCommitSignatureBody { - struct GNUNET_CRYPTO_EddsaSignature signature; + /** + * Purpose is #TALER_SIGNATURE_REFRESH_COMMIT. + */ struct GNUNET_CRYPTO_EccSignaturePurpose purpose; - struct GNUNET_CRYPTO_EddsaPublicKey master; - struct GNUNET_TIME_AbsoluteNBO start; - struct GNUNET_TIME_AbsoluteNBO expire_withdraw; - struct GNUNET_TIME_AbsoluteNBO expire_spend; - // FIXME: does not work like this: - struct GNUNET_CRYPTO_rsa_PublicKey * denom_pub; - struct TALER_AmountNBO value; - struct TALER_AmountNBO fee_withdraw; - struct TALER_AmountNBO fee_deposit; - struct TALER_AmountNBO fee_refresh; + + /** + * Session state the client commits itself to. + */ + struct GNUNET_HashCode commit_hash; }; /** - * FIXME + * Message signed by the mint, committing it to a particular + * index to not be revealed during the refresh. */ -struct RefreshMeltSignatureBody +struct RefreshCommitResponseSignatureBody { + /** + * Purpose is #TALER_SIGNATURE_REFRESH_MELT_RESPONSE. + */ struct GNUNET_CRYPTO_EccSignaturePurpose purpose; - struct GNUNET_HashCode melt_hash; + + /** + * Index that the client will not have to reveal. + */ + uint16_t noreveal_index GNUNET_PACKED; }; + /** - * FIXME + * Message signed by the client requesting the final + * result of the melting operation. */ -struct RefreshCommitSignatureBody +struct RefreshMeltConfirmSignRequestBody { + /** + * Purpose is #TALER_SIGNATURE_REFRESH_MELT_CONFIRM. + */ struct GNUNET_CRYPTO_EccSignaturePurpose purpose; - struct GNUNET_HashCode commit_hash; + + /** + * FIXME. + */ + struct GNUNET_CRYPTO_EddsaPublicKey session_pub; }; /** * FIXME */ -struct RefreshCommitResponseSignatureBody +struct TALER_MINT_SignKeyIssue { + struct GNUNET_CRYPTO_EddsaSignature signature; struct GNUNET_CRYPTO_EccSignaturePurpose purpose; - uint16_t noreveal_index; + struct GNUNET_CRYPTO_EddsaPublicKey master_pub; + struct GNUNET_TIME_AbsoluteNBO start; + struct GNUNET_TIME_AbsoluteNBO expire; + struct GNUNET_CRYPTO_EddsaPublicKey signkey_pub; }; - /** * FIXME */ -struct RefreshMeltConfirmSignRequestBody +struct TALER_MINT_DenomKeyIssue { + struct GNUNET_CRYPTO_EddsaSignature signature; struct GNUNET_CRYPTO_EccSignaturePurpose purpose; - struct GNUNET_CRYPTO_EddsaPublicKey session_pub; + struct GNUNET_CRYPTO_EddsaPublicKey master; + struct GNUNET_TIME_AbsoluteNBO start; + struct GNUNET_TIME_AbsoluteNBO expire_withdraw; + struct GNUNET_TIME_AbsoluteNBO expire_spend; + // FIXME: does not work like this: + struct GNUNET_CRYPTO_rsa_PublicKey * denom_pub; + struct TALER_AmountNBO value; + struct TALER_AmountNBO fee_withdraw; + struct TALER_AmountNBO fee_deposit; + struct TALER_AmountNBO fee_refresh; }; + GNUNET_NETWORK_STRUCT_END #endif |