Probleme mit gcrypt und HMAC

wardog wardog at gmx.de
Fr Dez 23 20:10:43 CET 2011


Hallo zusammen,

bin neu hier und setze mich derzeit mit gcrypt auseinander. Leider bin 
ich beim SHA1-HMAC auf ein Problem gestoßen und ich komme einfach nicht 
darauf, was ich falsch machen. Der betreffende Code sieht folgendermaßen 
aus:

     gcry_error_t err = 0;
     gcry_md_hd_t digest;

     err = gcry_md_open(
&digest, GCRY_MD_SHA1,
         GCRY_MD_FLAG_SECURE | GCRY_MD_FLAG_HMAC);
     if (err) {
         return false;
     }
     err = gcry_md_setkey(digest, "key", 3);
     if (err) {
         return false;
     }

     char *text = "The quick brown fox jumps over the lazy dog";
     gcry_md_write(digest, text, strlen(text));
     unsigned char *res = gcry_md_read(digest, 0);

     gcry_md_close(digest);

Wenn ich mir nun "res" ausgeben lasse, befindet sich darin 
seltsamerweise ein teil des ursprungstextes, nämlich "jumps over the 
lazy dog". Damit ist das Resultat, wenn ich es in HEX-Kodiere, natürlich 
auch deutlich länger als es sein sollte. Andererseits kommt es bei 
anderen Texten durchaus auch mal vor, dass das Ergebnis zu kurz ausfällt 
und die letzten Byte einfach fehlen. Benutze ich die Funktionen write 
oder read falsch oder mache ich sonst irgendeinen fehler?

Wäre wirklich toll, wenn mich da jemand mit der Nase auf das Problem 
stoßen könnte.

Gruß



Mehr Informationen über die Mailingliste Gnupg-de