X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_hello_lib.h;h=867ff686d0d14d785cecc6b253cc678b01165781;hb=6973ade884b8e22e7fcaa51a90d00a8caa2d2fa4;hp=09f5f1c7d151cfe49d6638d88674f8c28f1b00bc;hpb=623df97886da9ee06724b7860a1a2463737b750e;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_hello_lib.h b/src/include/gnunet_hello_lib.h index 09f5f1c7d..867ff686d 100644 --- a/src/include/gnunet_hello_lib.h +++ b/src/include/gnunet_hello_lib.h @@ -39,6 +39,12 @@ extern "C" #include "gnunet_crypto_lib.h" +/** + * Prefix that every HELLO URI must start with. + */ +#define GNUNET_HELLO_URI_PREFIX "gnunet://hello/" + + /** * An address for communicating with a peer. We frequently * need this tuple and the components cannot really be @@ -50,7 +56,7 @@ struct GNUNET_HELLO_Address /** * For which peer is this an address? - */ + */ struct GNUNET_PeerIdentity peer; /** @@ -83,9 +89,8 @@ struct GNUNET_HELLO_Address */ struct GNUNET_HELLO_Address * GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer, - const char *transport_name, - const void *address, - size_t address_length); + const char *transport_name, const void *address, + size_t address_length); /** @@ -108,7 +113,7 @@ GNUNET_HELLO_address_copy (const struct GNUNET_HELLO_Address *address); */ int GNUNET_HELLO_address_cmp (const struct GNUNET_HELLO_Address *a1, - const struct GNUNET_HELLO_Address *a2); + const struct GNUNET_HELLO_Address *a2); /** @@ -122,7 +127,7 @@ GNUNET_HELLO_address_get_size (const struct GNUNET_HELLO_Address *address); /** * Free an address. - * + * * @param addr address to free */ #define GNUNET_HELLO_address_free(addr) GNUNET_free(addr) @@ -150,8 +155,7 @@ struct GNUNET_HELLO_Message; */ size_t GNUNET_HELLO_add_address (const struct GNUNET_HELLO_Address *address, - struct GNUNET_TIME_Absolute expiration, - char *target, + struct GNUNET_TIME_Absolute expiration, char *target, size_t max); @@ -179,7 +183,7 @@ typedef size_t (*GNUNET_HELLO_GenerateAddressListCallback) (void *cls, * @return the hello message */ struct GNUNET_HELLO_Message * -GNUNET_HELLO_create (const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded +GNUNET_HELLO_create (const struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded *publicKey, GNUNET_HELLO_GenerateAddressListCallback addrgen, void *addrgen_cls); @@ -240,9 +244,11 @@ GNUNET_HELLO_equals (const struct GNUNET_HELLO_Message *h1, * GNUNET_NO to delete it from the HELLO * GNUNET_SYSERR to stop iterating (but keep current address) */ -typedef int (*GNUNET_HELLO_AddressIterator) (void *cls, - const struct GNUNET_HELLO_Address *address, - struct GNUNET_TIME_Absolute expiration); +typedef int (*GNUNET_HELLO_AddressIterator) (void *cls, + const struct GNUNET_HELLO_Address * + address, + struct GNUNET_TIME_Absolute + expiration); /** @@ -304,7 +310,7 @@ GNUNET_HELLO_iterate_new_addresses (const struct GNUNET_HELLO_Message */ int GNUNET_HELLO_get_key (const struct GNUNET_HELLO_Message *hello, - struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded + struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded *publicKey); @@ -331,6 +337,45 @@ GNUNET_HELLO_get_id (const struct GNUNET_HELLO_Message *hello, struct GNUNET_MessageHeader * GNUNET_HELLO_get_header (struct GNUNET_HELLO_Message *hello); + +typedef struct GNUNET_TRANSPORT_PluginFunctions * +(*GNUNET_HELLO_TransportPluginsFind) (const char *name); + + +/** + * Compose a hello URI string from a hello message. + * + * @param hello Hello message + * @param plugins_find Function to find transport plugins by name + * @return Hello URI string + */ +char * +GNUNET_HELLO_compose_uri (const struct GNUNET_HELLO_Message *hello, + GNUNET_HELLO_TransportPluginsFind plugins_find); + +/** + * Parse a hello URI string to a hello message. + * + * @param uri URI string to parse + * @param pubkey Pointer to struct where public key is parsed + * @param hello Pointer to struct where hello message is parsed + * @param plugins_find Function to find transport plugins by name + * @return GNUNET_OK on success, GNUNET_SYSERR if the URI was invalid, GNUNET_NO on other errors + */ +int +GNUNET_HELLO_parse_uri (const char *uri, + struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded *pubkey, + struct GNUNET_HELLO_Message **hello, + GNUNET_HELLO_TransportPluginsFind plugins_find); + +#if 0 /* keep Emacsens' auto-indent happy */ +{ +#endif +#ifdef __cplusplus +} +#endif + + /* ifndef GNUNET_HELLO_LIB_H */ #endif /* end of gnunet_hello_lib.h */