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'); }
/** * 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; }