Hey hackers,

I'm seeing some behavior that confuses me a bit. I'm sure I'm doing
something wrong, but I can't tell.

Here's a minimal example:

/
| #include <stdio.h>
| #include <nettle/rsa.h>
| 
| int main ( int argc, char ** argv ) {
|     struct sha1_ctx hash_ctx;
|     uint8_t headers[] = {
|         0xDE, 0xEA, 0xAD,
|         0xBE, 0xEF
|     };
|     sha1_update(&hash_ctx, 5, headers);
| 
|     for (int i = 0; i < 3; ++i) {
|         uint8_t _fingerprint[SHA1_DIGEST_SIZE];
|         sha1_digest(&hash_ctx, SHA1_DIGEST_SIZE, _fingerprint);
|         for (int i = 0; i < SHA1_DIGEST_SIZE; ++i)
|             printf("%02X ", _fingerprint[i]);
|         printf("\n");
|     }
| }
\

The output, when run is:

/
| 89 22 AA 95 F2 02 C9 BB 35 FC 2D A2 DE 22 BE 48 2B B6 6C 1D 
| DA 39 A3 EE 5E 6B 4B 0D 32 55 BF EF 95 60 18 90 AF D8 07 09 
| DA 39 A3 EE 5E 6B 4B 0D 32 55 BF EF 95 60 18 90 AF D8 07 09 
\

(that last line is stable after the inital hash)

Does doing the sha1_digest alter state in some way? I can't image it is, but
then how does this behavior crop up?

Much love, thanks all!

Cheers,
  Paul

--
#define sizeof(x) rand()
:wq

Attachment: signature.asc
Description: Digital signature

_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to