コード例 #1
0
ファイル: ecmult.cpp プロジェクト: CodeShark/secp256k1
void ECMultBase(GroupElemJac &out, const Number &gn) {
    Number n; n.SetNumber(gn);
    const ECMultConsts &c = GetECMultConsts();
    out.SetAffine(c.prec[0][n.ShiftLowBits(4)]);
    for (int j=1; j<64; j++) {
        out.SetAdd(out, c.prec[j][n.ShiftLowBits(4)]);
    }
    out.SetAdd(out, c.fin);
}
コード例 #2
0
ファイル: ecmult.cpp プロジェクト: CodeShark/secp256k1
 WNAF(const Number &exp, int w) : used(0) {
     int zeroes = 0;
     Number x;
     x.SetNumber(exp);
     int sign = 1;
     if (x.IsNeg()) {
         sign = -1;
         x.Negate();
     }
     while (!x.IsZero()) {
         while (!x.IsOdd()) {
             zeroes++;
             x.Shift1();
         }
         int word = x.ShiftLowBits(w);
         if (word & (1 << (w-1))) {
             x.Inc();
             PushNAF(sign * (word - (1 << w)), zeroes);
         } else {
             PushNAF(sign * word, zeroes);
         }
         zeroes = w-1;
     }
 }