O Conjunto de Chaves Não Existe - NFSPBH
Conseguir assinar esta muito dificil. Ja peguei mais de um Codigo de Assinatura em Delphi 7.
Tenho o SOAP atualizado, conforme os colegas alertaram ai. Minha rotina de consulta a nota esta funcionando. Mas na hora de assinar para enviar o ocorre na linha dsigKey := xmldsig.createKeyFromCSP(PrivateKey.ProviderType, PrivateKey.ProviderName, PrivateKey.ContainerName, 0); o seguinte erro: "O Conjunto de Chaves Não Existe" Os dois codigos de assinatura delphi tem este comando, e o mais estranho, é que ontem peguei um codigo de assinatura com um colega, que chegou a funcionar algumas vezes. Resolvi dar um boot na maquina porque tava dando um pau pra conectar no webservice ai nao funcionou mais. O Programa webservicePBH que ja colocaram ai da o mesmo pau. Ja vi uma discucao aqui no forum onde um cara repassou uma mensagem que tem no site da receita que diz que quando da esta mensagem tem que reinstar o token, acho improvavel que o erro seja este. O que me deixou assombrado foi o codigo funcionar ontem, e sem que eu mechesse no codigo da ultima vez que assinou, parou de assinar e voltou a dar a referida mensagem. Meu token é A3 PRONOVA. Ate o momento eu ja usei ele no site online pra lancar uma nota teste, a qual, consigo no meu programa consultar via webservice. Nos tambem tentamos utilizar a NFSEUtil feita em .net e assinatura parecia esta legal, mas foi rejeitada com o codigo E174. Minha preferencia é tentar uma solucao apenas em Delphi 7, so tentei usar esta outra solucao por causa da mensagem "O Conjunto de Chaves nao existe". Se alguem puder dar uma luz ai agradeceria muito. Abraco a todos os sofredores da implementacao da NFS da PBH |
Oi Leonardo!
É o seguinte, provavelmente o Store da Microsoft está bagunçado. Dê também um PrintScreen na Tela de Certificados do Internet Explorer: Ferramentas/Opções da Internet/Conteúdo http://img2.pict.com/d4/58/dd/1881960/0/certificado.png Para resolver, basta rodar o programa da PRODEMGE para instalar as chaves no Internet Explorer. Agora, cuidado! Se você mexeu dentro do eToken com o aplicativo de administração, você pode ter limpado o conteúdo. Se isso acontecer, já era o eToken. Att, Luiz Vaz |
Leonardo,
Acho que isso pode resolver o seu problema. Tem que passar corretamente os dados do certificado para a função. Senão dá pau mesmo. O que fiz foi apresentar a caixa de seleção do certificado para o usuário. Depois de selecionado, basta pegar os dados do objeto Certificate. Código:
function TfrmMain.SignXML(fwWriteKeyInfo: _XMLDSIG_WRITEKEYINFO): Boolean; Qualquer coisa, pegue meu exemplo no: http://opennfse.googlecode.com/files/NFSeSigner.zip OBS.: Repare que usei OleVariant e não a interface em algumas variáveis. Isso é importante, porque força o windows a usar a versão certa do Objeto na CAPICOM e XMLDOC. Atenciosamente, Luiz Vaz |
Citação:
Bom, Eu uso o A3 e a questão na verdade é o tipo e modelo do A3. A3 é na verdade um Token onde a chave privada não é revelada. O processo de assinatura é feita pelo hardware do Token. O meu é eToken da Alladin. Esse é o eToken oficial da PRODEMGE. Cada Token tem sua API de implementação. A CAPICOM da microsft faz a mediação. Para saber qual dll seu token registra use o PKCS11Explorer. Caso ainda não tenha acessado o site da Sarah Dean, baixe ele: http://www.sdean12.o...Explorer100.zip De inicio ele já encontra uma DLL se ela for conhecida. Exemplo do meu eToken: eTPKCS11.dll Aí você dá load e se seu Token estiver ativo ele te mostra e permite você fazer o login. Após fazer o LOGIN você pode visualizar os seus dados. Cuidado para não fazer nada de errado ou adeus TOKEN. Para usar o PKCS11 no SOAP do Delphi o pessoal utiliza a função da WinINET: InternetSetOption passando com INTERNET_OPTION_CLIENT_CERT_CONTEXT o contexto do certificado. O Windows faz o resto, resumindo, faz sozinho o papel da createKeyFromCSP. Isso quer dizer que você precisa do Internet Explorer 6 ou superior, senão não funciona. E isso quer dizer também que essa função vai verificar o que está salvo no Internet Explorer sobre seus certificados. A createKeyFromCSP é da CAPICOM que por sua vez usa a CryptoAPI do Windows, que por sua vez usa a Cryptoki do Token. Você pode entender isso aqui: How To Select Client Certificate in WinInet http://www.rsa.com/r...ode.asp?id=2133 O que está acontecendo então é que a rotina não está conseguindo achar os valores corretos nas linhas: eType := Cert.PrivateKey.ProviderType; sProvider := Cert.PrivateKey.ProviderName; sContainer := Cert.PrivateKey.ContainerName; Depure e poste os valores exatos dessas váriaveis. Quanto ao pict.com era para você dar print na tela de certificados do Internet Explorer. Na sessão de Chaves Pessoais. Ou então no snapin: certmgr.msc assim: http://img2.pict.com/cc/09/a3/1915081/0/nfse11.png Atenciosamente, Luiz Vaz |
Opa,
acho que encontrei algo: microsoft.public.platformsdk.security: Re: Keyset does not exist Verifique as permissões da pasta: 'C:\Documents and Settings\UserName\Application Data\Microsoft\Crypto\RSA' na máquina com problema. Se for português é: 'C:\Documents and Settings\UserName\Dados de aplicativos\Microsoft\Crypto\RSA' Pode ser que foi alterado e você tenha que colocar novamente o criador do certificado como owner. Lembrando que a chave é por usuário no modo que eu coloquei. Por isso a linha: Código:
Store.Open(CAPICOM_CURRENT_USER_STORE, 'My', CAPICOM_STORE_OPEN_EXISTING_ONLY); HKEY_CURRENT_USER\Software\Microsoft\SystemCertifi cates\My\PhysicalStores Atenciosamente, Luiz Vaz |
Sua Orientacao sobre a atualizacao do software do token A3 Pronova
"O seu token é o ePass2000_FT12. E ele usa o Middleware ePassNG Multi-platform para Microsoft CSP e PKCS#11 v2.11. Pelo visto o pessoal da Pronova só te passou o ePass2000_FT12 Windows Redistributable Package v1.1. Baixe o ePass2000_FT12 Windows Middleware v1.18 usando esse link: http://www.mediafire...eware_V1.18.zip O site oficial tem que fazer login e é muito lento. Então já fiz o download e coloquei no mediafire. OBS.: A senha é rockey. " PARABENS ! Apos esta saga para descobrir o problema do token da Pronova, voce acertou em cheio. Atualizei o software do token da PRONOVA e esta assinando corretamente. Ja consegui mandar 1 nota pra prefeitura que foi aceita pelo webservice. Gostaria de ressaltar minha INDIGNACAO para com a empresa MAXDATA, de onde compramos o token ha menos de 1 mes, vindo o software da PRONOVA,que controla o token , desatualizado, causando um ENORME transtorno, que era a mensagem "O Conjuntos de chaves nao existe" no momento da assinatura, atravez da chamada do metodo CreateKeyFromCSP. Acho que voce ficara mais aliviado sabendo que este token A3 funciona para assinatura da NFS PBH. Mais uma vez minha gratidão por seu empenho em resolver este problema. Muito obrigado !!! |
Hehehe,
Esses tokens só dão trabalho... O problema é que o pessoal não aprende. Eles só querem vender, depois o usuário que se vire. O pior é que nem eles sabem. Como vão dar suporte? :confused: Esse é o objetivo dessa comunidade: Temos que juntar forças e conhecimento para evitar esses erros bobos. :D Att, Luiz Vaz |
Horários baseados na GMT -2. Agora são 21:29. |
vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.3.0