1. Go to this page and download the library: Download freedsx/asn1 library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
freedsx / asn1 example snippets
use FreeDSx\Asn1\Asn1;
use FreeDSx\Asn1\Encoders;
# Create the ASN.1 structure you need...
$asn1 = Asn1::sequence(
Asn1::integer(9999),
Asn1::octetString('foo'),
Asn1::boolean(true)
);
# Encoded $bytes will now contain the BER binary representation of a sequence containing:
# - An integer type of value 9999
# - An octet string type of value 'foo'
# - A boolean type of true
$bytes = Encoders::ber()->encode($asn1);
# Encode using the more strict DER encoder
$bytes = Encoders::der()->encode($asn1);
use FreeDSx\Asn1\Asn1;
use FreeDSx\Asn1\Encoders;
use FreeDSx\Asn1\Type\SequenceType;
use FreeDSx\Asn1\Type\OctetStringType;
use FreeDSx\Asn1\Type\IntegerType;
use FreeDSx\Asn1\Type\BooleanType;
# Assuming bytes contains the binary BER encoded sequence described in the encoding section
# Get a BER encoder instance, call decode on it, and $pdu will now be a sequence object.
$pdu = Encoders::ber()->decode($bytes);
# You could also decode using DER, if that's what you're expecting...
$pdu = Encoders::der()->decode($bytes);
# Validate the structure you are expecting...
if (!($pdu instanceof SequenceType && count($pdu) === 3)) {
echo "Decoded structure is invalid.".PHP_EOL;
exit;
}
# Loop through the sequence and check the individual types it contains...
foreach ($pdu as $i => $type) {
if ($i === 0 && $type instanceof IntegerType) {
var_dump($type->getValue());
} elseif ($i === 1 && $type instanceof OctetStringType) {
var_dump($type->getValue());
} elseif ($i === 2 && $type instanceof BooleanType) {
var_dump($type->getValue());
} else {
echo "Invalid type encountered.".PHP_EOL;
exit;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.