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.
|