/
DecryptSignatureBiodata

DecryptSignatureBiodata

Declaration

Delphi

function   DecryptSignatureBiodata(RandomKey:AnsiString; EncryptedBiodata: AnsisTring; var OutLen : integer) :pointer;

C/C++

SOPAD_API VOID* SOPAD_DecryptSignatureBiodata(char *RandomKey, char *EncryptedBiodata, int *OutLen) ;

ActiveX

 HRESULT _stdcall DecryptSignatureBiodata([in] BSTR RandomKey, [in] BSTR EncryptedBiodata, [out, retval] BSTR* Result);

 

Description

Decrypt the biometric data with the decrypted AESKey (see DecryptSignatureAESKey)

This function can only by used with biometric pads, as the standard pads have a secure notarykey.

 

Arguments

string RandomKey,  encoded as hex-string

string EncryptedBiodata,


Return value

returns the decrypted Biodata as the stepover Biodata-format

 

Sample

C# Sample to collect signature raw data and how to decrypt them
private string GetFileContentAsString(String FileName, bool asHexString) 
{
	string result = "";
	if (!asHexString)
	{
		result = File.ReadAllText(FileName);
	}
	else
	{
		byte[] fileBytes = File.ReadAllBytes(FileName);
		result = BitConverter.ToString(fileBytes);
		result = result.Replace("-", "");
	}

	return result;
}
  
// function to collect all signature data
private void getSignature()
{
	SigDev.startCapture(cert, true, true, true, true, ref padSetting);
 
	//  wait for 2 sec for signing
	Thread.Sleep(2000);
			
	//  Save SignImage
	System.IO.File.WriteAllBytes("signature.bmp", (byte[])SigDev.ReadHighResBitmap(1));

	//  Collect encrypted Biodata
	string biodata = "";
	SigDev.getBiodataString(ref biodata);

	System.IO.File.WriteAllText("biodata.bin", biodata);
	// some arbitrary preliminary document hash, should be generated of the signing content in that case its a dummy value  
	byte[] prelimHash = {0,0,0,0,1,0,0,0, 1,0,0,0,0,0,0,0, 0,1,0,1,0,0,0,0, 0,0,0,0,1,0,0,0};

	// save preliminary document hash (better way is not to save it and recreate it from the signed data).
	System.IO.File.WriteAllBytes("prelimHash.bin", prelimHash);

	//  Send preliminary document hash to Device
	SigDev.SetPreliminaryDocumentHash(prelimHash);

	//  Collect and Save EncryptedAES Key from Device
	System.IO.File.WriteAllBytes("encryptedAesKey.bin", (byte[])SigDev.GetEncryptedAesKey());

	//  Stop Signmode, Pad will switch to Standby again
	SigDev.stopCapture(0);
}
     
// function to decrypt biodata with raw data  		
private void DecryptBiometricdata() 
{
	string notarykey = "private4096.txt";
	string biodata = GetFileContentAsString("biodata.bin", false);
	string aeskey = GetFileContentAsString("encryptedAesKey.bin", true);
	string dochash = GetFileContentAsString("prelimHash.bin", true);

	string randomkey = SigDev.DecryptSignatureAESKey(aeskey, dochash, notarykey);
	string decryptedBiodata = SigDev.DecryptSignatureBiodata((randomkey), biodata);

	Console.WriteLine("btnDecryptBiodataClick done.");
	Console.WriteLine("btnDecryptBiodataClick randomkey=" + (randomkey));
	Console.WriteLine("btnDecryptBiodataClick decryptedBiodata=" + decryptedBiodata);
}

Related content

DecryptSignatureAESKey
DecryptSignatureAESKey
More like this
AddSignature
AddSignature
Read with this
LoadBioData
LoadBioData
More like this
SetDriverBin
More like this
getBioData
More like this
SOBioDecryptor (DLL interface)
SOBioDecryptor (DLL interface)
More like this