/**
  * Método que entrega el serialNumber del subject
  * @return serialNumber del subject
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-12-18
  */
 public function getID()
 {
     // RUN está en el serialNumber (ej: Acepta)
     if (isset($this->data['subject']['serialNumber'])) {
         return $this->data['subject']['serialNumber'];
     }
     // RUN está dentro del OU (ej: E-Sign)
     if (isset($this->data['subject']['OU']) and is_array($this->data['subject']['OU'])) {
         foreach ($this->data['subject']['OU'] as $line) {
             if (strpos($line, 'RUT') !== false) {
                 $aux = explode(' ', $line);
                 $run = trim($aux[count($aux) - 1]);
                 $l_run = strlen($run);
                 if (strpos($run, '-') and $l_run >= 9 and $l_run <= 10) {
                     return $run;
                 }
             }
         }
     }
     // RUN está codificado en las extenciones del certificado (ej: E-CERTCHILE)
     if (in_array($this->data['issuer']['O'], ['E-CERTCHILE']) and isset($this->data['extensions'])) {
         $x509 = new \phpseclib\File\X509();
         $cert = $x509->loadX509($this->certs['cert']);
         foreach ($cert['tbsCertificate']['extensions'] as $e) {
             if ($e['extnId'] == 'id-ce-subjectAltName') {
                 return $e['extnValue'][0]['otherName']['value']['ia5String'];
             }
         }
     }
     // no se encontró el RUN
     return $this->error('No fue posible obtener el ID (subject.serialNumber) de la firma. Enviar lo siguiente al soporte de LibreDTE: \'' . json_encode($this->data['subject']) . '\'');
 }
Esempio n. 2
0
<?php

include '../phpseclib/vendor/autoload.php';
$x509 = new \phpseclib\File\X509();
$cert = file_get_contents('cert.crt');
$x509->loadX509($cert);
echo '<pre>';
#INFORMATIONS
echo 'Certificate for website: ' . $x509->getDN('id-ce-subjectAltName')['rdnSequence']['0']['0']['value']['utf8String'] . "\r\n";
echo 'Valid from: ' . $x509->startDate . ' to: ' . $x509->endDate . "\r\n";
echo 'SignatureSubject: ' . $x509->signatureSubject . "\r\n";
echo '-------------------------------CERTIFICATE SIGNING KEY INFORMATION------------------------------------' . "\r\n";
echo 'Certificate version: ' . $x509->currentCert['tbsCertificate']['version'] . "\r\n";
echo 'Serial Number: ' . $x509->currentCert['tbsCertificate']['serialNumber']->toString() . "\r\n";
echo 'Algorithm: ' . $x509->currentCert['tbsCertificate']['signature']['algorithm'] . "\r\n";
echo 'Issuer Public Key: ' . $x509->currentCert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'] . "\r\n";
echo 'Properties: ' . "\r\n";
foreach ($x509->currentCert['tbsCertificate']['issuer']['rdnSequence'] as $object) {
    echo $object['0']['type'] . ':' . (isset($object['0']['value']['printableString']) ? $object['0']['value']['printableString'] : NULL) . "\r\n";
}