Decifra un file precedentemente cifrato con dmtEncryptFileExRSA.
Decifra il file utilizzando lo standard RSA; decifratura con la chiave privata contenuta nel certificato settato come il default nella lista dei certificati personali.
Deve essere stato settato a true il parametro fUseEnhancedProvider della funziona dmtCreate.
Il risultato può essere memorizzato in un buffer in memoria o in un File su disco
LONG WINAPI dmtDecryptFileExRSA (
HDMTOBJ hDmt,
CHAR *szSource,
CHAR *szDestination,
CHAR *szPin = "",
BOOL fUseBLConversion = FALSE,
BOOL fUseBase64Conversion = FALSE);
External_Function dmtDecryptFileExRSA "dmtDecryptFileExRSA" Dimatec.dll ;
HDMTOBJ hDmt ;
string szSource ;
string szDestination ;
string szPin ;
integer fUseBLConversion ;
integer fUseBase64Conversion ;
returns integer
Public Declare Function dmtDecryptFileExRSA Lib "Dimatec.dll" _
(ByVal hDmt As Long, _
Optional ByVal szSource As String = "", _
Optional ByVal szDestination As String = "", _
Optional ByVal szPin As String = vbNullString, _
Optional ByVal fUseBLConversion As Boolean = False, _
Optional ByVal fUseBase64Conversion As Boolean = False) _
As Long
[DllImport("Dimatec.dll")]
public static extern int dmtDecryptFileExRSA (
int hDmt,
string szSource /*= ""*/,
string szDestination /*= ""*/,
string szPin /*= ""*/,
bool fUseBLConversion /*= false */,
bool fUseBase64Conversion /*= false */);
hDmt - Handle dell'oggetto DiMaTek
szSource - File sorgente da decifrare
szDestination - File di destinazione dove verrà salvato il contenuto decifrato
szPin - Pin della smart-card
fUseBLConversion - Se TRUE abilita la conversione Big-Endian ==> Little-Endian del file sorgente
fUseBase64Conversion - Se TRUE esegue la decodifica Base64 del file sorgente
DMT_OK in caso di successo, altrimenti un codice di errore
Integer ret
Integer iDefaultPersonalCertificateCount
Integer iDefaultPersonalCertificate
String sFileDaDecifrareRSA
String sFileDecifratoRSA
String sPin
Get psFileDaDecifrareRSA of oDecifraUnFileRSA to sFileDaDecifrareRSA
Get Label of oTextBox_FileDecifratoRSA to sFileDecifratoRSA
// Check
If (Length(Trim(psFileDaDecifrareRSA(oDecifraUnFileRSA))) = 0) Begin
Send Stop_Box "Non e' stato scelto nessun file da decifrare" "EseguiDecifraturaRSA"
Procedure_Return
End
Move (dmtGetCertificateCountLoaded( ;
ghDmt , ;
False)) to iDefaultPersonalCertificateCount
If (iDefaultPersonalCertificateCount <= 0) Begin
Send Stop_Box "Nessun certificato personale caricato" "EseguiDecifraturaRSA"
Procedure_Return
End
Else Begin
Move (dmtGetDefaultCertificateLoaded( ;
ghDmt , ;
False)) to iDefaultPersonalCertificate
If (iDefaultPersonalCertificate < 0) Begin
Send Stop_Box "Non e' stato settato il certificato personale di default" "EseguiDecifraturaRSA"
Procedure_Return
End
End
If (Length(Trim(Value(oForm_Pin))) > 0) Begin
Get Value of oForm_Pin to sPin
Move (AddressOf(sPin)) to lpsPin
Move (dmtDecryptFileExRSA( ;
ghDmt , ;
sFileDaDecifrareRSA , ;
sFileDecifratoRSA , ;
sPin , ;
False , ;
False)) to ret
End
Else Begin
Move (dmtDecryptFileExRSA( ;
ghDmt , ;
sFileDaDecifrareRSA , ;
sFileDecifratoRSA , ;
0 , ;
False , ;
False)) to ret
End
if (labelFileToDecrypt.Text.Length == 0)
{
MessageBox.Show(this, "Any file selected to decrypt", "DecryptFile",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (CDIMATECLIBRARY.dmtGetCertificateCountLoaded(CDIMATECLIBRARY.ghDimatecObj, false) <= 0)
{
MessageBox.Show(this, "Personal certificate not loaded", "DecryptFile",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (CDIMATECLIBRARY.dmtGetDefaultCertificateLoaded(CDIMATECLIBRARY.ghDimatecObj, false) < 0)
{
MessageBox.Show(this, "Default personal certificate not set", "DecryptFile",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string szPin = "";
if (textBoxDecryptPin.Text.Length > 0)
{
szPin = textBoxDecryptPin.Text;
}
int DecryptFileResult = CDIMATECLIBRARY.dmtDecryptFileExRSA(
CDIMATECLIBRARY.ghDimatecObj,
labelFileToDecrypt.Text,
labelDecryptedFileGenerated.Text,
szPin,
checkBoxLBConversion.Checked,
checkBoxBase64Conversion.Checked);