adapik/phpasn1

一个PHP框架,允许您使用ITU-T X.690编码规则对任意ASN.1结构进行编码和解码。

2.3.1 2024-03-22 13:52 UTC

README

Build Status PHP 7 ready Coverage Status

Latest Stable Version Total Downloads Latest Unstable Version License

一个PHP框架,允许您使用ASN.1结构ITU-T X.690编码规则进行编码和解码。这种编码在X.509 PKI环境或异构计算机系统之间的通信中非常常用。

API允许您将ASN.1结构编码成二进制数据,例如证书签名请求(CSR)、X.509证书或证书吊销列表(CRL)。PHPASN1还可以读取BER编码的二进制数据到独立的PHP对象中,用户可以对这些对象进行操作,然后再次进行编码。

现在可以在CHANGELOG.md中找到变更日志。

依赖项

PHPASN1至少需要PHP 7gmp扩展。

安装

安装此库的首选方式是依赖于Composer

$ composer require Adapik/phpasn1

使用方法

编码ASN.1结构

PHPASN1为每个实现的ASN.1通用类型提供了一个类。构造函数应该是相当直观的,因此您应该不会有太大困难开始使用。所有数据都将使用DER编码进行编码

use FG\ASN1\Universal\Integer;
use FG\ASN1\Universal\Boolean;
use FG\ASN1\Universal\Enumerated;
use FG\ASN1\Universal\IA5String;
use FG\ASN1\Universal\ObjectIdentifier;
use FG\ASN1\Universal\PrintableString;
use FG\ASN1\Universal\Sequence;
use FG\ASN1\Universal\Set;
use FG\ASN1\Universal\NullObject;

$integer = Integer::create(123456);        
$boolean = Boolean::create(true);
$enum = Enumerated::create(1);

$asnNull = NullObject::create();
$objectIdentifier1 = ObjectIdentifier('1.2.250.1.16.9');
$printableString = PrintableString::createFromString('Foo bar');

$sequence = Sequence::create([$integer, $boolean, $enum, $ia5String]);
$set = Set([$sequence, $asnNull, $objectIdentifier1, $objectIdentifier2, $printableString]);

$myBinary  = $sequence->getBinary();
$myBinary .= $set->getBinary();

echo base64_encode($myBinary);

解码二进制数据

解码BER编码的二进制数据与编码一样简单

use FG\ASN1\Object;

$base64String = ...
$binaryData = base64_decode($base64String);        
$asnObject = Object::fromBinary($binaryData);
// do stuff

您可以使用此函数确保您的数据格式与您预期的一致。

感谢

至今的所有贡献者

许可协议

此库在MIT许可协议下分发。