Olá, pessoal, minha dúvida é a seguinte: gostaria de saber se existe alguma biblioteca php, preferencialmente grátis, onde se possa realizar a assinatura digital de um documento. Inicialmente, pesquisei sobre assinaturas digitais na documentação do php e consegui usar a função openssl_sign para realizar uma assinatura, porém, essa função gera uma assinatura em arquivo separado do documento, não tenho muito conhecimento nessa área de assinaturas digitais, mas pensei que o ideal seria meio que embutir a assinatura no documento, e quando o usuário baixasse o documento assinado, conseguisse ver que ele foi assinado por x pessoas, com seus respectivos nomes, mas não encontrei nada do tipo ainda.
Agradeço desde já qualquer ajuda.
Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles: <SignatureValue> , <DigestValue> e <X509Certificate>, como faço para gerar esses 3 campos?
Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência manualmente (sem a utilização de classes prontas na qual é difícil de entender o código).
Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.
OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue> e <X509Certificate>.
OBS 2: O campo <DigestValue> notei em alguns fóruns que é um retorno da Sefaz, é correto isso?
Resumo:
implementar assinatura digital na camada de transporte para consumir um web service externo.
Adiante segue o script e a mensagem de erro.
Detalhes:
Não, não se trata de Nfe.... brinks
E infelizmente não consegui pesquisar tópicos antigos porque a páginação do fórum está com problemas (na página de pesquisa ele não passa da primeira =D )....
Bom, o meu caso é o seguinte:
Aqui na empresa temos um sistema financeiro e de controle jurídico que roda em um cartório já a bastante tempo. E um dos módulos consumia o web service do tribunal de justiça local para algumas atividades. Em apenas uma dessas atividades será necessário implementar a assinatura digital para autenticação junto a este web service.
Script:
/* * Envia xml ao tjce: * * $args = array( * 'xml' => 'conteudo do xml', * 'service' => 'nome do servico na URL', * 'action' => 'metodo para chamar no webservice' * ); * */ public function send($args){ //dados $xml = $args['xml']; $service = $args['service']; $action = $args['action']; $wsdl = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/' . $service . '?wsdl'; // //testa instalacao do soap no servidor if (!class_exists('SoapClient')){ die ("Falha na instalação do soap no servidor."); } $wsdl = $wsdl; $localCert = "/caminho/do/certificado.pem"; $soapClient = new SoapClient($wsdl, array('localCert' => $local_cert)); $theResponse = $soapClient->metodoTeste(); echo $theResponse; }
Erro:
Fatal error: Uncaught SoapFault exception: [soap:Server] Fault occurred while processing. in /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php:40 Stack trace: #0 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php(40): SoapClient->__call('historicoSolici...', Array) #1 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php(40): SoapClient->historicoSolicitacaoSelos() #2 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SealController.php(163): SoapController->send(Array) #3 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/MainController.php(23): SealController->test() #4 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/FrontController.php(37): MainController->run('Seal', 'test') #5 /Users/danielrodrigues/Sites/open-system/openselos/system/index.php(9): FrontController->run() #6 {main} thrown in /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php on line 40
Complementando:
Talvez o problema seja a forma que estou gerando o .pem. Nunca trabalhei com assinatura digital e realmente estou bastante perdido nesse assunto.
Gerei esta chave .pem a partir do arquivo .pfx seguindo estes passos:
http://www.rafaeltheodoro.com.br/nfe/conversao-de-certificado-ca-tipo-a1-de-pfx-para-pem/