SilcRng rng;
int responder;
- /* Destinations ID taken from authenticataed packet so that we can
- get the destinations ID. */
- void *dest_id;
- SilcIdType dest_id_type;
+ void *dest_id; /* Destination ID from packet */
+ SilcIdType dest_id_type; /* Destination ID type */
- SilcBuffer packet;
- SilcSKE ske;
+ SilcTask timeout_task;
+ SilcPacketContext *packet;
+
+ SilcSKESendPacketCb send_packet; /* SKE's packet sending callback */
+ SilcSKEVerifyCb verify; /* SKE's key verify callback */
+ SilcSKE ske; /* The SKE object */
+ SilcSKEKeyMaterial *keymat; /* The negotiated key material */
+ void *context; /* Internal context */
} SilcClientKEInternalContext;
/* Internal context for connection authentication protocol */
starting the protocol if we know the authentication data. Otherwise
these are and remain NULL. */
unsigned char *auth_data;
- unsigned int auth_data_len;
+ uint32 auth_data_len;
SilcTask timeout_task;
} SilcClientConnAuthInternalContext;
/* Prototypes */
void silc_client_protocols_register(void);
void silc_client_protocols_unregister(void);
+void silc_client_protocol_ke_send_packet(SilcSKE ske,
+ SilcBuffer packet,
+ SilcPacketType type,
+ void *context);
+SilcSKEStatus silc_client_protocol_ke_verify_key(SilcSKE ske,
+ unsigned char *pk_data,
+ uint32 pk_len,
+ SilcSKEPKType pk_type,
+ void *context);
+void silc_client_protocol_ke_set_keys(SilcSKE ske,
+ SilcSocketConnection sock,
+ SilcSKEKeyMaterial *keymat,
+ SilcCipher cipher,
+ SilcPKCS pkcs,
+ SilcHash hash,
+ SilcHmac hmac);
#endif