/Curve25519

Curve25519 sign/verify for PHP

Primary LanguagePHPMIT LicenseMIT

Curve25519

packagist php-v travis codacy license

Curve25519 implements the missing functionality of sign/verify on elliptic curve 25519.

  • Cryptographically compatible sign/verify
  • Built in cache for last key calculations
  • Sodium variant of the sign function (~2000x faster)

Usage

$curve25519 = new Curve25519();
$msg = 'Hello, world!';

$privateKey = random_bytes( 32 );
$sig = $curve25519->sign( $msg, $privateKey );

$publicKey = $curve25519->getPublicKeyFromPrivateKey( $privateKey );
$verify = $curve25519->verify( $sig, $msg, $publicKey );

if( !$verify )
    exit( 1 );

Requirements

Recommended

Installation

Require through Composer:

{
    "require": {
        "deemru/curve25519": "1.0.*"
    }
}

Notice

  • sign_sodium hashes private key internally by SHA-512
  • Beware of rseed functionality (for experts only)