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);
|