diff options
| author | Ingo Klöcker <[email protected]> | 2026-08-05 14:41:33 +0200 |
|---|---|---|
| committer | Ingo Klöcker <[email protected]> | 2026-08-05 14:41:33 +0200 |
| commit | ecffd0c9a7ec00a156443d6d8d253da09c0cf23b (patch) | |
| tree | 7f8be0ca77101488e43b36688e769ef11207b809 /tests/gpgsm/t-verify.c | |
| parent | Fix handling of missing timestamp in SIGINFO status (diff) | |
| download | gpgme-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.c | 67 |
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; } |
