CryptGenerateSignature

Genera la firma digitale dei dati.

Formato 

CryptGenerateSignature ( dati ; algoritmo ; chiaveRSAPrivata ; passwordChiave )

Parametri 

dati - qualsiasi espressione di testo da cui generare una firma.

algoritmo - il nome dell'algoritmo crittografico da utilizzare (vedere la funzione CryptAuthCode).

chiaveRSAPrivata - testo che rappresenta una chiave RSA privata. Se lo si desidera, la chiave può essere crittografata.

passwordChiave - la password con cui decrittare chiaveRSAPrivata. Se chiaveRSAPrivata non è crittografata, questo parametro viene ignorato.

Tipo di dati riportato 

Contenitore

Creata nella versione 

18.0

Descrizione 

Per generare una firma, questa funzione calcola innanzitutto il digest del messaggio del parametro dati utilizzando l'algoritmo specificato. Quindi il digest viene crittografato con il parametro chiaveRSAPrivata. Se anche la chiave privata è crittografata, è necessario fornire la password come ultimo parametro, passwordChiave.

Una chiave RSA privata non crittografata deve essere in questo formato:

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

Una chiave RSA privata crittografata deve essere in questo formato:

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

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

Per generare una coppia di chiavi RSA, è possibile utilizzare il toolkit OpenSSL. Vedere www.openssl.org.

Questa funzione restituisce una firma binaria di dati come dati Contenitore o restituisce "?" se uno dei parametri non è valido. È possibile convertire i dati Contenitore in testo utilizzando la funzione Base64EncodeRFC o la funzione HexEncode.

Esempio 1 

Utilizza l'algoritmo SHA-512 con una chiave privata crittografata per firmare i dati nel campo Testo Tabella::TestoDaFirmare. La firma viene restituita in formato testo con codifica Base64.

Copia
Base64EncodeRFC ( 4648 ; 
    CryptGenerateSignature ( 
        Tabella::TestoDaFirmare ; "SHA512" ; Tabella::ChiaveRSAPrivata ; $Password 
    )
)