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;
 
   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);
   /* 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 */
 }
 
 /* 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 */
 
   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;
   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
      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, ...);
 
   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
      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,
   void (*verify_public_key)(SilcClient client, SilcClientConnection conn,
                            SilcConnectionType conn_type,
                            SilcPublicKey public_key,