E' stata aggiunta la funzionalità di firma di un file firmato.
Il proprio certificato verrà accodato alla lista dei certificati presenti nel file firmato.
E' stata aggiunta la funzionalità di importazione di un certificato come file *.cer.
Se i parametri della funzione vengono lasciati vuoti verrà lanciato il wizard di importazione di windows.
E' stata aggiunta la funzionalità per il recupero dell'indice del certificato settato come default.
Queste due nuove funzionalità permettono di eseguire la cifratura e decifratura secondo lo standard RSA. Con queste due nuove funzioni è possibile soddisfare anche la normativa imposta dal Ministero delle Finanze con il DM del 27 Luglio 2005 con il quale ha imposto che il software gestionale delle strutture sanitarie, delle farmacie e di chiunque trasmetta dati relativi alle ricette e alle prestazioni sanitarie al Ministero "dovrà conservare il codice fiscale utilizzando tecniche di crittografia con la chiave pubblica RSA contenuta nel certificato X.509 fornita dal MEF ed applicando il padding PKCS#1 v.1.5. La trasformazione deve essere conforme con quella ottenuta dall'esecuzione del comando pacchetto open source "opensll...." . Tramite un parametro addizionale è possibile ottenere il dato cifrato in formato CodeBase64 pronto per l'invio in un XML al MEF
HDMTOBJ WINAPI dmtCreate (
char *szContainerName,
char *szStoreLocation = "MY",
char *szDllOptional = "");
HDMTOBJ WINAPI dmtCreate (
char *szContainerName,
char *szStoreLocation = "MY",
char *szDllOptional = "",
bool fUseEnhancedProvider = false);
E' stato aggiunto un flag per l'abilitazione di alcune funzionalità avanzate.
LONG WINAPI dmtGetLastError (void);
LONG WINAPI dmtGetLastError (
bool fDisplayErrorInfo = false);
La funzione ritorna il codice dell'ultimo errore; se il flag fDisplayErrorInfo è true viene visualizzata una dialog con informazioni aggiuntive dell'errore occorso.
LONG WINAPI dmtSetDefaultCertificate (
HDMTOBJ hDmt,
long dwIndex);
LONG WINAPI dmtSetDefaultCertificate (
HDMTOBJ hDmt,
long dwIndex,
bool fUseForRecipient = false);
La funzione permette, attraverso l'impostazione del flag fUseForRecipient, di settare:
il certificato di default nella lista dei certificati personali (certificato utilizzato per la firma)
il certificato di default nella lista dei certificati dei riceventi (certificato utilizzato per la cifratura)
LONG WINAPI dmtGetCertificateInStore (
HDMTOBJ hDmt,
char* szOutputCertificate,
long dwIndex = 0);
LONG WINAPI dmtGetCertificateInStore (
HDMTOBJ hDmt,
char *szOutputCertificate,
long dwIndex = 0,
bool fDlgView = false);
Il quarto parametro aggiunge alla funzione di recupero del certificato nello store la visualizzazione del certificato recuperato nella dialog di default fornita da Windows per la visualizzazione delle caratteristiche di un certificato.
LONG WINAPI dmtSigningFile (
HDMTOBJ hDmt,
char* szFileName,
char* szAlgHash = szOID_OIWSEC_sha1,
char* szAlgEncode = szOID_RSA_RC4,
bool fDetachSign = false,
bool fEncode = false,
bool fRecipients = false,
bool fInclRecipientInMsg = false,
char* zsPin = "");
LONG WINAPI dmtSigningFile (
HDMTOBJ hDmt,
char *szFileName,
char *szAlgHash = szOID_OIWSEC_sha1,
char *szAlgEncrypt = szOID_RSA_RC4,
bool fDetachSign = false,
bool fEncrypt = false,
bool fInclRecipientInMsg = false,
bool fUseAllRecipients = false,
char *szPin = "");
E' stato eliminato il parametro fRecipients che permetteva di cifrare un file con un certificato presente nella lista dei certificati personali; sono state distinte le funzionalità delle due liste di certificati presenti nell'oggetto DiMaTek (certificati personali per la firma - certificati dei destinatari per la cifratura). Per poter firmare e cifrare un file con il proprio certificato bisogna:
caricare nella lista dei certificati personali il proprio certificato personale
caricare nella lista dei certificati dei riceventi il proprio certificato con funzionalità di cifratura
settare il default dei certificati personali (dmtSetDefaultCertificate - fUseForRecipient = false)
settare il default dei certificati dei riceventi (dmtSetDefaultCertificate - fUseForRecipient = true)
E' stato aggiunto il parametro fUseAllRecipients che permette di cifrare il file firmato con ogni certificato pubblico presente nella lista dei certificati dei riceventi.
LONG WINAPI dmtVerifySignedFile (
char* szFileNameSigned,
char* outOriginalFile = "",
char* outCertificateFile = "");
LONG WINAPI dmtVerifySignedFile (
char *szFileNameSigned,
long dwIndex = 0,
char *outOriginalFile = "",
char *outCertificateFile = "");
La funzionalità di estrazione del certificato con cui è stato firmato il file è stata rivista e corretta.
Per i file contenenti più firme, il parametro dwIndex permette di scegliere quale certificato estrarre.
LONG WINAPI dmtEncryptFile (
HDMTOBJ hDmt,
char* szSource,
char* szDestination,
char* szPin);
LONG WINAPI dmtDecryptFile (
HDMTOBJ hDmt,
char* szSource,
char* szDestination,
char* szPin);
LONG WINAPI dmtEncryptFile (
HDMTOBJ hDmt,
char *szFileName,
char *szAlgEncrypt = szOID_RSA_RC4);
LONG WINAPI dmtDecryptFile (
HDMTOBJ hDmt,
char *szFileName,
char *szPin = "");
La funzionalità di cifratura e decifratura di un file è stata completamente rivista e corretta.
LONG WINAPI dmtVerifyCryptedSignedFile (
HDMTOBJ hDmt,
char* szFileNameSigned,
char* outOriginalFile = "",
char* outCertificateFile = "");
LONG WINAPI dmtVerifyCryptedSignedFile (
HDMTOBJ hDmt,
char *szFileNameSigned,
long dwIndex = 0,
char *outOriginalFile = "",
char *outCertificateFile = "",
char *szPin = "");
La funzionalità di estrazione del certificato con cui è stato firmato il file è stata rivista e corretta.
Per i file contenenti più firme, il parametro dwIndex permette di scegliere quale certificato estrarre.
Il parametro szPin permette la verifica del file firmato e cifrato inserendo in modo automatico il della smartcard.
LONG WINAPI dmtHash (
HDMTOBJ hDmt,
char* szFileName,
char* szFileHash,
char *ByteHash,
long dwAlgHash = DMT_CALG_SHA1,
bool bMinuscole = false);
LONG WINAPI dmtHash (
HDMTOBJ hDmt,
char *szFileName,
char *szOutputFileHash = NULL,
char *szOutputHexHash = NULL,
char *szOutputHash = NULL,
long dwAlgHash = DMT_CALG_SHA1,
bool bMinuscole = false);
E' stata ampliata la scelta di output possibili in base ai parametri inseriti:
szOutputFileHash verrà salvato un file contenente l'hash (se lasciato vuoto il file non verrà creato)
szOutputHexHash buffer contenente il codice hash convertito in esadecimale (se lasciato vuoto il buffer non verrà riempito)
szOutputHash buffer contenente il codice hash puro (se lasciato vuoto il buffer non verrà riempito)
LONG WINAPI dmtTimeStamp (
char* szHttpServerUrl,
char* szFileToTimeStamped,
char* szAlgHash = szOID_OIWSEC_sha1,
bool fSaveTimeStampQuery = false,
bool fDetachTS = false,
bool fSaveXMLReply = false);
LONG WINAPI dmtTimeStamp (
HDMTOBJ hDmt,
char *szHttpServerUrl,
char *SourceFileName,
bool fSaveTimeStampQuery = false,
bool fDetachTS = false,
bool fSaveXMLReply = false);
E' stata modificata la funzionalità di Timestamp su server free. Il file di ingresso non è più un file contenente un hash ma direttamente il file su cui effettuare il timestamp. In uscita verrà generato un file *.m7m di tipo MIME contenente il file originale e la risposta del server compatibile con quello generato dalla funzione dmtTimeStampDTS.
LONG WINAPI dmtVerifyFileTimeStamped (
char* szFileName,
char* szOriginalFile = "");
LONG WINAPI dmtVerifyFileTimeStamped (
HDMTOBJ hDmt,
char *SourceFileName);
La funzione di verifica accetta in ingresso un file *.m7m come quelli generati dalla funzione dmtTimeStampDTS o dalla funzione dmtTimeStamp (versione 2.5.8).
LONG WINAPI dmtExtractFromTimeStampDTS (
char* SourceFileName,
char* OriginalFileName = "",
char* TimeStampFileName = "",
char* XMLTimeStampFileName = "");
LONG WINAPI dmtExtractFromTimeStamp (
char *SourceFileName,
char *OriginalFileName = "",
char *TimeStampFileName = "",
char *XMLTimeStampFileName = "");
E' stato modificato il nome della funzione in quanto la funzione di estrazione delle informazioni da un file con timestamp accetta in ingresso un file *.m7m come quelli generati dalla funzione dmtTimeStampDTS o dalla funzione dmtTimeStamp (versione 2.5.8).
dmtSigningMultiFiles E' stata eliminata la possibilità di firmare contemporaneamente più files; per poter firmare più files l'utente dovrà implementare nell'applicazione esterna a DiMaTek il loop sui files da firmare chiamando più volte la funzione dmtSigningFile
dmtEncodingFile Le funzioni dmtEncodingFile e dmtEncryptFile sono state corrette e riscritte nella funzione dmtEncryptFile
dmtDecodingFile Le funzioni dmtDecodingFile e dmtDecryptFile sono state corrette e riscritte nella funzione dmtDecryptFile