Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP How to parse pkcs7 signature blob?

I have a PKCS7 signature which i can get parsed contents from with

openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text

But how do archieve the same output with PHPs openssl functions?

Edit. I succeeded in creating a correct PEM file with the following function:

function der2pem($der_data, $type="CERTIFICATE") {
   $pem = chunk_split(base64_encode($der_data), 64, "\n");
   $pem = "-----BEGIN $type-----\n".$pem."-----END $type-----\n";
   return $pem;
}
$data = der2pem($der_data, "PKCS7");

Im not however successfull in parsing the data with any of the functions mentioned in the PHP manual. It works using openssl with:

openssl pkcs7 -inform PEM -in signature.pkcs7 -print_certs -text
like image 287
Patrik Grinsvall Avatar asked Mar 17 '15 15:03

Patrik Grinsvall


1 Answers

Unfortunatelly, I believe there is not simple solution. If you want to parse PKCS#7 DER encoded signature in PHP, you need some ASN.1 parser. OpenSSL functions in PHP are not capable to do it.

Do any PHP libraries exist for parsing ASN.1 or generating PHP code based on it?

Try to decode your DER data with some of referenced parsers. If any parser will work, you should be able to see and extract required information. As first step, you can try online parser from phpseclib project.

http://phpseclib.sourceforge.net/x509/asn1parse.php

like image 130
kba Avatar answered Nov 10 '22 20:11

kba