leon-mbs/ppolib
Composer 安装命令:
composer require leon-mbs/ppolib
包简介
Библиотека цифровой подписи для ПРРО (Украина)
README 文档
README
Большинство кода портировано с https://github.com/dstucrypt/jkurwa
Установка
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 ) ;
leon-mbs/ppolib 适用场景与选型建议
leon-mbs/ppolib 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 25.84k 次下载、GitHub Stars 达 15, 最近一次更新时间为 2021 年 10 月 26 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 leon-mbs/ppolib 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 leon-mbs/ppolib 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 25.84k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 15
- 点击次数: 10
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-10-26