aboutsummaryrefslogtreecommitdiffstats
path: root/tests/gpgsm/t-verify.c
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2026-08-05 14:41:33 +0200
committerIngo Klöcker <[email protected]>2026-08-05 14:41:33 +0200
commitecffd0c9a7ec00a156443d6d8d253da09c0cf23b (patch)
tree7f8be0ca77101488e43b36688e769ef11207b809 /tests/gpgsm/t-verify.c
parentFix handling of missing timestamp in SIGINFO status (diff)
downloadgpgme-ecffd0c9a7ec00a156443d6d8d253da09c0cf23b.tar.gz
gpgme-ecffd0c9a7ec00a156443d6d8d253da09c0cf23b.zip
tests: Add test to check issuer serial number and issuer name
* tests/gpgsm/Makefile.am (LDADD): Add @GPG_ERROR_LIBS@. * tests/gpgsm/t-support.h (_test, test, safe_strcmp, nonnull, have_gpgsm_version): New. * tests/gpgsm/cms-decrypt.c (nonnull): Remove. * tests/gpgsm/cms-keylist.c (nonnull): Remove. * tests/gpgsm/t-verify.c (test_opaque_without_cert): New. (check_result): Add arguments issuer_serial, issuer_name. Use safe_strcmp to compare fpr. Check issuer_serial and issuer_name. (main): Add expected issuer serial and issuer name to existing check_result calls. Add test to check S/MIME signature without embedded signing certificate. -- GnuPG-bug-id: 8369
Diffstat (limited to 'tests/gpgsm/t-verify.c')
-rw-r--r--tests/gpgsm/t-verify.c67
1 files changed, 63 insertions, 4 deletions
diff --git a/tests/gpgsm/t-verify.c b/tests/gpgsm/t-verify.c
index 681ab02d..0826c2ff 100644
--- a/tests/gpgsm/t-verify.c
+++ b/tests/gpgsm/t-verify.c
@@ -49,10 +49,32 @@ static const char test_sig1[] =
"mRgCXIWcjlHT0DTRLBf192Ve22IyKH00L52CqFsSN3a2sajqRUlXH8RY2D+Al71e\n"
"MYdRclgjObCcoilA8fZ13VR4DiMJVFCxJL4qVWI=\n"
"-----END CMS OBJECT-----\n";
+static const char test_opaque_without_cert[] =
+"-----BEGIN SIGNED MESSAGE-----\n"
+"MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0B\n"
+"BwGggCSABAlTaWduIG1lIQoAAAAAAAAxggLmMIIC4gIBATB+MHgxCzAJBgNVBAYT\n"
+"AkRFMRYwFAYDVQQKEw1nMTAgQ29kZSBHbWJIMRAwDgYDVQQLEwdUZXN0bGFiMR4w\n"
+"HAYDVQQDExVnMTAgQ29kZSBURVNUIENBIDIwMTkxHzAdBgkqhkiG9w0BCQEWEGlu\n"
+"Zm9AZzEwY29kZS5jb20CAhoDMA0GCWCGSAFlAwQCAQUAoIG6MBgGCSqGSIb3DQEJ\n"
+"AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTI2MDcyMjEyMjMzMlowLwYJ\n"
+"KoZIhvcNAQkEMSIEIKmQZ0JOVOovrhBksV3YI2d7ilQAdZccUJYySVzZ0+tYME8G\n"
+"CSqGSIb3DQEJDzFCMEAwCwYJYIZIAWUDBAEuMAsGCWCGSAFlAwQBBjALBglghkgB\n"
+"ZQMEASowCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA0GCSqGSIb3DQEBAQUABIIB\n"
+"gJ0L7QAD5cOvgW+qETBWZIUwnyFRwUdQuNMC71X1SCRJdIzRPecr38Tt0i2dGXA2\n"
+"Y7b6SGy9gOmy+DfqQ7GKPAmDyVqA1+sMOMnsF8CCB3DWdYbOWI18WAoPV49XOdra\n"
+"vVTdXzKgz91WgXjiMUaG8Rrq7kP0F5Yw3LStUKZzO6yOof/YnJQWL9kYo/04m5Lj\n"
+"ZkdwGW1o+WmFUcDO1OIEkxNmHWa/6wDlROT4HqH3ptwhXE9rMj8hA53tc7FlyACQ\n"
+"pqe4U/GSTyoCUmPvdiiKc2SlM7JpiBtujUfIrIGyoPamsYodtQspdEeGzJaoSTwd\n"
+"H9OJAmCRYIUrkAyE9XKediKkN7I7goQ0bbEUPMLCBuYGlaLmi6mjsdkXgBYDCfdl\n"
+"Lp5y93zATlDCNfFtFnpaNsdCiGGRiLQKZOGEfsySa3DSMqXy+CUkv51VVkPf2i9D\n"
+"Qx6gF4XphsJU9W0S+vjSCAFQ6e6zdAKduVLaTRrw29s11uNGdFebcMMPxGlGsNOd\n"
+"jQAAAAAAAA==\n"
+"-----END SIGNED MESSAGE-----\n";
static void
check_result (gpgme_verify_result_t result, int summary, const char *fpr,
+ const char *issuer_serial, const char *issuer_name,
gpgme_error_t status, gpgme_validity_t validity,
unsigned long timestamp)
{
@@ -74,10 +96,22 @@ check_result (gpgme_verify_result_t result, int summary, const char *fpr,
__FILE__, __LINE__, summary, sig->summary);
got_errors = 1;
}
- if (sig->fpr && strcmp (sig->fpr, fpr))
+ if (safe_strcmp (sig->fpr, fpr))
{
fprintf (stderr, "%s:%i: Unexpected fingerprint: %s\n",
- __FILE__, __LINE__, sig->fpr);
+ __FILE__, __LINE__, nonnull (sig->fpr));
+ got_errors = 1;
+ }
+ if (safe_strcmp (sig->issuer_serial, issuer_serial))
+ {
+ fprintf (stderr, "%s:%i: Unexpected s/n: %s\n",
+ __FILE__, __LINE__, nonnull (sig->issuer_serial));
+ got_errors = 1;
+ }
+ if (safe_strcmp (sig->issuer_name, issuer_name))
+ {
+ fprintf (stderr, "%s:%i: Unexpected issuer: %s\n",
+ __FILE__, __LINE__, nonnull (sig->issuer_name));
got_errors = 1;
}
if (gpgme_err_code (sig->status) != status)
@@ -166,7 +200,7 @@ main (void)
fail_if_err (err);
result = gpgme_op_verify_result (ctx);
check_result (result, GPGME_SIGSUM_VALID | GPGME_SIGSUM_GREEN,
- "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E",
+ "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E", NULL, NULL,
GPG_ERR_NO_ERROR, GPGME_VALIDITY_FULL, 0);
show_auditlog (ctx);
@@ -180,13 +214,38 @@ main (void)
fail_if_err (err);
result = gpgme_op_verify_result (ctx);
check_result (result, GPGME_SIGSUM_RED,
- "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E",
+ "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E", NULL, NULL,
GPG_ERR_BAD_SIGNATURE, GPGME_VALIDITY_UNKNOWN, 0);
show_auditlog (ctx);
+ /* Checking a message without embedded signing certificate. */
+ gpgme_data_release (sig);
+ gpgme_data_release (text);
+ err = gpgme_data_new_from_mem (&sig, test_opaque_without_cert,
+ strlen (test_opaque_without_cert), 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);
+ if (have_gpgsm_version ("2.5.22"))
+ check_result (result, GPGME_SIGSUM_KEY_MISSING,
+ NULL, "1A03",
+ "1.2.840.113549.1.9.1=#696E666F40673130636F64652E636F6D,"
+ "CN=g10 Code TEST CA 2019,OU=Testlab,O=g10 Code GmbH,C=DE",
+ GPG_ERR_NO_PUBKEY, GPGME_VALIDITY_UNKNOWN, 0);
+ else
+ check_result (result, GPGME_SIGSUM_KEY_MISSING,
+ NULL, NULL, NULL,
+ GPG_ERR_NO_PUBKEY, GPGME_VALIDITY_UNKNOWN, 0);
+
+ show_auditlog (ctx);
+
gpgme_data_release (text);
gpgme_data_release (sig);
gpgme_release (ctx);
+
return got_errors? 1 : 0;
}