CryptGenerateSignature

Generates the digital signature of the data.

Format 

CryptGenerateSignature ( data ; algorithm ; privateRSAKey ; keyPassword )

Parameters 

data - any text expression to generate a signature from.

algorithm - the name of the cryptographic algorithm to use (see CryptAuthCode function).

privateRSAKey - text that represents an RSA private key. Optionally, the key may be encrypted.

keyPassword - the password to decrypt privateRSAKey with. If privateRSAKey is not encrypted, this parameter is ignored.

Data type returned 

container

Originated in version 

18.0

Description 

To generate a signature, this function first calculates the message digest of the data parameter using the specified algorithm. Then the digest is encrypted with the privateRSAKey parameter. If the private key is itself encrypted, you must provide the password as the last parameter, keyPassword.

An unencrypted RSA private key must be in this format:

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

An encrypted RSA private key must be in this format:

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

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

To generate an RSA key pair, you can use the OpenSSL toolkit. See www.openssl.org.

This function returns a binary signature of data as container data, or it returns "?" if any of the parameters are invalid. You can convert the container data into text using the Base64EncodeRFC function or HexEncode function.

Example 1 

Uses the SHA-512 algorithm with an encrypted private key to sign the data in the Table::TextToSign text field. The signature is returned as Base64-encoded text.

Copy
Base64EncodeRFC ( 4648 ; 
    CryptGenerateSignature ( 
        Table::TextToSign ; "SHA512" ; Table::PrivateRSAKey ; $Password 
    )
)