File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change 1+ libsecp256k1
2+ ============
3+
4+ Optimized C library for EC operations on curve secp256k1
5+
6+ This library is experimental, so use at your own risk.
7+
8+ Implementation details
9+ ----------------------
10+
11+ * General
12+ * Avoid dynamic memory usage almost everywhere.
13+ * Field operations
14+ * Optimized implementation of arithmetic modulo the curve's field size (2^256 - 0x1000003D1).
15+ * Using 5 52-bit limbs (including hand-optimized assembly for x86_64, by Diederik Huys).
16+ * Using 10 26-bit limbs.
17+ * Using GMP.
18+ * Field inverses and square roots using a sliding window over blocks of 1s (by Peter Dettman).
19+ * Group operations
20+ * Point addition formula specifically simplified for the curve equation (y^2 = x^3 + 7).
21+ * Use addition between points in Jacobian and affine coordinates where possible.
22+ * Point multiplication for verification (a* P + b* G).
23+ * Use wNAF notation for point multiplicands.
24+ * Use a much larger window for multiples of G, using precomputed multiples.
25+ * Use Shamir's trick to do the multiplication with the public key and the generator simultaneously.
26+ * Optionally use secp256k1's efficiently-computable endomorphism to split the multiplicands into 4 half-sized ones first.
27+ * Point multiplication for signing
28+ * Use a precomputed table of multiples of powers of 16 multiplied with the generator, so general multiplication becomes a series of additions.
29+ * Slice the precomputed table in memory per byte, so memory access to the table becomes uniform.
You can’t perform that action at this time.
0 commit comments