Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

Extrai uma chave pública armazenada num dispositivo HSM para um arquivo.

Sintaxe

HSMGetKeyFile( < cHSMPath >, < cFile >, [ cPass ], [ lChangeCase ], [ lClient ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cHSMPath

caractere

Indica o caminho no dispositivo HSM para o certificado de cliente.

X

 

cFile

caractere

Indica o caminho de destino da chave pública, incluindo o nome do arquivo.

X

 

cPass

caractere

Indica a senha do slot onde está armazenado o certificado apontado por cHSMPath.

 

 

lChangeCase

lógico

Se verdadeiro (.T.), nomes de arquivos e pastas serão convertidos para letras minúsculas; caso contrário, falso (.F.), não será feito nenhum ajuste no nome do arquivo informado. Valor padrão (.T.). Veja maiores informações em Observações.

 

 

lClient

lógico

Indica se o dispositivo HSM está na máquina do SmartClient.

 

 

Retorno

Nome

Tipo

Descrição

lRet

lógico

Retorna .T. caso consiga extrair a chave pública do HSM; caso contrário, retorna .F..

Observações

  • O formato aceito no caminho do parâmetro cHSMPath é "slot_<num>-id_<idhex>" ou "slot_<nem>-label_<label>", onde <num> é o número do slot, igual ao índice 1 do valor retornado pela função HSMSlotList, <idhex> é o id do objeto em hexadecimal, sendo cada 2 caracteres a representação hexadecimal de um caractere da tabela ASCII, e <label> é igual ao índice 1 do valor retornado pela função HSMObjList.
  • Caso o HSM esteja no AppServer, o caminho apontado por cFile deve ser no AppServer; caso esteja no SmartClient, o caminho deve ser no SmartClient.
  • O parâmetro opcional lChangeCase foi introduzido pois em sistemas LINUX/UNIX existe a diferenciação entre maiúsculo e minúsculo em nomes de arquivos ou pastas. Quando este parâmetro for informado, terá prioridade sobre comportamento de Case Sensitive definido pelas chaves de ini CASESENSITIVE ou SERVERTYPE. Porém, quando não especificado o parâmetro, o valor padrão (.T.) fica condicionado ao que está configurado nessas chaves.
  • Em ambiente Windows, os nomes de arquivos e pastas não possuem diferenciação entre maiúsculo e minúsculo, logo, a função conseguirá tratar os arquivos e pastas independente do valor definido no parâmetro lChangeCase.
  • Quando o SmartClient utilizado for uma build nativa Linux ou Mac, sabe-se que sistema de arquivos destas plataformas não têm unidade de disco, a nomenclatura dos arquivos é case sensitive (letras minúsculas diferente de maiúsculas), e as barras separadoras de diretório / pasta são barras normais "/" ao invés de barras inversas "\". Mesmo nestes casos, deve-se especificar uma letra de unidade de disco no diretório de destino; pois quando o SmartClient em Linux e/ou Mac receber o diretório de destino, com a unidade de disco especificada, a unidade de disco será ignorada e as barras serão internamente invertidas. Por exemplo, a cópia especificando o path de destino "C:\USER\LOCAL\TEMP\" será interpretado pelo SmartClient Linux e/ou Mac como "/user/local/temp/".
  • O valor padrão de lClient é .F..

Exemplos

user function teste()
  Local aSlots := {}
  Local aObjs := {}
  Local nI := 0
  Local nJ := 0
  Local nSlots := 0
  Local nObjs := 0
  Local cPath := ""
  Local cDest := ""
  Local cPass := ""
  
  cPass := "1234"
  
  if HSMInitialize() <= 0
    conout( "HSM not initialized" )
    return
  endif
 
  aSlots := HSMSlotList()
  nSlots := Len( aSlots )
  
  for nI := 1 to nSlots
    if aSlots[nI][4] == .T.
      ASize( aObjs, 0 )
      
      aObjs := HSMObjList( aSlots[nI][1], cPass )
      nObjs := Len( aObjs )
      
      for nJ := 1 to nObjs
        if aObjs[nJ][2] == .F.
          cPath := "slot_" + cValToChar( aSlots[nI][1] ) + "-label_" + aObjs[nJ][1]
          cDest := "\cert-slot_" + cValToChar( aSlots[nI][1] ) + "-obj_" + cValToChar( nJ ) + ".pem"
          
          if HSMGetKeyFile( cPath, cDest, cPass ) == .F.
            conout( "Could not get public key for certificate on " + cPath )
          endif
        endif
      next nJ
    endif
  next nI
return

Abrangência

A função está disponível a partir da build 7.00.131227A com data de geração superior a 05/07/2017.

Veja também

  • Sem rótulos