Jump to content

click.png

click.png

click.png

click.png click.png click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

carloscaloca

Membros
  • Posts

    11
  • Joined

  • Last visited

carloscaloca's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Collaborator Rare
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

3

Reputation

  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. 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.
  4. 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.
  5. 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
  6. 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.
  7. sim estão atualizados na mesma maquina. Só que no delphi não dá nada.
  8. 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 ) );
  9. 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
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.