updates.
[website.git] / docs / toolkit / manual / silcclient-SilcClientOperations.html
diff --git a/docs/toolkit/manual/silcclient-SilcClientOperations.html b/docs/toolkit/manual/silcclient-SilcClientOperations.html
new file mode 100644 (file)
index 0000000..ff2be0b
--- /dev/null
@@ -0,0 +1,411 @@
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-a" />
+ <meta http-equiv="Content-Language" content="en" />
+ <meta name="description" content="SILC Secure Internet Live Conferencing" />
+ <meta name="keywords" content="SILC, secure, chat, protocol, cipher, encrypt, SKE" />
+ <meta content="INDEX, FOLLOW" name="ROBOTS" />
+ <style type="text/css">
+  <!--
+  body { color: #000000; background: #f0f0f0; font-family: Helvetica, Arial, Sans-serif; }
+  a:link { text-decoration: none; color: #2f488f; }
+  a:visited { text-decoration: none;color: #2f488f; }
+  a:active { text-decoration: none; color: #2f488f; }
+  -->
+ </style>
+</head>
+
+<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
+
+<table border="0" cellspacing="0" cellpadding="6" width="100%">
+ <tr valign="top" bgcolor="#dddddd">
+  <td><small>Copyright &copy; 2001 - 2007 SILC Project<br />
+    <a href="http://silcnet.org">SILC Project Website</a></small></td>
+  <td align="right"><small>
+   <a href="index.html">SILC Toolkit Reference Manual</a><br />
+   <a href="toolkit_index.html">Index</a></small></td>
+   </small></td>
+ </tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="0" width="100%">
+<tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top">
+
+  <td width="200" bgcolor="#f0f0f0">
+   <img src="space.gif" width="1" height="1" border="0" alt="">
+   <table width="100%" cellpadding="2" cellspacing="2" border="0">
+    <tr valign="top"><td>
+<br />
+<small>
+<!-- Template file for the big index that appears in the Toolkit reference
+manual on the left side.  With this file it is possible to add other than
+automatically generated links to that list. -->
+
+<a href="index.html"><img src="box.gif" border="0" alt="">SILC Toolkit Reference Manual</a><br />
+
+
+<a href=silccryptlib.html><img src=box.gif border=0 alt=>SILC Crypto Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcrng_intro.html><img src=box2.gif border=0 alt=>Introduction to SILC RNG</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcrng.html><img src=box2.gif border=0 alt=>SILC RNG Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silccipher.html><img src=box2.gif border=0 alt=>SILC Cipher API</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcpkcs.html><img src=box2.gif border=0 alt=>SILC PKCS API</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcpk.html><img src=box2.gif border=0 alt=>SILC Public Key API</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcpkcs1.html><img src=box2.gif border=0 alt=>SILC PKCS #1 API</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silchash.html><img src=box2.gif border=0 alt=>SILC Hash Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silchmac.html><img src=box2.gif border=0 alt=>SILC HMAC Interface</a><br />
+<a href=silccorelib.html><img src=box.gif border=0 alt=>SILC Core Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcauth.html><img src=box2.gif border=0 alt=>SILC Authentication Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcmessage.html><img src=box2.gif border=0 alt=>SILC Message Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcchannel.html><img src=box2.gif border=0 alt=>SILC Channel Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silccommand.html><img src=box2.gif border=0 alt=>SILC Command Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcnotify.html><img src=box2.gif border=0 alt=>SILC Notify Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcstatus.html><img src=box2.gif border=0 alt=>SILC Status Types</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcmode.html><img src=box2.gif border=0 alt=>SILC Modes</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcid.html><img src=box2.gif border=0 alt=>SILC ID Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcargument.html><img src=box2.gif border=0 alt=>SILC Argument Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcattrs.html><img src=box2.gif border=0 alt=>SILC Attributes Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcpacket.html><img src=box2.gif border=0 alt=>Packet Engine Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcpubkey.html><img src=box2.gif border=0 alt=>SILC Public Key Payload Interface</a><br />
+<a href=silcskelib.html><img src=box.gif border=0 alt=>SILC Key Exchange Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcske.html><img src=box2.gif border=0 alt=>SILC SKE Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcconnauth.html><img src=box2.gif border=0 alt=>SILC Connection Authentication Interface</a><br />
+<a href=silcvcardlib.html><img src=box.gif border=0 alt=>SILC VCard Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcvcard.html><img src=box2.gif border=0 alt=>SILC VCard Interface</a><br />
+<a href=silcmathlib.html><img src=box.gif border=0 alt=>SILC Math Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcmp.html><img src=box2.gif border=0 alt=>SILC MP Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcmath.html><img src=box2.gif border=0 alt=>SILC Math Interface</a><br />
+<a href=silcclientlib.html><img src=box.gif border=0 alt=>SILC Client Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcclient_using.html><img src=box2.gif border=0 alt=>Using SILC Client Library Tutorial</a><br />
+&nbsp;&nbsp;&nbsp; <a href=command_reply_args.html><img src=box2.gif border=0 alt=>Arguments for <b>command_reply</b> Client Operation</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcstatus_args.html><img src=box2.gif border=0 alt=>SilcStatus Error Arguments in <b>command_reply</b> Client Operation</a><br />
+&nbsp;&nbsp;&nbsp; <a href=notifyargs.html><img src=box2.gif border=0 alt=>Arguments for <b>notify</b> Client Operation</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcclient_unicode.html><img src=box2.gif border=0 alt=>Unicode and UTF-8 Strings in Client Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcclient.html><img src=box2.gif border=0 alt=>Client Library Interface Reference</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcclient_entry.html><img src=box2.gif border=0 alt=>Client Entry Interface Reference</a><br />
+<a href=silcasn1lib.html><img src=box.gif border=0 alt=>SILC ASN.1 Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcasn1.html><img src=box2.gif border=0 alt=>SILC ASN.1 Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcber.html><img src=box2.gif border=0 alt=>SILC BER interface</a><br />
+<a href=silchttplib.html><img src=box.gif border=0 alt=>SILC HTTP Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silchttpserver.html><img src=box2.gif border=0 alt=>SILC HTTP Server Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silchttpphp.html><img src=box2.gif border=0 alt=>SILC HTTP PHP Translator</a><br />
+<a href=silcutillib.html><img src=box.gif border=0 alt=>SILC Utility Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silctypes.html><img src=box2.gif border=0 alt=>Basic Types and Definitions</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcbuffer.html><img src=box2.gif border=0 alt=>Data Buffer Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcbuffmt.html><img src=box2.gif border=0 alt=>Data Buffer Format Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silchashtable.html><img src=box2.gif border=0 alt=>Hash Table Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcmemory.html><img src=box2.gif border=0 alt=>Memory Allocation Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcstack.html><img src=box2.gif border=0 alt=>Data Stack (memory pool) Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcfsm.html><img src=box2.gif border=0 alt=>Finite State Machine Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcthread.html><img src=box2.gif border=0 alt=>Thread Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcmutex.html><img src=box2.gif border=0 alt=>Mutual Exclusion Lock Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silccond.html><img src=box2.gif border=0 alt=>Condition Variable Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcatomic.html><img src=box2.gif border=0 alt=>Atomic Operations Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcnet.html><img src=box2.gif border=0 alt=>Network (TCP and UDP) Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcschedule.html><img src=box2.gif border=0 alt=>Scheduler Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcasync.html><img src=box2.gif border=0 alt=>Asynchronous Operation Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcstream.html><img src=box2.gif border=0 alt=>Abstract Stream Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcsocketstream.html><img src=box2.gif border=0 alt=>Socket Stream Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcfdstream.html><img src=box2.gif border=0 alt=>File Descriptor Stream Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcfileutil.html><img src=box2.gif border=0 alt=>File Utility Functions</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcstrutil.html><img src=box2.gif border=0 alt=>String Utility Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcsnprintf.html><img src=box2.gif border=0 alt=>Snprintf Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcutf8.html><img src=box2.gif border=0 alt=>UTF-8 String Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcstringprep.html><img src=box2.gif border=0 alt=>Stringprep Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcutil.html><img src=box2.gif border=0 alt=>Utility Functions</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silclist.html><img src=box2.gif border=0 alt=>List Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcdlist.html><img src=box2.gif border=0 alt=>Dynamic List Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcmime.html><img src=box2.gif border=0 alt=>MIME Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silctime.html><img src=box2.gif border=0 alt=>Time Utility Functions</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silclog.html><img src=box2.gif border=0 alt=>Logging Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcconfig.html><img src=box2.gif border=0 alt=>Config File Interface</a><br />
+<a href=silcskrlib.html><img src=box.gif border=0 alt=>SILC Key Repository Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcskr.html><img src=box2.gif border=0 alt=>SILC SKR Interface</a><br />
+<a href=silcaputillib.html><img src=box.gif border=0 alt=>SILC Application Utility Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcapputil.html><img src=box2.gif border=0 alt=>SILC Application Utilities</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcidcache.html><img src=box2.gif border=0 alt=>SILC ID Cache Interface</a><br />
+<a href=silcsftplib.html><img src=box.gif border=0 alt=>SILC SFTP Library</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcsftp.html><img src=box2.gif border=0 alt=>SILC SFTP Interface</a><br />
+&nbsp;&nbsp;&nbsp; <a href=silcsftp_fs.html><img src=box2.gif border=0 alt=>SFTP Filesystems Interface</a><br />
+
+<br />
+<b>Resource Links</b>
+<br />
+<a href="http://silcnet.org"><img src="box.gif" border="0" alt="">SILC Project Website</a><br />
+<a href="http://silcnet.org/support/documentation/"><img src="box.gif" border="0" alt="">SILC Protocol Documentation</a><br />
+<a href="http://silcnet.org/support/documentation/wp/"><img src="box.gif" border="0" alt="">SILC White Paper</a><br />
+<a href="http://silcnet.org/support/faq/"><img src="box.gif" border="0" alt="">SILC FAQs</a><br />
+
+</small>
+<br /><br /><br /><br />
+    </td></tr>
+   </table>
+  </td>
+
+  <td bgcolor="#cccccc" background="dot.gif">
+   <img src="space.gif" width="1" height="1" border="0" alt=""></td>
+
+  <td width="720" bgcolor="#ffffff">
+   <img src="space.gif" width="1" height="1" border="0" alt="">
+   <table cellpadding="2" cellspacing="6" width="100%">
+    <tr><td valign="top">
+<br />
+
+<FONT SIZE="+2" COLOR="#000055"><B>Structure <A NAME="SilcClientOperations">SilcClientOperations</A></FONT></B><BR><BR>
+
+<FONT SIZE="+1"><B>
+<FONT COLOR="#000055">NAME
+</FONT></B></FONT>
+<PRE><FONT FACE="courier" size="3">
+    typedef struct { ... } <B>SilcClientOperations</B>;
+
+</FONT></PRE><FONT SIZE="+1"><B>
+<FONT COLOR="#000055">DESCRIPTION
+</FONT></B></FONT>
+<PRE><FONT FACE="Helvetiva,Arial,Sans-serif">
+    SILC Client Operations. These must be implemented by the application.
+    The Client library may call any of these routines at any time.  The
+    routines are used to deliver certain information to the application
+    or from the application to the client library.
+
+</FONT></PRE><FONT SIZE="+1"><B>
+<FONT COLOR="#000055">SOURCE
+</FONT></B></FONT>
+<PRE><FONT FACE="courier" size="3">    typedef struct SilcClientOperationsStruct {
+      /* Message sent to the application by library. `conn' associates the
+         message to a specific connection.  `conn', however, may be NULL.
+         The `type' indicates the type of the message sent by the library.
+         The application can for example filter the message according the
+         type.  The variable argument list is arguments to the formatted
+         message `msg'.  A <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A>, <A HREF="silcclient_entry-SilcChannelEntry.html">SilcChannelEntry</A> or <A HREF="silcclient_entry-SilcServerEntry.html">SilcServerEntry</A>
+         can be associated with the message inside the `conn' by the library,
+         and application may use it to better target the message. */
+      void (*say)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                  <A HREF="silcclient-SilcClientMessageType.html">SilcClientMessageType</A> type, char *msg, ...);
+    
+      /* Message for a channel. The `sender' is the sender of the message
+         The `channel' is the channel. The `message' is the message.  Note
+         that `message' maybe NULL.  The `flags' indicates message flags
+         and it is used to determine how the message can be interpreted
+         (like it may tell the message is multimedia message).  The `payload'
+         may be used to retrieve all the details of the message. */
+      void (*channel_message)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                              <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> sender, <A HREF="silcclient_entry-SilcChannelEntry.html">SilcChannelEntry</A> channel,
+                              <A HREF="silcmessage-SilcMessagePayload.html">SilcMessagePayload</A> payload,
+                              <A HREF="silcclient-SilcChannelPrivateKey.html">SilcChannelPrivateKey</A> key, <A HREF="silcmessage-SilcMessageFlags.html">SilcMessageFlags</A> flags,
+                              const unsigned char *message,
+                              <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> message_len);
+    
+      /* Private message to the client. The `sender' is the sender of the
+         message. The message is `message'and maybe NULL.  The `flags'
+         indicates message flags  and it is used to determine how the message
+         can be interpreted (like it may tell the message is multimedia
+         message).  The `payload' may be used to retrieve all the details of
+         the message. */
+      void (*private_message)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                              <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> sender, <A HREF="silcmessage-SilcMessagePayload.html">SilcMessagePayload</A> payload,
+                              <A HREF="silcmessage-SilcMessageFlags.html">SilcMessageFlags</A> flags, const unsigned char *message,
+                              <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> message_len);
+    
+      /* Notify message to the client.  The arguments are notify `type' specific.
+         See separate documentation in the Toolkit Reference Manual for the notify
+         arguments. */
+      void (*notify)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                     <A HREF="silcnotify-SilcNotifyType.html">SilcNotifyType</A> type, ...);
+    
+      /* Command handler. This function is called always after application has
+         called a command.  It will be called to indicate that the command
+         was processed.  It will also be called if error occurs while processing
+         the command.  The `success' indicates whether the command was sent
+         or if error occurred.  The `status' indicates the actual error.
+         The `argc' and `argv' are the command line arguments sent to the
+         command by application.  Note that, this is not reply to the command
+         from server, this is merely and indication to application that the
+         command was processed. */
+      void (*command)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                      <A HREF="silctypes-SilcBool.html">SilcBool</A> success, <A HREF="silccommand-SilcCommand.html">SilcCommand</A> command, <A HREF="silcstatus-SilcStatus.html">SilcStatus</A> status,
+                      <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> argc, unsigned char **argv);
+    
+      /* Command reply handler.  Delivers a reply to command that was sent
+         earlier.  The `conn' is the associated client connection.  The `command'
+         indicates the command reply type.  If the `status' other than
+         SILC_STATUS_OK an error occurred.  In this case the `error' will indicate
+         the error.  It is possible to receive list of command replies and list
+         of errors.  In this case the `status' will indicate it is an list entry
+         (the `status' is SILC_STATUS_LIST_START, SILC_STATUS_LIST_ITEM and/or
+         SILC_STATUS_LIST_END).
+    
+         The arguments received in `ap' are command specific.  See a separate
+         documentation in the Toolkit Reference Manual for the command reply
+         arguments. */
+      void (*command_reply)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                            <A HREF="silccommand-SilcCommand.html">SilcCommand</A> command, <A HREF="silcstatus-SilcStatus.html">SilcStatus</A> status,
+                            <A HREF="silcstatus-SilcStatus.html">SilcStatus</A> error, va_list ap);
+    
+      /* Find authentication method and authentication data by hostname and
+         port. The hostname may be IP address as well. The `auth_method' is
+         the authentication method the remote connection requires.  It is
+         however possible that remote accepts also some other authentication
+         method.  Application should use the method that may have been
+         configured for this connection.  If none has been configured it should
+         use the required `auth_method'.  If the `auth_method' is
+         SILC_AUTH_NONE, server does not require any authentication or the
+         required authentication method is not known.  The `completion'
+         callback must be called to deliver the chosen authentication method
+         and data. The `conn' may be NULL. */
+      void (*get_auth_method)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                              char *hostname, <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> port,
+                              <A HREF="silcauth-SilcAuthMethod.html">SilcAuthMethod</A> auth_method,
+                              <A HREF="silcclient-SilcGetAuthMeth.html">SilcGetAuthMeth</A> completion, void *context);
+    
+      /* Called to verify received public key. The `conn_type' indicates which
+         entity (server or client) has sent the public key. If user decides to
+         trust the key the application may save the key as trusted public key for
+         later use. The `completion' must be called after the public key has
+         been verified. */
+      void (*verify_public_key)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                                <A HREF="silcconnauth-SilcConnectionType.html">SilcConnectionType</A> conn_type,
+                                <A HREF="silcpkcs-SilcPublicKey.html">SilcPublicKey</A> public_key,
+                                <A HREF="silcclient-SilcVerifyPublicKey.html">SilcVerifyPublicKey</A> completion, void *context);
+    
+      /* Ask from end user a passphrase or a password. The passphrase is
+         returned to the library by calling the `completion' callback with
+         the `context'. The returned passphrase SHOULD be in UTF-8 encoded,
+         if not then the library will attempt to encode. */
+      void (*ask_passphrase)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                             <A HREF="silcclient-SilcAskPassphrase.html">SilcAskPassphrase</A> completion, void *context);
+    
+      /* Called to indicate that incoming key agreement request has been
+         received.  If the application wants to perform key agreement it may
+         call <A HREF="silcclient-silc_client_perform_key_agreement.html">silc_client_perform_key_agreement</A> to initiate key agreement or
+         <A HREF="silcclient-silc_client_send_key_agreement.html">silc_client_send_key_agreement</A> to provide connection point to the
+         remote client in case the `hostname' is NULL.  If key agreement is
+         not desired this request can be ignored.  The `protocol' is either
+         value 0 for TCP or value 1 for UDP. */
+      void (*key_agreement)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                            <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> client_entry,
+                            const char *hostname, <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> protocol,
+                            <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> port);
+    
+      /* Notifies application that file transfer protocol session is being
+         requested by the remote client indicated by the `client_entry' from
+         the `hostname' and `port'. The `session_id' is the file transfer
+         session and it can be used to either accept or reject the file
+         transfer request, by calling the <A HREF="silcclient-silc_client_file_receive.html">silc_client_file_receive</A> or
+         <A HREF="silcclient-silc_client_file_close.html">silc_client_file_close</A>, respectively. */
+      void (*ftp)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
+                  <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> client_entry, <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> session_id,
+                  const char *hostname, <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> port);
+    } <B>SilcClientOperations</B>;</FONT></PRE>
+<br /><br /><br /><br />
+    </td></tr>
+   </table>
+  </td>
+
+  <td bgcolor="#cccccc" background="dot.gif">
+   <img src="space.gif" width="1" height="1" border="0" alt=""></td>
+
+  <td width="180" bgcolor="#f0f0f0">
+    <img src="space.gif" width="1" height="1" border="0" alt="">
+    <table width="100%" cellpadding="4" cellspacing="0">
+    <tr valign="top"><td>
+<br />
+<font face="Helvetica,Arial,Sans-serif" size="1">
+<A HREF="silcclient.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">Client Library Interface</A><BR>
+<A HREF="silcclient-SilcClientConnectionStatus.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnectionStatus</A><BR>
+<A HREF="silcclient-SilcClientRunning.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientRunning</A><BR>
+<A HREF="silcclient-SilcClientStopped.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientStopped</A><BR>
+<A HREF="silcclient-SilcClientConnectCallback.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnectCallback</A><BR>
+<A HREF="silcclient-SilcClient.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClient</A><BR>
+<A HREF="silcclient-SilcClientConnection.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnection</A><BR>
+<A HREF="silcclient-SilcChannelUser.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcChannelUser</A><BR>
+<A HREF="silcclient-SilcClientStats.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientStats</A><BR>
+<A HREF="silcclient-SilcKeyAgreementStatus.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcKeyAgreementStatus</A><BR>
+<A HREF="silcclient-SilcKeyAgreementCallback.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcKeyAgreementCallback</A><BR>
+<A HREF="silcclient-SilcPrivateMessageKeys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcPrivateMessageKeys</A><BR>
+<A HREF="silcclient-SilcChannelPrivateKey.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcChannelPrivateKey</A><BR>
+<A HREF="silcclient-SilcAskPassphrase.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcAskPassphrase</A><BR>
+<A HREF="silcclient-SilcVerifyPublicKey.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcVerifyPublicKey</A><BR>
+<A HREF="silcclient-SilcGetAuthMeth.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcGetAuthMeth</A><BR>
+<A HREF="silcclient-SilcClientMessageType.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientMessageType</A><BR>
+<A HREF="silcclient-SilcClientOperations.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientOperations</A><BR>
+<A HREF="silcclient-SilcClientParams.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientParams</A><BR>
+<A HREF="silcclient-silc_client_alloc.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_alloc</A><BR>
+<A HREF="silcclient-silc_client_free.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_free</A><BR>
+<A HREF="silcclient-silc_client_init.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_init</A><BR>
+<A HREF="silcclient-silc_client_run.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_run</A><BR>
+<A HREF="silcclient-silc_client_run_one.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_run_one</A><BR>
+<A HREF="silcclient-silc_client_stop.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_stop</A><BR>
+<A HREF="silcclient-SilcClientConnectionParams.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnectionParams</A><BR>
+<A HREF="silcclient-silc_client_connect_to_server.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_connect_to_server</A><BR>
+<A HREF="silcclient-silc_client_connect_to_client.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_connect_to_client</A><BR>
+<A HREF="silcclient-silc_client_key_exchange.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_key_exchange</A><BR>
+<A HREF="silcclient-silc_client_close_connection.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_close_connection</A><BR>
+<A HREF="silcclient-silc_client_send_channel_message.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_send_channel_message</A><BR>
+<A HREF="silcclient-silc_client_send_private_message.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_send_private_message</A><BR>
+<A HREF="silcclient-silc_client_private_message_wait_init.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_wait_init</A><BR>
+<A HREF="silcclient-silc_client_private_message_wait_uninit.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_wait_uninit</A><BR>
+<A HREF="silcclient-silc_client_private_message_wait.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_wait</A><BR>
+<A HREF="silcclient-silc_client_on_channel.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_on_channel</A><BR>
+<A HREF="silcclient-silc_client_command_call.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_command_call</A><BR>
+<A HREF="silcclient-SilcClientCommandReply.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientCommandReply</A><BR>
+<A HREF="silcclient-silc_client_command_send.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_command_send</A><BR>
+<A HREF="silcclient-silc_client_command_pending.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_command_pending</A><BR>
+<A HREF="silcclient-silc_client_add_private_message_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_add_private_message_key</A><BR>
+<A HREF="silcclient-silc_client_add_private_message_key_ske.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_add_private_message_key_ske</A><BR>
+<A HREF="silcclient-silc_client_del_private_message_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_del_private_message_key</A><BR>
+<A HREF="silcclient-silc_client_list_private_message_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_list_private_message_keys</A><BR>
+<A HREF="silcclient-silc_client_free_private_message_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_free_private_message_keys</A><BR>
+<A HREF="silcclient-silc_client_private_message_key_is_set.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_key_is_set</A><BR>
+<A HREF="silcclient-silc_client_add_channel_private_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_add_channel_private_key</A><BR>
+<A HREF="silcclient-silc_client_del_channel_private_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_del_channel_private_keys</A><BR>
+<A HREF="silcclient-silc_client_del_channel_private_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_del_channel_private_key</A><BR>
+<A HREF="silcclient-silc_client_list_channel_private_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_list_channel_private_keys</A><BR>
+<A HREF="silcclient-silc_client_current_channel_private_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_current_channel_private_key</A><BR>
+<A HREF="silcclient-silc_client_send_key_agreement.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_send_key_agreement</A><BR>
+<A HREF="silcclient-silc_client_perform_key_agreement.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_perform_key_agreement</A><BR>
+<A HREF="silcclient-silc_client_perform_key_agreement_stream.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_perform_key_agreement_stream</A><BR>
+<A HREF="silcclient-silc_client_abort_key_agreement.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_abort_key_agreement</A><BR>
+<A HREF="silcclient-silc_client_set_away_message.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_set_away_message</A><BR>
+<A HREF="silcclient-SilcClientMonitorStatus.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientMonitorStatus</A><BR>
+<A HREF="silcclient-SilcClientFileError.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileError</A><BR>
+<A HREF="silcclient-SilcClientFileMonitor.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileMonitor</A><BR>
+<A HREF="silcclient-SilcClientFileName.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileName</A><BR>
+<A HREF="silcclient-SilcClientFileAskName.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileAskName</A><BR>
+<A HREF="silcclient-silc_client_file_send.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_file_send</A><BR>
+<A HREF="silcclient-silc_client_file_receive.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_file_receive</A><BR>
+<A HREF="silcclient-silc_client_file_close.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_file_close</A><BR>
+<A HREF="silcclient-silc_client_attribute_add.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attribute_add</A><BR>
+<A HREF="silcclient-silc_client_attribute_del.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attribute_del</A><BR>
+<A HREF="silcclient-silc_client_attributes_get.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attributes_get</A><BR>
+<A HREF="silcclient-silc_client_attributes_request.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attributes_request</A><BR>
+<A HREF="silcclient-silc_client_nickname_format.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_nickname_format</A><BR>
+<A HREF="silcclient-silc_client_nickname_parse.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_nickname_parse</A><BR>
+</font>
+
+<br /><br /><br /><br />
+    </td></tr>
+    </table>
+  </td>
+</tr>
+</table>
+
+<table border="0" cellspacing="0" cellpadding="0" width="100%">
+<tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="6" width="100%">
+ <tr valign="top" bgcolor="#dddddd">
+  <td><small>Copyright &copy; 2001 - 2007 SILC Project<br />
+    <a href="http://silcnet.org">SILC Project Website</a></small></td>
+  <td align="right"><small>
+   <a href="index.html">SILC Toolkit Reference Manual</a><br />
+   <a href="toolkit_index.html">Index</a></small></td>
+   </small></td>
+ </tr>
+</table>
+
+</body>
+</html>