diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-03-19 13:21:30 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-03-19 13:21:30 +0000 |
commit | c641b74c2e060528100168f44c074526798c1623 (patch) | |
tree | f4a56b64f3483c03d77f4b2722c416e55e5d4c15 /src/util/test_crypto_ecdh_ecdsa.c | |
parent | 7e76381a7d5ff4fe908542f17f76f81b99a5fb04 (diff) | |
download | gnunet-c641b74c2e060528100168f44c074526798c1623.tar.gz gnunet-c641b74c2e060528100168f44c074526798c1623.zip |
-also cover private key case
Diffstat (limited to 'src/util/test_crypto_ecdh_ecdsa.c')
-rw-r--r-- | src/util/test_crypto_ecdh_ecdsa.c | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/src/util/test_crypto_ecdh_ecdsa.c b/src/util/test_crypto_ecdh_ecdsa.c index 8eb2055ae..39e68abfc 100644 --- a/src/util/test_crypto_ecdh_ecdsa.c +++ b/src/util/test_crypto_ecdh_ecdsa.c | |||
@@ -40,10 +40,8 @@ test_pk() | |||
40 | 40 | ||
41 | /* Generate, cast keys */ | 41 | /* Generate, cast keys */ |
42 | priv1 = GNUNET_CRYPTO_ecdsa_key_create (); | 42 | priv1 = GNUNET_CRYPTO_ecdsa_key_create (); |
43 | memcpy (&priv2, | 43 | GNUNET_CRYPTO_ecdsa_private_to_ecdhe (priv1, |
44 | priv1, | 44 | &priv2); |
45 | sizeof (priv2)); | ||
46 | |||
47 | /* Extract public keys */ | 45 | /* Extract public keys */ |
48 | GNUNET_CRYPTO_ecdsa_key_get_public (priv1, &pub1); | 46 | GNUNET_CRYPTO_ecdsa_key_get_public (priv1, &pub1); |
49 | GNUNET_CRYPTO_ecdhe_key_get_public (&priv2, &pub2); | 47 | GNUNET_CRYPTO_ecdhe_key_get_public (&priv2, &pub2); |
@@ -71,48 +69,42 @@ test_ecdh() | |||
71 | struct GNUNET_CRYPTO_EcdhePublicKey id1c; | 69 | struct GNUNET_CRYPTO_EcdhePublicKey id1c; |
72 | struct GNUNET_CRYPTO_EcdhePublicKey id2c; | 70 | struct GNUNET_CRYPTO_EcdhePublicKey id2c; |
73 | 71 | ||
74 | struct GNUNET_CRYPTO_EcdhePrivateKey *priv1; | 72 | struct GNUNET_CRYPTO_EcdhePrivateKey priv1; |
75 | struct GNUNET_CRYPTO_EcdhePrivateKey *priv2; | 73 | struct GNUNET_CRYPTO_EcdhePrivateKey priv2; |
76 | struct GNUNET_CRYPTO_EcdhePublicKey pub2; | 74 | struct GNUNET_CRYPTO_EcdhePublicKey pub2; |
77 | struct GNUNET_HashCode dh[3]; | 75 | struct GNUNET_HashCode dh[3]; |
78 | 76 | ||
79 | /* Generate, cast keys */ | 77 | /* Generate, cast keys */ |
80 | priv_dsa1 = GNUNET_CRYPTO_ecdsa_key_create (); | 78 | priv_dsa1 = GNUNET_CRYPTO_ecdsa_key_create (); |
81 | priv_dsa2 = GNUNET_CRYPTO_ecdsa_key_create (); | 79 | priv_dsa2 = GNUNET_CRYPTO_ecdsa_key_create (); |
82 | priv1 = (struct GNUNET_CRYPTO_EcdhePrivateKey *) priv_dsa1; | 80 | GNUNET_CRYPTO_ecdsa_private_to_ecdhe (priv_dsa1, |
83 | priv2 = (struct GNUNET_CRYPTO_EcdhePrivateKey *) priv_dsa2; | 81 | &priv1); |
84 | 82 | ||
83 | GNUNET_CRYPTO_ecdsa_private_to_ecdhe (priv_dsa2, | ||
84 | &priv2); | ||
85 | /* Extract public keys */ | 85 | /* Extract public keys */ |
86 | GNUNET_CRYPTO_ecdsa_key_get_public (priv_dsa1, &id1); | 86 | GNUNET_CRYPTO_ecdsa_key_get_public (priv_dsa1, &id1); |
87 | GNUNET_CRYPTO_ecdsa_key_get_public (priv_dsa2, &id2); | 87 | GNUNET_CRYPTO_ecdsa_key_get_public (priv_dsa2, &id2); |
88 | GNUNET_CRYPTO_ecdhe_key_get_public (priv2, &pub2); | 88 | GNUNET_CRYPTO_ecdhe_key_get_public (&priv2, &pub2); |
89 | 89 | ||
90 | /* Do ECDH */ | 90 | /* Do ECDH */ |
91 | GNUNET_CRYPTO_ecdsa_public_to_ecdhe (&id2, | 91 | GNUNET_CRYPTO_ecdsa_public_to_ecdhe (&id2, |
92 | &id2c); | 92 | &id2c); |
93 | GNUNET_CRYPTO_ecdsa_public_to_ecdhe (&id1, | 93 | GNUNET_CRYPTO_ecdsa_public_to_ecdhe (&id1, |
94 | &id1c); | 94 | &id1c); |
95 | GNUNET_CRYPTO_ecc_ecdh (priv1, | 95 | GNUNET_CRYPTO_ecc_ecdh (&priv1, |
96 | &id2c, | 96 | &id2c, |
97 | &dh[0]); | 97 | &dh[0]); |
98 | GNUNET_CRYPTO_ecc_ecdh (priv2, | 98 | GNUNET_CRYPTO_ecc_ecdh (&priv2, |
99 | &id1c, | 99 | &id1c, |
100 | &dh[1]); | 100 | &dh[1]); |
101 | GNUNET_CRYPTO_ecc_ecdh (priv1, &pub2, &dh[2]); | 101 | GNUNET_CRYPTO_ecc_ecdh (&priv1, &pub2, &dh[2]); |
102 | 102 | ||
103 | /* Check that both DH results are equal. */ | 103 | /* Check that both DH results are equal. */ |
104 | GNUNET_assert (0 == memcmp (&dh[0], &dh[1], | 104 | GNUNET_assert (0 == memcmp (&dh[0], &dh[1], |
105 | sizeof (struct GNUNET_HashCode))); | 105 | sizeof (struct GNUNET_HashCode))); |
106 | 106 | GNUNET_free (priv_dsa1); | |
107 | /* FIXME: Maybe it should be the same as with ECDHE. */ | 107 | GNUNET_free (priv_dsa2); |
108 | // GNUNET_assert (0 == memcmp (&dh[1], &dh[2], | ||
109 | // sizeof (struct GNUNET_HashCode))); | ||
110 | // GNUNET_assert (0 == memcmp (&id1, &pub1, | ||
111 | // sizeof (struct GNUNET_CRYPTO_EcdhePublicKey))); | ||
112 | |||
113 | /* Free */ | ||
114 | GNUNET_free (priv1); | ||
115 | GNUNET_free (priv2); | ||
116 | return 0; | 108 | return 0; |
117 | } | 109 | } |
118 | 110 | ||