/* This file is part of GNUnet. Copyright (C) 2004, 2005, 2006 Christian Grothoff (and other contributing authors) 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 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** * @file util/test_crypto_ksk.c * @brief testcase for util/crypto_ksk.c * @author Christian Grothoff */ #include "platform.h" #include "gnunet_common.h" #include "gnunet_crypto_lib.h" #include "gnunet_signatures.h" #include "gnunet_time_lib.h" #define TESTSTRING "Hello World\0" #define MAX_TESTVAL 20 #define UNIQUE_ITER 6 #define ITER 25 static int testCorrectKey () { const char *want = "010601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b73c215f7a5e6b09bec55713c901786c09324a150980e014bdb0d04426934929c3b4971a9711af5455536cd6eeb8bfa004ee904972a737455f53c752987d8c82b755bc02882b44950c4acdc1672ba74c3b94d81a4c1ea3d74e7700ae5594c3a4f3c559e4bff2df6844fac302e4b66175e14dc8bad3ce44281d2fec1a1abef06301010000"; GNUNET_HashCode in; struct GNUNET_CRYPTO_RsaPrivateKey *hostkey; struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey; int i; char out[3]; 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)) { 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) { 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