***/
void silc_acc_unregister(SilcAccelerator acc);
+/****f* silcacc/SilcAccAPI/silc_acc_find
+ *
+ * SYNOPSIS
+ *
+ * SilcAccelerator silc_acc_find(const char *name);
+ *
+ * DESCRIPTION
+ *
+ * Find accelerator by its name indicated by `name'. Returns the
+ * accelerator context or NULL if such accelerator is not registered.
+ *
+ ***/
+SilcAccelerator silc_acc_find(const char *name);
+
/****f* silcacc/SilcAccAPI/silc_acc_init
*
* SYNOPSIS
***/
SilcDList silc_acc_get_supported(void);
-/****f* silcacc/SilcAccAPI/silc_acc_find
- *
- * SYNOPSIS
- *
- * SilcAccelerator silc_acc_find(const char *name);
- *
- * DESCRIPTION
- *
- * Find accelerator by its name indicated by `name'. Returns the
- * accelerator context or NULL if such accelerator is not registered.
- *
- ***/
-SilcAccelerator silc_acc_find(const char *name);
-
/****f* silcacc/SilcAccAPI/silc_acc_get_name
*
* SYNOPSIS
prv->accelerated->private_key);
}
+/* Accelerator routines follow */
+
SILC_PKCS_PUBLIC_KEY_FREE(silc_acc_pkcs_public_key_free)
{
SilcAcceleratorPublicKey pub = public_key;
}
if (alg) {
SILC_LOG_DEBUG(("Accelerator %s does not support %s/%s acceleration",
- alg->name, alg->scheme));
+ acc->name, alg->name, alg->scheme));
return NULL;
}
}
if (alg) {
SILC_LOG_DEBUG(("Accelerator %s does not support %s/%s acceleration",
- alg->name, alg->scheme));
+ acc->name, alg->name, alg->scheme));
return NULL;
}
sa->tp = silc_thread_pool_alloc(NULL, min_threads, max_threads, TRUE);
if (!sa->tp) {
silc_free(sa);
+ sa = NULL;
return FALSE;
}
out:
silc_sfree(stack, e->src);
silc_sfree(stack, e->data);
+ silc_sfree(stack, e->result_data);
silc_sfree(stack, e);
silc_stack_free(stack);
}
SilcSoftaccExec e = context;
SilcStack stack = e->stack;
- /* Pop e->src and e->data from memory */
+ /* Pop e->src */
silc_stack_pop(stack);
if (success)
SilcSoftaccExec e = context;
SilcStack stack = e->stack;
+ /* Pop e->src and e->data from memory */
silc_stack_pop(stack);
+
e->result = success;
}
SilcHash hash;
unsigned char data[] = "Single block msg";
int data_len = 16;
-int s = 100;
+int s = 200;
void sign_compl(SilcBool success, const unsigned char *signature,
SilcUInt32 signature_len, void *context)
SILC_LOG_DEBUG(("Sign compl %s", success ? "Ok" : "failed"));
}
+SILC_TASK_CALLBACK(stats)
+{
+ silc_stack_stats(silc_crypto_stack());
+ silc_schedule_task_add_timeout(schedule, stats, NULL, 1, 1);
+}
+
SILC_TASK_CALLBACK(quit)
{
silc_schedule_stop(schedule);
{
silc_pkcs_sign(accprv, data, data_len, TRUE, hash, sign_compl, NULL);
if (--s > 0)
- silc_schedule_task_add_timeout(schedule, sign, NULL, 0, 70000);
+ silc_schedule_task_add_timeout(schedule, sign, NULL, 0, 60000);
}
int main(int argc, char **argv)
goto err;
silc_schedule_task_add_timeout(schedule, sign, NULL, 0, 1);
- silc_schedule_task_add_timeout(schedule, quit, NULL, 15, 0);
+ silc_schedule_task_add_timeout(schedule, stats, NULL, 1, 1);
+ silc_schedule_task_add_timeout(schedule, quit, NULL, 19, 0);
silc_schedule(schedule);
silc_acc_uninit(softacc);