WiP
[oweals/gnunet.git] / src / util / crypto_ksk.c
index 687aece16e7d7f9c6645ced48bbd574b48fe27ce..7a0b4410a07df58766e17ebad1599c448e611d09 100644 (file)
@@ -95,7 +95,7 @@ mpz_randomize (gcry_mpi_t n, unsigned int nbits, GNUNET_HashCode * rnd)
          gcry_mpi_mul_ui(n, n, 1 << (sizeof(uint32_t)*4));
          gcry_mpi_mul_ui(n, n, 1 << (sizeof(uint32_t)*4));
 #endif
-          gcry_mpi_add_ui(n, n, ((uint32_t *) &tmp)[j]);
+          gcry_mpi_add_ui(n, n, ntohl (((uint32_t *) &tmp)[j]));
         }
       hc = tmp;
     }
@@ -199,6 +199,22 @@ leave:
   return rc;
 }
 
+/**
+ * If target != size, move target bytes to the
+ * end of the size-sized buffer and zero out the
+ * first target-size bytes.
+ */
+static void
+adjust (unsigned char *buf, size_t size, size_t target)
+{
+  if (size < target)
+    {
+      memmove (&buf[target - size], buf, size);
+      memset (buf, 0, target - size);
+    }
+}
+
+
 static void
 gen_prime (gcry_mpi_t *ptest, unsigned int nbits, GNUNET_HashCode * hc)
 {
@@ -332,6 +348,8 @@ gen_prime (gcry_mpi_t *ptest, unsigned int nbits, GNUNET_HashCode * hc)
                         gcry_mpi_print (GCRYMPI_FMT_USG, 
                                         (unsigned char*) &mods[i], written, &written, 
                                         tmp));
+         adjust ( (unsigned char*) &mods[i], written, sizeof (unsigned int));
+         mods[i] = ntohl (mods[i]);
        }
       /* Now try some primes starting with prime. */
       for (step = 0; step < 20000; step += 2)