deutschsprachige FoxPro User Group
Forum View
Home
  
  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





Volkmar Höhn   22.02.2012 12:00
Christof Wollenhaupt  13.03.2012 11:14
Volkmar Höhn  13.03.2012 18:35
Volkmar Höhn  21.05.2012 12:04
Bernhard Sander  21.05.2012 14:16
Volkmar Höhn  22.05.2012 12:10
Bernhard Sander  22.05.2012 13:46
Volkmar Höhn  27.05.2012 12:30
Bernhard Sander  29.05.2012 12:22
Volkmar Höhn  29.05.2012 19:44
Bernhard Sander  30.05.2012 12:36
Volkmar Höhn  04.06.2012 17:01
Bernhard Sander  04.06.2012 19:06
Volkmar Höhn  12.06.2012 21:59
Bernhard Sander  13.06.2012 10:16
Volkmar Höhn  26.06.2012 15:18
Bernhard Sander  27.06.2012 11:04
Volkmar Höhn  11.07.2012 21:37
  
zurück zum Forum