updates.
authorPekka Riikonen <priikone@silcnet.org>
Tue, 27 Feb 2001 15:22:35 +0000 (15:22 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 27 Feb 2001 15:22:35 +0000 (15:22 +0000)
lib/silcclient/silcapi.h

index 33fcdbf4b2dcd31343e03ceb1d36db7a1cb0bf16..d81b00daf8668c8d78af74f34e1e1a1448a2a773 100644 (file)
@@ -370,10 +370,14 @@ void silc_client_command_pending(SilcClientConnection conn,
 
 /* Adds private message key to the client library. The key will be used to
    encrypt all private message between the client and the remote client
 
 /* Adds private message key to the client library. The key will be used to
    encrypt all private message between the client and the remote client
-   indicated by the `client_entry'.  If `key' is NULL and the boolean value
-   `generate_key' is TRUE then the library will generate random key.  
-   Otherwise the `key' provided by the application will be used.  It maybe
-   random key or pre-shared-key.
+   indicated by the `client_entry'. If the key and the IV arguments are NULL
+   and the boolean value `generate_key' is TRUE the library will generate
+   random key. Otherwise, the key material provided by the application
+   will be used. It maybe random key or pre-shared-key. If the send
+   and receive keys should be same they may be set to same. Same applies
+   for send IV and receive IV, they maybe same. If the IV arguments
+   are NULL, the library will use NULL as IV (may not be desired from
+   the security persperctive).
 
    It is not necessary to set key for normal private message usage. If the
    key is not set then the private messages are encrypted using normal
 
    It is not necessary to set key for normal private message usage. If the
    key is not set then the private messages are encrypted using normal
@@ -388,8 +392,14 @@ void silc_client_command_pending(SilcClientConnection conn,
 int silc_client_add_private_message_key(SilcClient client,
                                        SilcClientConnection conn,
                                        SilcClientConnection client_entry,
 int silc_client_add_private_message_key(SilcClient client,
                                        SilcClientConnection conn,
                                        SilcClientConnection client_entry,
-                                       unsigned char *key,
-                                       unsigned int key_len,
+                                       unsigned char *send_key,
+                                       unsigned int send_key_len,
+                                       unsigned char *receive_key,
+                                       unsigned int receive_key_len,
+                                       unsigned char *send_iv,
+                                       unsigned int send_iv_len,
+                                       unsigned char *receive_iv;
+                                       unsigned int receive_iv_len,
                                        int generate_key);
 
 /* Removes the private message from the library. The key won't be used
                                        int generate_key);
 
 /* Removes the private message from the library. The key won't be used
@@ -401,11 +411,13 @@ int silc_client_del_private_message_key(SilcClient client,
 
 /* Structure to hold the list of private message keys. The array of this
    structure is returned by the silc_client_list_private_message_keys
 
 /* Structure to hold the list of private message keys. The array of this
    structure is returned by the silc_client_list_private_message_keys
-   function.  */
+   function. The IV's are not returned as they are not important. */
 typedef struct {
   SilcClientEntry client_entry;       /* The remote client entry */
 typedef struct {
   SilcClientEntry client_entry;       /* The remote client entry */
-  unsigned char *key;                /* The raw key data */
-  unsigned int key_len;                      /* The key length */
+  unsigned char *send_key;                   /* The raw key data */
+  unsigned int send_key_len;                 /* The key length */
+  unsigned char *receive_key;        /* The raw key data */
+  unsigned int receive_key_len;              /* The key length */
   int generated;                     /* TRUE if library generated the key */
 } *SilcPrivateMessageKeys;
 
   int generated;                     /* TRUE if library generated the key */
 } *SilcPrivateMessageKeys;
 
@@ -500,12 +512,12 @@ void silc_client_free_channel_private_keys(SilcChannelPrivateKey *keys,
    key agreement protocol. The `key' is the allocated key material and
    the caller is responsible of freeing it. The `key' is NULL if error
    has occured. The application can freely use the `key' to whatever
    key agreement protocol. The `key' is the allocated key material and
    the caller is responsible of freeing it. The `key' is NULL if error
    has occured. The application can freely use the `key' to whatever
-   purpose it needs. */
+   purpose it needs. See lib/silcske/silcske.h for the definition of
+   the SilcSKEKeyMaterial structure. */
 typedef void (*SilcKeyAgreementCallback)(SilcClient client,
                                         SilcClientConnection conn,
                                         SilcClientEntry client_entry,
 typedef void (*SilcKeyAgreementCallback)(SilcClient client,
                                         SilcClientConnection conn,
                                         SilcClientEntry client_entry,
-                                        unsigned char *key,
-                                        unsigned int key_len,
+                                        SilcSKEKeyMaterial *key,
                                         void *context);
 
 /* Sends key agreement request to the remote client indicated by the
                                         void *context);
 
 /* Sends key agreement request to the remote client indicated by the