if (ske->pk)
silc_free(ske->pk);
if (ske->x) {
- silc_mp_clear(ske->x);
+ silc_mp_uninit(ske->x);
silc_free(ske->x);
}
if (ske->KEY) {
- silc_mp_clear(ske->KEY);
+ silc_mp_uninit(ske->KEY);
silc_free(ske->KEY);
}
if (ske->hash)
{
SilcSKEStatus status = SILC_SKE_STATUS_OK;
SilcBuffer payload_buf;
- SilcInt *x, e;
+ SilcMPInt *x, e;
SilcSKEKEPayload *payload;
uint32 pk_len;
silc_mp_sizeinbase(&ske->prop->group->group_order, 2),
x);
if (status != SILC_SKE_STATUS_OK) {
- silc_mp_clear(x);
+ silc_mp_uninit(x);
silc_free(x);
ske->status = status;
return status;
/* Do the Diffie Hellman computation, e = g ^ x mod p */
silc_mp_init(&e);
- silc_mp_powm(&e, &ske->prop->group->generator, x,
- &ske->prop->group->group);
+ silc_mp_pow_mod(&e, &ske->prop->group->generator, x,
+ &ske->prop->group->group);
/* Encode the result to Key Exchange Payload. */
if (public_key) {
payload->pk_data = silc_pkcs_public_key_encode(public_key, &pk_len);
if (!payload->pk_data) {
- silc_mp_clear(x);
+ silc_mp_uninit(x);
silc_free(x);
- silc_mp_clear(&e);
+ silc_mp_uninit(&e);
silc_free(payload);
ske->status = SILC_SKE_STATUS_OK;
return ske->status;
status = silc_ske_payload_ke_encode(ske, payload, &payload_buf);
if (status != SILC_SKE_STATUS_OK) {
- silc_mp_clear(x);
+ silc_mp_uninit(x);
silc_free(x);
- silc_mp_clear(&e);
+ silc_mp_uninit(&e);
silc_free(payload->pk_data);
silc_free(payload);
ske->status = status;
silc_ske_payload_ke_free(payload);
ske->ke2_payload = NULL;
- silc_mp_clear(ske->KEY);
+ silc_mp_uninit(ske->KEY);
silc_free(ske->KEY);
ske->KEY = NULL;
{
SilcSKEStatus status = SILC_SKE_STATUS_OK;
SilcSKEKEPayload *payload;
- SilcInt *KEY;
+ SilcMPInt *KEY;
SKEInitiatorFinish finish;
SILC_LOG_DEBUG(("Start"));
/* Compute the shared secret key */
KEY = silc_calloc(1, sizeof(*KEY));
silc_mp_init(KEY);
- silc_mp_powm(KEY, &payload->x, ske->x, &ske->prop->group->group);
+ silc_mp_pow_mod(KEY, &payload->x, ske->x, &ske->prop->group->group);
ske->KEY = KEY;
finish = silc_calloc(1, sizeof(*finish));
silc_ske_payload_ke_free(payload);
ske->ke2_payload = NULL;
- silc_mp_clear(ske->KEY);
+ silc_mp_uninit(ske->KEY);
silc_free(ske->KEY);
ske->KEY = NULL;
{
SKEResponderPhaseII finish = (SKEResponderPhaseII)context;
SilcSKEKEPayload *recv_payload, *send_payload;
- SilcInt *x, f;
+ SilcMPInt *x, f;
recv_payload = ske->ke1_payload;
silc_mp_sizeinbase(&ske->prop->group->group_order, 2),
x);
if (status != SILC_SKE_STATUS_OK) {
- silc_mp_clear(x);
+ silc_mp_uninit(x);
silc_free(x);
ske->status = status;
if (finish->callback)
/* Do the Diffie Hellman computation, f = g ^ x mod p */
silc_mp_init(&f);
- silc_mp_powm(&f, &ske->prop->group->generator, x,
- &ske->prop->group->group);
+ silc_mp_pow_mod(&f, &ske->prop->group->generator, x,
+ &ske->prop->group->group);
/* Save the results for later processing */
send_payload = silc_calloc(1, sizeof(*send_payload));
{
SilcSKEStatus status = SILC_SKE_STATUS_OK;
SilcBuffer payload_buf;
- SilcInt *KEY;
+ SilcMPInt *KEY;
unsigned char hash[32], sign[1024], *pk;
uint32 hash_len, sign_len, pk_len;
/* Compute the shared secret key */
KEY = silc_calloc(1, sizeof(*KEY));
silc_mp_init(KEY);
- silc_mp_powm(KEY, &ske->ke1_payload->x, ske->x,
- &ske->prop->group->group);
+ silc_mp_pow_mod(KEY, &ske->ke1_payload->x, ske->x,
+ &ske->prop->group->group);
ske->KEY = KEY;
if (public_key && private_key) {
return status;
err:
- silc_mp_clear(ske->KEY);
+ silc_mp_uninit(ske->KEY);
silc_free(ske->KEY);
ske->KEY = NULL;
silc_ske_payload_ke_free(ske->ke2_payload);
/* Creates random number such that 1 < rnd < n and at most length
of len bits. The rnd sent as argument must be initialized. */
-SilcSKEStatus silc_ske_create_rnd(SilcSKE ske, SilcInt n,
+SilcSKEStatus silc_ske_create_rnd(SilcSKE ske, SilcMPInt n,
uint32 len,
- SilcInt *rnd)
+ SilcMPInt *rnd)
{
SilcSKEStatus status = SILC_SKE_STATUS_OK;
unsigned char *string;