- * SilcSKEStatus silc_ske_responder_start(SilcSKE ske, SilcRng rng,
- * SilcSocketConnection sock,
- * const char *version,
- * SilcBuffer start_payload,
- * SilcSKESecurityPropertyFlag
- * flags);
- *
- * DESCRIPTION
- *
- * Starts Key Exchange protocol for responder. The application has
- * received initiator's first packet from network and it must provide
- * it as `start_payload' argument to this function. The function
- * processes the packet and makes security property selection from
- * the initiator's proposal. The `version' is the responder's version
- * that will be sent in reply to the initiator. The `flags' indicates
- * SilcSKESecurityPropertyFlag flags that responder enforces for the
- * initiator. Responder may, for example, enforce that the PFS
- * will be performed in rekey. This example can be done by providing
- * SILC_SKE_SP_FLAG_PFS as `flags'. The `flags' is a bit mask of
- * enforced flags.
- *
- * After this function the responder calls immediately, or with short
- * timeout the silc_ske_responder_phase_1 function.
- *
- ***/
-SilcSKEStatus silc_ske_responder_start(SilcSKE ske, SilcRng rng,
-#if 0
- SilcSocketConnection sock,
-#endif
- const char *version,
- SilcBuffer start_payload,
- SilcSKESecurityPropertyFlag flags);
-
-/****f* silcske/SilcSKEAPI/silc_ske_responder_phase_1
- *
- * SYNOPSIS
- *
- * SilcSKEStatus silc_ske_responder_phase_1(SilcSKE ske);
- *
- * DESCRIPTION
- *
- * This function is called after the silc_ske_responder_start, and
- * is used to send our reply to the initiator. This function is
- * called either immediately, or with short timeout, after the
- * silc_ske_responder_start function returned.
- *
- * After this function the responder must wait for reply from the
- * initiator.
- *
- ***/
-SilcSKEStatus silc_ske_responder_phase_1(SilcSKE ske);
-
-/****f* silcske/SilcSKEAPI/silc_ske_responder_phase_2
- *
- * SYNOPSIS
- *
- * SilcSKEStatus silc_ske_responder_phase_2(SilcSKE ske,
- * SilcBuffer ke_payload);
- *
- * DESCRIPTION
- *
- * Receives the reply from the initiator and procedses it. The
- * `ke_payload' is the reply and application must provide it as argument.
- * This function will verify the remote host's public key, by calling
- * the `verify_key' callback that was set with silc_ske_set_callbacks
- * function.
- *
- * If this function returns error, no callbacks will be called. If
- * this function needs to verify remote end's public key, this will
- * return SILC_SKE_STATUS_PENDING, which indicates application that
- * SKE is performing asynchronous operation and is in pending status.
- * When in this status application must not continue with calling
- * any other SKE routine. The asynchronous operation is the `verify_key'
- * callback, which application completes by calling its completion
- * callback. After completion the SKE libary will call the
- * `proto_continue' callback, to indicate application that pending
- * status is over and it is safe to continue the execution of SKE,
- * which application does by calling the silc_ske_responder_finish
- * function.
- *
- * If this function returns SILC_SKE_STATUS_OK, it will not call the
- * `verify_key' callback, however, it will or has already called the
- * `proto_continue' callback.
- *
- * Application must not continue execution of the SKE before library
- * has called the `proto_continue' callback. After it is called
- * the application calls the silc_ske_responder_finish function.
- *
- ***/
-SilcSKEStatus silc_ske_responder_phase_2(SilcSKE ske,
- SilcBuffer ke_payload);
-
-/****f* silcske/SilcSKEAPI/silc_ske_responder_finish
- *
- * SYNOPSIS
- *
- * SilcSKEStatus silc_ske_responder_finish(SilcSKE ske,
- * SilcPublicKey public_key,
- * SilcPrivateKey private_key,
- * SilcSKEPKType pk_type);
- *
- * DESCRIPTION
- *
- * This function finishes the responder's SKE session, and this function
- * is called either immediately, or with short timeout, after the
- * silc_ske_responder_phase_2 returned. This will send our reply to
- * the initiator. The caller must provide the caller's public key and
- * private key as argument, since the public key is sent to the responder,
- * and the private key is be used to generate digital signature.
- *
- * After this function the application must wait for the end indication
- * from the intiator, and when it is received the silc_ske_end is called.
- *
- ***/
-SilcSKEStatus silc_ske_responder_finish(SilcSKE ske,
- SilcPublicKey public_key,
- SilcPrivateKey private_key,
- SilcSKEPKType pk_type);
-
-/****f* silcske/SilcSKEAPI/silc_ske_end
- *
- * SYNOPSIS
- *
- * SilcSKEStatus silc_ske_end(SilcSKE ske);