Ich habe jetzt auch den in C geschriebenen Beispielcode zum laufen bekommen. Seht Ihr eine Möglichkeit (unsigned char*)malloc in Delphi nachzustellen?
Struktur aus der Header-Datei:
Code:
typedef struct
{
int version;
char* documentFileName;
unsigned char* dataToBeSigned;
int dataToBeSignedLen;
}
Pointer sign()
Code:
SIGN = (SIGN_TYPE) GetProcAddress(hMod, "SecSigner_Sign");
int signDocs(DOCUMENT documents[], int documentCount,
BYTEARRAY cipherCerts[], int cipherCertCount,
BYTEARRAY softKeyData[], int softKeyDataCount)
{
int ret = (*SIGN)(documents, documentCount, cipherCerts, cipherCertCount, softKeyData, softKeyDataCount);
return ret;
}
Und der Aufruf:
Code:
contentBuffer = (unsigned char*)malloc(CONTENT_BUF_LEN);
filePos = 0;
while (true)
{
int bytesRead = _read(fd, &contentBuffer[filePos], CONTENT_BUF_LEN-filePos);
if (bytesRead < 0)
{
return -1;
}
if (bytesRead == 0)
{
break;
}
filePos+=bytesRead;
}
documents[i].version = 7;
documents[i].documentFileName = "test.pdf";
documents[i].dataToBeSigned = contentBuffer;
documents[i].dataToBeSignedLen = filePos;
EDIT: Die
DLL wurde übrigens in C++ geschrieben.