Copyright © 2001 - 2002 SILC Project SILC Project Website | SILC Toolkit Reference Manual

SILC Toolkit Reference Manual SILC Core Library SILC Authentication Interface SILC Channel Interface SILC Command Interface SILC ID Interface SILC ID Cache Interface SILC Modes SILC Notify Interface SILC Argument Interface SILC Private Message Interface Packet Protocol Interface SILC Math Library SILC MP Interface SILC Math Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface SILC Utility Library Basic SILC Types SILC Buffer Interface SILC Buffer Format Interface SILC Hash Table Interface SILC Logging Interface SILC Memory Interface SILC Mutex Interface SILC Thread Interface SILC Network Interface SILC Schedule Interface SILC Socket Interface SILC Protocol Interface SILC Config Interface SILC File Util Interface SILC Util Interface SILC List Interface SILC Dynamic List Interface SILC Zip API SILC Key Exchange Library SILC SKE Interface SKE Status Types SKE Diffie Hellman Groups SKE Payloads SILC Client Library Using SILC Client Library Client Library Interface SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC HMAC Interface SILC Cipher API SILC Hash API SILC PKCS API Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQ
Function silc_client_send_key_agreement SYNOPSIS
        void silc_client_send_key_agreement(SilcClient client,
                                            SilcClientConnection conn,
                                            SilcClientEntry client_entry,
                                            char *hostname,
                                            int port,
                                            SilcUInt32 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.
Client Library Interface SilcKeyAgreementStatus SilcKeyAgreementCallback SilcPrivateMessageKeys SilcChannelPrivateKey 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_on_channel silc_client_command_alloc silc_client_command_free silc_client_command_dup silc_client_command_find silc_client_command_call silc_client_command_send 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_current_channel_private_key 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 SilcClientMonitorStatus SilcClientFileError SilcClientFileMonitor silc_client_file_send silc_client_file_receive silc_client_file_close

Copyright © 2001 - 2002 SILC Project SILC Project Website | SILC Toolkit Reference Manual