X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_crypto_ksk.c;h=f062e31f500fadd1c3fbe7c48d8678e7b7f06fff;hb=72c8645af31896829b674b575c5375706f362a30;hp=c8555b5de4231085ee2388fc9a97db3383427a15;hpb=0a217a8df1657b4334b55b0e4a6c7837a8dbcfd9;p=oweals%2Fgnunet.git diff --git a/src/util/test_crypto_ksk.c b/src/util/test_crypto_ksk.c index c8555b5de..f062e31f5 100644 --- a/src/util/test_crypto_ksk.c +++ b/src/util/test_crypto_ksk.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -25,9 +25,9 @@ */ #include "platform.h" #include "gnunet_common.h" -#include "gnunet_crypto_lib.h" +#include "gnunet_util_lib.h" #include "gnunet_signatures.h" -#include "gnunet_time_lib.h" + #define TESTSTRING "Hello World\0" #define MAX_TESTVAL 20 @@ -36,50 +36,91 @@ static int -testMultiKey (const char *word) +testCorrectKey () { - GNUNET_HashCode in; + const char *want = + "010601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b73c215f7a5e6b09bec55713c901786c09324a150980e014bdb0d04426934929c3b4971a9711af5455536cd6eeb8bfa004ee904972a737455f53c752987d8c82b755bc02882b44950c4acdc1672ba74c3b94d81a4c1ea3d74e7700ae5594c3a4f3c559e4bff2df6844fac302e4b66175e14dc8bad3ce44281d2fec1a1abef06301010000"; + struct GNUNET_HashCode in; struct GNUNET_CRYPTO_RsaPrivateKey *hostkey; struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey; - struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey1; int i; + char out[3]; - fprintf (stderr, "Testing KBlock key uniqueness (%s) ", word); - GNUNET_CRYPTO_hash (word, strlen (word), &in); + FPRINTF (stderr, "%s", "Testing KBlock key correctness"); + GNUNET_CRYPTO_hash ("X", strlen ("X"), &in); hostkey = GNUNET_CRYPTO_rsa_key_create_from_hash (&in); if (hostkey == NULL) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + GNUNET_CRYPTO_rsa_key_get_public (hostkey, &pkey); + GNUNET_CRYPTO_rsa_key_free (hostkey); +#if 0 + for (i = 0; i < sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded); i++) + printf ("%02x", ((unsigned char *) &pkey)[i]); + printf ("\n"); +#endif + for (i = 0; i < sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded); i++) + { + snprintf (out, sizeof (out), "%02x", ((unsigned char *) &pkey)[i]); + if (0 != strncmp (out, &want[i * 2], 2)) { - GNUNET_break (0); + FPRINTF (stderr, " Failed! Wanted %.2s but got %2s at %d\n", &want[i * 2], + out, i); return GNUNET_SYSERR; } + } + FPRINTF (stderr, "%s", " OK\n"); + return GNUNET_OK; +} + + +static int +testMultiKey (const char *word) +{ + struct GNUNET_HashCode in; + struct GNUNET_CRYPTO_RsaPrivateKey *hostkey; + struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey; + struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey1; + int i; + + FPRINTF (stderr, "Testing KBlock key uniqueness (%s) ", word); + GNUNET_CRYPTO_hash (word, strlen (word), &in); + hostkey = GNUNET_CRYPTO_rsa_key_create_from_hash (&in); + if (hostkey == NULL) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } GNUNET_CRYPTO_rsa_key_get_public (hostkey, &pkey); /* - for (i=0;i