[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r35409 - in gnunet/src: include util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r35409 - in gnunet/src: include util |
Date: |
Thu, 19 Mar 2015 14:21:30 +0100 |
Author: grothoff
Date: 2015-03-19 14:21:30 +0100 (Thu, 19 Mar 2015)
New Revision: 35409
Modified:
gnunet/src/include/gnunet_crypto_lib.h
gnunet/src/util/crypto_ecc.c
gnunet/src/util/test_crypto_ecdh_ecdsa.c
Log:
-also cover private key case
Modified: gnunet/src/include/gnunet_crypto_lib.h
===================================================================
--- gnunet/src/include/gnunet_crypto_lib.h 2015-03-19 13:15:55 UTC (rev
35408)
+++ gnunet/src/include/gnunet_crypto_lib.h 2015-03-19 13:21:30 UTC (rev
35409)
@@ -1055,6 +1055,20 @@
/**
* @ingroup crypto
+ * Convert ECDSA private key to ECDHE private key.
+ * Please be very careful when using this function, as mixing
+ * cryptographic primitives is not always healthy.
+ *
+ * @param ecdsa ecdsa private key
+ * @param ecdhe[OUT] ecdhe private key
+ */
+void
+GNUNET_CRYPTO_ecdsa_private_to_ecdhe (const struct
GNUNET_CRYPTO_EcdsaPrivateKey *ecdsa,
+ struct GNUNET_CRYPTO_EcdhePrivateKey
*ecdhe);
+
+
+/**
+ * @ingroup crypto
* Extract the public key for the given private key.
*
* @param priv the private key
Modified: gnunet/src/util/crypto_ecc.c
===================================================================
--- gnunet/src/util/crypto_ecc.c 2015-03-19 13:15:55 UTC (rev 35408)
+++ gnunet/src/util/crypto_ecc.c 2015-03-19 13:21:30 UTC (rev 35409)
@@ -1561,4 +1561,27 @@
}
+
+/**
+ * @ingroup crypto
+ * Convert ECDSA private key to ECDHE private key.
+ * Please be very careful when using this function, as mixing
+ * cryptographic primitives is not always healthy.
+ *
+ * @param ecdsa ecdsa private key
+ * @param ecdhe[OUT] ecdhe private key
+ */
+void
+GNUNET_CRYPTO_ecdsa_private_to_ecdhe (const struct
GNUNET_CRYPTO_EcdsaPrivateKey *ecdsa,
+ struct GNUNET_CRYPTO_EcdhePrivateKey
*ecdhe)
+{
+ GNUNET_assert (sizeof (struct GNUNET_CRYPTO_EcdhePrivateKey) ==
+ sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey));
+ memcpy (ecdhe,
+ ecdsa,
+ sizeof (struct GNUNET_CRYPTO_EcdhePrivateKey));
+
+}
+
+
/* end of crypto_ecc.c */
Modified: gnunet/src/util/test_crypto_ecdh_ecdsa.c
===================================================================
--- gnunet/src/util/test_crypto_ecdh_ecdsa.c 2015-03-19 13:15:55 UTC (rev
35408)
+++ gnunet/src/util/test_crypto_ecdh_ecdsa.c 2015-03-19 13:21:30 UTC (rev
35409)
@@ -40,10 +40,8 @@
/* Generate, cast keys */
priv1 = GNUNET_CRYPTO_ecdsa_key_create ();
- memcpy (&priv2,
- priv1,
- sizeof (priv2));
-
+ GNUNET_CRYPTO_ecdsa_private_to_ecdhe (priv1,
+ &priv2);
/* Extract public keys */
GNUNET_CRYPTO_ecdsa_key_get_public (priv1, &pub1);
GNUNET_CRYPTO_ecdhe_key_get_public (&priv2, &pub2);
@@ -71,48 +69,42 @@
struct GNUNET_CRYPTO_EcdhePublicKey id1c;
struct GNUNET_CRYPTO_EcdhePublicKey id2c;
- struct GNUNET_CRYPTO_EcdhePrivateKey *priv1;
- struct GNUNET_CRYPTO_EcdhePrivateKey *priv2;
+ struct GNUNET_CRYPTO_EcdhePrivateKey priv1;
+ struct GNUNET_CRYPTO_EcdhePrivateKey priv2;
struct GNUNET_CRYPTO_EcdhePublicKey pub2;
struct GNUNET_HashCode dh[3];
/* Generate, cast keys */
priv_dsa1 = GNUNET_CRYPTO_ecdsa_key_create ();
priv_dsa2 = GNUNET_CRYPTO_ecdsa_key_create ();
- priv1 = (struct GNUNET_CRYPTO_EcdhePrivateKey *) priv_dsa1;
- priv2 = (struct GNUNET_CRYPTO_EcdhePrivateKey *) priv_dsa2;
+ GNUNET_CRYPTO_ecdsa_private_to_ecdhe (priv_dsa1,
+ &priv1);
+ GNUNET_CRYPTO_ecdsa_private_to_ecdhe (priv_dsa2,
+ &priv2);
/* Extract public keys */
GNUNET_CRYPTO_ecdsa_key_get_public (priv_dsa1, &id1);
GNUNET_CRYPTO_ecdsa_key_get_public (priv_dsa2, &id2);
- GNUNET_CRYPTO_ecdhe_key_get_public (priv2, &pub2);
+ GNUNET_CRYPTO_ecdhe_key_get_public (&priv2, &pub2);
/* Do ECDH */
GNUNET_CRYPTO_ecdsa_public_to_ecdhe (&id2,
&id2c);
GNUNET_CRYPTO_ecdsa_public_to_ecdhe (&id1,
&id1c);
- GNUNET_CRYPTO_ecc_ecdh (priv1,
+ GNUNET_CRYPTO_ecc_ecdh (&priv1,
&id2c,
&dh[0]);
- GNUNET_CRYPTO_ecc_ecdh (priv2,
+ GNUNET_CRYPTO_ecc_ecdh (&priv2,
&id1c,
&dh[1]);
- GNUNET_CRYPTO_ecc_ecdh (priv1, &pub2, &dh[2]);
+ GNUNET_CRYPTO_ecc_ecdh (&priv1, &pub2, &dh[2]);
/* Check that both DH results are equal. */
GNUNET_assert (0 == memcmp (&dh[0], &dh[1],
sizeof (struct GNUNET_HashCode)));
-
- /* FIXME: Maybe it should be the same as with ECDHE. */
- // GNUNET_assert (0 == memcmp (&dh[1], &dh[2],
- // sizeof (struct GNUNET_HashCode)));
- // GNUNET_assert (0 == memcmp (&id1, &pub1,
- // sizeof (struct GNUNET_CRYPTO_EcdhePublicKey)));
-
- /* Free */
- GNUNET_free (priv1);
- GNUNET_free (priv2);
+ GNUNET_free (priv_dsa1);
+ GNUNET_free (priv_dsa2);
return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r35409 - in gnunet/src: include util,
gnunet <=