<?php
// require_once 'vendor/autoload.php';
// require_once '../../vendor/autoload.php';
// require_once "qr-code/autoload.inc.php";

foreach($_GET  as $key => $value){${$key}=trim($value);$_PARAMS[$key]=${$key};}  
foreach($_POST as $key => $value){${$key}=trim($value);$_PARAMS[$key]=${$key};}

// use phpseclib3\Crypt\RSA;
// use Endroid\QrCode\Builder\Builder;


// public_html/_lib/vendor/endroid/qr-code/src/Builder
// public_html/_lib/vendor/endroid/qr-code/src/Builder
// public_html/_lib/vendor/endroid/qr-code/src/Builder
// use vendor\endroid\qrcode\src\Builder\Builder;

// Ruta al archivo PKCS#12 y contraseña
// $p12File = 'ruta/al/archivo.p12';
// $password = 'tu_contraseña';

$p12File='../pk12/0915379374_221226_2219.p12';
$password = 'Vicore1976';


// echo '======>'.file_exists($p12File);
// die();

// Leer el archivo .p12
$p12Content = file_get_contents($p12File);
$certs = [];

// Extraer el certificado y la clave privada
// if (openssl_pkcs12_read($p12Content, $certs, $password)) {
//     $privateKey = $certs['pkey'];  // Clave privada en formato PEM
//     $certificate = $certs['cert']; // Certificado en formato PEM
// } else {
//     die('No se pudo leer el archivo .p12.');
// }


$caduca=p12_vali_date($p12Content,$password);
echo '<br><br>====>'.$caduca;

$certs=open_p12($p12Content,$password);
    $privateKey = $certs['pkey'];  // Clave privada en formato PEM
    $certificate = $certs['cert']; // Certificado en formato PEM

echo '<br>';
echo '<br>';
echo '****************************';
echo $certificate;


// var_dump2($certs);

$certInfo = openssl_x509_parse($certificate);

// Extraer el nombre del dueño (nombre común) y el emisor (Organización emisora)
$ownerName = $certInfo['subject']['CN'];  // Nombre del dueño (Common Name)
$issuerName = $certInfo['issuer']['O'];   // Organización emisora (Issuer)

echo '<br>';
echo '<br>';
echo '****************************';
var_dump2($certInfo);

echo '<br>';
echo '<br>';
echo '****************************';
var_dump2($certInfo['subject']);
echo '<br>';
echo '<br>';
echo '****************************';
var_dump2($certInfo['issuer']);


for ($xcont=1; $xcont<=9; $xcont++)
{
     
echo '<br>';
echo '<br>';
echo '****************************';
var_dump2($certInfo['purposes'][$xcont]);
}


echo '<br>';
echo '<br>';
echo '****************************';
var_dump2($certInfo['extensions']);


// echo '<br>****************************';
// echo $ownerName;
// echo $issuerName;

// Datos que deseas firmar
$dataToSign = 'Datos importantes a firmar';

// Firmar los datos con la clave privada
openssl_sign($dataToSign, $signature, $privateKey, OPENSSL_ALGO_SHA256);


// La firma es binaria, por lo que es mejor convertirla a base64
$signatureBase64 = base64_encode($signature);


echo '<br><br>====>'.$signature;
echo '<br><br>====>'.$signatureBase64 ;



// // Generar URL para Google Chart API
// $qrUrl = 'https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=' . urlencode($signatureBase64) . '&choe=UTF-8';

// // Mostrar el código QR directamente en el navegador
// echo '<img src="' . $qrUrl . '" alt="Código QR generado">';




echo '<br><br>';

$qrUrl = 'https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=' . urlencode($signatureBase64);

// Mostrar el código QR directamente en el navegador
echo '<img src="' . $qrUrl . '" alt="Código QR generado">';

echo '<br><br>';

$qrUrl = 'https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=FIRMADO POR VICENTE RUIZ';

// Mostrar el código QR directamente en el navegador
echo '<img src="' . $qrUrl . '" alt="Código QR generado">';



// // Generar el código QR con la firma
// $result = Builder::create()
//     ->data($signatureBase64)
//     ->size(300) // Tamaño del QR
//     ->build();

// // Guardar el QR como una imagen
// $result->saveToFile('qr_firma.png');

// // Mostrar el código QR en el navegador
// header('Content-Type: ' . $result->getMimeType());
// echo $result->getString();
