- GNUNET_CRYPTO_ecdsa_key_get_public(privkey, &pubkey);
-
- /* zone hash */
- GNUNET_CRYPTO_short_hash (&pubkey, sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey), &s_zone);
- GNUNET_CRYPTO_short_hash (s_name, strlen (s_name) + 1, &s_zone_value);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using PKEY `%s' \n", GNUNET_NAMESTORE_short_h2s (&s_zone_value));
-
- struct GNUNET_GNSRECORD_Data rd;
- rd.expiration_time = GNUNET_TIME_absolute_get().abs_value_us;
- rd.record_type = GNUNET_GNSRECORD_TYPE_PKEY;
- rd.data_size = sizeof (struct GNUNET_CRYPTO_ShortHashCode);
- rd.data = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_ShortHashCode));
- memcpy ((char *) rd.data, &s_zone_value, sizeof (struct GNUNET_CRYPTO_ShortHashCode));
- nsh = GNUNET_NAMESTORE_connect (cfg);
- GNUNET_break (NULL != nsh);
-
- expire = GNUNET_TIME_absolute_get ();
- et.abs_value_us = rd.expiration_time;
- s_signature = GNUNET_NAMESTORE_create_signature(privkey, et, s_name, &rd, 1);
- GNUNET_NAMESTORE_record_put(nsh, &pubkey, s_name, expire, 1, &rd, s_signature, put_cont, NULL);
-
- GNUNET_free ((void *) rd.data);
-}