X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_crypto_rsa.c;h=70b388b8f768990bd17702371a386681e07fec3c;hb=2587d268f7c92b09bfc1b0130105b378d6055329;hp=b2d749ab9d94f9bf2ba400d616465e4c91977dc9;hpb=9469cd334f29ca9437e13eb951b53b7690f10be9;p=oweals%2Fgnunet.git diff --git a/src/util/test_crypto_rsa.c b/src/util/test_crypto_rsa.c index b2d749ab9..70b388b8f 100644 --- a/src/util/test_crypto_rsa.c +++ b/src/util/test_crypto_rsa.c @@ -32,9 +32,12 @@ main (int argc, #define RND_BLK_SIZE 4096 unsigned char rnd_blk[RND_BLK_SIZE]; struct GNUNET_CRYPTO_rsa_PrivateKey *priv; + struct GNUNET_CRYPTO_rsa_PrivateKey *priv_copy; struct GNUNET_CRYPTO_rsa_PublicKey *pub; + struct GNUNET_CRYPTO_rsa_PublicKey *pub_copy; struct GNUNET_CRYPTO_rsa_BlindingKey *bkey; struct GNUNET_CRYPTO_rsa_Signature *sig; + struct GNUNET_CRYPTO_rsa_Signature *sig_copy; struct GNUNET_CRYPTO_rsa_Signature *bsig; struct GNUNET_HashCode hash; char *blind_buf; @@ -48,6 +51,9 @@ main (int argc, RND_BLK_SIZE, &hash); priv = GNUNET_CRYPTO_rsa_private_key_create (KEY_SIZE); + priv_copy = GNUNET_CRYPTO_rsa_private_key_dup (priv); + GNUNET_assert (NULL != priv_copy); + GNUNET_assert (0 == GNUNET_CRYPTO_rsa_private_key_cmp (priv, priv_copy)); pub = GNUNET_CRYPTO_rsa_private_key_get_public (priv); /* Encoding */ size_t size; @@ -69,8 +75,13 @@ main (int argc, sig = GNUNET_CRYPTO_rsa_sign (priv, &hash, sizeof (hash)); + sig_copy = GNUNET_CRYPTO_rsa_signature_dup (sig); + GNUNET_assert (NULL != sig); + GNUNET_assert (0 == GNUNET_CRYPTO_rsa_signature_cmp (sig, sig_copy)); + pub_copy = GNUNET_CRYPTO_rsa_public_key_dup (pub); + GNUNET_assert (NULL != pub_copy); GNUNET_assert (GNUNET_OK == - GNUNET_CRYPTO_rsa_verify (&hash, sig, pub)); + GNUNET_CRYPTO_rsa_verify (&hash, sig, pub_copy)); /* corrupt our hash and see if the signature is still valid */ GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, &hash, sizeof (struct GNUNET_HashCode)); @@ -99,8 +110,11 @@ main (int argc, GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_rsa_verify (&hash, sig, pub)); GNUNET_CRYPTO_rsa_signature_free (sig); + GNUNET_CRYPTO_rsa_signature_free (sig_copy); GNUNET_CRYPTO_rsa_private_key_free (priv); + GNUNET_CRYPTO_rsa_private_key_free (priv_copy); GNUNET_CRYPTO_rsa_public_key_free (pub); + GNUNET_CRYPTO_rsa_public_key_free (pub_copy); GNUNET_CRYPTO_rsa_blinding_key_free (bkey); return 0; }