Neues Thema starten

Signatur Länge

 Hallo,

ich habe in C# die aus dem SDK bereitgestellten Funktionen ausprobiert.

Nach einer Transaktion erhalte ich z.B. folgende worm_transaction_response_signature mit 192 Zeichen länge:


07D6B5FD66A24B1B7F51D037566230A48E1CF7697D9FE63E892C16F3CA6020ABB1AC51176567E9C322ABBA855D993AC347C03815309D7193F385928DCB90F4B40FD8D0DEFF28F076682EB3D99873E38C4FE85EF7FBAB44F8F082E80357482A5A


Wenn ich mir aber die Beispiele für die QR-Codes  im PDF Swissbit_Info anschaue, sind die Werte deutlich kürzer und das ganze sieht auch vom Inhalt völlig anders aus.


Auch das Auslesen des Public-Key ist mit leider nicht gelungen. Ich kann das ganze Zertifikat auslesen, aber wir extrahiere ich daraus den Public-Key?

Die Frage wurde hier ja auch schon gestellt, aber leider nicht beantwortet.

Die Doku gibt da auch nichts her.


Bin dankbar für alle Tips

Andreas


1 Kommentar

Hallo Andreas Beckhaus,


die von Ihnen gepostete Signatur ist prinzipiell korrekt. Bei Ihrer Ausgabe handelt es sich um einen

Octet-String (Hex-Byte), d.h. jeweils zwei Hex-Zeichen ergeben ein Byte, somit also 192 / 2 = 96 Byte.

07 = ASCII 7

D6 = ASCII 214

Die Signatur muß genau 96 Byte lang sein (dies wiederum ergibt sich zwingend aus dem verwendeten Signaturalgorithmus). Da sie nicht druckbare Zeichen enthält, muß sie entweder als Octet-String (s.o.) oder Base64-kodiert (z.B. für den Kaseenbon und QR-Code) ausgegeben werden.

Die Funktion "worm_transaction_response_signature" liefert einen Zeiger auf "unsigned char*" und die Länge zurück. Diesen Inhalt einfach Base64 kodieren (ergibt 128 Zeichen).

Den PublicKey ermittelt man in C/C++ so (aus dem Gedächtnis, alles ohne Fehlerbehandlung, init/cleanup nur der Vollständigkeit halber), bitte auf C# adaptieren:

std::string getPKey () {
  WormContext* ctx;
  worm_init(&ctx, "Mountpoint");
  WormInfo* info = worm_info_new(ctx);
  worm_info_read(info);

  const unsigned char* buf;
  worm_uint len;
  worm_info_tsePublicKey(info, &buf, &len);
  std::string publicKey = base64_encode(buf, len);

  worm_info_free(info);
  worm_cleanup(ctx);

  return publicKey;
}

VG U. Kleinert

Anmelden oder Registrieren um einen Kommentar zu veröffentlichen