Linux spg1.cloudpowerdns.com 5.14.0-611.34.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 18 05:51:10 EST 2026 x86_64
LiteSpeed
Server IP : 176.9.63.151 & Your IP : 216.73.217.94
Domains :
Cant Read [ /etc/named.conf ]
User : fastear1
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
home /
fastear1 /
data /
core /
vendor /
starkbank /
ecdsa /
Delete
Unzip
Name
Size
Permission
Date
Action
src
[ DIR ]
drwxr-xr-x
2021-10-03 08:51
tests
[ DIR ]
drwxr-xr-x
2021-10-03 08:51
.travis.yml
168
B
-rw-r--r--
2021-10-03 08:50
LICENSE
1.05
KB
-rw-r--r--
2021-10-03 08:50
README.md
4.05
KB
-rw-r--r--
2021-10-03 08:50
composer.json
603
B
-rw-r--r--
2021-10-03 08:50
Save
Rename
## A lightweight and fast PHP ECDSA ### Overview This is a PHP implementation of the Elliptic Curve Digital Signature Algorithm. It is compatible with PHP 5.5+. Please note that this library relies heavily on the openssl package for PHP, so - depending on your PHP installation - you may need to re-compile it with the "–with-openssl" flag. ### Installation #### Composer To install the package with Composer, run: ```sh composer require starkbank/ecdsa ``` To use the bindings, use Composer's autoload: ```sh require_once('vendor/autoload.php'); ``` ### Curves The module is wrapped around the builtin openssl functions, so all standar curves should be supported. The default is `secp256k1`. ### Speed We ran a test on a MAC Pro i7 2017. We ran the library 100 times and got the average time displayed bellow: | Library | sign | verify | | ------------------ |:-------------:| -------:| | starkbank-ecdsa | 0.6ms | 0.4ms | ### Sample Code How to sign a json message for [Stark Bank]: ```php # Generate privateKey from PEM string $privateKey = EllipticCurve\PrivateKey::fromPem(" -----BEGIN EC PARAMETERS----- BgUrgQQACg== -----END EC PARAMETERS----- -----BEGIN EC PRIVATE KEY----- MHQCAQEEIODvZuS34wFbt0X53+P5EnSj6tMjfVK01dD1dgDH02RzoAcGBSuBBAAK oUQDQgAE/nvHu/SQQaos9TUljQsUuKI15Zr5SabPrbwtbfT/408rkVVzq8vAisbB RmpeRREXj5aog/Mq8RrdYy75W9q/Ig== -----END EC PRIVATE KEY----- "); # Create message from json $message = array( "transfers" => array( array( "amount" => 100000000, "taxId" => "594.739.480-42", "name" => "Daenerys Targaryen Stormborn", "bankCode" => "341", "branchCode" => "2201", "accountNumber" => "76543-8", "tags" => array("daenerys", "targaryen", "transfer-1-external-id") ) ) ); $message = json_encode($message, JSON_PRETTY_PRINT); $signature = EllipticCurve\Ecdsa::sign($message, $privateKey); # Generate Signature in base64. This result can be sent to Stark Bank in header as Digital-Signature parameter echo "\n" . $signature->toBase64(); # To double check if message matches the signature $publicKey = $privateKey->publicKey(); echo "\n" . EllipticCurve\Ecdsa::verify($message, $signature, $publicKey); ``` Simple use: ```php # Generate new Keys $privateKey = new EllipticCurve\PrivateKey; $publicKey = $privateKey->publicKey(); $message = "My test message"; # Generate Signature $signature = EllipticCurve\Ecdsa::sign($message, $privateKey); # Verify if signature is valid echo "\n" . EllipticCurve\Ecdsa::verify($message, $signature, $publicKey); ``` ### OpenSSL This library is compatible with OpenSSL, so you can use it to generate keys: ``` openssl ecparam -name secp256k1 -genkey -out privateKey.pem openssl ec -in privateKey.pem -pubout -out publicKey.pem ``` Create a message.txt file and sign it: ``` openssl dgst -sha256 -sign privateKey.pem -out signatureDer.txt message.txt ``` It's time to verify: ```php $publicKeyPem = EllipticCurve\Utils\File::read("publicKey.pem"); $signatureDer = EllipticCurve\Utils\File::read("signatureDer.txt"); $message = EllipticCurve\Utils\File::read("message.txt"); $publicKey = EllipticCurve\PublicKey::fromPem($publicKeyPem); $signature = EllipticCurve\Signature::fromDer($signatureDer); echo "\n" . EllipticCurve\Ecdsa::verify($message, $signature, $publicKey); ``` You can also verify it on terminal: ``` openssl dgst -sha256 -verify publicKey.pem -signature signatureDer.txt message.txt ``` NOTE: If you want to create a Digital Signature to use in the [Stark Bank], you need to convert the binary signature to base64. ``` openssl base64 -in signatureDer.txt -out signatureBase64.txt ``` You can also verify it with this library: ```php $signatureDer = EllipticCurve\Utils\File::read("signatureDer.txt"); $signature = EllipticCurve\Signature::fromDer($signatureDer); echo "\n" . $signature->toBase64(); ``` [Stark Bank]: https://starkbank.com ### Run all unit tests ```sh php tests/test.php ``` [python-ecdsa]: https://github.com/warner/python-ecdsa