From 581ef48ba8f4dd765afc7378574b9bdda2f01e1a Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Fri, 8 Mar 2013 02:52:50 +0100 Subject: [PATCH] begin ecmult --- ecmult.h | 43 +++++++++++++++++++++++++++++++++++++++++++ secp256k1.cpp | 1 + 2 files changed, 44 insertions(+) create mode 100644 ecmult.h diff --git a/ecmult.h b/ecmult.h new file mode 100644 index 0000000..ce43b0e --- /dev/null +++ b/ecmult.h @@ -0,0 +1,43 @@ +#ifndef _SECP256K1_ECMULT_ +#define _SECP256K1_ECMULT_ + +#include "group.h" +#include "scalar.h" + +namespace secp256k1 { + +template class WNAFPrecomp { +private: + G pre[1 << (W-2)]; + +public: + WNAFPrecomp(G &base) { + pre[0] = base; + GroupElemJac x = base; + GroupElemJac d; d.SetDouble(x); + for (int i=1; i<(1 << (W-2)); i++) { + x.SetAdd(d,pre[i-1]); + pre[i] = x; + } + } + + void Get(G &out, int exp) { + assert((exp & 1) == 1); + assert(exp >= -((1 << (W-1)) - 1)); + assert(exp <= ((1 << (W-1)) - 1)); + if (exp > 0) { + out = pre[(exp-1)/2]; + } else { + out.SetNeg(pre[(1-exp)/2]); + } + } +}; + +class WNAF { +private: + +}; + +} + +#endif diff --git a/secp256k1.cpp b/secp256k1.cpp index 2e18196..dfdef52 100644 --- a/secp256k1.cpp +++ b/secp256k1.cpp @@ -5,6 +5,7 @@ #include "scalar.h" #include "field.h" #include "group.h" +#include "ecmult.h" using namespace secp256k1;