Probleme mit gcrypt und HMAC

Werner Koch wk at gnupg.org
So Dez 25 21:30:06 CET 2011


On Fri, 23 Dec 2011 20:10, wardog at gmx.de said:

>     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

Schau mal auf die Dokumentation:

 -- Function: unsigned char * gcry_md_read (gcry_md_hd_t H, int ALGO)
     `gcry_md_read' returns the message digest after finalizing the
     calculation.  This function may be used as often as required but
     it will always return the same value for one handle.  The returned
     message digest is allocated within the message context and
     therefore valid until the handle is released or reseted (using
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     `gcry_md_close' or `gcry_md_reset'.  ALGO may be given as 0 to

Wenn Du ihn jetzt nach dem gcry_md_close ausgibst, so hatd RES keine
gültigen wert mehr.  Gib Ihn vorher aus oder mache eine Kopie bevor Du
gcry_md_close aufrufst.  Um die Länge des Digests zu ermitteln benutzt
Du am besten

    mdlen = gcry_md_get_algo_dlen (algo);

Ein Testprogram, als Beispiel, findet sich in libgcrypt/tests/hmac.c .


Shalom-Salam,

   Werner

-- 
Die Gedanken sind frei.  Ausnahmen regelt ein Bundesgesetz.




Mehr Informationen über die Mailingliste Gnupg-de