andrew-svirin / eusphpe-php
此软件包最新版本(3.0.7)没有可用的许可信息。
适用于 EUSPHPE 的 PHP 库
3.0.7
2023-11-24 20:33 UTC
Requires
- php: ^7.1
Requires (Dev)
- jetbrains/phpstorm-stubs: 2018.09.03
- phpunit/phpunit: ^6.5
README
- 通过文档(docs/EUSPHPE/Documentation/EUSignPHPDescription.doc)配置 php 扩展 euspe
- 从扩展目录中删除 osplm.ini
- 添加到 apache envvars
LD_LIBRARY_PATH=/server/path/vendor/uis/euspe/servers/default
- 配置 IDE 中的存根以查看函数文档(https://github.com/andrew-svirin/phpstorm-stubs)。
- 配置服务器、证书、密钥的目录。以 osplm.dist.ini 为示例。为文件夹设置 0777 权限。
- certificates\
- keys\
- servers\
- server.name\
- osplm.ini
- ...
-
使用接口进行通信。
-
示例用法
$user = new \AndrewSvirin\EUSPE\User( 'user-name', 'server.name', 'dat|jks', 'bDataKey', 'secret' ); $serverStorage = new \AndrewSvirin\EUSPE\ServerStorage($this->serversDir); $keyRingStorage = new \AndrewSvirin\EUSPE\KeyRingStorage($this->keysDir); $certStorage = new \AndrewSvirin\EUSPE\CertificateStorage($this->certsDir); $serverStorage->clearExpired(); // Run it by cron every 1 hour. $keyRingStorage->clearExpired(); // Run it by cron every 1 hour. $certStorage->clearExpired(); // Run it by cron every 1 hour. $keyRing = $keyRingStorage->prepare($user); $cert = $certStorage->prepare($user); try { $server = $serverStorage->prepare($user, $cert); $server->open(); $client = new \AndrewSvirin\EUSPE\Client(); $client->open(); $settings = $client->getFileStoreSettings(); $this->assertNotEmpty($settings); if (!$keyRingStorage->exists($keyRing)) { $keyRing->setPassword($user->getPassword()); $keyRing->setType($user->getKeyType()); if ($keyRing->typeIsDAT()) { $keyRing->setPrivateKeys([$user->getKeyData()]); } else { $keyRing->setPrivateKeys($client->retrieveJKSPrivateKeys($user->getKeyData())); } $keyRingStorage->store($keyRing, $this->secretToken); } $keyRingStorage->load($keyRing, $this->secretToken); if (!$cert->hasCerts()) { foreach ($keyRing->getPrivateKeys() as $privateKey) { $client->readPrivateKey($privateKey, $keyRing->getPassword()); $client->resetPrivateKey(); } } $certificates = $client->parseCertificates($cert->loadCerts()); $this->assertNotEmpty($certificates); if ($keyRing->typeIsJKS()) { $sign = $client->signData('Data for sign 123', $keyRing->getPrivateKeyStamp(), $keyRing->getPassword()); $signsCount = $client->getSignsCount($sign); $this->assertNotEmpty($signsCount); for ($i = 0; $i < $signsCount; $i++) { $signerInfo = $client->getSignerInfo($sign, $i); $this->assertNotEmpty($signerInfo); } } } finally { if (isset($client)) { $client->close(); } if (isset($server)) { $server->close(); } }
EUSPHPE 发行版
原始 EUSPHPE 发行版可以从 https://iit.com.ua/downloads 获取