Skip to content

unitpay/shamir

Repository files navigation

Shamir

Latest Stable Version Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

PHP Shamir's Secret Sharing implementation. Inspired by hashicorp vault shamir. Compatible with Simple Shamir's Secret Sharing (s4).

Requirements

  • PHP 7.4 or higher.

Installation

The package could be installed with composer:

composer require unitpay/shamir --prefer-dist

Usage

Split secret to parts with threshold

$secret = 'Some super secret';
$parts = 5;
$threshold = 3;
$shares = Shamir::split($secret, $parts, $threshold);

Reconstruct shares

$recoveredSecret = Shamir::reconstruct([$parts[1], $parts[0], $parts[3]]);

Testing

Unit testing

The package is tested with PHPUnit. To run tests:

./vendor/bin/phpunit

Mutation testing

The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:

./vendor/bin/roave-infection-static-analysis-plugin

Static analysis

The code is statically analyzed with Psalm. To run static analysis:

./vendor/bin/psalm

License

It is released under the terms of the MIT License. Please see LICENSE for more information.

Follow updates

Twitter Telegram