Example #1
0
 public function testConsigoPegarCNPJ()
 {
     $certificado = dirname(dirname(dirname(__FILE__))) . '/fixtures/certs/certificado_pubKEY.pem';
     $certPem = file_get_contents($certificado);
     $cnpj = Asn::getCNPJCert($certPem);
     $this->assertEquals($cnpj, '99999090910270');
 }
Example #2
0
 /**
  * loadPfx
  * Carrega um novo certificado no formato PFX
  * Isso deverá ocorrer a cada atualização do certificado digital, ou seja,
  * pelo menos uma vez por ano, uma vez que a validade do certificado
  * é anual.
  * Será verificado também se o certificado pertence realmente ao CNPJ
  * indicado na instanciação da classe, se não for um erro irá ocorrer e
  * o certificado não será convertido para o formato PEM.
  * Em caso de erros, será retornado false e o motivo será indicado no
  * parâmetro error da classe.
  * Os certificados serão armazenados como <CNPJ>-<tipo>.pem
  * @param string $pfxContent arquivo PFX
  * @param string $password Senha de acesso ao certificado PFX
  * @param boolean $createFiles se true irá criar os arquivos pem das chaves digitais, caso contrario não
  * @param bool $ignoreValidity
  * @param bool $ignoreOwner
  * @return bool
  */
 public function loadPfx($pfxContent = '', $password = '', $createFiles = true, $ignoreValidity = false, $ignoreOwner = false)
 {
     if ($password == '') {
         throw new Exception\InvalidArgumentException("A senha de acesso para o certificado pfx não pode ser vazia.");
     }
     //carrega os certificados e chaves para um array denominado $x509certdata
     $x509certdata = array();
     if (!openssl_pkcs12_read($pfxContent, $x509certdata, $password)) {
         throw new Exception\RuntimeException("O certificado não pode ser lido!! Senha errada ou arquivo corrompido ou formato inválido!!");
     }
     $this->pfxCert = $pfxContent;
     if (!$ignoreValidity) {
         //verifica sua data de validade
         if (!$this->zValidCerts($x509certdata['cert'])) {
             throw new Exception\RuntimeException($this->error);
         }
     }
     if (!$ignoreOwner) {
         $cnpjCert = Asn::getCNPJCert($x509certdata['cert']);
         if ($this->cnpj != $cnpjCert) {
             throw new Exception\InvalidArgumentException("O Certificado fornecido pertence a outro CNPJ!!");
         }
     }
     //monta o path completo com o nome da chave privada
     $this->priKeyFile = $this->pathCerts . $this->cnpj . '_priKEY.pem';
     //monta o path completo com o nome da chave publica
     $this->pubKeyFile = $this->pathCerts . $this->cnpj . '_pubKEY.pem';
     //monta o path completo com o nome do certificado (chave publica e privada) em formato pem
     $this->certKeyFile = $this->pathCerts . $this->cnpj . '_certKEY.pem';
     $this->zRemovePemFiles();
     if ($createFiles) {
         $this->zSavePemFiles($x509certdata);
     }
     $this->pubKey = $x509certdata['cert'];
     $this->priKey = $x509certdata['pkey'];
     $this->certKey = $x509certdata['pkey'] . "\r\n" . $x509certdata['cert'];
     return true;
 }