| Function silc_client_send_key_agreement
 
 SYNOPSIS
 
    void silc_client_send_key_agreement(SilcClient client,
                                        SilcClientConnection conn,
                                        SilcClientEntry client_entry,
                                        SilcClientConnectionParams *params,
                                        SilcPublicKey public_key,
                                        SilcPrivateKey private_key,
                                        SilcKeyAgreementCallback completion,
                                        void *context);
DESCRIPTION
    Sends key agreement request to the remote client indicated by the
    `client_entry'.
    If `params' is non-NULL and it has the `local_ip' and `local_port' set
    the caller will provide the connection endpoint for the key agreement
    connection.  The `bind_ip' can be used to bind to that IP instead of
    `local_ip'.  If the `udp' is set to TRUE the connection will be UDP
    instead of TCP.  Caller may also set the `repository', `verify_notfound'
    and `timeout_secs' fields in `params'.  Other fields are ignored.
    If `params' is NULL, then the `client_entry' is expected to provide
    the connection endpoint for us.  It is recommended the `timeout_secs'
    is specified in case the remote client does not reply anything to
    the request.
    The `public_key' and `private_key' is our identity in the key agreement.
    In case we do not provide the connection endpoint, we will receive
    the `key_agreement' client operation when the remote send its own
    key agreement request packet.  We may then there start the key
    agreement with silc_client_perform_key_agreement.  If we provided the
    the connection endpoint, the client operation will not be called.
    There can be only one active key agreement for `client_entry'.  Old
    key agreement may be aborted by calling silc_client_abort_key_agreement.
EXAMPLE
    // Send key agreement request (we don't provide connection endpoint)
    silc_client_send_key_agreement(client, conn, remote_client,
                                   NULL, public_key, private_key,
                                   my_keyagr_completion, my_context);
    // Another example where we provide connection endpoint (TCP).
    SilcClientConnectionParams params;
    memset(¶ms, 0, sizeof(params));
    params.local_ip = local_ip;
    params.local_port = local_port;
    params.timeout_secs = 60;
    silc_client_send_key_agreement(client, conn, remote_client,
                                   ¶ms, public_key, private_key,
                                   my_keyagr_completion, my_context);
 
 
 
 |