Restituisce un handle ad un nuovo oggetto DiMaTek che contiene un riferimento a tutti i dati necessari al corretto funzionamento della libreria.
Questa funzione deve essere chiamata almeno una volta all'inizio del blocco di codice in cui si intenda usare la libreria, in quanto la maggior parte delle funzioni esportate dalla libreria DiMaTek hanno bisogno dell'handle da essa restituito.
E' possibile aprire più sessioni criptografiche fino ad un massimo di 99 eseguendo dmtCreate ogni volta, è compito del programmatore memorizzare gli handle di tutte le sessioni; è importante liberare l'handle dell'oggetto DiMaTek quando non più necessario utilizzando la funzione dmtRelease.
Se il valore restituito da dmtCreate è inferiore a 0, significa che c'è stato un errore (puoi verificare nel valore restituito il tipo di errore). Nessuna funzione della libreria potrà essere utilizzata se dmtCreate fallisce.
HDMTOBJ WINAPI dmtCreate (
char *szContainerName,
char *szStoreLocation = "MY",
char *szDllOptional = "",
dword fUseEnhancedProvider =0,
bool fLowLevelCSPFunctionenabled= False);
Public Declare Function dmtCreate Lib "Dimatec.dll" _
(ByVal szContainerName, _
Optional ByVal szStoreLocation As String = "MY" ,_
Optional ByVal szOptionalDll As String = vbNullString, _
Optional ByVal fUseEnhancedProvider as long =0,
Optional ByVal fLowLevelCSPFunctionenabledAs Boolean = False) As Long
External_Function dmtCreate "dmtCreate" Dimatec.dll ;
string szContainerName ;
string szStoreLocation ;
string szDllOptional ;
integer fUseEnhancedProvider ;
integer fLowLevelCSPFunctionenabledAs ;
returns integer
[DllImport("Dimatec.dll")]
public static extern int dmtCreate (
string szContainerName,
string szStoreLocation /*= "MY"*/,
string szDllOptional /*= ""*/,
int fUseEnhancedProvider ,
bool fLowLevelCSPFunctionenabledAs)
szContainerName - Nome del container per il CryptoProvider, può essere anche inserita una stringa nulla
szStoreLocation - Store di sistema dei certificati, di default è "MY"
szOptionalDll - File dll (opzionale) del CSP da utilizzare con la smart-card; è utilizzata da alcune funzioni che necessitano un accesso di basso livello alle funzionalità della smart-card
fUseEnhancedProvider - Flag opzionale per l'abilitazione di alcune funzionalità avanzate del CSP. Lasciare false per Bit4ipki
fUseEnhancedProvider - Usare 0 se si usa solo Firme SHA-1, per le firme SHA256 usare 2 per Win7 e Vista e Server 2008, 3 per XP, 4 per Windows 2003
Un handle valido ad un oggetto DiMaTek in caso di successo, altrimenti un codice di errore.
Note:
Se il parametro szOptionalDll è NULL vengono by passati i controlli su lettore e Smartcard. L'handle creato però può essere usato solo con funzioni che non necessitano del colloquio con la smart-card.
Nei seguenti esempi vengono illustrati due differenti modi di inizializzare la libreria DiMaTek:
Inizializzazione della libreria con apertura dello store di sistema "MY"
Collegamento alla libreria "SI_PKCS11.dll" (o ad un'altra libreria fornita da un CSP) del CSP
Inizializzazione della libreria senza apertura di uno store di sistema
Nessuna libreria di CSP collegata
Questo tipo di inizializzazione viene utilizzato quando verrà caricato uno store di tipo pfx con la funzione dmtLoadCertStoreFile
Move "0" to szContainerName
Move "MY" to szStoreLocation
Move "C:\WINDOWS\system32\inpkisc.dll" to szDllOptional
Move (dmtCreate( ;
szContainerName , ;
szStoreLocation , ;
szDllOptional ,
2 ; // su win7
False )) to hDmt
Move "0" to szContainerName
Move "" to szStoreLocation
Move "" to szDllOptional
Move (dmtCreate( ;
szContainerName , ;
szStoreLocation , ;
szDllOptional ,
3 ; // x xp
False )) to hDmt
Public g_hDmt As Long
g_hDmt = dmtCreate(0, "MY", "C:\WINDOWS\system32\SI_PKCS11.dll", 0, False)
Public g_hDmt As Long
g_hDmt = dmtCreate(0, "", "", 0, False)
CDIMATECLIBRARY.ghDimatecObj = CDIMATECLIBRARY.dmtCreate(
"",
"MY",
"C:\WINDOWS\system32\SI_PKCS11.dll", 2
false);
CDIMATECLIBRARY.ghDimatecObj = CDIMATECLIBRARY.dmtCreate(
"",
"",
"",
2,
false);