ylly/certsign

PHP库,用于集成CertEurope的CertSign

1.6.1 2021-11-17 16:04 UTC

This package is auto-updated.

Last update: 2024-09-17 22:26:49 UTC


README

此库允许您轻松将CertEurope的CertSign集成到您的项目中。

Build Status

要求

  • PHP 5.4+
  • PHP CURL
  • PHP GD
  • PHP需要编译支持FreeType,否则提供的图像生成服务将回退到标准文本

限制

  • 仅实现SYNC签名模式

安装

composer require ylly/certsign

使用

转换证书

此库使用PEM证书,因为CertSign提供P12文件,您需要将此证书转换为PEM格式

您需要输入证书的密码(您可以使用-passin 'pass:my_password'参数)

openssl pkcs12 -in cert.p12 -out cert.pem

创建签名者

签名者管理认证和签名

您可以从YAML配置文件创建签名者

$signator = SignatorFactory::createFromYamlFile('/path/to/config.yml');

或从配置的键值数组

$signator = SignatorFactory::createFromArray($configArray);

填写用户信息和文件

用户信息和文件存储在签名请求中

$signature = Signature::create()->setImage('/path/to/sign.png', false);
//$signature = Signature::create()->setImage('BASE64');
//$signature = Signature::create()->setImage(new Image(...));

$request = Request::create()
    ->setHolder('Firstname', 'Lastname', 'certsign@ylly.fr', '0601020304')
    ->addDocument('Document-1', '/path/to/doc.pdf', $signature, false)
    ->addDocument('Document-2', 'BASE64', $signature);

签名文件

您有两种方式可以签名文件,带认证或不带认证

认证可以通过电子邮件或短信处理

带认证(OTP)

$request->setOTP('0601020304'); // Will send a SMS
//$request->setOTP('certsign@ylly.fr'); // Will send an Email

// Generate the order, returns the order ID
$orderId = $signator->createOrder($request);

// Send the OTP, can be reused to generate a new OTP
$signator->validate($orderId);

// Create the signature request with the documents and signature image
$signator->createRequest($request, $orderId);

// Enter OTP given by SMS or Email, will return false if the code is invalid
// Returns the signed documents
$documents = $signator->sign($orderId, 'MyOTP');

不带认证(直接签名)

// Generate the order, returns the order ID
$orderId = $signator->createOrder($request);

// Create the signature request with the documents and signature image
$signator->createRequest($request, $orderId);

// Returns the signed documents
$documents = $signator->sign($orderId);

配置文件

env: test # or prod
cert: /etc/ssl/certsign.pem
cert_password: password
proxy: locahost:8080 # optionnal web proxy

高级使用

提供了一个日志接口来管理输出的日志,您可以在签名者上注册您的监听器

class Listener implement LogListenerInterface
{
    public function recieve($level, $message)
    {
        // do something
    }
}

$signator->addListener(new Listener());

您可以使用以下脚本生成简单的图像,而不是使用静态图像

$image = new Image(100, 50, new Color(255, 255, 255));
$image->setStyle(new TextStyle(0, 0, 12, 2, new Color(0, 0, 0));
$image->addText('SignText');