uma/phpecc

Temporary fork of public-square/phpecc

v0.1.3 2024-02-27 15:58 UTC

This package is auto-updated.

Last update: 2024-04-27 16:25:59 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

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: