Structure SilcClientConnectionParams
NAME
typedef struct { ... } SilcClientConnectionParams;
DESCRIPTION
Client connection parameters. This can be filled by the application
and given as argument to silc_client_connect_to_server,
silc_client_connect_to_client, silc_client_key_exchange or
silc_client_send_key_agreement.
SOURCE
typedef struct SilcClientConnectionParamsStruct {
/* If this is provided the user's nickname in the network will be the
string given here. If it is given, it must be UTF-8 encoded. If this
string is not given, the user's username by default is used as nickname.
The nickname may later be changed by using NICK command. The maximum
length for the nickname string is 128 bytes. */
char *nickname;
/* If this key repository pointer is non-NULL then public key received in
the key exchange protocol will be verified from this repository. If
this is not provided then the `verify_public_key' client operation will
be called back to application. If the boolean `verify_notfound' is set
to TRUE then the `verify_public_key' client operation will be called
in case the public key is not found in `repository'. Only public keys
added with at least SILC_SKR_USAGE_KEY_AGREEMENT in the repository will
be checked, other keys will be ignored. */
SilcSKR repository;
SilcBool verify_notfound;
/* Authentication data. Application may set here the authentication data
and authentication method to be used in connecting. If `auth_set'
boolean is TRUE then authentication data is provided by application.
If the authentication method is public key authentication then the key
pair given as argument when connecting will be used and `auth' field
is NULL. If it is passphrase authentication, it can be provided in
`auth' and `auth_len' fields. If `auth_set' is FALSE
the `get_auth_method' client operation will be called to get the
authentication method and data from application. */
SilcBool auth_set;
SilcAuthMethod auth_method;
void *auth;
SilcUInt32 auth_len;
/* If this boolean is set to TRUE then the connection will use UDP instead
of TCP. If UDP is set then also the next `local_ip' and `local_port'
must be set. */
SilcBool udp;
/* The `local_ip' specifies the local IP address used with the connection.
It must be non-NULL if `udp' boolean is TRUE. If the `local_port' is
non-zero it will be used as local port with UDP connection. The remote
host will also send packets to the specified address and port. If the
`bind_ip' is non-NULL a listener is bound to that address instead of
`local_ip'. */
char *local_ip;
char *bind_ip;
int local_port;
/* If this boolean is set to TRUE then the key exchange is done with
perfect forward secrecy. */
SilcBool pfs;
/* If this boolean is set to TRUE then connection authentication protocol
is not performed during connecting. Only key exchange protocol is
performed. This usually must be set to TRUE when connecting to another
client, but must be FALSE with server connections. */
SilcBool no_authentication;
/* The SILC session detachment data that was returned in the `command_reply'
client operation for SILC_COMMAND_DETACH command. If this is provided
here the client library will attempt to resume the session in the network.
After the connection is created and the session has been resumed the
client will receive SILC_COMMAND_NICK command_reply for the client's
nickname in the network and SILC_COMMAND_JOIN command reply for all the
channels that the client has joined in the network. It may also receive
SILC_COMMAND_UMODE command reply to set user's mode on the network. */
unsigned char *detach_data;
SilcUInt32 detach_data_len;
/* Connection timeout. If non-zero, the connection will timeout unless
the SILC connection is completed in the specified amount of time. */
SilcUInt32 timeout_secs;
/* Rekey timeout in seconds. The client will perform rekey in this
time interval. If set to zero, the default value will be used
(3600 seconds, 1 hour). */
SilcUInt32 rekey_secs;
/* If this is set to TRUE then the client will ignore all incoming
Requested Attributes queries and does not reply anything back. This
usually leads into situation where server does not anymore send
the queries after seeing that client does not reply anything back.
If your application does not support Requested Attributes or you do
not want to use them set this to TRUE. See SilcAttribute and
silc_client_attribute_add for more information on attributes. */
SilcBool ignore_requested_attributes;
/* User context for SilcClientConnection. If non-NULL this context is
set to the 'context' field in SilcClientConnection when the connection
context is created. */
void *context;
} SilcClientConnectionParams;
|