aboutsummaryrefslogtreecommitdiff
path: root/src/lib/util/gnunet_crypto_dbus_lib_push.c
blob: 6e1cd3a4a0a91902e1fc2de69bf7ad6c8cd139ae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "config.h"

#include "gnunet_dbus_lib.h"

void
GNUNET_CRYPTO_DBUS_push_ecdsa_public_key (
    DBusMessage *message,
    DBusMessageIter *iter,
    const struct GNUNET_CRYPTO_EcdsaPublicKey *value)
{
  DBusMessageIter iter_sub;

  if (GNUNET_DBUS_message_get_pretty (message))
  {
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_STRING);
    char *encoded = GNUNET_CRYPTO_ecdsa_public_key_to_string (value);
    const char *encoded_const = encoded;
    GNUNET_DBUS_push_string (message, &iter_sub, &encoded_const);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
    GNUNET_free (encoded);
  }
  else
  {
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_ARRAY (GNUNET_DBUS_SIGNATURE_BYTE));
    GNUNET_DBUS_push_byte_array (message, &iter_sub, value->q_y, 32);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
  };
};

void
GNUNET_CRYPTO_DBUS_push_eddsa_public_key (
    DBusMessage *message,
    DBusMessageIter *iter,
    const struct GNUNET_CRYPTO_EddsaPublicKey *value)
{
  DBusMessageIter iter_sub;

  if (GNUNET_DBUS_message_get_pretty (message))
  {
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_STRING);
    char *encoded = GNUNET_CRYPTO_eddsa_public_key_to_string (value);
    const char *encoded_const = encoded;
    GNUNET_DBUS_push_string (message, &iter_sub, &encoded_const);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
    GNUNET_free (encoded);
  }
  else
  {
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_ARRAY (GNUNET_DBUS_SIGNATURE_BYTE));
    GNUNET_DBUS_push_byte_array (message, &iter_sub, value->q_y, 32);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
  };
};