public-square / phpecc
PHP Elliptic Curve Cryptography library
Requires
- php: ^8.0
- ext-gmp: *
- fgrosse/phpasn1: ^2.0
Requires (Dev)
- phpunit/phpunit: ^6.0||^8.0||^9.0
- squizlabs/php_codesniffer: ^2.0
- symfony/yaml: ^2.6|^3.0
Replaces
- mdanter/ecc: 1.0.0
This package is auto-updated.
Last update: 2024-11-13 19:20:12 UTC
README
Information
This library is a fork of Matyas Danter's ECC library. All credit goes to him and previous contributors. This fork is a drop in replacement that contains support for Schnorr signing and verifying.
For more information on Elliptic Curve Cryptography please read this fine article.
The library supports the following curves:
- secp112r1
- secp256k1
- nistp192
- nistp224
- nistp256 / secp256r1
- nistp384 / secp384r1
- nistp521
During ECDSA, a random value k
is required. It is acceptable to use a true RNG to generate this value, but
should the same k
value ever be repeatedly used for a key, an attacker can recover that signing key.
The HMAC random generator can derive a deterministic k value from the message hash and private key, voiding
this concern.
The library uses a non-branching Montgomery ladder for scalar multiplication, as it's constant time and avoids secret dependant branches.
License
This package is released under the MIT license.
Requirements
- PHP 8.0+
- composer
- ext-gmp
Installation
You can install this library via Composer :
composer require public-square/phpecc
Contribute
Please open a pull request.
Usage
Examples: