Clipper On Line • Ver Tópico - Seleciona um Certificado Digital com xHarbour

Seleciona um Certificado Digital com xHarbour

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Seleciona um Certificado Digital com xHarbour

Mensagempor sygecom » 13 Mai 2010 11:47

Exemplo de uso.:

FUNCTION MAIN()
Local aVetor := {}
aVetor:=PEGA_CERTIFICADO()
IF LEN(aVetor) > 0
   ALERT("Numero de Serie do certificado.:" + aVetor[1,1] + " - Vencimento.: " + DTOC(aVetor[1,2]))
ENDIF
RETURN


Codigo.:
********************************
STATIC FUNCTION PEGA_CERTIFICADO
*Retorna um Vetor com o numero de serie na primeira possição
*e o vencimento do certificado na segunda possição
*Leonardo Machado - 03/05/2010
********************************
Local oCerts1, oCerts2, oCerts3, oStore, oCertificates, aVETOR:={}

TRY
   oCertificates := GetActiveObject( "CAPICOM.Certificates" )
CATCH
   TRY
      oCertificates := CreateObject( "CAPICOM.Certificates" )
   CATCH
      alert("A Dll (capicom.dll) Não está registrada, Favor executar o arquivo INSTALL.BAT")
      //myrun("install.bat")
      Return(aVETOR)
   END
END
TRY
   oStore = GetActiveObject("CAPICOM.Store")
CATCH
   TRY
      oStore := CreateObject( "CAPICOM.Store")
   CATCH
      alert("A Dll (capicom.dll) Não está registrada, Favor executar o arquivo INSTALL.BAT")
      //myrun("install.bat")
      Return(aVETOR)
   END
END

TRY
  oStore:open(2,'My',2)
  oCerts1:=oStore:Certificates()
  oCerts2:=oCerts1:Select("Selecione o certificado para uso da Nfe","Selecione o certificado",.F.)
  IF oCerts2:Count() > 0
     oCerts3 := oCerts2:Item(1)
     AADD(aVETOR,{oCerts3:SerialNumber,oCerts3:ValidToDate})
  ENDIF
CATCH
   Return(aVETOR)
END
Return(aVETOR)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6987
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 127 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor carlos_dornelas » 13 Mai 2010 21:25

Leonardo, esse TRY e CATCH, para que servem mesmo? É mais ou menos como o IF e ELSE?

Desculpe a pergunta básica...

Antonio Carlos
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor sygecom » 14 Mai 2010 09:26

Olá Carlos,
O TRY e CATCH faz o mesmo trabalho do BEGIN SEQUENCE do antigo CLIPPER, com ele podemos interceptar erros em tempo de execução, veja abaixo o que o TRY e CATCH no Harbour faz:

   /* TRY / CATCH / FINALLY / END */
   #xcommand TRY  => BEGIN SEQUENCE WITH {|oErr| Break( oErr )}
   #xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
   #xcommand FINALLY => ALWAYS
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6987
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 127 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor carlos_dornelas » 14 Mai 2010 18:31

Aprendi mais uma... Grato!
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor rochinha » 16 Mai 2010 23:38

Amiguinho,

SygeCOM,

Seria possivel voce apresentar um exemplo básico de uso de sua função e quais valores são retornados por ele?

Obrigado.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4532
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 796 vezes
Mens.Curtidas: 242 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor sygecom » 18 Mai 2010 12:00

Vou providenciar um exemplo, e ela retorna um VETOR com o numero de série do certificado digital e a data de validade, mas da para pegar mais informações como o CNPJ, Razão social e etc...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6987
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 127 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor sygecom » 19 Jun 2010 17:23

Rochinha, desculpa a demora, está no primeiro post o exemplo e o que retorna.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6987
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 127 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor rochinha » 20 Jun 2010 17:44

Amiguinho,

Valeu agora eu posso configurar automaticamente o Monitor de forma transparente.

Mas deixo aqui um adicional para melhorar o registro da CAPICOM.DLL

Basta adicionar este trecho ao final do .PRG:
#pragma BEGINDUMP
        #include <hbapi.h>
        #include <windows.h>
        typedef LONG ( * PDLLREGISTERSERVER ) ( void );
        HB_FUNC( REGISTERSERVER )
        {
           HMODULE hDll = LoadLibrary( hb_parc( 1 ) );
           LONG lReturn = 0;
           if( hDll )
           {
              FARPROC pRegisterServer = GetProcAddress( hDll, "DllRegisterServer" );
              if( pRegisterServer )
                 lReturn = ( ( PDLLREGISTERSERVER ) pRegisterServer )();
              FreeLibrary( hDll );
           }
           hb_retnl( lReturn );
        }       
#pragma ENDDUMP


E alterar os trechos abaixo do CATCH como mostrado:
...
   CATCH
      // Ajuda a instalar automaticamente a capicom.dll
      iif( file( "CAPICOM.DLL" ), RegisterServer( "CAPICOM.DLL" ), MsgStop( "Nao foi instalado CAPICOM.DLL" ) )
      //myrun("install.bat")
...
   CATCH
      // Ajuda a instalar automaticamente a capicom.dll
      iif( file( "CAPICOM.DLL" ), RegisterServer( "CAPICOM.DLL" ), MsgStop( "Nao foi instalado CAPICOM.DLL" ) )
      //myrun("install.bat")
      Return(aVETOR)
   END
END


Acho que ai fica redondo!
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4532
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 796 vezes
Mens.Curtidas: 242 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor sygecom » 20 Jun 2010 18:25

Olá Rochina,
Eu até estava usando esse modo automático de registrar as DLL o problema se da em Windows 7 que precisa ter permissão para registrar isso, nesse caso não consegui deixar pelo meu sistema, será que existe algum modo de contornar isso sem ter que pedir para o usuário desabilitar a tal segurança do Windows 7 ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6987
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 127 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor rochinha » 28 Jun 2010 16:42

Amiguinho,

Para transpor a segurança e atributos de arquivos e pastas no Windows 2003 Server eu uso o CACLS:

cacls <alvo> /G <usuario>:F

Exemplo:

cacls arquivo.exe /G Administrador:F

Uma vez executado o comando é necessário executar o arquivo.exe e verificar se ele consegue burlar as seguranças.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4532
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 796 vezes
Mens.Curtidas: 242 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor rochinha » 29 Jun 2010 19:06

Amiguinho,

Tente o seguinte:
...
   CATCH
      // Ajuda a instalar automaticamente a capicom.dll
      UAC( 0 )
      iif( file( "CAPICOM.DLL" ), RegisterServer( "CAPICOM.DLL" ), MsgStop( "Nao foi instalado CAPICOM.DLL" ) )
      UAC( 1 )
      //myrun("install.bat")
...
   CATCH
      // Ajuda a instalar automaticamente a capicom.dll
      UAC( 0 )
      iif( file( "CAPICOM.DLL" ), RegisterServer( "CAPICOM.DLL" ), MsgStop( "Nao foi instalado CAPICOM.DLL" ) )
      UAC( 1 )
      //myrun("install.bat")
      Return(aVETOR)
   END
END

FUNCTION UAC(nAtivar)
   *****************************************************
   * Grava o registro do aplicativo
   *****************************************************
   LOCAL cRunName, cRunKey, cRegKey
   // EnableLUA
   // 0-Desativar
   // 1-Ativar
   cRegValue:= nAtivar
   cRegKey  := "Software\Microsoft\Windows\CurrentVersion\Policies\System"
   cRegRoot := HKEY_LOCAL_MACHINE
   SETREGVAR( cRegRoot, cRegKey, "EnableLUA", cRegValue )
   RETURN 0

FUNCTION SETREGVAR(nKey, cRegKey, cSubKey, uValue)
   LOCAL oReg, cValue
   nKey := IF(nKey == NIL, HKEY_CURRENT_USER, nKey)
   uValue := IF(uValue == NIL, "", uValue)
   oReg := TReg32():Create(nKey, cRegKey)
   cValue := oReg:Set(cSubKey, uValue)
   oReg:Close()
   RETURN cValue
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4532
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 796 vezes
Mens.Curtidas: 242 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor sygecom » 01 Jul 2010 20:49

Grande, estou viajando no momento, mas quando eu chegar em casa vou testar. Mais uma vez muito obrigado por compartilhar com nós sua valioso experiência.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6987
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 127 vezes

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor nilton579 » 19 Abr 2011 15:59

Alguém já conseguiu construir uma rotina para assinar um documento com base em um certificado digital? Se tiver, dá uma forcinha aí postando o código...
Clenilton Alencar
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Avatar de usuário

nilton579
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 31
Data de registro: 05 Fev 2008 19:23
Cidade/Estado: MANAUS
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Re: Seleciona um Certificado Digital com xHarbour

Mensagempor sygecom » 19 Abr 2011 22:24

Olá Clenilton,
Abra um novo tópico para sua duvida.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6987
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 127 vezes

Seleciona um Certificado Digital com xHarbour

Mensagempor Ladinilson Sousa » 23 Jul 2017 13:05

SYGECOM tem como pegar o nome da empresa e o cnpj nos vetores como o senhor pegou o número de serie e data de vencimento?

Obrigado
Ladinilson Sousa
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 35
Data de registro: 09 Fev 2015 10:41
Cidade/Estado: Belém/PA
Curtiu: 1 vez
Mens.Curtidas: 0 vez




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Bing [Bot], Google [Bot] e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro