/* Accelerate */
return prv->acc->pkcs[prv->pkcs_index].sign(
&prv->acc->pkcs[prv->pkcs_index], prv->context, src,
- src_len, compute_hash, hash, sign_cb, context);
+ src_len, compute_hash, hash, rng, sign_cb, context);
}
SILC_PKCS_VERIFY(silc_acc_pkcs_verify)
/* Accelerate */
return pub->acc->pkcs[pub->pkcs_index].verify(
&pub->acc->pkcs[pub->pkcs_index], pub->context,
- signature, signature_len, data, data_len, hash,
+ signature, signature_len, data, data_len, hash, rng,
verify_cb, context);
}
return NULL;
}
+ if (silc_acc_get_public_key(NULL, public_key)) {
+ SILC_LOG_DEBUG(("Pubilc key %p is already accelerated", public_key));
+ return NULL;
+ }
+
/* Check that accelerator supports this public key algorithm */
alg = silc_pkcs_get_algorithm(public_key);
if (!alg)
acc_pubkey->pkcs_index = i;
/* Accelerate the public key. Returns accelerator context. */
- if (!acc->pkcs->import_public_key(&acc->pkcs[i], public_key, 0,
- &acc_pubkey->context)) {
+ if (!acc->pkcs[i].import_public_key(&acc->pkcs[i], public_key, 0,
+ &acc_pubkey->context)) {
SILC_LOG_ERROR(("Error accelerating public key with accelerator '%s'",
acc->name));
silc_free(acc_pubkey);
return NULL;
}
+ if (silc_acc_get_private_key(NULL, private_key)) {
+ SILC_LOG_DEBUG(("Private key %p is already accelerated", private_key));
+ return NULL;
+ }
+
/* Check that accelerator supports this private key algorithm */
alg = silc_pkcs_get_algorithm(private_key);
if (!alg)
acc_privkey->pkcs_index = i;
/* Accelerate the public key. Returns accelerator context. */
- if (!acc->pkcs->import_private_key(&acc->pkcs[i], private_key, 0,
- &acc_privkey->context)) {
+ if (!acc->pkcs[i].import_private_key(&acc->pkcs[i], private_key, 0,
+ &acc_privkey->context)) {
SILC_LOG_ERROR(("Error accelerating private key with accelerator '%s'",
acc->name));
silc_free(acc_privkey);