aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2021-11-21 12:47:16 +0100
committerChristian Grothoff <grothoff@gnunet.org>2021-11-21 12:47:33 +0100
commit5159badd0e999fbcd610e3db22b5415571d9fa54 (patch)
treeb2c139ab011fdec76a34f908117b7deae496deae
parent56318f53e201f0f91e6cd50d485f6ff44b8cf9d0 (diff)
another fix related to #7099
-rw-r--r--src/util/secmod_common.c23
-rw-r--r--src/util/taler-exchange-secmod-eddsa.c36
-rw-r--r--src/util/test_helper_eddsa.c25
3 files changed, 61 insertions, 23 deletions
diff --git a/src/util/secmod_common.c b/src/util/secmod_common.c
index 830fbf32a..ee390640d 100644
--- a/src/util/secmod_common.c
+++ b/src/util/secmod_common.c
@@ -229,18 +229,19 @@ TES_read_work (void *cls,
{
struct TES_Client *client = cls;
char *buf = client->iobuf;
- ssize_t buf_size;
size_t off = 0;
uint16_t msize;
const struct GNUNET_MessageHeader *hdr;
do
{
- buf_size = recv (client->csock,
- &buf[off],
- sizeof (client->iobuf) - off,
- 0);
- if (-1 == buf_size)
+ ssize_t recv_size;
+
+ recv_size = recv (client->csock,
+ &buf[off],
+ sizeof (client->iobuf) - off,
+ 0);
+ if (-1 == recv_size)
{
if ( (0 == off) &&
(EAGAIN == errno) )
@@ -257,17 +258,23 @@ TES_read_work (void *cls,
"recv");
return GNUNET_SYSERR;
}
- if (0 == buf_size)
+ if (0 == recv_size)
{
/* regular disconnect? */
GNUNET_break_op (0 == off);
return GNUNET_SYSERR;
}
- off += buf_size;
+ off += recv_size;
if (off < sizeof (struct GNUNET_MessageHeader))
continue;
hdr = (const struct GNUNET_MessageHeader *) buf;
msize = ntohs (hdr->size);
+#if 0
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Received message of type %u with %u bytes\n",
+ (unsigned int) ntohs (hdr->type),
+ (unsigned int) msize);
+#endif
if (msize < sizeof (struct GNUNET_MessageHeader))
{
GNUNET_break_op (0);
diff --git a/src/util/taler-exchange-secmod-eddsa.c b/src/util/taler-exchange-secmod-eddsa.c
index c8d283770..a0f5675df 100644
--- a/src/util/taler-exchange-secmod-eddsa.c
+++ b/src/util/taler-exchange-secmod-eddsa.c
@@ -282,8 +282,8 @@ handle_sign_request (struct TES_Client *client,
if (0 != key->rc)
break; /* do later */
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "Removing past key %s (expired %s ago)\n",
- key->filename,
+ "Deleting past key %s (expired %s ago)\n",
+ TALER_B2S (&nxt->exchange_pub),
GNUNET_STRINGS_relative_time_to_string (
GNUNET_TIME_absolute_get_duration (
GNUNET_TIME_absolute_add (key->anchor,
@@ -400,7 +400,15 @@ static void
purge_key (struct Key *key)
{
if (key->purge)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Key %s already purged, skipping\n",
+ TALER_B2S (&key->exchange_pub));
return;
+ }
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Purging key %s\n",
+ TALER_B2S (&key->exchange_pub));
if (0 != unlink (key->filename))
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR,
"unlink",
@@ -449,8 +457,8 @@ handle_revoke_request (struct TES_Client *client,
key_gen++;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "Revoking key %p, bumping generation to %llu\n",
- key,
+ "Revoking key %s, bumping generation to %llu\n",
+ TALER_B2S (&key->exchange_pub),
(unsigned long long) key_gen);
purge_key (key);
@@ -570,13 +578,23 @@ eddsa_client_init (struct TES_Client *client)
static enum GNUNET_GenericReturnValue
eddsa_update_client_keys (struct TES_Client *client)
{
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Updating client %p to generation %llu\n",
+ client,
+ (unsigned long long) key_gen);
GNUNET_assert (0 == pthread_mutex_lock (&keys_lock));
for (struct Key *key = keys_head;
NULL != key;
key = key->next)
{
if (key->key_gen <= client->key_gen)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Skipping key %s, no change since generation %llu\n",
+ TALER_B2S (&key->exchange_pub),
+ (unsigned long long) client->key_gen);
continue;
+ }
if (key->purge)
{
if (GNUNET_OK !=
@@ -715,7 +733,7 @@ update_keys (void *cls)
}
}
nxt = keys_head;
- /* remove expired keys */
+ /* purge expired keys */
while ( (NULL != nxt) &&
GNUNET_TIME_absolute_is_past (
GNUNET_TIME_absolute_add (nxt->anchor,
@@ -727,8 +745,8 @@ update_keys (void *cls)
wake = true;
}
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "Removing past key %s (expired %s ago)\n",
- nxt->filename,
+ "Purging past key %s (expired %s ago)\n",
+ TALER_B2S (&nxt->exchange_pub),
GNUNET_STRINGS_relative_time_to_string (
GNUNET_TIME_absolute_get_duration (
GNUNET_TIME_absolute_add (nxt->anchor,
@@ -1075,13 +1093,13 @@ run (void *cls,
global_ret = EXIT_NOTCONFIGURED;
return;
}
+ GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
+ NULL);
global_ret = TES_listen_start (cfg,
"taler-exchange-secmod-eddsa",
&cb);
if (0 != global_ret)
return;
- GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
- NULL);
/* Load keys */
GNUNET_break (GNUNET_OK ==
GNUNET_DISK_directory_create (keydir));
diff --git a/src/util/test_helper_eddsa.c b/src/util/test_helper_eddsa.c
index ddc2fc9fc..7ce457d8d 100644
--- a/src/util/test_helper_eddsa.c
+++ b/src/util/test_helper_eddsa.c
@@ -27,7 +27,7 @@
* we should never have more than 6 active keys, plus for during
* key expiration / revocation.
*/
-#define MAX_KEYS 7
+#define MAX_KEYS 20
/**
* How many random key revocations should we test?
@@ -121,7 +121,14 @@ key_cb (void *cls,
(void) cls;
(void) sm_pub;
(void) sm_sig;
- if (0 == validity_duration.rel_value_us)
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Update on key %s (%s)...",
+ TALER_B2S (exchange_pub),
+ GNUNET_STRINGS_relative_time_to_string (validity_duration,
+ GNUNET_YES));
+
+ if (GNUNET_TIME_relative_is_zero (validity_duration))
{
bool found = false;
@@ -190,14 +197,20 @@ test_revocation (struct TALER_CRYPTO_ExchangeSignHelper *esh)
}
keys[j].revoked = true;
fprintf (stderr,
- "Revoking key ...");
+ "Revoking key %s ...",
+ TALER_B2S (&keys[j].exchange_pub));
TALER_CRYPTO_helper_esign_revoke (esh,
&keys[j].exchange_pub);
for (unsigned int k = 0; k<1000; k++)
{
TALER_CRYPTO_helper_esign_poll (esh);
- if (! keys[j].revoked)
+ if ( (! keys[j].revoked) ||
+ (GNUNET_TIME_absolute_is_past (
+ GNUNET_TIME_absolute_add (keys[j].start_time,
+ keys[j].validity_duration))) )
+ {
break;
+ }
nanosleep (&req, NULL);
fprintf (stderr, ".");
}
@@ -470,7 +483,7 @@ main (int argc,
(void) argc;
(void) argv;
GNUNET_log_setup ("test-helper-eddsa",
- "WARNING",
+ "INFO",
NULL);
GNUNET_OS_init (TALER_project_data_default ());
libexec_dir = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_BINDIR);
@@ -486,7 +499,7 @@ main (int argc,
"-c",
"test_helper_eddsa.conf",
"-L",
- "WARNING",
+ "INFO",
NULL);
if (NULL == helper)
{