dmtSigningPdfFile

Firma embedded di un file pdf. Questa firma usa il formato PKCS#  e dal 30 giugno 2011 non va quindi usata per la firma Legale a norme di legge. Utilizzare invece dmtSigningPdfFileWithCadesAttributes

 

definizione C

int WINAPI dmtSigningPdfFile(

HDMTOBJ hDmt,

CHAR *szFileName,

CHAR *szAlgHash = szOID_OIWSEC_sha1,  // Algoritmo di Hash

CHAR *szPin = "", // Pin della smart-card

BOOL fAddDsiTimeRef = FALSE, //

CHAR *szSigningTime = "", // Valore di un riferimento temporale proprio da includere

CHAR *szSigningTimeFormat = "", // Formattazione del riferimento temporale proprio

BOOL fAddSignatureTimeStamp = FALSE,

DATI_SERVER_TIMESTAMP *pDatiServerTimeStamp = NULL

           );

 

Parametri di input:
Valore di ritorno:

DMT_OK in caso di successo, altrimenti un codice di errore

 

Nota:

La funzione genera un nuovo File PDF con la firma embedded aggiungendo l'estensione .Signed.pdf al nome del file originale

 


Esempi di utilizzo

 

Esempio C:

 

// ============================================================================

// ============================================================================

int FirmaFilePdf(char *FileDaFirmare, char *Pin)

{

int ret;

// Creo l'oggetto Dimatek

HDMTOBJ hDmt = dmtCreate(

0,

"MY",

PKCS11_DLL,

CRYPTO_PROVIDER_TYPE,

PKCS11_LOW_LEVEL_ENABLED);

if (hDmt < 0)

goto end;

ret = dmtLoadCertificate(

hDmt,

"Franco Spinella",

FALSE);

if (ret != DMT_OK)

return ret;

ret = dmtSetDefaultCertificate(

hDmt,

0,

FALSE);

if (ret != DMT_OK)

return ret;

 

DATI_SERVER_TIMESTAMP DatiServerTimeStamp;

memset((PVOID)&DatiServerTimeStamp, 0, sizeof(DATI_SERVER_TIMESTAMP));

//SERVER FREE

//DatiServerTimeStamp.TipoServerTimeStamp = SERVER_FREE;

//DatiServerTimeStamp.szAlgHash = szOID_OIWSEC_sha1;

//DatiServerTimeStamp.szHttpServerUrl = "http://www.edelweb.fr/cgi-bin/service-tsp";

//DatiServerTimeStamp.szUsername = NULL;

//DatiServerTimeStamp.szPassword = NULL;

//SERVER INFOCERT

DatiServerTimeStamp.TipoServerTimeStamp = SERVER_INFOCERT;

DatiServerTimeStamp.szAlgHash = szOID_OIWSEC_sha1;

DatiServerTimeStamp.szHttpServerUrl = "https://marte.infocert.it/cdie/DtsService";

DatiServerTimeStamp.szUsername = "franco-s@dataflex.net";

DatiServerTimeStamp.szPassword = "dataflex92";

//SERVER ARUBA

//DatiServerTimeStamp.TipoServerTimeStamp = SERVER_ARUBA;

//DatiServerTimeStamp.szAlgHash = szOID_NIST_sha256;

//DatiServerTimeStamp.szHttpServerUrl = "https://servizi.arubapec.it/tsa/ngrequest.php";

//DatiServerTimeStamp.szUsername = "test.fidatek";

//DatiServerTimeStamp.szPassword = "12345";

//SERVER POSTECOM

//DatiServerTimeStamp.TipoServerTimeStamp = SERVER_POSTECOM;

//DatiServerTimeStamp.szAlgHash = szOID_OIWSEC_sha1;

//DatiServerTimeStamp.szHttpServerUrl = "https://62.241.224.224/servletN_TSS/TSReqServlet";

//DatiServerTimeStamp.szCertificateFile = "C:\\Alessio\\dimatek4src\\Test\\Spinella_test.p12";

//DatiServerTimeStamp.szCertificatePassword = "Spinella1,";

//DatiServerTimeStamp.szUsername = NULL;

//DatiServerTimeStamp.szPassword = NULL;

ret = dmtSigningPdfFile(

hDmt,

FileDaFirmare,

"1.3.14.3.2.26", // szOID_OIWSEC_sha1 - Algoritmo di Hash

Pin, // Pin della smart-card

FALSE, // Aggiungi il TimeStamp

"", // Time-Stamp da aggiungere

"", // Formato del Time-Stamp

FALSE,

&DatiServerTimeStamp

);

if (ret != DMT_OK)

goto end;

end:

if ((ret == DMT_OK) && (hDmt > 0))

MessageBox(NULL, "Funzione eseguita con successo", "DimatecTest", MB_OK);

else if (ret == -1)

dmtGetLastError(true);

else

{

char ErrorBuffer[200];

if (hDmt < 0)

sprintf(ErrorBuffer, "Funzione eseguita con ERRORE: %i", hDmt);

else

sprintf(ErrorBuffer, "Funzione eseguita con ERRORE: %i", ret);

MessageBox(NULL, ErrorBuffer, "DimatecTest", MB_OK);

}

if (hDmt > 0)

dmtRelease(hDmt);

return ret;

}