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:
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAqqDiwrPQwVaJzOzfFVBdhNjRNRxghZVQ9a3S88so8piw0uRt
...
A4jh5ffbGA6rlv1kEt1Inq2XDnKASjnWQGltDWWTJFs/XBcfoFXHpYiVINmp
-----END RSA PRIVATE KEY-----
Uma chave privada RSA criptografada deve estar neste formato:
-----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.
Base64EncodeRFC ( 4648 ;
CryptGenerateSignature (
Tabela::TextoParaAssinar ; "SHA512" ; Tabela::chaveRSAPrivada ; $Password
)
)