Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/README.md
Show All 40 Lines | * Group operations | ||||
* Point/x comparison without a field inversion by comparison in the Jacobian coordinate space. | * Point/x comparison without a field inversion by comparison in the Jacobian coordinate space. | ||||
* Point multiplication for verification (a*P + b*G). | * Point multiplication for verification (a*P + b*G). | ||||
* Use wNAF notation for point multiplicands. | * Use wNAF notation for point multiplicands. | ||||
* Use a much larger window for multiples of G, using precomputed multiples. | * Use a much larger window for multiples of G, using precomputed multiples. | ||||
* Use Shamir's trick to do the multiplication with the public key and the generator simultaneously. | * Use Shamir's trick to do the multiplication with the public key and the generator simultaneously. | ||||
* Optionally (off by default) use secp256k1's efficiently-computable endomorphism to split the P multiplicand into 2 half-sized ones. | * Optionally (off by default) use secp256k1's efficiently-computable endomorphism to split the P multiplicand into 2 half-sized ones. | ||||
* Point multiplication for signing | * Point multiplication for signing | ||||
* Use a precomputed table of multiples of powers of 16 multiplied with the generator, so general multiplication becomes a series of additions. | * Use a precomputed table of multiples of powers of 16 multiplied with the generator, so general multiplication becomes a series of additions. | ||||
* Intended to be completely free of timing sidechannels for secret-key operations (on reasonable hardware/toolchains) | |||||
* Access the table with branch-free conditional moves so memory access is uniform. | * Access the table with branch-free conditional moves so memory access is uniform. | ||||
* No data-dependent branches | * No data-dependent branches | ||||
* Optional runtime blinding which attempts to frustrate differential power analysis. | |||||
* The precomputed tables add and eventually subtract points for which no known scalar (private key) is known, preventing even an attacker with control over the private key used to control the data internally. | * The precomputed tables add and eventually subtract points for which no known scalar (private key) is known, preventing even an attacker with control over the private key used to control the data internally. | ||||
Build steps | Build steps | ||||
----------- | ----------- | ||||
libsecp256k1 can be built using autotools: | libsecp256k1 can be built using autotools: | ||||
```bash | ```bash | ||||
Show All 18 Lines |