SILC Core Library SILC Auth API SILC Channel API SILC Command API SILC ID API SILC ID Cache API SILC Modes SILC Notify API SILC Packet API SILC Payload API SILC Private API SILC Math Library SILC Math API SILC MP API SILC SFTP Library SILC SFTP API SILC SFTP Filesystems SILC Utility Library SILC Buffer API SILC Buffer Format API SILC Buffer Utility API SILC Hash Table API SILC Log and Debug API SILC Memory API SILC Mutex API SILC Thread API SILC Net API SILC Schedule API SILC Socket Connection API SILC Protocol API SILC Util API SILC Zip API SILC List API SILC Dynamic List API SILC Key Exchange Library SILC SKE API SILC SKE Status SILC Client Library SILC Client API SILC Crypto Library SILC Cipher API SILC Hash API SILC HMAC API SILC PKCS API SILC RNG API
Function silc_client_send_key_agreement SYNOPSIS
        void silc_client_send_key_agreement(SilcClient client,
                                            SilcClientConnection conn,
                                            SilcClientEntry client_entry,
                                            char *hostname,
                                            int port,
                                            uint32 timeout_secs,
                                            SilcKeyAgreementCallback completion,
                                            void *context);
DESCRIPTION
        Sends key agreement request to the remote client indicated by the
        `client_entry'. If the caller provides the `hostname' and the `port'
        arguments then the library will bind the client to that hostname and
        that port for the key agreement protocol. It also sends the `hostname'
        and the `port' in the key agreement packet to the remote client. This
        would indicate that the remote client may initiate the key agreement
        protocol to the `hostname' on the `port'.  If port is zero then the
        bound port is undefined (the operating system defines it).

        If the `hostname' and `port' is not provided then empty key agreement
        packet is sent to the remote client. The remote client may reply with
        the same packet including its hostname and port. If the library receives
        the reply from the remote client the `key_agreement' client operation
        callback will be called to verify whether the user wants to perform the
        key agreement or not.
NOTES
        NOTE: If the application provided the `hostname' and the `port' and the
        remote side initiates the key agreement protocol it is not verified
        from the user anymore whether the protocol should be executed or not.
        By setting the `hostname' and `port' the user gives permission to
        perform the protocol (we are responder in this case).

        NOTE: If the remote side decides not to initiate the key agreement
        or decides not to reply with the key agreement packet then we cannot
        perform the key agreement at all. If the key agreement protocol is
        performed the `completion' callback with the `context' will be called.
        If remote side decides to ignore the request the `completion' will be
        called after the specified timeout, `timeout_secs'.

        NOTE: If the `hostname' and the `port' was not provided the `completion'
        will not be called at all since this does nothing more than sending
        a packet to the remote host.

        NOTE: There can be only one active key agreement for one client entry.
        Before setting new one, the old one must be finished (it is finished
        after calling the completion callback) or the function
        silc_client_abort_key_agreement must be called.
>> SilcClientAPI >> SilcKeyAgreementStatus >> SilcKeyAgreementCallback >> SilcPrivateMessageKeys >> SilcAskPassphrase >> SilcVerifyPublicKey >> SilcGetAuthMeth >> SilcClientMessageType >> SilcClientOperations >> SilcNicknameFormatParse >> SilcClientParams >> silc_client_alloc >> silc_client_free >> silc_client_init >> silc_client_run >> silc_client_run_one >> silc_client_stop >> silc_client_connect_to_server >> silc_client_add_connection >> silc_client_del_connection >> silc_client_add_socket >> silc_client_del_socket >> silc_client_start_key_exchange >> silc_client_close_connection >> silc_client_send_channel_message >> silc_client_send_private_message >> SilcGetClientCallback >> silc_client_get_clients >> silc_client_get_clients_local >> silc_client_get_clients_by_list >> silc_client_get_client_by_id >> silc_client_get_client_by_id_resolve >> silc_client_del_client >> SilcGetChannelCallback >> silc_client_get_channel >> silc_client_get_channel_id_resolve >> silc_client_get_channel_by_id_resolve >> silc_client_del_channel >> silc_client_get_server >> silc_client_get_server_by_id >> silc_client_del_server >> silc_client_command_alloc >> silc_client_command_free >> silc_client_command_dup >> silc_client_command_find >> silc_client_send_command >> SilcClientPendingDestructor >> silc_client_command_pending >> silc_client_add_private_message_key >> silc_client_add_private_message_key_ske >> silc_client_send_private_message_key >> silc_client_del_private_message_key >> silc_client_list_private_message_keys >> silc_client_free_private_message_keys >> silc_client_add_channel_private_key >> silc_client_del_channel_private_keys >> silc_client_del_channel_private_key >> silc_client_list_channel_private_keys >> silc_client_free_channel_private_keys >> silc_client_send_key_agreement >> silc_client_perform_key_agreement >> silc_client_perform_key_agreement_fd >> silc_client_abort_key_agreement >> silc_client_set_away_message >> SilcConnectionAuthRequest >> silc_client_request_authentication_method >> silc_client_file_receive(1) >> silc_client_file_send >> silc_client_file_receive >> silc_client_file_close