Commit 25d6b340 authored by Emilia Kasper's avatar Emilia Kasper
Browse files

RT 3493: fix RSA test



- Pass in the right ciphertext length to ensure we're indeed testing
  ciphertext corruption (and not truncation).
- Only test one mutation per byte to not make the test too slow.
- Add a separate test for truncated ciphertexts.

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
parent 8db78781
Loading
Loading
Loading
Loading
+20 −12
Original line number Diff line number Diff line
@@ -297,22 +297,30 @@ int main(int argc, char *argv[])
        } else
            printf("OAEP encryption/decryption ok\n");

        /* Try decrypting corrupted ciphertexts */
        /* Try decrypting corrupted ciphertexts. */
        for (n = 0; n < clen; ++n) {
            int b;
            unsigned char saved = ctext[n];
            for (b = 0; b < 256; ++b) {
                if (b == saved)
                    continue;
                ctext[n] = b;
                num = RSA_private_decrypt(num, ctext, ptext, key,
            ctext[n] ^= 1;
            num = RSA_private_decrypt(clen, ctext, ptext, key,
                                          RSA_PKCS1_OAEP_PADDING);
            if (num > 0) {
                printf("Corrupt data decrypted!\n");
                err = 1;
                break;
            }
            ctext[n] ^= 1;
        }

        /* Test truncated ciphertexts, as well as negative length. */
        for (n = -1; n < clen; ++n) {
            num = RSA_private_decrypt(n, ctext, ptext, key,
                                      RSA_PKCS1_OAEP_PADDING);
            if (num > 0) {
                printf("Truncated data decrypted!\n");
                err = 1;
                break;
            }
        }

 next:
        RSA_free(key);
    }