| |
| |
Eric-Funktion mit Strukturreferenz- #15709 in section [733397] |
| Sec: |
(51) MS-Visual FoxPro 9.0 |
| Von: |
Volkmar Höhn |
| An: |
All |
| Am/Um: |
22.02.2012 12:00:32 gelesen |
Hallo miteinander, ich habe ein Problem mit einer neuen Eric-Funktion. Bisher wurden die Parameter einzeln an die API-Funktion übergeben. Seit diesem Jahr (2012) muss ich die Funktion EricGetPublicKey verwenden, um den Transportschlüssel zu bestimmen. Die Beschreibung ist folgende: ERICAPI_DECL int EricGetPublicKey (const eric_verschluesselungs_parameter_t * cryptoParameter, char * puffer, size_t * pufferGroesse) Liefert einen base64-kodierten Zertifkatstring zu einem Zertifikathandle. Der String ist nullterminiert. Parameter: - cryptoParameter: Struktur mit einem Zertifikathandle wie von der Funktion EricGetHandleToCertificate() zurückgeliefert und die PIN zum Zugriff auf das Token. Wenn das Token keine PIN erfordert, ist das Feld pin mit NULL zu belegen. - Puffer: Zeiger auf einen Puffer, der das Zertifikat entgegen nimmt. Der Puffer muss in der Anwendung allokiert werden. Wenn der Parameter NULL ist, wird nur die benötigte Größe für einen Puffer berechnet. - pufferGroesse: Zeiger auf die Größe des übergebenen Puffers in Bytes. Der Parameter darf nicht NULL sein. Wenn die Funktion mit puffer==NULL aufgerufen wird, wird nur die benötigte Größe berechnet und in den Parameter pufferGroesse zurückgeschrieben. Wenn die Funktion mit puffer!=NULL aufgerufen wird, muss die Größe des Puffers in diesem Parameter übergeben werden. Wenn der Puffer für das Zertifikat nicht ausreicht, wird der Wert auf die benötigte Größe gesetzt und ERIC_GLOBAL_BUFFER_UEBERLAUF zurückgegeben. Wenn die Funktion das Zertifikat in den Puffer geschrieben hat, wird in dem Parameter die Größe des Zertifikats ohne den Nullterminierer zurückgegeben. Mein Problem ist der eric_verschluesselungs_parameter_t. Wie kann ich in VFP eine solche Strukturreferenz übergeben? In VB sieht es etwa so aus: Public Type Eric_size_t_typ laenge As Integer End Type Public Type Eric_Verschluesselungs_Parameter_typ Handle As Long pin As String End Type Public Declare Function EricGetPublicKey Lib "ericapi.dll" ( _ByRef cryotoParameter As Eric_Verschluesselungs_Parameter_typ, _ ByVal puffer As Any, ByRef puffergroesse As Eric_size_t_typ) Dim tKey As Eric_Verschluesselungs_Parameter_typ Dim sBuffer As String Dim tPu As Eric_size_t_typ Dim lRc As Long lRc = EricGetPublicKey(tKey, sBuffer, tPu) In VFP habe ich alles Mögliche probiert, aber ohne Erfolg, z. B. habe ich die Strukturreferenz als Objekt definiert: nBufferlen = REPLICATE(CHR(0),20000) oPara = CREATEOBJECT('ericParam') oPara.handle = hToken (wurde vorher mit EricGetHandleToCertificate erfolgreich erstellt) oPara.PIN = 'xxxxxx' DECLARE long EricGetPublicKey IN ericapi.dll object @ oPara, integer @ pPuffer, integer nBufferlen EricRC = EricGetPublicKey(@oPara, @pPuffer, nBufferlen) Danke für die Unterstützung. Volkmar Höhn
|
|
|
|