From c1df2e628379a22068657e144bd34812c305350a Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 14 Aug 2015 15:01:11 +0200 Subject: [PATCH] fix melt sig alignment issue --- src/include/taler_signatures.h | 15 ++++++++++----- src/mint-lib/mint_api_refresh.c | 3 ++- src/mint/taler-mint-httpd_responses.c | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/include/taler_signatures.h b/src/include/taler_signatures.h index a2271130e..043f3bda1 100644 --- a/src/include/taler_signatures.h +++ b/src/include/taler_signatures.h @@ -444,13 +444,18 @@ struct TALER_RefreshMeltConfirmationPS /** * Hash of the refresh session. */ - struct GNUNET_HashCode session_hash; + struct GNUNET_HashCode session_hash GNUNET_PACKED; /** * Index that the client will not have to reveal, in NBO. * Must be smaller than #TALER_CNC_KAPPA. */ uint16_t noreveal_index GNUNET_PACKED; + + /** + * Zero. + */ + uint16_t reserved GNUNET_PACKED; }; @@ -534,7 +539,7 @@ struct TALER_MintKeySetPS /** * Hash over the various denomination signing keys returned. */ - struct GNUNET_HashCode hc; + struct GNUNET_HashCode hc GNUNET_PACKED; }; @@ -623,7 +628,7 @@ struct TALER_DenominationKeyValidityPS * Hash code of the denomination public key. (Used to avoid having * the variable-size RSA key in this struct.) */ - struct GNUNET_HashCode denom_hash; + struct GNUNET_HashCode denom_hash GNUNET_PACKED; }; @@ -700,7 +705,7 @@ struct TALER_MasterWireSepaDetailsPS * Hash over the account holder's name, IBAN and BIC * code (all as 0-terminated strings). */ - struct GNUNET_HashCode h_sepa_details; + struct GNUNET_HashCode h_sepa_details GNUNET_PACKED; }; @@ -721,7 +726,7 @@ struct TALER_MintWireSupportMethodsPS * Hash over the various wire formats supported by this mint * (all as 0-terminated strings). */ - struct GNUNET_HashCode h_wire_types; + struct GNUNET_HashCode h_wire_types GNUNET_PACKED; }; diff --git a/src/mint-lib/mint_api_refresh.c b/src/mint-lib/mint_api_refresh.c index a30dcb050..3e50047bb 100644 --- a/src/mint-lib/mint_api_refresh.c +++ b/src/mint-lib/mint_api_refresh.c @@ -1121,9 +1121,10 @@ verify_refresh_melt_signature_ok (struct TALER_MINT_RefreshMeltHandle *rmh, /* verify signature by mint */ confirm.purpose.purpose = htonl (TALER_SIGNATURE_MINT_CONFIRM_MELT); - confirm.purpose.size = htonl (sizeof (confirm)); + confirm.purpose.size = htonl (sizeof (struct TALER_RefreshMeltConfirmationPS)); confirm.session_hash = rmh->md->melt_session_hash; confirm.noreveal_index = htons (*noreveal_index); + confirm.reserved = htons (0); if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MINT_CONFIRM_MELT, &confirm.purpose, diff --git a/src/mint/taler-mint-httpd_responses.c b/src/mint/taler-mint-httpd_responses.c index 9a6813f1d..6c029b274 100644 --- a/src/mint/taler-mint-httpd_responses.c +++ b/src/mint/taler-mint-httpd_responses.c @@ -751,6 +751,7 @@ TMH_RESPONSE_reply_refresh_melt_success (struct MHD_Connection *connection, body.purpose.purpose = htonl (TALER_SIGNATURE_MINT_CONFIRM_MELT); body.session_hash = *session_hash; body.noreveal_index = htons (noreveal_index); + body.reserved = htons (0); TMH_KS_sign (&body.purpose, &pub, &sig);