diff options
author | Florian Dold <florian@dold.me> | 2022-03-24 01:37:48 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-03-24 01:37:48 +0100 |
commit | b0cf653b83de7595f0d2767232c473f0b780a9f1 (patch) | |
tree | 12e305046cb8d3f8885f4b6b4c90f7b0787149a2 /src | |
parent | e336c02d14fc82f4b7d26aabcf100306c4e41efe (diff) |
implement more taler-crypto-worker ops
Diffstat (limited to 'src')
-rw-r--r-- | src/exchange-tools/taler-crypto-worker.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/exchange-tools/taler-crypto-worker.c b/src/exchange-tools/taler-crypto-worker.c index 5b9844101..d5ba4feec 100644 --- a/src/exchange-tools/taler-crypto-worker.c +++ b/src/exchange-tools/taler-crypto-worker.c @@ -93,6 +93,76 @@ run (void *cls, } GNUNET_log (GNUNET_ERROR_TYPE_INFO, "got request\n"); + if (0 == strcmp ("eddsa_get_public", + op)) + { + struct GNUNET_CRYPTO_EddsaPublicKey eddsa_pub; + struct GNUNET_CRYPTO_EddsaPrivateKey eddsa_priv; + json_t *resp; + struct GNUNET_JSON_Specification spec[] = { + GNUNET_JSON_spec_fixed_auto ("eddsa_priv", + &eddsa_priv), + GNUNET_JSON_spec_end () + }; + if (GNUNET_OK != GNUNET_JSON_parse (args, + spec, + NULL, + NULL)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "malformed op args\n"); + global_ret = 1; + return; + } + GNUNET_CRYPTO_eddsa_key_get_public (&eddsa_priv, + &eddsa_pub); + resp = GNUNET_JSON_PACK ( + GNUNET_JSON_pack_data_auto ("eddsa_pub", + &eddsa_pub) + ); + json_dumpf (resp, stdout, JSON_COMPACT); + printf ("\n"); + fflush (stdout); + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "sent response\n"); + GNUNET_JSON_parse_free (spec); + continue; + } + if (0 == strcmp ("ecdhe_get_public", + op)) + { + struct GNUNET_CRYPTO_EcdhePublicKey ecdhe_pub; + struct GNUNET_CRYPTO_EcdhePrivateKey ecdhe_priv; + json_t *resp; + struct GNUNET_JSON_Specification spec[] = { + GNUNET_JSON_spec_fixed_auto ("ecdhe_priv", + &ecdhe_priv), + GNUNET_JSON_spec_end () + }; + if (GNUNET_OK != GNUNET_JSON_parse (args, + spec, + NULL, + NULL)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "malformed op args\n"); + global_ret = 1; + return; + } + GNUNET_CRYPTO_ecdhe_key_get_public (&ecdhe_priv, + &ecdhe_pub); + resp = GNUNET_JSON_PACK ( + GNUNET_JSON_pack_data_auto ("ecdhe_pub", + &ecdhe_pub) + ); + json_dumpf (resp, stdout, JSON_COMPACT); + printf ("\n"); + fflush (stdout); + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "sent response\n"); + GNUNET_JSON_parse_free (spec); + continue; + } if (0 == strcmp ("eddsa_verify", op)) { |