Ir para conteúdo
  • Cadastre-se

carloscaloca

Membros
  • Total de ítens

    11
  • Registro em

  • Última visita

Tudo que carloscaloca postou

  1. Eu q tenho que agradecer ao vocês pelo execente trabalho que desenvolvem. Vou testar.
  2. Bom dia, descobri que quando o lazarus inicia o array mHashBuffer deveria ser preenchido #0, fiz uma pequena alteração e, pra mim, funcionou bem. function TDFeWinCrypt.CalcHash(const AStream: TStream; const Digest: TSSLDgst; const Assina: Boolean): AnsiString; var mCryptProvider, mCryptProviderCert: HCRYPTPROV; mHash, aHashType: HCRYPTHASH; hRSAKey, hSessKey, hExpKey: HCRYPTKEY; I: Integer; mTotal: Int64; mBytesLen, mRead, dwKeySpec, WinErro: DWORD; Memory: Pointer; mHashBuffer: array [0..1023] of AnsiChar; // 1024 - Tamanho máximo do maior Hash atual pfCallerFreeProv: LongBool; begin Result := ''; FillChar(mHashBuffer,1024,0); // alteração case Digest of dgstMD2 : aHashType := CALG_MD2; Talvez seja necessário colocar algum diretriz para funcionar melhor.
  3. ok, vou ver como lhe enviar.
  4. sim, verifiquei isso, porem, quando ele vai para a rotina mais abaixo, o valor mBytesLen está errado no lazarus, ele deveria ser 256 mas está com 1024. amanhã farei outro teste e informo.
  5. Depurei ao mesmo tempo com o delphi e o lazarus, a variavel é passada com 1024bytes, quando volta, no delphi ela tem Length(mHashBuffer) = 256bytes, testei varias vezes e no lazarus 1024. No delphi apartir da posição 256 vem cheio de #0 e no lazarus ficam outros bytes. A função que busca a chave é a mesma, mas talves quando o Lazarus aponte pra o endereço da variavel coloque sujeira, como é feita a reversão, o lazarus não pega o valor correto da chave, eu acho.
  6. fiz a alteração mas gerou um erro, não achou o numero do certificado. Fiz outra depuração e achei um erro no seguinte código: ACBrDFeWinCrypt 1229 mBytesLen := Length(mHashBuffer); // aqui, no delphi o mHashBuffer tem tamanho de 256 e no Lazarus 1024 if Assina then begin if CryptSignHash(mHash, dwKeySpec, Nil, 0, @mHashBuffer, mBytesLen ) then begin // MS CryptoAPI retorna assinatura em "Little Endian bit string", invertendo... Result := ''; while (mBytesLen > 256) and (mHashBuffer[mBytesLen-1] = #0) do Dec(mBytesLen); for I := mBytesLen downto 1 do Result := Result + mHashBuffer[I-1]; end
  7. O que fiz: Rodei o ACBrNFe_Exemplo no delphi e lazarus fui depurando, passo a passo. Até a linha 862, como relatado, estava tudo igual. Apartir daí gerou o erro dos AAAAA.
  8. sim estão atualizados na mesma maquina. Só que no delphi não dá nada.
  9. Sim, consegue consultar status. Parece algum problema na chave: o primeiro em delphi e o outro em lazarus. 43200814620101000170650010000000151740249251-nfe.xml 43200814620101000170650010000000151040520823-nfe.xml Eu achei o seguinte código em ACBrDFeWinCrypt linha 861: {$IfDef DELPHI2009_UP} StoreProvider := CERT_STORE_PROV_SYSTEM_W; {$ELSE} StoreProvider := CERT_STORE_PROV_SYSTEM_A; {$ENDIF}; FpStore := CertOpenStore( StoreProvider, 0, 0, StoreFlag or CERT_STORE_READONLY_FLAG, LPCTSTR( FpDFeSSL.StoreName ) );
  10. Bom dia, estou testando o acbrnfe_exemplo com meu certificado RemoteId. Quando rodo no Delphi, gera as chaves certinho, mas quando rodo no Lazarus a chave fica diferente e o sefaz/rs retorna o erro 297. Podem me dar uma ajuda?? Obrigado
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...