+ /* Checking a valid message. */
+ err = gpgme_data_new_from_mem (&text, test_text1, strlen (test_text1), 0);
+ fail_if_err (err);
+ err = gpgme_data_new_from_mem (&sig, test_sig1, strlen (test_sig1), 0);
+ fail_if_err (err);
+ err = gpgme_op_verify (ctx, sig, text, NULL);
+ fail_if_err (err);
+ result = gpgme_op_verify_result (ctx);
+ check_result (result, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+ GPG_ERR_NO_ERROR, 1);
+
+ /* Checking a manipulated message. */
+ gpgme_data_release (text);
+ err = gpgme_data_new_from_mem (&text, test_text1f, strlen (test_text1f), 0);
+ fail_if_err (err);
+ gpgme_data_seek (sig, 0, SEEK_SET);
+ err = gpgme_op_verify (ctx, sig, text, NULL);
+ fail_if_err (err);
+ result = gpgme_op_verify_result (ctx);
+ check_result (result, GPGME_SIGSUM_RED, "2D727CC768697734",
+ GPG_ERR_BAD_SIGNATURE, 0);
+
+ /* Checking a normal signature. */
+ gpgme_data_release (sig);
+ gpgme_data_release (text);
+ err = gpgme_data_new_from_mem (&sig, test_sig2, strlen (test_sig2), 0);
+ fail_if_err (err);
+ err = gpgme_data_new (&text);
+ fail_if_err (err);
+ err = gpgme_op_verify (ctx, sig, NULL, text);
+ fail_if_err (err);
+ result = gpgme_op_verify_result (ctx);
+ check_result (result, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+ GPG_ERR_NO_ERROR, 0);
+
+
+ /* Checking an invalid message. */
+ gpgme_data_release (sig);
+ gpgme_data_release (text);
+ err = gpgme_data_new_from_mem (&sig, double_plaintext_sig,
+ strlen (double_plaintext_sig), 0);
+ fail_if_err (err);
+ err = gpgme_data_new (&text);
+ fail_if_err (err);
+ err = gpgme_op_verify (ctx, sig, NULL, text);
+ if (gpgme_err_code (err) != GPG_ERR_BAD_DATA)
+ {
+ fprintf (stderr, "%s:%i: Double plaintext message not detected\n",
+ __FILE__, __LINE__);
+ exit (1);
+ }
+
+ gpgme_data_release (sig);
+ gpgme_data_release (text);
+ gpgme_release (ctx);
+ return 0;
+}