begin ecmult

This commit is contained in:
Pieter Wuille 2013-03-08 02:52:50 +01:00
parent b394396b45
commit 581ef48ba8
2 changed files with 44 additions and 0 deletions

43
ecmult.h Normal file
View File

@ -0,0 +1,43 @@
#ifndef _SECP256K1_ECMULT_
#define _SECP256K1_ECMULT_
#include "group.h"
#include "scalar.h"
namespace secp256k1 {
template<typename G, int W> 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

View File

@ -5,6 +5,7 @@
#include "scalar.h" #include "scalar.h"
#include "field.h" #include "field.h"
#include "group.h" #include "group.h"
#include "ecmult.h"
using namespace secp256k1; using namespace secp256k1;