예제 #1
0
 /**
  * checkCerts
  * @param string $cnpj
  * @param string $pathCertsFiles
  * @param string $certPfxName
  * @param string $certPassword
  * @return array
  */
 public static function checkCerts($cnpj = '', $pathCertsFiles = '', $certPfxName = '', $certPassword = '')
 {
     $flag = true;
     $msg = '';
     if (strlen($cnpj) != 14) {
         $flag = $flag && false;
         $msg .= "CNPJ incorreto! {$cnpj} \n";
     }
     if (!is_dir($pathCertsFiles)) {
         $flag = $flag && false;
         $msg .= "Diretório não localizado! {$pathCertsFiles} \n";
     }
     if (substr($pathCertsFiles, -1) !== DIRECTORY_SEPARATOR) {
         $pathCertsFiles .= DIRECTORY_SEPARATOR;
     }
     try {
         $cert = new Pkcs12($pathCertsFiles, $cnpj);
         $flag = $cert->loadPfxFile($pathCertsFiles . $certPfxName, $certPassword);
     } catch (InvalidArgumentException $exc) {
         $flag = false;
         $msg .= $exc->getMessage();
     } catch (RuntimeException $exc) {
         $flag = false;
         $msg .= $exc->getMessage();
     }
     if ($msg == '') {
         $msg = 'Certificado Validado, arquivos PEM criados na pasta.';
     }
     return array('cert' => array('status' => $flag, 'msg' => $msg));
 }
예제 #2
0
 public function testAdicionarCadeiaCertificados()
 {
     $aCerts[] = dirname(dirname(dirname(__FILE__))) . '/fixtures/certs/ACCertisignG6_v2.cer';
     $aCerts[] = dirname(dirname(dirname(__FILE__))) . '/fixtures/certs/ACCertisignMultiplaG5.cer';
     $aCerts[] = dirname(dirname(dirname(__FILE__))) . '/fixtures/certs/ACRaizBrasileira_v2.cer';
     $cert = $this->priPem . "\r\n" . $this->pubPem . "\r\n" . $this->accg6 . "\r\n" . $this->accmg5 . "\r\n" . $this->acraizbr;
     $cert = str_replace(array("\r", "\n"), '', $cert);
     $cnpj = '99999090910270';
     $pathCerts = '';
     $ignoreValidCert = true;
     $pkcs = new Pkcs12($pathCerts, $cnpj, $this->pubPem, $this->priPem, '', $ignoreValidCert);
     $pkcs->aadChain($aCerts);
     $cadeiacompleta = str_replace(array("\r", "\n"), '', $pkcs->certKey);
     $this->assertEquals($cadeiacompleta, $cert);
 }
예제 #3
0
 /**
  * Executa a assinatura digital do xml
  * Essa assinatura depende da classe Pkcs12.php que está no repositório
  * nfephp-org/sped-common/Certificates
  */
 public function assina()
 {
     $this->xml = $this->pkcs->signXML($this->xml, $this->signTag, 'id', $this->objConfig->signAlgorithm);
 }