Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

cjulio

Utilizar Webservices da AT

Mensagens Recomendadas

CrominhO    271
CrominhO

Nuno, Chilkat e CryptoSys. 

Obrigado @karlynhuz e @antseq, 

@karlynhuz eles disponibilizaram código exemplo na Chilkat? há uns anos atrás falei com eles e nem sabiam o que se pretendia... era porreiro se eles na altura tivessem disponibilizado código. 

@antseq eu por acaso faço o mesmo que tu numa das Aplicações pq a tenho em D2007 e um modulo de encriptação em XE5 e faltou-me paciencia para mudar de Unicode, mas o que faz confusão é dizeres que o Delphi nunca foi grande coisa nessa área :D ... Espero então que o Delphi um dia chegue aos pés do VB a nivel de encriptaçao e WS :D 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
antseq    22
antseq
1 hora atrás, CrominhO disse:

@antseq eu por acaso faço o mesmo que tu numa das Aplicações pq a tenho em D2007 e um modulo de encriptação em XE5 e faltou-me paciencia para mudar de Unicode, mas o que faz confusão é dizeres que o Delphi nunca foi grande coisa nessa área :D ... Espero então que o Delphi um dia chegue aos pés do VB a nivel de encriptaçao e WS :D 

 

Tanto nunca foi grande coisa nesta àrea que a pergunta que deu origem a este tema foi "Pessoal, alguém conseguiu alguma vez criar a comunicação dos DTs em Delphi sem recurso à CapiCOM? Se sim, estão a usar algum componente alternativo?"

Em 1995/96 abandonei os VBs por completo, pelo Delphi 1 (que ainda usei) e logo de seguida o Delphi 2, porque eram e sempre foram superiores aos VBs, era o mais parecido com o desenvolvimento em C\C++ que se podia ter num RAD da altura e continuei a utiliza-lo por mais 20 e tal anos e até hoje quando preciso fazer uma app em Windows. Faço qualquer coisa nativa, 32 ou 64 bits e até componentes novos 100x mais rápido em Delphi, quase de olhos fechados, do que se for tentar fazer o mesmo em VisuaStudio com .net's,

Lá por gostar de Delphi, não quer dizer que não possa ir ao lado ver como os outros fazem e a verdade é que sobre este "tema" encontro na net 1001 exemplos de como fazer em VS C# nativo, do que encontro 1 em Delphi e ainda por cima com recurso a componentes externos e/ou com custos adicionais e/ou alguns componentes "descontinuados" (entre aspas) que não há garantia de funcionarem no futuro e/ou outras soluções mais ou menos artesanais não nativas.

Infelizmente para nós o Anders Hejlsberg que "criou" o Delphi (Já era o pai do Turbo Pascal) mudou-se para o outro lado e lá criou o C#. Pelo menos, o lado bom da coisa é que agora quando utilizo o VisualStudio tenho algo muito melhor que VB, com classes e tudo mais que uma linguagem deve ter, e feito com pés e cabeça e não aquela loucura do VB a simular classes em basic. Na altura lembro-me de ver videos do Anders Hejlsberg em que até mudava de cor quando lhe falavam em VB.

O dia que o Delphi tiver de raiz, "componentes" (entre aspas) como Chilkat, CryptoSys, CapiCOM, OpenSSL e/ou como o C# tiver de raiz as mesmas funções de certificados, encriptação, etc prontas a usar : a mim daria muito mais jeito; já não seria preciso recorrer a outros "componentes" que estão sujeitos a um dia deixarem de funcionar; já não precisaria ir ao VisualStudio fazer um EXE (em C#) só para colmatar uma ou outra "falta" de recursos do Delphi.

Dos muitos anos que utilizei o Delphi, este foi o único tema\"àrea" em que "falhou" (entre aspas) e por segurança utilizei o VS C# para fazer um EXE ao lado, uma vez que enquanto existir o VS e enquanto o VS C# for capaz de fazer um EXE para correr no Windows e se manter actualizado com novos certificados e encriptações, tenho meu problema resolvido por muitos anos e mantendo o mesmo Delphi "velhinho" e funcional para aquilo que preciso e sei fazer melhor.

cps,

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
CrominhO    271
CrominhO

@antseq, a questão das LPs não é neste quadro, só fiz um apontamento que vou continuar à espera que o Delphi seja melhor que o VB em encriptação e Webservice :-)  ...  além disso muitos dos "componentes" que falas em cima ditos como "pagos", podes desenvolvê-los em Delphi, tal como o Indy. Em todo o caso se quiseres terei muito gosto em "discutir" construtivamente esta situação no Quadro das LPs, mas aqui não, e, acho que concordas comigo, que não seria uma resposta dessas que se esperava, não me parece correcto uma Aplicação toda desenvolvida Delphi ou C# e um bloco desenvolvido em VB, ainda que o VB esteja intimamente ligado à MS. :-) ... Deixa ver o que o pessoal responde, porque eu por exemplo prefiro 1000x utilizar o Chilkat, ou até mesmo o CryptoSys que já tenho a funcionar (não em tudo, pq nao consegui) do que fazer um "resource" noutra LP :-) 

 

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado

Eu também preferia ter isso em componentes free e/ou open source (claro :D).
De qualquer forma, não conheço as outras suficientemente bem para fazer comparações.

Agora, que me preocupa eu estar a usar a CapiCOM sabendo que a qualquer momento vai c'os pitos, isso preocupa.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
cyrusmoney    0
cyrusmoney

Não encontro informação. É possivel comunicar o ficheiro saf-t mensal por webservice ?
Sei que é possivel comunicar documentos de venda, e guias, no entanto não vejo nenhum url para fazer a comunicação. 
É possivel então comunicar o ficheiro xml completo ? 
Ou tenho que simular uma comunicação manualmente como se a pessoa fizesse login no portal ?
Se esta última opção for unica possivel que tecnologia aconselham para fazer isto? 
Selenium ou casperjs são opções validas , ou até php é possivel simular ?
Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado

A AT tem uma App de comunicação do SAF-T por linha de comandos que podes usar em background para fazer o envio sem ter de simular um user no portal. 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
cyrusmoney    0
cyrusmoney
11 minutos atrás, nunopicado disse:

A AT tem uma App de comunicação do SAF-T por linha de comandos que podes usar em background para fazer o envio sem ter de simular um user no portal. 

Obrigado pela resposta encontrei isto :
http://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Aplic_envio_SAF_T_PT_linha_comandos.htm
Calculo que seja esta app em java. Muito obrigado. 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
abrito    13
abrito

Desenvolvo em Delphi a muitos anos e nunca usei a CapiCOM nem uso, o Chilkat é mais uma coisa do genero "Não sabes fazer usa o Chilkat que eu simplifico" porque o Chilkat usa o openssl, então porque não usar openssl direto, e preciso é trabalhar para o por a funcionar no delphi. É o que uso, e não estou dependente de mais nada para gerar chaves, nem certificados. Acho que o pessoal esta é mal habituado, gosta de tudo pronto a usar e se possivel ja feito.

Isto e apenas uma observação, cada um usa como sabe, ou como da jeito, para resolver a situação que tem pela frente.

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
CrominhO    271
CrominhO
4 horas atrás, abrito disse:

Desenvolvo em Delphi a muitos anos e nunca usei a CapiCOM nem uso, o Chilkat é mais uma coisa do genero "Não sabes fazer usa o Chilkat que eu simplifico" porque o Chilkat usa o openssl, então porque não usar openssl direto, e preciso é trabalhar para o por a funcionar no delphi. É o que uso, e não estou dependente de mais nada para gerar chaves, nem certificados. Acho que o pessoal esta é mal habituado, gosta de tudo pronto a usar e se possivel ja feito.

Isto e apenas uma observação, cada um usa como sabe, ou como da jeito, para resolver a situação que tem pela frente.

 

Mas eu disse isso, 

Em 29/06/2017 às 01:34, CrominhO disse:

(...) além disso muitos dos "componentes" que falas em cima ditos como "pagos", podes desenvolvê-los em Delphi(..)

Agora penso que também não deves generalizar que quem usa o Chilkat é só para simplificar :-) ... Pode ser por outras questões, até mesmo por uma questão de Produto. O Chilkat mexi nele já à bastante tempo por isso não estou em condições de falar, mas o CryptoSys por exemplo é uma .DLL de 900Kb que não usa o OPENSSL e faz tudo o que preciso a nível de encriptação. Se podia fazer em Delphi? até podia, mas era necessário ter conhecimentos profundos de criptografia e demoraria Anos :-) ... e não tenho de andar a distribuir ou instalar o OpenSSL pelos clientes... 

Como dizes e bem no final to teu Post, cada caso é uma caso. Só fiz referencia a isso, porque sendo o Pascal mais "matematico" que o VB, dificilmente o VB se portaria melhor em encriptação, em relação ao C# já ando a mudar de opinião, mas ainda não desenvolvi nada de jeito para poder ter uma opinião mais bem formada. 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
abrito    13
abrito
2 horas atrás, CrominhO disse:

Mas eu disse isso, 

Agora penso que também não deves generalizar que quem usa o Chilkat é só para simplificar :-) ... Pode ser por outras questões, até mesmo por uma questão de Produto. O Chilkat mexi nele já à bastante tempo por isso não estou em condições de falar, mas o CryptoSys por exemplo é uma .DLL de 900Kb que não usa o OPENSSL e faz tudo o que preciso a nível de encriptação. Se podia fazer em Delphi? até podia, mas era necessário ter conhecimentos profundos de criptografia e demoraria Anos :-) ... e não tenho de andar a distribuir ou instalar o OpenSSL pelos clientes... 

Como dizes e bem no final to teu Post, cada caso é uma caso. Só fiz referencia a isso, porque sendo o Pascal mais "matematico" que o VB, dificilmente o VB se portaria melhor em encriptação, em relação ao C# já ando a mudar de opinião, mas ainda não desenvolvi nada de jeito para poder ter uma opinião mais bem formada. 

Eu falei mais ate para quem usa CapiCOM, porque e muito antiga nunca foi fiável, ja não é desenvolvida a anos e existem soluções para delphi e opensource. Por exemplo o openssl que na altura da primeira versão do saft toda a gente andava a bater com a cabeça na parede para fazer isso, eu coloquei aqui codigo para o fazer com o openssl e ainda assim foram usar o CapiCOM que ja na altura se viam a rasquinha para instalar nos windows mais recentes. Em relação ao CryptoSys nunca usei não comento a não ser que se isso e uma dll então openssl o que é?. é que tambem so precisas de uma dll pelo que falas parece que e preciso instalar um software com toneladas de coisas e não é.

Apenas precisas da libeay32.dll que tem 1,075 KB e para ser mais completo podes juntar a libssl32.dll com 233KB, não precisas de mais nada, e da para windows linux, android mac, raspberry, beaglebone etc.. etc.., e pelo que sei não esta em risco de deixar de funcionar, pelo contrario acho que isso nem se questiona. Mas também temos componentes nativos em delphi para fazer a mesma coisa sem precisar de dll nem wrappers nem nada, são pagos ok, mas estão lá ja feitos bem suportados alias umas das bibliotecas mais seguras que existe nesse campo o "secureblackbox".

Ainda para reforçar na altura do primeiro saft ainda ajudei a comunidade Lazarus free pascal, porque enviei para o Filipe da comunidade a biblioteca openssl.pas que completei com os procedimentos que faltavam para gerar as chaves e encriptar, para que quem usa lazarus pudesse fazer o trabalho mais fácil.

Mas estou contigo o VB jamais superará o delphi.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
CrominhO    271
CrominhO

@abrito não me viste não concordar contigo a não ser o "generalizar pela simplicidade de usar um componente externo", até porque, numa as aplicações tou a usar o OpenSSL lol :D 

Em relação à CryptoSys é porque tá mais clean, porque é só uma e não duas DLLs como o Open e porque quero meter tudo só com ela :D  ... Em relação ao teu código depois dou uma vista de olhos :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado
Em 29/06/2013 às 21:26, abrito disse:

para os mais preguiçosos aqui vai tudo reunido e prontinho a trabalhar.


http://rapidshare.com/files/3888848083/webService.7z
agora não digam que nao ajudo.rsrsrsrsr

 

Em 28/07/2017 às 18:41, abrito disse:

Eu falei mais ate para quem usa CapiCOM, porque e muito antiga nunca foi fiável, ja não é desenvolvida a anos e existem soluções para delphi e opensource. Por exemplo o openssl que na altura da primeira versão do saft toda a gente andava a bater com a cabeça na parede para fazer isso, eu coloquei aqui codigo para o fazer com o openssl e ainda assim foram usar o CapiCOM que ja na altura se viam a rasquinha para instalar nos windows mais recentes. Em relação ao CryptoSys nunca usei não comento a não ser que se isso e uma dll então openssl o que é?. é que tambem so precisas de uma dll pelo que falas parece que e preciso instalar um software com toneladas de coisas e não é.

Apenas precisas da libeay32.dll que tem 1,075 KB e para ser mais completo podes juntar a libssl32.dll com 233KB, não precisas de mais nada, e da para windows linux, android mac, raspberry, beaglebone etc.. etc.., e pelo que sei não esta em risco de deixar de funcionar, pelo contrario acho que isso nem se questiona. Mas também temos componentes nativos em delphi para fazer a mesma coisa sem precisar de dll nem wrappers nem nada, são pagos ok, mas estão lá ja feitos bem suportados alias umas das bibliotecas mais seguras que existe nesse campo o "secureblackbox".

Ainda para reforçar na altura do primeiro saft ainda ajudei a comunidade Lazarus free pascal, porque enviei para o Filipe da comunidade a biblioteca openssl.pas que completei com os procedimentos que faltavam para gerar as chaves e encriptar, para que quem usa lazarus pudesse fazer o trabalho mais fácil.

Mas estou contigo o VB jamais superará o delphi.

@abrito Olha só o que fui desenterrar... :D
Ainda tens esse ficheiro para partilhar? Queria seguir o teu conselho e livrar-me da CapiCOM, e ando a sentir-me preguiçoso (que é como quem diz, nem sei por onde começar)! :P 

Editado por nunopicado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
abrito    13
abrito
16 horas atrás, nunopicado disse:

 

@abrito Olha só o que fui desenterrar... :D
Ainda tens esse ficheiro para partilhar? Queria seguir o teu conselho e livrar-me da CapiCOM, e ando a sentir-me preguiçoso (que é como quem diz, nem sei por onde começar)! :P 

Vou procurar, deve estar no arquivo morto. :cheesygrin::cheesygrin:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado
3 horas atrás, abrito disse:

Vou procurar, deve estar no arquivo morto. :cheesygrin::cheesygrin:

Ressuscita-o, seria divinal... (pun intended :D )

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
CrominhO    271
CrominhO
Em 31/07/2017 às 15:38, abrito disse:

Vou procurar, deve estar no arquivo morto. :cheesygrin::cheesygrin:

@abrito agora também fiquei curioso :), num dos que estou a usar o OpenSSL tou a ler o certificado com a Capicom para nao ter de instalar o mesmo, não te recordas como lês o certificado? ou estás a instalar ? :) é que é essa a unica linha que o pessoal usa com a Capicom, pelo menos eu nessa aplicação. :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Cu5co    9
Cu5co

Alguém me pode facultar o último ficheiro TestesWebServices.pfx ?

O que tenho expirou e preciso saber porque é que de repente estou a obter um erro a enviar guias "data must not be empty" vá-se lá saber onde e porquê.

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado
37 minutos atrás, Cu5co disse:

Alguém me pode facultar o último ficheiro TestesWebServices.pfx ?

O que tenho expirou e preciso saber porque é que de repente estou a obter um erro a enviar guias "data must not be empty" vá-se lá saber onde e porquê.

Obrigado

Olha, o homem que me ensinou a comunicar por webservice... tá tudo? :)
Aqui tens: https://www.dropbox.com/s/u9dt5t9jv93igtr/TesteWebService.pfx?dl=0

Mas acaba já no próximo dia 20 (entretanto deve sair outro).

Do erro não estou a ver. Tens as datas todas preenchidas?

Editado por nunopicado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Cu5co    9
Cu5co
19 minutos atrás, nunopicado disse:

Olha, o homem que me ensinou a comunicar por webservice... tá tudp? :)
Aqui tens: https://www.dropbox.com/s/u9dt5t9jv93igtr/TesteWebService.pfx?dl=0

Mas acaba já no próximo dia 20 (entretanto deve sair outro).

Do erro não estou a ver. Tens as datas todas preenchidas?

Por aqui está tudo, sempre na luta. Sim, tenho tudo preenchido. Penso que já encontrei o problema, ou por outra, o problema está numa versão que um cliente meu tem há anos e que resolveu acordar agora ;). De qualquer das formas o certificado dá sempre jeito.

Obrigado amigo

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado
1 minuto atrás, Cu5co disse:

Por aqui está tudo, sempre na luta. Sim, tenho tudo preenchido. Penso que já encontrei o problema, ou por outra, o problema está numa versão que um cliente meu tem há anos e que resolveu acordar agora ;). De qualquer das formas o certificado dá sempre jeito.

Obrigado amigo

Clientes... sempre a mesma coisa! :P
 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
abrito    13
abrito
Em 02/08/2017 às 23:30, CrominhO disse:

@abrito agora também fiquei curioso :), num dos que estou a usar o OpenSSL tou a ler o certificado com a Capicom para nao ter de instalar o mesmo, não te recordas como lês o certificado? ou estás a instalar ? :) é que é essa a unica linha que o pessoal usa com a Capicom, pelo menos eu nessa aplicação. :)

Sim é com openssl, nao uso "capicome" :) uso a função d2i_PKCS12_bio e depois a PKCS12_parse e ele vai buscar tudo. certificados chave privada o que la estiver dentro do pfx.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado
14 horas atrás, abrito disse:

Sim é com openssl, nao uso "capicome" :) uso a função d2i_PKCS12_bio e depois a PKCS12_parse e ele vai buscar tudo. certificados chave privada o que la estiver dentro do pfx.

Não há um exemplozinho pros amigos! :P:P:P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
abrito    13
abrito
8 horas atrás, nunopicado disse:

Não há um exemplozinho pros amigos! :P:P:P

function TSSLOpenSSL.LoadPFX(pfxdata: Ansistring): Boolean;
var
  cert, pkey, ca: SslPtr;
  b: PBIO;
  p12: SslPtr;
begin
  Result := False;
  b := BioNew(BioSMem);
  try
    BioWrite(b, pfxdata, Length(PfxData));
    p12 := d2iPKCS12bio(b, nil);
    if not Assigned(p12) then
      Exit;
    try
      cert := nil;
      pkey := nil;
      ca := nil;
      try {pf}
        if PKCS12parse(p12, FKeyPassword, pkey, cert, ca) > 0 then
          if SSLCTXusecertificate(Fctx, cert) > 0 then
            if SSLCTXusePrivateKey(Fctx, pkey) > 0 then
              Result := True;
      {pf}
      finally
        EvpPkeyFree(pkey);
        X509free(cert);
        SkX509PopFree(ca,_X509Free); // for ca=nil a new STACK was allocated...
      end;
      {/pf}
    finally
      PKCS12free(p12);
    end;
  finally
    BioFreeAll(b);
  end;
end;

Esta função esta na unit "ssl_openssl.pas" da biblioteca synapse que podem fazer o download gratuito.

Espero que ajude.

 

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bordonhos    0
bordonhos

Bom dia, 

Alguém com problemas desde esta manhã com Erro 10: Validade da credencial expirada(2017-08-16T08:09:49Z) ?

Cumprimentos, 

PB

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1060
nunopicado
Em 11/08/2017 às 19:28, abrito disse:

function TSSLOpenSSL.LoadPFX(pfxdata: Ansistring): Boolean;
var
  cert, pkey, ca: SslPtr;
  b: PBIO;
  p12: SslPtr;
begin
  Result := False;
  b := BioNew(BioSMem);
  try
    BioWrite(b, pfxdata, Length(PfxData));
    p12 := d2iPKCS12bio(b, nil);
    if not Assigned(p12) then
      Exit;
    try
      cert := nil;
      pkey := nil;
      ca := nil;
      try {pf}
        if PKCS12parse(p12, FKeyPassword, pkey, cert, ca) > 0 then
          if SSLCTXusecertificate(Fctx, cert) > 0 then
            if SSLCTXusePrivateKey(Fctx, pkey) > 0 then
              Result := True;
      {pf}
      finally
        EvpPkeyFree(pkey);
        X509free(cert);
        SkX509PopFree(ca,_X509Free); // for ca=nil a new STACK was allocated...
      end;
      {/pf}
    finally
      PKCS12free(p12);
    end;
  finally
    BioFreeAll(b);
  end;
end;

Esta função esta na unit "ssl_openssl.pas" da biblioteca synapse que podem fazer o download gratuito.

Espero que ajude.

 

Obrigado @abrito, já consigo carregar o ficheiro.
O que não consegui foi adicioná-lo no OnBeforePost do TReqResp. Como é que ligaste uma coisa à outra?
Obrigado! ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade