• A Confluence está sendo executada atualmente com todos os plugins que não são do sistema desabilitados. Pode haver perda de algumas funcionalidades

Árvore de páginas

Extrai um certificado armazenado num dispositivo HSM para um arquivo.

Sintaxe

HSMGetCertFile( < cHSMPath >, < cFile >, [ cPass ], [ lClient ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cHSMPath

caractere

Indica o caminho no dispositivo HSM para o certificado.

X


cFile

caractere

Indica o caminho de destino do certificado, incluindo o nome do arquivo.

X


cPass

caractere

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



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 o certificado do HSM; caso contrário, retorna .F..

Observações

  • O formato aceito no caminho do parâmetro cHSMPath é "slot_<num>-id_<idhex>" ou "slot_<num>-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 (igual ao índice 4 do valor retornado pela função HSMObjList), 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 lClient está disponível a partir da build 7.00.131227A com data de geração superior a 11/03/2016.
  • 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 := ""
  
  // define o password utilizado para acessar o HSM
  cPass := "1234"
  
  // inicializa o HSM
  if HSMInitialize() <= 0
    conout( "HSM not initialized" )
    return
  endif
  
  // pega a lista de slots do HSM
  aSlots := HSMSlotList()
  nSlots := Len( aSlots )
  
  // para cada um dos slots
  for nI := 1 to nSlots
    // verifica se o slot está inicializado
    if aSlots[nI][4] == .T.
      ASize( aObjs, 0 )
      
      // pega a lista de objetos do slot
      aObjs := HSMObjList( aSlots[nI][1], cPass )
      nObjs := Len( aObjs )
      
      // para cada objeto do slot
      for nJ := 1 to nObjs
        // verifica se é o objeto não é chave privada
        // o certificado e a chave pública ficam juntos
        if aObjs[nJ][2] == .F.
          // monta o caminho do objeto no HSM
          cPath := "slot_" + cValToChar( aSlots[nI][1] ) + "-label_" + aObjs[nJ][1]
          
          // monta o caminho de destino
          cDest := "\cert-slot_" + cValToChar( aSlots[nI][1] ) + "-obj_" + cValToChar( nJ ) + ".pem"
          
          // pega o certificado no HSM
          if HSMGetCert( cPath, cDest, cPass ) == .F.
            conout( "Could not get certicate on " + cPath )
          endif
        endif
      next nJ
    endif
  next nI
  
  if HSMFinalize() <> 1
    conout( "HSM not finalized" )
  endif
return

Veja também

  • Sem rótulos