Firma un file con aggiunta degli attributi dello standard CADES. utilizzando il certificato caricato con dmtLoadCertificate e settato come quello da utilizzare attraverso la funzione dmtSetDefaultCertificate. Per essere valida bisogna utilizzare l'algoritmo di hash a 256bit. szOID_NIST_sha256
E' possibile inserire nella firma un riferimento temporale ricavato dal server DATAFLEX impostando TRUE nel parametro fAddDsiTimeRef , oppure inserendo nel parametro "szSigningTime" una stringa formattata.
Se è stata impostata la directory nella funzione dmtSetOutputFolder tutti i file di output della firma saranno copiati in questa directory
Da notare:
il file può essere firmato o firmato e cifrato
nel caso di file firmato e cifrato l'opzione fDetach (separazione del certificato del firmatario dal file firmato) non verrà presa in considerazione
il file verrà firmato utilizzando un certificato presente nella lista (dell'oggetto DiMaTek) dei propri certificati personali
il file verrà cifrato utilizzando uno o più certificati presenti nella lista (dell'oggetto DiMaTek) dei certificati dei riceventi
La funzione può essere usata per firmare un buffer in memoria importato con la funzione dmtloadfileInInputBuffer. In tal caso al posto del nome del File occorre passare NULL. Il risultato può essere salvato in un file utilizzando dmtSaveFileInInputBuffer
Dichiarazione - C
int WINAPI dmtSigningFileWithCadesAttributes(HDMTOBJ hDmt,
CHAR *szFileName,
CHAR *szAlgHash = szOID_NIST_sha256,
CHAR *szAlgEncrypt = szOID_RSA_RC4,
BOOL fDetachSign = FALSE,
BOOL fEncrypt = FALSE,
BOOL fInclRecipientInMsg = FALSE,
BOOL fUseAllRecipients = FALSE,
CHAR *szPin = "",
BOOL fAddDsiTimefgetzzRef = FALSE,
CHAR *szSigningTime = "",
CHAR *szFormat = "");
hDmt - Handle dell'oggetto DiMaTek
szFileName - File da firmare
szAlgHash - Identificativo dell'algoritmo di hash da utilizzare [vedi Algoritmi di hash e di cifratura]
szAlgEncrypt - Identificativo dell'algoritmo di cifratura da utilizzare [vedi Algoritmi di hash e di cifratura]
fDetachSign - Se TRUE verrà generato un file di firma separata (detached)
fEncrypt - Se TRUE esegue la cifratura del contenuto utilizzando la chiave privata di uno o più certificati presenti nella lista dei certificati dei riceventi
fInclRecipientInMsg - Se TRUE aggiunge i certificati dei riceventi nel messaggio
fUseAllRecipients - Se TRUE utilizza le chiavi pubbliche di tutti i certificati dei riceventi presenti nella lista dei certificati dei riceventi
szPin - Pin della smart-card
fAddDsiTimeRef - Se TRUE aggiunge un riferimento temporale nelle informazioni aggiuntive di firma ricevendolo dal server Dataflex Italia, se False il riferimento deve essere passato manualmente dall'applicazione
szSigningTime - Stringa contenente un riferimento temporale che verrà aggiunto nelle informazioni aggiuntive di firma
szFormat - Stringa che specifica la formattazione del parametro szSigningTime [vedi Formato del riferimento temporale]
DMT_OK in caso di successo, altrimenti un codice di errore
Se la chiamata ha successo verrà creato un file firmato con la seguente estensione:
[szFileName] + ".p7m" - File firmato
[szFileName] + ".p7m.p7e" - File firmato e cifrato
SigningFileResult=CDIMATECLIBRARY.dmtSigningFileWithCadesAttributes(
hthissession,
LabelFileToSign.Text,
CDIMATECLIBRARY.szOID_NIST_sha256,
CDIMATECLIBRARY.szOID_RSA_RC4,
oCheckBoxFirmaDetached.Checked,
CheckBoxSignEncrypt.Checked,
false,
CheckBoxSignEncryptAllRecipient.Checked,
SignaturePinTextBox.Text,
CheckBoxAddDsiSignRefTime.Checked,
True,
"%d/%m/%Y %H.%M"t);