silcclient: associate context with verify_public_key
authorPekka Riikonen <priikone@silcnet.org>
Sat, 10 May 2014 14:15:17 +0000 (17:15 +0300)
committerPekka Riikonen <priikone@silcnet.org>
Sat, 10 May 2014 14:15:17 +0000 (17:15 +0300)
To allow application to better target the public key verification request
add support to have the client or server entry associated with the request
inside SilcClientConnection context.

lib/silcclient/client_prvmsg.c
lib/silcclient/silcclient.h

index 8116a9ff525636c237f4e0908e208aefbd843e2a..353d606c2e4d211652b71bc1b9dc93271fd73cf0 100644 (file)
@@ -1006,12 +1006,17 @@ silc_client_autoneg_key_verify_pubkey(SilcSKE ske,
   verify->context = ake;
   ake->verify = verify;
 
+  conn->context_type = SILC_ID_CLIENT;
+  conn->client_entry = client_entry;
+
   /* Verify public key in application */
   client->internal->ops->verify_public_key(
                                client, conn,
                                SILC_CONN_CLIENT, ake->public_key,
                                silc_client_autoneg_key_verify_pubkey_cb,
                                verify);
+
+  conn->context_type = SILC_ID_NONE;
 }
 
 /* Key exchange protocol completion callback */
index 58e43f158c85230ee5f126acb31649d01f56329f..c6d8260a619eab11174d40d3a0ef72fd8c71ad30 100644 (file)
@@ -232,9 +232,9 @@ struct SilcClientConnectionStruct {
   void *callback_context;             /* Connection context */
   SilcClient client;                  /* Pointer back to SilcClient */
 
-  /* Current say() operation associated context, identifies the client,
-     channel or server the message is related to.  Application can use
-     this information to target the message better. */
+  /* Current say() or verify_public_key() operation associated context,
+     identifies the client, channel or server the operation is related to.
+     Application can use this information to target the operation better. */
   union {
     SilcClientEntry client_entry;
     SilcChannelEntry channel_entry;
@@ -519,8 +519,9 @@ typedef struct SilcClientOperationsStruct {
      The application can for example filter the message according the
      type.  The variable argument list is arguments to the formatted
      message `msg'.  A SilcClientEntry, SilcChannelEntry or SilcServerEntry
-     can be associated with the message inside the `conn' by the library,
-     and application may use it to better target the message. */
+     can be associated with the message inside the SilcClientConnection
+     by the library, and application may use it to better target the
+     message. */
   void (*say)(SilcClient client, SilcClientConnection conn,
              SilcClientMessageType type, char *msg, ...);
 
@@ -603,7 +604,9 @@ typedef struct SilcClientOperationsStruct {
      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. */
+     been verified.  A SilcClientEntry or SilcServerEntry can be associated
+     with this request inside the SilcClientConnection by the library, and
+     application may use it to better target the verification request. */
   void (*verify_public_key)(SilcClient client, SilcClientConnection conn,
                            SilcConnectionType conn_type,
                            SilcPublicKey public_key,