CryptGenerateSignature

Gera a assinatura digital dos dados.

Formato 

CryptGenerateSignature ( dados ; algoritmo ; chaveRSAPrivada ; senhaChave )

Parâmetros 

dados - qualquer expressão de texto da qual gerar a assinatura.

algoritmo - o nome do algoritmo criptográfico a ser usado (consulte a Função CryptAuthCode).

chaveRSAPrivada - texto que representa uma chave privada RSA. Opcionalmente, a chave pode ser criptografada.

senhaChave - a senha para descriptografar a chaveRSAPrivada. Se a chaveRSAPrivada não for criptografada, o parâmetro será ignorado.

Tipo de dados retornado 

container

Originada na versão 

18.0

Descrição 

Para gerar uma assinatura, primeiro a função calcula o resumo da mensagem do parâmetro dados usando o algoritmo especificado. Em seguida, o resumo é criptografado com o parâmetro chaveRSAPrivada. Se a chave privada for criptografada, será necessário fornecer a senha como o último parâmetro, senhaChave.

Uma chave privada RSA não criptografada deve estar neste formato:

Copiar
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAqqDiwrPQwVaJzOzfFVBdhNjRNRxghZVQ9a3S88so8piw0uRt
...
A4jh5ffbGA6rlv1kEt1Inq2XDnKASjnWQGltDWWTJFs/XBcfoFXHpYiVINmp
-----END RSA PRIVATE KEY-----

Uma chave privada RSA criptografada deve estar neste formato:

Copiar
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,B2EFE673714F681D

gMvo1cn1+Sjch4cPXT/Mty0pILnsbM5SsBPadRJJQtrGrM8LkkrRNdxYRBeIGUMj
...
lHGJJBHogUW4Ig3/kd4ROVHusRYLtyyfz13A96tIl6Y7lu2L7alNWQ==
-----END RSA PRIVATE KEY-----

Para gerar um par de chaves RSA, você pode usar o kit de ferramentas OpenSSL. Consulte www.openssl.org.

Esta função retornará uma assinatura binária de dados como dados de container, ou retornará "?" se algum dos parâmetros forem inválidos. Você pode converter os dados de container em texto usando a Função Base64EncodeRFC ou a Função HexEncode.

Exemplo 1 

Use o algoritmo SHA-512 com uma chave privada criptografada para assinar os dados no campo de texto Tabela::TextoParaAssinar. A assinatura é retornada como texto com codificação Base64.

Copiar
Base64EncodeRFC ( 4648 ; 
    CryptGenerateSignature ( 
        Tabela::TextoParaAssinar ; "SHA512" ; Tabela::chaveRSAPrivada ; $Password 
    )
)