fix remaining libtalerutil FTBFS issues

This commit is contained in:
Christian Grothoff 2021-10-22 23:38:32 +02:00
parent 42bdb5aa6e
commit 17cf64dfb6
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
4 changed files with 87 additions and 89 deletions

View File

@ -1,6 +1,6 @@
/* /*
This file is part of TALER This file is part of TALER
Copyright (C) 2020 Taler Systems SA Copyright (C) 2020, 2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the 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 terms of the GNU General Public License as published by the Free Software
@ -117,7 +117,7 @@ TALER_exchange_offline_auditor_del_verify (
void void
TALER_exchange_offline_denomination_revoke_sign ( TALER_exchange_offline_denomination_revoke_sign (
const struct GNUNET_HashCode *h_denom_pub, const struct TALER_DenominationHash *h_denom_pub,
const struct TALER_MasterPrivateKeyP *master_priv, const struct TALER_MasterPrivateKeyP *master_priv,
struct TALER_MasterSignatureP *master_sig) struct TALER_MasterSignatureP *master_sig)
{ {
@ -135,7 +135,7 @@ TALER_exchange_offline_denomination_revoke_sign (
enum GNUNET_GenericReturnValue enum GNUNET_GenericReturnValue
TALER_exchange_offline_denomination_revoke_verify ( TALER_exchange_offline_denomination_revoke_verify (
const struct GNUNET_HashCode *h_denom_pub, const struct TALER_DenominationHash *h_denom_pub,
const struct TALER_MasterPublicKeyP *master_pub, const struct TALER_MasterPublicKeyP *master_pub,
const struct TALER_MasterSignatureP *master_sig) const struct TALER_MasterSignatureP *master_sig)
{ {
@ -249,7 +249,7 @@ TALER_exchange_offline_signkey_validity_verify (
void void
TALER_exchange_offline_denom_validity_sign ( TALER_exchange_offline_denom_validity_sign (
const struct GNUNET_HashCode *h_denom_pub, const struct TALER_DenominationHash *h_denom_pub,
struct GNUNET_TIME_Absolute stamp_start, struct GNUNET_TIME_Absolute stamp_start,
struct GNUNET_TIME_Absolute stamp_expire_withdraw, struct GNUNET_TIME_Absolute stamp_expire_withdraw,
struct GNUNET_TIME_Absolute stamp_expire_deposit, struct GNUNET_TIME_Absolute stamp_expire_deposit,
@ -294,7 +294,7 @@ TALER_exchange_offline_denom_validity_sign (
enum GNUNET_GenericReturnValue enum GNUNET_GenericReturnValue
TALER_exchange_offline_denom_validity_verify ( TALER_exchange_offline_denom_validity_verify (
const struct GNUNET_HashCode *h_denom_pub, const struct TALER_DenominationHash *h_denom_pub,
struct GNUNET_TIME_Absolute stamp_start, struct GNUNET_TIME_Absolute stamp_start,
struct GNUNET_TIME_Absolute stamp_expire_withdraw, struct GNUNET_TIME_Absolute stamp_expire_withdraw,
struct GNUNET_TIME_Absolute stamp_expire_deposit, struct GNUNET_TIME_Absolute stamp_expire_deposit,
@ -354,7 +354,7 @@ TALER_exchange_offline_wire_add_sign (
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
GNUNET_TIME_round_abs (&now)); GNUNET_TIME_round_abs (&now));
TALER_exchange_wire_signature_hash (payto_uri, TALER_exchange_wire_signature_hash (payto_uri,
&kv.h_wire); &kv.h_payto);
GNUNET_CRYPTO_eddsa_sign (&master_priv->eddsa_priv, GNUNET_CRYPTO_eddsa_sign (&master_priv->eddsa_priv,
&kv, &kv,
&master_sig->eddsa_signature); &master_sig->eddsa_signature);
@ -375,7 +375,7 @@ TALER_exchange_offline_wire_add_verify (
}; };
TALER_exchange_wire_signature_hash (payto_uri, TALER_exchange_wire_signature_hash (payto_uri,
&aw.h_wire); &aw.h_payto);
return return
GNUNET_CRYPTO_eddsa_verify ( GNUNET_CRYPTO_eddsa_verify (
TALER_SIGNATURE_MASTER_ADD_WIRE, TALER_SIGNATURE_MASTER_ADD_WIRE,
@ -401,7 +401,7 @@ TALER_exchange_offline_wire_del_sign (
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
GNUNET_TIME_round_abs (&now)); GNUNET_TIME_round_abs (&now));
TALER_exchange_wire_signature_hash (payto_uri, TALER_exchange_wire_signature_hash (payto_uri,
&kv.h_wire); &kv.h_payto);
GNUNET_CRYPTO_eddsa_sign (&master_priv->eddsa_priv, GNUNET_CRYPTO_eddsa_sign (&master_priv->eddsa_priv,
&kv, &kv,
&master_sig->eddsa_signature); &master_sig->eddsa_signature);
@ -423,7 +423,7 @@ TALER_exchange_offline_wire_del_verify (
}; };
TALER_exchange_wire_signature_hash (payto_uri, TALER_exchange_wire_signature_hash (payto_uri,
&aw.h_wire); &aw.h_payto);
return GNUNET_CRYPTO_eddsa_verify ( return GNUNET_CRYPTO_eddsa_verify (
TALER_SIGNATURE_MASTER_DEL_WIRE, TALER_SIGNATURE_MASTER_DEL_WIRE,
&aw, &aw,

View File

@ -1,6 +1,6 @@
/* /*
This file is part of TALER This file is part of TALER
Copyright (C) 2020 Taler Systems SA Copyright (C) 2020, 2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the 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 terms of the GNU General Public License as published by the Free Software
@ -71,7 +71,7 @@ TALER_exchange_secmod_eddsa_verify (
void void
TALER_exchange_secmod_denom_sign ( TALER_exchange_secmod_denom_sign (
const struct GNUNET_HashCode *h_denom_pub, const struct TALER_DenominationHash *h_denom_pub,
const char *section_name, const char *section_name,
struct GNUNET_TIME_Absolute start_sign, struct GNUNET_TIME_Absolute start_sign,
struct GNUNET_TIME_Relative duration, struct GNUNET_TIME_Relative duration,
@ -98,7 +98,7 @@ TALER_exchange_secmod_denom_sign (
enum GNUNET_GenericReturnValue enum GNUNET_GenericReturnValue
TALER_exchange_secmod_denom_verify ( TALER_exchange_secmod_denom_verify (
const struct GNUNET_HashCode *h_denom_pub, const struct TALER_DenominationHash *h_denom_pub,
const char *section_name, const char *section_name,
struct GNUNET_TIME_Absolute start_sign, struct GNUNET_TIME_Absolute start_sign,
struct GNUNET_TIME_Relative duration, struct GNUNET_TIME_Relative duration,

View File

@ -1,6 +1,6 @@
/* /*
This file is part of TALER This file is part of TALER
Copyright (C) 2014-2020 Taler Systems SA Copyright (C) 2014-2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the 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 terms of the GNU General Public License as published by the Free Software
@ -88,7 +88,7 @@ struct DenominationKey
/** /**
* Hash of this denomination's public key. * Hash of this denomination's public key.
*/ */
struct GNUNET_HashCode h_denom_pub; struct TALER_DenominationHash h_denom_pub;
/** /**
* Time at which this key is supposed to become valid. * Time at which this key is supposed to become valid.
@ -425,7 +425,8 @@ sign_worker (void *cls)
work_counter--; work_counter--;
GNUNET_assert (0 == pthread_mutex_unlock (&work_lock)); GNUNET_assert (0 == pthread_mutex_unlock (&work_lock));
wi->rsa_signature wi->rsa_signature
= GNUNET_CRYPTO_rsa_sign_blinded (wi->dk->denom_priv.rsa_private_key, = GNUNET_CRYPTO_rsa_sign_blinded (
wi->dk->denom_priv.details.rsa_private_key,
wi->blinded_msg, wi->blinded_msg,
wi->blinded_msg_size); wi->blinded_msg_size);
/* put completed work into done queue */ /* put completed work into done queue */
@ -494,8 +495,8 @@ static void
free_dk (struct DenominationKey *dk) free_dk (struct DenominationKey *dk)
{ {
GNUNET_free (dk->filename); GNUNET_free (dk->filename);
GNUNET_CRYPTO_rsa_private_key_free (dk->denom_priv.rsa_private_key); GNUNET_CRYPTO_rsa_private_key_free (dk->denom_priv.details.rsa_private_key);
GNUNET_CRYPTO_rsa_public_key_free (dk->denom_pub.rsa_public_key); GNUNET_CRYPTO_rsa_public_key_free (dk->denom_pub.details.rsa_public_key);
GNUNET_free (dk); GNUNET_free (dk);
} }
@ -661,7 +662,7 @@ handle_sign_request (const struct sockaddr_un *addr,
size_t blinded_msg_size = ntohs (sr->header.size) - sizeof (*sr); size_t blinded_msg_size = ntohs (sr->header.size) - sizeof (*sr);
dk = GNUNET_CONTAINER_multihashmap_get (keys, dk = GNUNET_CONTAINER_multihashmap_get (keys,
&sr->h_denom_pub); &sr->h_denom_pub.hash);
if (NULL == dk) if (NULL == dk)
{ {
struct TALER_CRYPTO_SignFailure sf = { struct TALER_CRYPTO_SignFailure sf = {
@ -672,7 +673,7 @@ handle_sign_request (const struct sockaddr_un *addr,
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Signing request failed, denomination key %s unknown\n", "Signing request failed, denomination key %s unknown\n",
GNUNET_h2s (&sr->h_denom_pub)); GNUNET_h2s (&sr->h_denom_pub.hash));
(void) transmit (addr, (void) transmit (addr,
addr_size, addr_size,
&sf.header); &sf.header);
@ -690,7 +691,7 @@ handle_sign_request (const struct sockaddr_un *addr,
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Signing request failed, denomination key %s is not yet valid\n", "Signing request failed, denomination key %s is not yet valid\n",
GNUNET_h2s (&sr->h_denom_pub)); GNUNET_h2s (&sr->h_denom_pub.hash));
(void) transmit (addr, (void) transmit (addr,
addr_size, addr_size,
&sf.header); &sf.header);
@ -700,7 +701,7 @@ handle_sign_request (const struct sockaddr_un *addr,
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Received request to sign over %u bytes with key %s\n", "Received request to sign over %u bytes with key %s\n",
(unsigned int) blinded_msg_size, (unsigned int) blinded_msg_size,
GNUNET_h2s (&sr->h_denom_pub)); GNUNET_h2s (&sr->h_denom_pub.hash));
wi = GNUNET_new (struct WorkItem); wi = GNUNET_new (struct WorkItem);
wi->addr = *addr; wi->addr = *addr;
wi->addr_size = addr_size; wi->addr_size = addr_size;
@ -726,7 +727,7 @@ handle_sign_request (const struct sockaddr_un *addr,
* @param dk the key to notify @a client about * @param dk the key to notify @a client about
* @return #GNUNET_OK on success * @return #GNUNET_OK on success
*/ */
static int static enum GNUNET_GenericReturnValue
notify_client_dk_add (struct Client *client, notify_client_dk_add (struct Client *client,
const struct DenominationKey *dk) const struct DenominationKey *dk)
{ {
@ -738,7 +739,8 @@ notify_client_dk_add (struct Client *client,
void *p; void *p;
size_t tlen; size_t tlen;
buf_len = GNUNET_CRYPTO_rsa_public_key_encode (dk->denom_pub.rsa_public_key, buf_len = GNUNET_CRYPTO_rsa_public_key_encode (
dk->denom_pub.details.rsa_public_key,
&buf); &buf);
GNUNET_assert (buf_len < UINT16_MAX); GNUNET_assert (buf_len < UINT16_MAX);
GNUNET_assert (nlen < UINT16_MAX); GNUNET_assert (nlen < UINT16_MAX);
@ -751,7 +753,7 @@ notify_client_dk_add (struct Client *client,
an->section_name_len = htons ((uint16_t) nlen); an->section_name_len = htons ((uint16_t) nlen);
an->anchor_time = GNUNET_TIME_absolute_hton (dk->anchor); an->anchor_time = GNUNET_TIME_absolute_hton (dk->anchor);
an->duration_withdraw = GNUNET_TIME_relative_hton (denom->duration_withdraw); an->duration_withdraw = GNUNET_TIME_relative_hton (denom->duration_withdraw);
TALER_exchange_secmod_rsa_sign (&dk->h_denom_pub, TALER_exchange_secmod_denom_sign (&dk->h_denom_pub,
denom->section, denom->section,
dk->anchor, dk->anchor,
denom->duration_withdraw, denom->duration_withdraw,
@ -767,11 +769,11 @@ notify_client_dk_add (struct Client *client,
denom->section, denom->section,
nlen); nlen);
{ {
int ret = GNUNET_OK; enum GNUNET_GenericReturnValue ret = GNUNET_OK;
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Sending RSA denomination key %s (%s)\n", "Sending RSA denomination key %s (%s)\n",
GNUNET_h2s (&dk->h_denom_pub), GNUNET_h2s (&dk->h_denom_pub.hash),
denom->section); denom->section);
if (GNUNET_OK != if (GNUNET_OK !=
transmit (&client->addr, transmit (&client->addr,
@ -809,7 +811,7 @@ notify_client_dk_del (struct Client *client,
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Sending RSA denomination expiration %s\n", "Sending RSA denomination expiration %s\n",
GNUNET_h2s (&dk->h_denom_pub)); GNUNET_h2s (&dk->h_denom_pub.hash));
if (GNUNET_OK != if (GNUNET_OK !=
transmit (&client->addr, transmit (&client->addr,
client->addr_size, client->addr_size,
@ -837,29 +839,27 @@ setup_key (struct DenominationKey *dk,
struct DenominationKey *position) struct DenominationKey *position)
{ {
struct Denomination *denom = dk->denom; struct Denomination *denom = dk->denom;
struct GNUNET_CRYPTO_RsaPrivateKey *priv; struct TALER_DenominationPrivateKey priv;
struct GNUNET_CRYPTO_RsaPublicKey *pub; struct TALER_DenominationPublicKey pub;
size_t buf_size; size_t buf_size;
void *buf; void *buf;
priv = GNUNET_CRYPTO_rsa_private_key_create (denom->rsa_keysize); priv.cipher = TALER_DENOMINATION_RSA;
if (NULL == priv) priv.details.rsa_private_key
= GNUNET_CRYPTO_rsa_private_key_create (denom->rsa_keysize);
if (NULL == priv.details.rsa_private_key)
{ {
GNUNET_break (0); GNUNET_break (0);
GNUNET_SCHEDULER_shutdown (); GNUNET_SCHEDULER_shutdown ();
global_ret = 40; global_ret = 40;
return GNUNET_SYSERR; return GNUNET_SYSERR;
} }
pub = GNUNET_CRYPTO_rsa_private_key_get_public (priv); TALER_denom_priv_to_pub (&priv,
if (NULL == pub) 0 /* FIXME-Oec */,
{ &pub);
GNUNET_break (0); buf_size = GNUNET_CRYPTO_rsa_private_key_encode (priv.details.rsa_private_key,
GNUNET_CRYPTO_rsa_private_key_free (priv);
return GNUNET_SYSERR;
}
buf_size = GNUNET_CRYPTO_rsa_private_key_encode (priv,
&buf); &buf);
GNUNET_CRYPTO_rsa_public_key_hash (pub, TALER_denom_pub_hash (&pub,
&dk->h_denom_pub); &dk->h_denom_pub);
GNUNET_asprintf (&dk->filename, GNUNET_asprintf (&dk->filename,
"%s/%s/%llu", "%s/%s/%llu",
@ -877,30 +877,30 @@ setup_key (struct DenominationKey *dk,
"write", "write",
dk->filename); dk->filename);
GNUNET_free (buf); GNUNET_free (buf);
GNUNET_CRYPTO_rsa_private_key_free (priv); GNUNET_CRYPTO_rsa_private_key_free (priv.details.rsa_private_key);
GNUNET_CRYPTO_rsa_public_key_free (pub); GNUNET_CRYPTO_rsa_public_key_free (pub.details.rsa_public_key);
return GNUNET_SYSERR; return GNUNET_SYSERR;
} }
GNUNET_free (buf); GNUNET_free (buf);
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Setup fresh private key %s at %s in `%s'\n", "Setup fresh private key %s at %s in `%s'\n",
GNUNET_h2s (&dk->h_denom_pub), GNUNET_h2s (&dk->h_denom_pub.hash),
GNUNET_STRINGS_absolute_time_to_string (dk->anchor), GNUNET_STRINGS_absolute_time_to_string (dk->anchor),
dk->filename); dk->filename);
dk->denom_priv.rsa_private_key = priv; dk->denom_priv = priv;
dk->denom_pub.rsa_public_key = pub; dk->denom_pub = pub;
if (GNUNET_OK != if (GNUNET_OK !=
GNUNET_CONTAINER_multihashmap_put ( GNUNET_CONTAINER_multihashmap_put (
keys, keys,
&dk->h_denom_pub, &dk->h_denom_pub.hash,
dk, dk,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY)) GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
{ {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Duplicate private key created! Terminating.\n"); "Duplicate private key created! Terminating.\n");
GNUNET_CRYPTO_rsa_private_key_free (dk->denom_priv.rsa_private_key); GNUNET_CRYPTO_rsa_private_key_free (dk->denom_priv.details.rsa_private_key);
GNUNET_CRYPTO_rsa_public_key_free (dk->denom_pub.rsa_public_key); GNUNET_CRYPTO_rsa_public_key_free (dk->denom_pub.details.rsa_public_key);
GNUNET_free (dk->filename); GNUNET_free (dk->filename);
GNUNET_free (dk); GNUNET_free (dk);
return GNUNET_SYSERR; return GNUNET_SYSERR;
@ -951,12 +951,12 @@ handle_revoke_request (const struct sockaddr_un *addr,
struct Denomination *denom; struct Denomination *denom;
dk = GNUNET_CONTAINER_multihashmap_get (keys, dk = GNUNET_CONTAINER_multihashmap_get (keys,
&rr->h_denom_pub); &rr->h_denom_pub.hash);
if (NULL == dk) if (NULL == dk)
{ {
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Revocation request ignored, denomination key %s unknown\n", "Revocation request ignored, denomination key %s unknown\n",
GNUNET_h2s (&rr->h_denom_pub)); GNUNET_h2s (&rr->h_denom_pub.hash));
return; return;
} }
@ -985,14 +985,14 @@ handle_revoke_request (const struct sockaddr_un *addr,
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
GNUNET_CONTAINER_multihashmap_remove ( GNUNET_CONTAINER_multihashmap_remove (
keys, keys,
&dk->h_denom_pub, &dk->h_denom_pub.hash,
dk)); dk));
GNUNET_CONTAINER_DLL_remove (denom->keys_head, GNUNET_CONTAINER_DLL_remove (denom->keys_head,
denom->keys_tail, denom->keys_tail,
dk); dk);
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Revocation of denomination key %s complete\n", "Revocation of denomination key %s complete\n",
GNUNET_h2s (&rr->h_denom_pub)); GNUNET_h2s (&rr->h_denom_pub.hash));
/* Tell clients this key is gone */ /* Tell clients this key is gone */
{ {
@ -1240,7 +1240,7 @@ purge_key (struct DenominationKey *dk)
dk); dk);
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
GNUNET_CONTAINER_multihashmap_remove (keys, GNUNET_CONTAINER_multihashmap_remove (keys,
&dk->h_denom_pub, &dk->h_denom_pub.hash,
dk)); dk));
if (0 != unlink (dk->filename)) if (0 != unlink (dk->filename))
{ {
@ -1261,7 +1261,7 @@ purge_key (struct DenominationKey *dk)
dk->purge = true; dk->purge = true;
return; return;
} }
GNUNET_CRYPTO_rsa_private_key_free (dk->denom_priv.rsa_private_key); GNUNET_CRYPTO_rsa_private_key_free (dk->denom_priv.details.rsa_private_key);
GNUNET_free (dk); GNUNET_free (dk);
} }
@ -1372,7 +1372,7 @@ parse_key (struct Denomination *denom,
const void *buf, const void *buf,
size_t buf_size) size_t buf_size)
{ {
struct GNUNET_CRYPTO_RsaPrivateKey *priv; struct TALER_DenominationPrivateKey priv;
char *anchor_s; char *anchor_s;
char dummy; char dummy;
unsigned long long anchor_ll; unsigned long long anchor_ll;
@ -1407,9 +1407,11 @@ parse_key (struct Denomination *denom,
filename); filename);
return; return;
} }
priv = GNUNET_CRYPTO_rsa_private_key_decode (buf, priv.cipher = TALER_DENOMINATION_RSA;
priv.details.rsa_private_key
= GNUNET_CRYPTO_rsa_private_key_decode (buf,
buf_size); buf_size);
if (NULL == priv) if (NULL == priv.details.rsa_private_key)
{ {
/* Parser failure. */ /* Parser failure. */
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@ -1419,38 +1421,34 @@ parse_key (struct Denomination *denom,
} }
{ {
struct GNUNET_CRYPTO_RsaPublicKey *pub; struct TALER_DenominationPublicKey pub;
struct DenominationKey *dk; struct DenominationKey *dk;
struct DenominationKey *before; struct DenominationKey *before;
pub = GNUNET_CRYPTO_rsa_private_key_get_public (priv); TALER_denom_priv_to_pub (&priv,
if (NULL == pub) 0 /* FIXME-Oec */,
{ &pub);
GNUNET_break (0);
GNUNET_CRYPTO_rsa_private_key_free (priv);
return;
}
dk = GNUNET_new (struct DenominationKey); dk = GNUNET_new (struct DenominationKey);
dk->denom_priv.rsa_private_key = priv; dk->denom_priv = priv;
dk->denom = denom; dk->denom = denom;
dk->anchor = anchor; dk->anchor = anchor;
dk->filename = GNUNET_strdup (filename); dk->filename = GNUNET_strdup (filename);
GNUNET_CRYPTO_rsa_public_key_hash (pub, TALER_denom_pub_hash (&pub,
&dk->h_denom_pub); &dk->h_denom_pub);
dk->denom_pub.rsa_public_key = pub; dk->denom_pub = pub;
if (GNUNET_OK != if (GNUNET_OK !=
GNUNET_CONTAINER_multihashmap_put ( GNUNET_CONTAINER_multihashmap_put (
keys, keys,
&dk->h_denom_pub, &dk->h_denom_pub.hash,
dk, dk,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY)) GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
{ {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Duplicate private key %s detected in file `%s'. Skipping.\n", "Duplicate private key %s detected in file `%s'. Skipping.\n",
GNUNET_h2s (&dk->h_denom_pub), GNUNET_h2s (&dk->h_denom_pub.hash),
filename); filename);
GNUNET_CRYPTO_rsa_private_key_free (priv); GNUNET_CRYPTO_rsa_private_key_free (priv.details.rsa_private_key);
GNUNET_CRYPTO_rsa_public_key_free (pub); GNUNET_CRYPTO_rsa_public_key_free (pub.details.rsa_public_key);
GNUNET_free (dk); GNUNET_free (dk);
return; return;
} }
@ -1469,7 +1467,7 @@ parse_key (struct Denomination *denom,
dk); dk);
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Imported key %s from `%s'\n", "Imported key %s from `%s'\n",
GNUNET_h2s (&dk->h_denom_pub), GNUNET_h2s (&dk->h_denom_pub.hash),
filename); filename);
} }
} }

View File

@ -1,6 +1,6 @@
/* /*
This file is part of TALER This file is part of TALER
Copyright (C) 2020 Taler Systems SA Copyright (C) 2020, 2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the 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 terms of the GNU General Public License as published by the Free Software
@ -24,7 +24,7 @@
void void
TALER_wallet_link_sign (const struct GNUNET_HashCode *h_denom_pub, TALER_wallet_link_sign (const struct TALER_DenominationHash *h_denom_pub,
const struct TALER_TransferPublicKeyP *transfer_pub, const struct TALER_TransferPublicKeyP *transfer_pub,
const void *coin_ev, const void *coin_ev,
size_t coin_ev_size, size_t coin_ev_size,
@ -40,7 +40,7 @@ TALER_wallet_link_sign (const struct GNUNET_HashCode *h_denom_pub,
GNUNET_CRYPTO_hash (coin_ev, GNUNET_CRYPTO_hash (coin_ev,
coin_ev_size, coin_ev_size,
&ldp.coin_envelope_hash); &ldp.coin_envelope_hash.hash);
GNUNET_CRYPTO_eddsa_sign (&old_coin_priv->eddsa_priv, GNUNET_CRYPTO_eddsa_sign (&old_coin_priv->eddsa_priv,
&ldp, &ldp,
&coin_sig->eddsa_signature); &coin_sig->eddsa_signature);
@ -49,7 +49,7 @@ TALER_wallet_link_sign (const struct GNUNET_HashCode *h_denom_pub,
enum GNUNET_GenericReturnValue enum GNUNET_GenericReturnValue
TALER_wallet_link_verify ( TALER_wallet_link_verify (
const struct GNUNET_HashCode *h_denom_pub, const struct TALER_DenominationHash *h_denom_pub,
const struct TALER_TransferPublicKeyP *transfer_pub, const struct TALER_TransferPublicKeyP *transfer_pub,
const void *coin_ev, const void *coin_ev,
size_t coin_ev_size, size_t coin_ev_size,
@ -65,7 +65,7 @@ TALER_wallet_link_verify (
GNUNET_CRYPTO_hash (coin_ev, GNUNET_CRYPTO_hash (coin_ev,
coin_ev_size, coin_ev_size,
&ldp.coin_envelope_hash); &ldp.coin_envelope_hash.hash);
return return
GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_WALLET_COIN_LINK, GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_WALLET_COIN_LINK,
&ldp, &ldp,