Add checks to verify incorrect signatures.

This commit is contained in:
Sree Harsha Totakura 2015-01-22 16:23:25 +01:00
parent b119131873
commit acee974c06
2 changed files with 16 additions and 4 deletions

View File

@ -670,8 +670,8 @@ decode_public_key (const struct TALER_RSA_PublicKeyBinaryEncoded *publicKey)
/**
* Verify signature on the given message. The size of the message should be less than
* TALER_RSA_DATA_ENCODING_LENGTH (256) bytes.
* Verify signature on the given message. The size of the message should be
* less than TALER_RSA_DATA_ENCODING_LENGTH (256) bytes.
*
* @param msg the message
* @param size the size of the message
@ -690,7 +690,7 @@ TALER_RSA_verify (const void *msg, size_t size,
gcry_mpi_t val;
gcry_sexp_t psexp;
size_t erroff;
int rc;
gcry_error_t rc;
GNUNET_assert (size <= TALER_RSA_DATA_ENCODING_LENGTH);
if (size > TALER_RSA_DATA_ENCODING_LENGTH)

View File

@ -38,7 +38,7 @@
int
main (int argc, char *argv[])
{
#define RND_BLK_SIZE 4096
#define RND_BLK_SIZE 16524
unsigned char rnd_blk[RND_BLK_SIZE];
struct TALER_RSA_PrivateKey *priv;
struct TALER_RSA_PrivateKeyBinaryEncoded *priv_enc;
@ -72,6 +72,12 @@ main (int argc, char *argv[])
EXITIF (GNUNET_OK != TALER_RSA_verify (&hash, sizeof (hash),
&sig,
&pubkey));
/* corrupt our hash and see if the signature is still valid */
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, &hash,
sizeof (struct GNUNET_HashCode));
EXITIF (GNUNET_OK == TALER_RSA_verify (&hash, sizeof (hash),
&sig,
&pubkey));
/* test blind signing */
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, rnd_blk,
@ -92,6 +98,12 @@ main (int argc, char *argv[])
EXITIF (GNUNET_OK != TALER_RSA_verify (&hash, sizeof (hash),
&sig,
&pubkey));
/* corrupt our hash and see if the signature is still valid */
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, &hash,
sizeof (struct GNUNET_HashCode));
EXITIF (GNUNET_OK == TALER_RSA_verify (&hash, sizeof (hash),
&sig,
&pubkey));
ret = 0; /* all OK */
EXITIF_exit: