openssl_sign - php 7.2 openssl
PHP ¿Cómo analizar el blob de firma de pkcs7? (2)
¿Qué pasa con esta solución :)
<?php
$result = shell_exec(''openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text'');
var_dump ($result);
// you can use preg_match() if you want to parse something specific
Tengo una firma PKCS7 con la que puedo obtener contenido analizado con
openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text
¿Pero cómo se puede obtener el mismo resultado con las funciones openssl de PHP?
Editar. Logré crear un archivo PEM correcto con la siguiente función:
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);
Sin embargo, no pude analizar los datos con ninguna de las funciones mencionadas en el manual de PHP. Funciona usando openssl con:
openssl pkcs7 -inform PEM -in signature.pkcs7 -print_certs -text
Desafortunadamente, creo que no hay una solución simple. Si desea analizar la firma codificada DER PKCS # 7 en PHP, necesita algún analizador ASN.1. Las funciones de OpenSSL en PHP no son capaces de hacerlo.
¿Existen bibliotecas PHP para analizar ASN.1 o generar código PHP basado en él?
Intenta decodificar tus datos DER con algunos de los analizadores referenciados. Si algún analizador funciona, debería poder ver y extraer la información requerida. Como primer paso, puedes probar el analizador en línea del proyecto phpseclib.