• 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

Assina usando algoritmo digest um determinado conteúdo usando uma chave privada armazenada em dispositivo HSM.

Sintaxe

HSMPrivSign( < cKey >, < cContent >, < nType >, < cPass >, [ @cErrStr ], [ lClient ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cKey

character

Indica o caminho no dispositivo HSM para a chave privada.

X


cContent

character

Indica o valor que será assinado.

X


nType

numeric

Indica o tipo do algoritmo digest que será utilizado.

X


cPass

character

Indica a senha do slot onde está armazenado a chave privada apontada por cKey.

X


cErrStr

character

Indica a variável para retornar as mensagens de erro.


X

lClient

logical

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



Retorno

Nome

Tipo

Descrição

cRet

character

Retorna o valor do parâmetro cContent, assinado de acordo com o tipo nType e a chave privada informada cKey.

Observações

  • Essa função utiliza a chave privada para realizar a assinatura. Para isso, é necessário informar o caminho (path) da chave privada no parâmetro cKey, e, em seguida, o conteúdo cContent que se deseja assinar e finalmente um numérico que informa o tipo de algoritmo que será utilizado para realizar a assinatura nType.
  • O formato aceito no caminho do parâmetro cKey é "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.
  • Tipo de algoritmo válido para o parâmetro nTipo:

    Valor

    Algoritmo

    1

    MD5

    2

    RIPEMD160

    3

    SHA1

    4

    SHA224

    5

    SHA256

    6

    SHA384

    7

    SHA512

  • O parâmetro lClient está disponível a partir da build 13.2.3.0.
  • O valor padrão de lClient é .F..

Exemplos

user function verify()
  Local cMsg := ""
  Local cPrivSign := ""
  Local cPath := ""
  Local cPwd := ""
  Local cError := ""
  Local lPrivVery := .F.
   
  // Slot do HSM contendo a chave privada que será utilizada para assinatura digital
  cPath := "slot_3-label_NOME:12345678901 Private Key"
   
  // Senha para acesso da chave privada no HSM
  cPwd := "MINHA SENHA"
   
  // Inicializa o HSM
  if HSMInitialize() <= 0
    conout( "HSM nao inicializado" )
    return
  endif
   
  // Assinatura digital utilizando o HSM
  cMsg := "Essa mensagem sera assinada digitalmente utilizando a chave privada contida no HSM"
  cPrivSign := HSMPrivSign( cPath, cMsg, 1, cPwd, @cError )
   
  // exibe o conteúdo da variável de erro
  varinfo( "1 - cError", cError )
   
  //exibe o conteúdo da mensagem assinada
  varinfo( "cPrivSign", cPrivSign )
   
  // Verificacao da assinatura digital utilizando o certificado contido no HSM
   
  // Define o caminho do certificado que será utilizado para validar a mensagem assinada
  cPath := "slot_3-label_NOME:12345678901 Certificate"
   
  // Verifica a mensagem a autenticidade entre a mensagem assinada e a mensagem original
  lPrivVery := HSMPrivVery( cPath, cMsg, 1, @cError, cPrivSign )
   
  // exibe o conteúdo da variável de erro
  varinfo( "cError", cError )
   
  if lPrivVery
    conout( "Assinatura verificada com sucesso!" )
  else
    conout( "Erro ao verificar assinatura!" )
  endif
   
  if HSMFinalize() <> 1
    conout( "HSM not finalized" )
  endif
return

Veja também

  • Sem rótulos