Für die meisten Funktionen finden sie Code-Samples in den Sourcen der Gui, welche dem SDK beiliegt. 


Für die folgenden beiden Aufrufe gibt dort keine Beispiele, daher hier kurze Pseudo-Code Beispiele: 


byte[] serial = WormImpl.wormGetTSESerialNumber(); 
serialNumber = Base64.encodeBytes(serial);


byte[] sig = wormGetTransactionSignature(); 
signature = Base64.encodeBytes(sig);

Eine der kompliziertesten Funktionalitäten ist der Tar-Export. Hier wird nämlich mit einer Callback-Funktion gearbeitet. Folgend ein paar Beispiele in unterschiedlichen Programmiersprachen:

C:

In dem folgenden Beispiel wird der komplette TAR-Export in ein File geschrieben. Relevant ist hierbei vor allem der FunctionPointer "export". Dieser zeigt auf eine Funktion, welche weiter unten definiert ist. Diese Funktion muss mit genau diesem Rückgabewert sowie diesen drei Argumente definiert sein.

  WormExportTarCallback export = &fun;
  FILE* callbackData;
  if (fopen_s(&callbackData, cpath, "wb") != 0) {
    // return error;
  }
  if (callbackData == 0) {
    // return error;
  }
  int err = worm_export_tar(w_context, export, callbackData);
  if (fclose(callbackData) != 0) {
    // return error;
  }

Die Funktion, welche an worm_export_tar übergeben wird. Sobald ein Wert != 0 zurückgegeben wird, gilt der TAR-Export als gescheitert. Diese Funktion wird, je nach Größe des zu exportierenden TAR-Files, mehrmals aufgerufen.

int fun(const unsigned char *chunk, unsigned int chunkLength, void *callbackData) {
  if (fwrite(chunk, 1, chunkLength, callbackData) != chunkLength) {
    //return error;
  }
  return 0;
}

Java:

In Java wird im Endeffekt das Gleiche gemacht. Es wird der komplette Tar-Export in ein File geschrieben.

WormExportTarCallback callback = new WormExportTarCallback() {
      public int onNewData(byte[] data) {
        try (FileOutputStream output = new FileOutputStream(file, true)) {
          output.write(data);
        } catch (IOException e) {
          e.printStackTrace();
          return -1;
        }
        return 0;
      }
    };

C#

In der Methode MyWormExportTarCallback muss einfach festgelegt werden, was man mit den Daten machen will.

[DllImport("WormAPI.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern int worm_export_tar(IntPtr context, WormExportTarCallback callback, IntPtr callbackData);

public delegate int WormExportTarCallback(IntPtr chunk, uint chunkLength, IntPtr callbackData);


private static int MyWormExportTarCallback(IntPtr chunk, uint chunkLength, IntPtr callbackData) {
     return 0;
}

Auslesen des PublicKeys mit C#:


private static extern void worm_info_tsePublicKey(IntPtr info, out IntPtr array, out int size);
[DllImport("WormAPI.dll", CallingConvention = CallingConvention.Cdecl)]

worm_info_tsePublicKey(info, out var intptr, out var count);

byte[] publicKey = new byte[count];
Marshal.Copy(intptr, publicKey, 0, count);