diff options
Diffstat (limited to 'src/include/taler_crypto_lib.h')
| -rw-r--r-- | src/include/taler_crypto_lib.h | 60 | 
1 files changed, 45 insertions, 15 deletions
| diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h index c521541f..7261d4de 100644 --- a/src/include/taler_crypto_lib.h +++ b/src/include/taler_crypto_lib.h @@ -280,6 +280,37 @@ struct TALER_MasterSignatureP    struct GNUNET_CRYPTO_EddsaSignature eddsa_signature;  }; +/* + * @brief Type of a list of age groups, represented as bit mask. + * + * The bits set in the mask mark the edges at the beginning of a next age + * group.  F.e. for the age groups + *     0-7, 8-9, 10-11, 12-14, 14-15, 16-17, 18-21, 21-* + * the following bits are set: + * + *   31     24        16        8         0 + *   |      |         |         |         | + *   oooooooo  oo1oo1o1  o1o1o1o1  ooooooo1 + * + * A value of 0 means that the exchange does not support the extension for + * age-restriction. + */ +struct TALER_AgeMask +{ +  uint32_t mask; +}; + +/** + * @brief Age restriction commitment of a coin. + */ +struct TALER_AgeHash +{ +  /** +   * The commitment is a SHA-256 hash code. +   */ +  struct GNUNET_ShortHashCode shash; +}; +  /**   * @brief Type of public keys for Taler coins.  The same key material is used @@ -292,6 +323,10 @@ struct TALER_CoinSpendPublicKeyP     */    struct GNUNET_CRYPTO_EddsaPublicKey eddsa_pub; +  /* +   * If age restriction applies to the coin, it must come with a hash of the age commitment +   */ +  struct TALER_AgeHash age_commitment_hash;  }; @@ -346,18 +381,6 @@ struct TALER_RefreshCommitmentP  /** - * Age restriction commitment of a coin. - */ -struct TALER_AgeHash -{ -  /** -   * The commitment is a SHA-256 hash code. -   */ -  struct GNUNET_ShortHashCode shash; -}; - - -/**   * Token used for access control to the merchant's unclaimed   * orders.   */ @@ -569,7 +592,7 @@ struct TALER_DenominationPublicKey    /**     * Age restriction mask used for the key.     */ -  uint32_t age_mask; +  struct TALER_AgeMask age_mask;    /**     * Details, depending on @e cipher. @@ -631,6 +654,11 @@ struct TALER_CoinPublicInfo    struct TALER_DenominationHash denom_pub_hash;    /** +   * Hash of the age commitment. +   */ +  struct TALER_AgeHash age_commitment_hash; + +  /**     * (Unblinded) signature over @e coin_pub with @e denom_pub,     * which demonstrates that the coin is valid.     */ @@ -880,7 +908,7 @@ TALER_blinded_denom_sig_cmp (   */  void  TALER_denom_priv_to_pub (const struct TALER_DenominationPrivateKey *denom_priv, -                         uint32_t age_mask, +                         const struct TALER_AgeMask age_mask,                           struct TALER_DenominationPublicKey *denom_pub); @@ -929,7 +957,6 @@ TALER_coin_ev_hash (const void *coin_ev,  /**   * Compute the hash of a coin. - * FIXME-Oec: add age restriction hash here!   *   * @param coin_pub public key of the coin   * @param[out] coin_h where to write the hash @@ -1020,6 +1047,9 @@ struct TALER_FreshCoin     */    struct TALER_CoinSpendPrivateKeyP coin_priv; +  /** +   * FIXME-Oec: Age-verification vector, as pointer: Dyn alloc! +   */  }; | 
