Mudanças entre as edições de "AssDig32.dll"
De UniWiki
(Criou página com 'Categoria:Assinatura Digital Categoria:Unilab Categoria:Desenvolvimento <div style="width: 700px; font-family:'Trebuchet MS', Arial, Helvetica, sans-serif;font-size: ...') |
|||
Linha 4: | Linha 4: | ||
<div style="width: 700px; font-family:'Trebuchet MS', Arial, Helvetica, sans-serif;font-size: 10pt;"> | <div style="width: 700px; font-family:'Trebuchet MS', Arial, Helvetica, sans-serif;font-size: 10pt;"> | ||
AssDig32.dll é a biblioteca para assinatura digital de documentos PDF do Unilab para o SO Windows. | AssDig32.dll é a biblioteca para assinatura digital de documentos PDF do Unilab para o SO Windows. | ||
+ | |||
+ | A biblioteca AssDig32.dll e o arquivo AssDig32.tlb devem ser colocados na mesma pasta, e então registrado no windows com o programa RegAsm.exe localizado na pasta de instalação do .NET | ||
+ | Requer .NET 3.5 ou superior. | ||
<span style="color:blue;">'''Interface (Metodos)'''</span> | <span style="color:blue;">'''Interface (Metodos)'''</span> |
Edição atual tal como às 18h19min de 1 de junho de 2016
AssDig32.dll é a biblioteca para assinatura digital de documentos PDF do Unilab para o SO Windows.
A biblioteca AssDig32.dll e o arquivo AssDig32.tlb devem ser colocados na mesma pasta, e então registrado no windows com o programa RegAsm.exe localizado na pasta de instalação do .NET Requer .NET 3.5 ou superior.
Interface (Metodos)
Item | Descrição |
Classe: | IAssinaDig |
Construtor: | CoAssinaDig.create |
Unit | AssDig32_TLB |
Um log de atividade e erro da biblioteca pode ser ativado diretamente no registro do windows na
chave: HKEY_CURRENT_USER\SoftwarezUniware\AssDig32Dll
Setar conforma a tabela abaixo
Interface (Metodos)
CAMPO | TIPO | DESCRIÇÃO |
ActiveDebug | DWORD | Ativa (1) ou desativa (0) o log detalhado para depuração. |
ActiveLog | DWORD | Ativa (1) ou desativa (0) o log da biblioteca |
LogFileName | TEXTO | Nome (incluindo o path) do arquivo de log |
Exemplo Delphi (assina PDF)
var Ma : IAssinaDig; // Modulo para assinar documentos PDF da uniware r,i,repete : Integer; IdxAss : Integer; // indice da assinatura da vez CertConv : TComConvert; // Conversor de dados COM begin Ma := CoAssinaDig.create; Log(Ma.getAuthor()); Log('Preparando metadados...'); // Meta Dados da assinatura Ma.setAuthor( Edit1.Text ); Ma.setTitle( Edit2.Text ); Ma.setSubject( Edit3.Text ); Ma.setKeywords( Edit4.Text ); Ma.setCreator( Edit5.Text ); Ma.setProducer( Edit10.Text ); Log(' Metadados Ok.'); Log('Setando documentos...'); Ma.setDeletePdfOrig( CheckBox3.Checked ); Ma.setInputPdf( Edit9.Text ); if (not CheckBox3.Checked ) then begin // somente se a origem não for descartada Ma.setOuputPdf( Edit15.Text ); end; Log(' Documentos Ok.'); // Este loop é só para repetir a mesma assinatura para fins de teste repete := 0; repeat // Adiciona um novo registro de assinatura // Bara cada assinatura repetir este bloco // BLOCO ASSINATURA >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> IdxAss := Ma.addAssinante; // Assinatura Visivel ? Ma.setVisibleSig(IdxAss, CheckBox2.Checked ); // Assinatura customizada ? Log('Verificando customozação...'); Ma.setSignatureCustom(IdxAss, CheckBox1.Checked ); if (CheckBox1.Checked) then begin Ma.setReason(IdxAss, Edit6.Text ); Ma.setContact(IdxAss, Edit7.Text ); Ma.setLocation(IdxAss, Edit8.Text ); Log(' Customozação Ok.'); end else begin Log(' Não customizar.'); end; { Posição do carimbo na pagina Obs: CdSafeStrToDouble converte a string para um Double OLE. para passar um valor apartir de uma variavel numerica ou hardcode, use o tipo Currency convertido com CurrToDoubleOLE( value ) } Log('Setando posição do carimbo...'); Ma.setTop(IdxAss, CdSafeStrToDouble(Edit11.text, 100.0 ) ); Ma.setLeft(IdxAss, CdSafeStrToDouble(Edit12.text, 10.0 ) ); Ma.setHeight(IdxAss, CdSafeStrToDouble(Edit13.text, 70.8 ) ); Ma.setWidth(IdxAss, CdSafeStrToDouble(Edit14.text, 170.5 ) ); Log(' Carimbo Ok.'); //Carrega Certificado e senha Try Log('Setando Certificado e senha...'); // Carregar o arquivo pfx neste cara CertConv := TComConvert.Create(Edit16.Text); try // Adiciona o certificado e a senha if (Ma.setBinCert(IdxAss, CertConv.COMArray, Edit17.Text ) <> 0) then begin // Loga erro se houver Log(Ma.getLastError); end; finally CertConv.Free; end; Except on E: Exception do begin Log(E.Message); end; end; // FIM BLOCO ASSINATURA <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< inc(repete); until (repete >= 5); // incluir a mesma assinatura 2 vezes // finalmente assina o documento Log('Assinando...'); r := Ma.assinarPDF; if (r = 0) then begin Memo1.Lines.Add('Documento assinado com sucesso: ' + Ma.getOuputPdf ); end else begin Memo1.Lines.Add('Falha ao assinar o PDF, ero: '+ IntToStr(r)); Memo1.Lines.Add(' ' + Ma.getLastError ); end; // Baixa o log completo (DEPURANDO) R := Ma.logCount; if (R > 0) then begin Log('=================LOG COMPLETO============='); for i := 0 to r-1 do begin Log( Ma.getLogLine(I) ); end; end; // Por se tratar de uma interface, não usa Ma.Free end;
Exemplo Delphi (Valida Certificado)
var Ma : IAssinaDig; // Modulo para assinar documentos PDF da uniware S : String; begin Ma := CoAssinaDig.create; S := Ma.validateCrtd(Edit16.Text, Edit17.Text); { Ma.validateCrtd() retorna os dados so certificados ou erro. Retorno tipo erro: A string de retorno inicia com a plavra "Erro" seguido do número do erro e a descrição, mensagens possiveis: Erro 2:Arquivo de certificado nao encontrado "+fileName+"." Erro 10:Certificado ou chave privada invalido. except: '" + Detalhes do erro Retorno de Dados (Certificado Ok, traz as informações do certficado) A string será composta de várias linhas (sep. CR+LF), sendo que cada linha contem os dados de um dos certificados do pacote (arquivo pfx) no seguinte formato: "NotBefore=17/08/2015 21:00:00|NotAfter=16/08/2016 20:59:59| SerialNumber=1BDA4A259BCB59996D534FA300DCA164|FriendlyName=| Issuer=CN=AC Certisign RFB G4, OU=Secretaria da Receita Federal do Brasil - RFB, O=ICP-Brasil, C=BR| Nome=João da Silva|Cpf=652.387.109-23" Cada campo=valor na linha é separado por pipe (|) - sugestão: use CutStr para alimentar um TStringList para ter acesso aos campos pelo values[]. A linha que corresponde ao certificado do usuário é a ultima linha, as anteriores contem dos dados dos certificados das certificadoras (deve possuir a cadeia completa) } Log(S); end;