| Function silc_ske_alloc
 
 SYNOPSIS
 
    SilcSKE silc_ske_alloc(SilcRng rng, SilcSchedule schedule,
                           SilcSKR repository, SilcPublicKey public_key,
                           SilcPrivateKey private_key, void *context);
DESCRIPTION
    Allocates the SKE session context and returns it.  The `rng' is
    the random number generator the SKE is going to use when it needs
    random number generation during the SKE session.  The `context' is
    user context that the libary will not touch.  Application can get the
    context by calling the fuction silc_ske_get_context function.  The
    application is responsible of freeing the `context'.  After the
    SKE session context is allocated application must call the
    silc_ske_set_callbacks.
    If the `repository' is non-NULL then the remote's public key will be
    verified from the repository.  If it is not provided then the
    SilcSKEVerifyCb callback must be set, and it will be called to
    verify the key.  If both `repository' and the callback is provided the
    callback is called only if the key is not found from the repository.
    The `public_key' and `private_key' is the caller's identity used
    during the key exchange.  Giving `private_key' is optional if the
    SILC_SKE_SP_FLAG_MUTUAL is not set and you are initiator.  For
    responder both `public_key' and `private_key' must be set.
    When allocating SKE session for rekey, the `repository' and `private_key'
    pointers must be NULL and the SilcSKEVerifyCb callback must not be
    set with silc_ske_set_callbacks.
 EXMPALE
    // Initiator example
    params.version = version;
    params.flags = SILC_SKE_SP_FLAG_PFS | SILC_SKE_SP_FLAG_MUTUAL;
    ske = silc_ske_alloc(rng, scheduler, NULL, pk, prv, app);
    silc_ske_set_callbacks(ske, verify_public_key, completion, app);
    silc_ske_initiator(ske, stream, ¶ms, NULL);
 
 
 
 |