[Cryptech-Commits] [user/sra/libhal] 16/17: Add temporary workaround to let us use software ModExp when we're testing other code and don't want to wait for the as-yet-unoptimized FPGA ModExp core.

git at cryptech.is git at cryptech.is
Fri Jun 19 17:56:45 UTC 2015


This is an automated email from the git hooks/post-receive script.

sra at hactrn.net pushed a commit to branch master
in repository user/sra/libhal.

commit 79d3c33ee5f6fd0cfb24af68357e084e4f1fded0
Author: Rob Austein <sra at hactrn.net>
Date:   Fri Jun 19 11:50:31 2015 -0400

    Add temporary workaround to let us use software ModExp when we're
    testing other code and don't want to wait for the as-yet-unoptimized
    FPGA ModExp core.
---
 rsa.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/rsa.c b/rsa.c
index cda0f7f..85ac8ee 100644
--- a/rsa.c
+++ b/rsa.c
@@ -49,6 +49,15 @@
 #include "cryptech.h"
 
 /*
+ * Whether to use ModExp core.  It works, but at the moment it's so
+ * slow that a full test run can take more than an hour.
+ */
+
+#ifndef HAL_RSA_USE_MODEXP
+#define HAL_RSA_USE_MODEXP 1
+#endif
+
+/*
  * Use "Tom's Fast Math" library for our bignum implementation.  This
  * particular implementation has a couple of nice features:
  *
@@ -154,6 +163,8 @@ static hal_error_t unpack_fp(fp_int *bn, uint8_t *buffer, const size_t length)
   return err;
 }
 
+#if HAL_RSA_USE_MODEXP
+
 /*
  * Unwrap bignums into byte arrays, feeds them into hal_modexp(), and
  * wrap result back up as a bignum.
@@ -206,6 +217,24 @@ int fp_exptmod(fp_int *a, fp_int *b, fp_int *c, fp_int *d)
   return modexp(a, b, c, d) == HAL_OK ? FP_OKAY : FP_VAL;
 }
 
+#else /* HAL_RSA_USE_MODEXP */
+
+/*
+ * Workaround to let us use TFM's software implementation of modular
+ * exponentiation when we want to test other things and don't want to
+ * wait for the slow FPGA implementation.
+ */
+
+static hal_error_t modexp(fp_int *msg, fp_int *exp, fp_int *mod, fp_int *res)
+{
+  hal_error_t err = HAL_OK;
+  FP_CHECK(fp_exptmod(msg, exp, mod, res));
+ fail:
+  return err;
+}
+
+#endif /* HAL_RSA_USE_MODEXP */
+
 /*
  * Create blinding factors.  There are various schemes for amortizing
  * the cost of this over multiple RSA operations, at present we don't



More information about the Commits mailing list