starkbank/ecdsa
Pure-PHP ECDSA implementation compatible with OpenSSL. Fast signing/verification using Jacobian coordinates and optimized scalar multiplication. Security features include RFC6979 deterministic nonces, low-S normalization, on-curve validation, and hash truncation. Supports secp256k1 and P-256; requir...
secp256k1). Critical for building or integrating with DeFi, NFT, or crypto payment systems.openssl_sign()) with a pure-PHP alternative, reducing dependency on system libraries and improving portability (e.g., Docker, serverless, or restricted environments).ed25519, proprietary curves) via CurveFp::add(), enabling innovation in IoT, research, or niche protocols where standard curves are insufficient.Adopt if:
ext-openssl is unavailable).openssl_sign() or working with PEM/DER keys).secp256k1 for Bitcoin, prime256v1 for TLS, or proprietary curves).Avoid if:
ext-gmp (e.g., shared hosting or legacy PHP setups).Look elsewhere if:
web3php for blockchain use cases).For Executives: "This package lets us replace OpenSSL’s ECDSA with a faster, deterministic, and side-channel-resistant pure-PHP solution—critical for [blockchain payments/regulatory compliance]. It’s MIT-licensed, OpenSSL-compatible, and 4x faster than alternatives in our benchmarks, reducing latency in high-volume transactions. Companies like Stark Bank use it for secure message signing; we can leverage it for [your use case, e.g., crypto wallets, payment processing], while avoiding vendor lock-in and improving security."
For Engineering: *"Key advantages:
secp256k1 (Bitcoin/Ethereum) and prime256v1 out-of-the-box; can add custom curves.openssl_sign() to this library).ext-gmp (but avoids ext-openssl).
Proposal: Replace [current ECDSA implementation] with this for [specific feature], targeting a 20% latency reduction in [critical path, e.g., transaction processing]. Integration is straightforward via Composer and aligns with Laravel’s autoloading."*For Security/Compliance Teams: *"This package addresses critical risks in our ECDSA implementation:
How can I help you explore Laravel packages today?