Fixed debug messages. Fixed softacc uninit.
authorPekka Riikonen <priikone@silcnet.org>
Tue, 10 Jul 2007 13:31:57 +0000 (13:31 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 10 Jul 2007 13:31:57 +0000 (13:31 +0000)
lib/silcacc/silcacc.h
lib/silcacc/silcacc_pkcs.c
lib/silcacc/softacc.c
lib/silcacc/tests/test_softacc.c

index e438bc8c68741432dc5f501ac6d8d635fe8a4130..ea97437ae8ea3150a7ce0caa089ea543cd069303 100644 (file)
@@ -90,6 +90,20 @@ SilcBool silc_acc_register(const SilcAccelerator acc);
  ***/
 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
@@ -142,20 +156,6 @@ SilcBool silc_acc_uninit(SilcAccelerator acc);
  ***/
 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
index d9474be8548b9052a1ae26a73de345ab8e18259c..c7920a29e3745668735369a964b85307c4d15d02 100644 (file)
@@ -199,6 +199,8 @@ SILC_PKCS_PRIVATE_KEY_BITLEN(silc_acc_pkcs_private_key_bitlen)
                       prv->accelerated->private_key);
 }
 
+/* Accelerator routines follow */
+
 SILC_PKCS_PUBLIC_KEY_FREE(silc_acc_pkcs_public_key_free)
 {
   SilcAcceleratorPublicKey pub = public_key;
@@ -292,7 +294,7 @@ SilcPublicKey silc_acc_public_key(SilcAccelerator acc,
   }
   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;
   }
 
@@ -375,7 +377,7 @@ SilcPrivateKey silc_acc_private_key(SilcAccelerator acc,
   }
   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;
   }
 
index 89c1adaf860b669a71eb12cb9455ad010cf8677e..4f5b3fe0ea5adfaedd1eebde91a49d55ddd52e47 100644 (file)
@@ -165,6 +165,7 @@ SilcBool silc_softacc_init(SilcSchedule schedule, va_list va)
   sa->tp = silc_thread_pool_alloc(NULL, min_threads, max_threads, TRUE);
   if (!sa->tp) {
     silc_free(sa);
+    sa = NULL;
     return FALSE;
   }
 
@@ -233,6 +234,7 @@ SILC_TASK_CALLBACK(silc_softacc_completion)
  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);
 }
@@ -245,7 +247,7 @@ void silc_softacc_data_cb(SilcBool success, const unsigned char *data,
   SilcSoftaccExec e = context;
   SilcStack stack = e->stack;
 
-  /* Pop e->src and e->data from memory */
+  /* Pop e->src */
   silc_stack_pop(stack);
 
   if (success)
@@ -261,7 +263,9 @@ void silc_softacc_verify_cb(SilcBool success, void *context)
   SilcSoftaccExec e = context;
   SilcStack stack = e->stack;
 
+  /* Pop e->src and e->data from memory */
   silc_stack_pop(stack);
+
   e->result = success;
 }
 
index 066fd2a4001ce7e0459b5b628190d8142abff35c..08da67ef9bdeb5277899513eda4c4deda913c574 100644 (file)
@@ -8,7 +8,7 @@ SilcPrivateKey private_key, accprv;
 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)
@@ -16,6 +16,12 @@ void sign_compl(SilcBool success, const unsigned char *signature,
   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);
@@ -25,7 +31,7 @@ SILC_TASK_CALLBACK(sign)
 {
   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)
@@ -71,7 +77,8 @@ 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);