diff options
author | Marcus Brinkmann <[email protected]> | 2003-04-28 23:59:03 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2003-04-28 23:59:03 +0000 |
commit | 30cdf132842cec187e428af413dbc2c8fafa341b (patch) | |
tree | db677058ae833586200d7660791f39e776efc8fc /tests/gpg/t-verify.c | |
parent | 2003-04-28 Marcus Brinkmann <[email protected]> (diff) | |
download | gpgme-30cdf132842cec187e428af413dbc2c8fafa341b.tar.gz gpgme-30cdf132842cec187e428af413dbc2c8fafa341b.zip |
doc/
2003-04-28 Marcus Brinkmann <[email protected]>
* gpgme.texi (Verify): Rewritten to take into account new and
deprecated functions and data types.
gpgme/
2003-04-28 Marcus Brinkmann <[email protected]>
* gpgme.h (struct _gpgme_sig_notation): New structure.
(GpgmeSigNotation): New type.
(struct _gpgme_signature): New structure.
(GpgmeSignature): New type.
(struct _gpgme_op_verify_result): New structure.
(GpgmeVerifyResult): New type.
(gpgme_op_verify_result): New prototype.
(gpgme_get_notation): Remove prototype.
* ops.h (_gpgme_op_verify_init_result): New prototype.
(_gpgme_verify_status_handler): Change first argument to void *.
* util.h (_gpgme_decode_percent_string, _gpgme_map_gnupg_error):
New prototypes.
* conversion.c (_gpgme_decode_percent_string): New function.
(gnupg_errors): New static global.
(_gpgme_map_gnupg_error): New function.
* gpgme.c (gpgme_release): Don't release CTX->notation.
(gpgme_get_notation): Remove function.
* decrypt-verify.c (_gpgme_op_decrypt_verify_start): Call
_gpgme_op_verify_init_result.
* verify.c: Do not include <stdio.h>, <assert.h> and "key.h", but
do include "gpgme.h".
(struct verify_result): Replace with ...
(op_data_t): ... this type.
(release_verify_result): Remove function.
(release_op_data): New function.
(is_token): Remove function.
(skip_token): Remove function.
(copy_token): Remove function.
(gpgme_op_verify_result): New function.
(calc_sig_summary): Rewritten.
(finish_sig): Remove function.
(parse_new_sig): New function.
(parse_valid_sig): New function.
(parse_notation): New function.
(parse_trust): New function.
(parse_error): New function.
(_gpgme_verify_status_handler): Rewritten. Change first argument
to void *.
(_gpgme_op_verify_start): Rework error handling. Call
_gpgme_op_verify_init_result.
(gpgme_op_verify): Do not release or clear CTX->notation.
(gpgme_get_sig_status): Rewritten.
(gpgme_get_sig_string_attr): Likewise.
(gpgme_get_sig_ulong_attr): Likewise.
(gpgme_get_sig_key): Likewise.
Diffstat (limited to 'tests/gpg/t-verify.c')
-rw-r--r-- | tests/gpg/t-verify.c | 282 |
1 files changed, 163 insertions, 119 deletions
diff --git a/tests/gpg/t-verify.c b/tests/gpg/t-verify.c index 1dcca5db..7b5bc36e 100644 --- a/tests/gpg/t-verify.c +++ b/tests/gpg/t-verify.c @@ -112,6 +112,7 @@ status_string (GpgmeSigStat status) return s; } + static const char * validity_string (GpgmeValidity val) { @@ -132,138 +133,181 @@ validity_string (GpgmeValidity val) static void -print_sig_stat ( GpgmeCtx ctx, GpgmeSigStat status ) +print_sig_stat (GpgmeCtx ctx, GpgmeSigStat status) { - const char *s; - time_t created; - int idx; - GpgmeKey key; + const char *s; + time_t created; + int idx; + GpgmeKey key; - printf ("Verification Status: %s\n", status_string (status)); + printf ("Verification Status: %s\n", status_string (status)); - for(idx=0; (s=gpgme_get_sig_status (ctx, idx, &status, &created)); idx++ ) { - printf ("sig %d: created: %lu expires: %lu status: %s\n", - idx, (unsigned long)created, - gpgme_get_sig_ulong_attr (ctx, idx, GPGME_ATTR_EXPIRE, 0), - status_string(status) ); - printf ("sig %d: fpr/keyid: `%s' validity: %s\n", - idx, s, - validity_string (gpgme_get_sig_ulong_attr - (ctx, idx, GPGME_ATTR_VALIDITY, 0)) ); - if ( !gpgme_get_sig_key (ctx, idx, &key) ) { - char *p = gpgme_key_get_as_xml ( key ); - printf ("sig %d: key object:\n%s\n", idx, p ); - free (p); - gpgme_key_release (key); + for (idx = 0; (s = gpgme_get_sig_status (ctx, idx, &status, &created)); idx++) + { + printf ("sig %d: created: %lu expires: %lu status: %s\n", + idx, (unsigned long) created, + gpgme_get_sig_ulong_attr (ctx, idx, GPGME_ATTR_EXPIRE, 0), + status_string (status)); + printf ("sig %d: fpr/keyid: `%s' validity: %s\n", + idx, s, + validity_string (gpgme_get_sig_ulong_attr + (ctx, idx, GPGME_ATTR_VALIDITY, 0))); + if (!gpgme_get_sig_key (ctx, idx, &key)) + { + char *p = gpgme_key_get_as_xml (key); + printf ("sig %d: key object:\n%s\n", idx, p); + free (p); + gpgme_key_release (key); } } } int -main (int argc, char **argv ) +main (int argc, char *argv[]) { - GpgmeCtx ctx; - GpgmeError err; - GpgmeData sig, text; - GpgmeSigStat status; - char *nota; - int n = 0; - size_t len; - int j; - - err = gpgme_new (&ctx); - fail_if_err (err); + GpgmeCtx ctx; + GpgmeError err; + GpgmeData sig, text; + GpgmeSigStat status; + GpgmeVerifyResult result; + GpgmeSigNotation notation; + char *nota; + int n = 0; + size_t len; + int j; - do { - err = gpgme_data_new_from_mem ( &text, - test_text1, strlen (test_text1), 0 ); - fail_if_err (err); - #if 1 - err = gpgme_data_new_from_mem ( &sig, - test_sig1, strlen (test_sig1), 0 ); - #else - err = gpgme_data_new_from_file ( &sig, "xx1", 1 ); - #endif - fail_if_err (err); + err = gpgme_new (&ctx); + fail_if_err (err); - puts ("checking a valid message:\n"); - err = gpgme_op_verify (ctx, sig, text, NULL); - fail_if_err (err); - if (!gpgme_get_sig_status (ctx, 0, &status, NULL)) - { - fprintf (stderr, "%s:%d: No signature\n", __FILE__, __LINE__); - exit (1); - } - print_sig_stat (ctx, status); - if (status != GPGME_SIG_STAT_GOOD) - { - fprintf (stderr, "%s:%d: Wrong sig stat\n", __FILE__, __LINE__); - exit (1); - } - - if ((nota = gpgme_get_notation (ctx))) - printf ("---Begin Notation---\n%s---End Notation---\n", nota ); - - puts ("checking a manipulated message:\n"); - gpgme_data_release (text); - err = gpgme_data_new_from_mem (&text, - test_text1f, strlen (test_text1f), 0); - fail_if_err (err); - gpgme_data_rewind (sig); - err = gpgme_op_verify (ctx, sig, text, NULL); - fail_if_err (err); - if (!gpgme_get_sig_status (ctx, 0, &status, NULL)) - { - fprintf (stderr, "%s:%d: No signature\n", __FILE__, __LINE__); - exit (1); - } - print_sig_stat (ctx, status); - if (status != GPGME_SIG_STAT_BAD) - { - fprintf (stderr, "%s:%d: Wrong sig stat\n", __FILE__, __LINE__); - exit (1); - } - if ((nota = gpgme_get_notation (ctx))) - printf ("---Begin Notation---\n%s---End Notation---\n", nota ); + do + { + err = gpgme_data_new_from_mem (&text, + test_text1, strlen (test_text1), 0); + fail_if_err (err); +#if 1 + err = gpgme_data_new_from_mem (&sig, + test_sig1, strlen (test_sig1), 0); +#else + err = gpgme_data_new_from_file (&sig, "xx1", 1); +#endif + fail_if_err (err); - puts ("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); - if (!gpgme_get_sig_status (ctx, 0, &status, NULL)) - { - fprintf (stderr, "%s:%d: No signature\n", __FILE__, __LINE__); - exit (1); - } + puts ("checking a valid message:\n"); + err = gpgme_op_verify (ctx, sig, text, NULL); + fail_if_err (err); + if (!gpgme_get_sig_status (ctx, 0, &status, NULL)) + { + fprintf (stderr, "%s:%d: No signature\n", __FILE__, __LINE__); + exit (1); + } + print_sig_stat (ctx, status); + if (status != GPGME_SIG_STAT_GOOD) + { + fprintf (stderr, "%s:%d: Wrong sig stat\n", __FILE__, __LINE__); + exit (1); + } - nota = gpgme_data_release_and_get_mem (text, &len); - for (j = 0; j < len; j++) + result = gpgme_op_verify_result (ctx); + notation = result->signatures->notations; + if (notation) + { + printf ("---Begin Notation---\n"); + while (notation) + { + if (notation->name) + printf ("%s: %s\n", notation->name, notation->value); + else + printf ("Policy URL: %s\n", notation->value); + notation = notation->next; + } + printf ("---End Notation---\n"); + } + + puts ("checking a manipulated message:\n"); + gpgme_data_release (text); + err = gpgme_data_new_from_mem (&text, + test_text1f, strlen (test_text1f), 0); + fail_if_err (err); + gpgme_data_rewind (sig); + err = gpgme_op_verify (ctx, sig, text, NULL); + fail_if_err (err); + if (!gpgme_get_sig_status (ctx, 0, &status, NULL)) + { + fprintf (stderr, "%s:%d: No signature\n", __FILE__, __LINE__); + exit (1); + } + print_sig_stat (ctx, status); + if (status != GPGME_SIG_STAT_BAD) + { + fprintf (stderr, "%s:%d: Wrong sig stat\n", __FILE__, __LINE__); + exit (1); + } + result = gpgme_op_verify_result (ctx); + notation = result->signatures->notations; + if (notation) + { + printf ("---Begin Notation---\n"); + while (notation) + { + if (notation->name) + printf ("%s: %s\n", notation->name, notation->value); + else + printf ("Policy URL: %s\n", notation->value); + notation = notation->next; + } + printf ("---End Notation---\n"); + } + + puts ("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); + if (!gpgme_get_sig_status (ctx, 0, &status, NULL)) + { + fprintf (stderr, "%s:%d: No signature\n", __FILE__, __LINE__); + exit (1); + } + + nota = gpgme_data_release_and_get_mem (text, &len); + for (j = 0; j < len; j++) putchar (nota[j]); - if (strncmp (nota, test_text1, strlen (test_text1))) - { - fprintf (stderr, "%s:%d: Wrong plaintext\n", __FILE__, __LINE__); - exit (1); - } - - print_sig_stat (ctx, status); - if (status != GPGME_SIG_STAT_GOOD) - { - fprintf (stderr, "%s:%d: Wrong sig stat\n", __FILE__, __LINE__); - exit (1); - } - - if ((nota = gpgme_get_notation (ctx))) - printf ("---Begin Notation---\n%s---End Notation---\n", nota); + if (strncmp (nota, test_text1, strlen (test_text1))) + { + fprintf (stderr, "%s:%d: Wrong plaintext\n", __FILE__, __LINE__); + exit (1); + } + + print_sig_stat (ctx, status); + if (status != GPGME_SIG_STAT_GOOD) + { + fprintf (stderr, "%s:%d: Wrong sig stat\n", __FILE__, __LINE__); + exit (1); + } + result = gpgme_op_verify_result (ctx); + notation = result->signatures->notations; + if (notation) + { + printf ("---Begin Notation---\n"); + while (notation) + { + if (notation->name) + printf ("%s: %s\n", notation->name, notation->value); + else + printf ("Policy URL: %s\n", notation->value); + notation = notation->next; + } + printf ("---End Notation---\n"); + } + + gpgme_data_release (sig); + } + while (argc > 1 && !strcmp (argv[1], "--loop") && ++n < 20); - gpgme_data_release (sig); - -} while ( argc > 1 && !strcmp( argv[1], "--loop" ) && ++n < 20 ); - gpgme_release (ctx); - - return 0; + gpgme_release (ctx); + return 0; } |