PHPackages                             leon-mbs/ppolib - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. leon-mbs/ppolib

ActiveLibrary[Security](/categories/security)

leon-mbs/ppolib
===============

Библиотека цифровой подписи для ПРРО (Украина)

1.6.1(1y ago)1422.6k↓12.3%101MITPHPPHP &gt;7.4.0

Since Oct 26Pushed 8mo ago4 watchersCompare

[ Source](https://github.com/leon-mbs/ppolib)[ Packagist](https://packagist.org/packages/leon-mbs/ppolib)[ Docs](https://github.com/leon-mbs/ppolib)[ RSS](/packages/leon-mbs-ppolib/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (1)Versions (44)Used By (1)

Библиотека для наложения цифровой подписи (КЕП) согласно ДСТУ-4145
------------------------------------------------------------------

[](#библиотека--для-наложения-цифровой-подписи--кеп--согласно-дсту-4145)

Большинство кода портировано с

### Установка

[](#установка)

`composer require leon-mbs/ppolib`

### Как использовать

[](#как--использовать)

Распаковка сертификата и соответствующему ему ключа (сертификат может быть для подписи или шифрования и соответственно разные ключи)

```
$cert =    \PPOLib\Cert::load($certdata) ;
$key =   \PPOLib\KeyStore::load($keydata,$password,$cert ) ;

```

Где $certdata - содержимое файла сертификата $keydata - содержимое файла ключа $password - пароль к ключу

Поскольку распаковка происходит довольно медленно, обьекты $cert и $key следует положить в сессию или сериализовать в строки (файлы) и спрятать в надежном хранилище для дальнейшего использования путем десериализации вмето распаковки

Загрузка jks файла (ПриватБанк)
`list($key,$cert) = \PPOLib\KeyStore::loadjks($jks,$password) ;`

Подпись документа или команды
` $signeddata=  \PPOLib\PPO::sign($message,$key,$cert);`

Открепленная подпись (без данных)
` $signeddata=  \PPOLib\PPO::sign($message,$key,$cert,true);`

Подпись с TSP отметкой
`$signeddata=  \PPOLib\PPO::sign($message,$key,$cert,false,true);`

Отправка запроса в налоговую

`$answer =  \PPOLib\PPO::send($signeddata,'cmd')` ;

Если отправляется документ ответом будут подписанные данные, из которых нужно вынуть документ ответа (обычно xml)

`$data = \PPOLib\PPO::decrypt($answer ) ;`

Если ответ с ФС то он будет подписан верно и можно поставить второй параметр true что ускорить обработку.

Получение информации о подписи
`$info = \PPOLib\PPO::signinfo($answer) ;`

Загрузка сертификата с центра сертификации
`\PPOLib\PPO::fetchCert($keydata,$pass  ) ;`

Шифрование сообщения.
Использутся пара ключ-сертификат для шифрования а также сертификат получателя (ДФС) `\PPOLib\PPO::encipher($message,$forcert,$key,$keycert );`

Дещифрование сообщения.
Использутся пара ключ для шифрования а также сертификат получателя (ДФС) `\PPOLib\PPO::decipher($message,$key,$forcert );`

Для отправки в электронный кабинет используются функции

`\PPOLib\DFS::encodeCrypt($encodedData,$h,$keycert ) ;`
`\PPOLib\DFS::encodeSign($signedData,$h ) ;`

заголовок
`$h=\PPOLib\DFS::createHeader($keycert,"admin@gmail.com","test.txt") ;`

Примерная последовательность

шифруем данные
`$encoded= \PPOLib\PPO::encipher($message,$forcert,$key,$keycert);`

`$h=\PPOLib\DFS::createHeader($keycert,"admin@gmail.com","test.txt");`

упаковываем
`$transport=\PPOLib\DFS::encodeCrypt($encoded,$h,$keycert ) ;`

если надо подписать

```
$signed= \PPOLib\PPO::sign($transport,$key,$keycert);
$transport=\PPOLib\DFS::encodeSign($signed,$h ) ;

```

распаковка ответа налоговой `\PPOLib\DFS::decode($ticket ) ;`

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance51

Moderate activity, may be stable

Popularity38

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~27 days

Recently: every ~3 days

Total

43

Last Release

510d ago

PHP version history (4 changes)1.0.2PHP &gt;=7.2

1.4.1PHP &gt;=7.4

1.5.2PHP ^8.0.0

1.5.6PHP &gt;7.4.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/fefcbb8ecb620517148b7544a93e705565ff75d5fb7c0146800a252fcb3ecf74?d=identicon)[leon-mbs](/maintainers/leon-mbs)

---

Top Contributors

[![leon-mbs](https://avatars.githubusercontent.com/u/628435?v=4)](https://github.com/leon-mbs "leon-mbs (97 commits)")

---

Tags

ukraine

### Embed Badge

![Health badge](/badges/leon-mbs-ppolib/health.svg)

```
[![Health](https://phpackages.com/badges/leon-mbs-ppolib/health.svg)](https://phpackages.com/packages/leon-mbs-ppolib)
```

###  Alternatives

[defuse/php-encryption

Secure PHP Encryption Library

3.9k162.4M214](/packages/defuse-php-encryption)[mews/purifier

Laravel 5/6/7/8/9/10 HtmlPurifier Package

2.0k16.7M113](/packages/mews-purifier)[robrichards/xmlseclibs

A PHP library for XML Security

41478.1M118](/packages/robrichards-xmlseclibs)[bjeavons/zxcvbn-php

Realistic password strength estimation PHP library based on Zxcvbn JS

87117.5M63](/packages/bjeavons-zxcvbn-php)[illuminate/encryption

The Illuminate Encryption package.

9229.7M280](/packages/illuminate-encryption)[paragonie/hidden-string

Encapsulate strings in an object to hide them from stack traces

7410.6M39](/packages/paragonie-hidden-string)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
