diff options
author | Werner Koch <[email protected]> | 2000-12-12 13:31:25 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2000-12-12 13:31:25 +0000 |
commit | edcc338a593d703335a98f39a44ff26307927458 (patch) | |
tree | 3ed5974c2f93de0b46c0962986e85efaeced38fa /tests | |
parent | Okay, it runs at least on Windows 95 (diff) | |
download | gpgme-edcc338a593d703335a98f39a44ff26307927458.tar.gz gpgme-edcc338a593d703335a98f39a44ff26307927458.zip |
Add a passphrase callback and minor changes to the interface
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rw-r--r-- | tests/t-decrypt.c | 43 | ||||
-rw-r--r-- | tests/t-sign.c | 60 | ||||
-rw-r--r-- | tests/t-verify.c | 7 |
4 files changed, 80 insertions, 32 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 5e03d459..51d1195a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -22,7 +22,7 @@ all-local: ./pubring.gpg ./secring.gpg -gpg --homedir . --import $(srcdir)/pubdemo.asc ./secring.gpg: ./Alpha/Secret.gpg - -gpg --homedir . --import Alpha/Secret.gpg Zulu/Secret.gpg + -gpg --homedir . --allow-secret-key-import --import Alpha/Secret.gpg Zulu/Secret.gpg ./Alpha/Secret.gpg: secdemo.asc srcdir=$(srcdir) $(srcdir)/mkdemodirs diff --git a/tests/t-decrypt.c b/tests/t-decrypt.c index dd646895..677d3822 100644 --- a/tests/t-decrypt.c +++ b/tests/t-decrypt.c @@ -57,28 +57,23 @@ print_data ( GpgmeData dh ) } -static int -passphrase_cb ( void *opaque, char *buffer, size_t length, size_t *nread ) +static const char * +passphrase_cb ( void *opaque, const char *desc, void *r_hd ) { - struct passphrase_cb_info_s *info = opaque; - const char *desc; - - assert (info); - assert (info->c); - if ( !buffer || !length || !nread ) - return 0; /* those values are reserved for extensions */ - if ( info->did_it ) - return -1; /* eof */ - - desc = gpgme_get_prompt (info->c, 1); - if (desc) - fprintf (stderr, "Request passphrase for '%s'\n", desc ); - if ( length < 3 ) - return -1; /* FIXME - sending an EOF here is wrong */ - memcpy (buffer, "abc", 3 ); - *nread = 3; - info->did_it = 1; - return 0; + const char *pass; + + if ( !desc ) { + /* cleanup by looking at *r_hd */ + + + return NULL; + } + + pass = "abc"; + fprintf (stderr, "%% requesting passphrase for `%s': ", desc ); + fprintf (stderr, "sending `%s'\n", pass ); + + return pass; } @@ -111,10 +106,10 @@ main (int argc, char **argv ) do { err = gpgme_new (&ctx); fail_if_err (err); - if ( 0 && !getenv("GPG_AGENT_INFO") ) { + if ( !getenv("GPG_AGENT_INFO") ) { memset ( &info, 0, sizeof info ); info.c = ctx; - gpgme_data_new_with_read_cb ( &pwdata, passphrase_cb, &info ); + gpgme_set_passphrase_cb ( ctx, passphrase_cb, &info ); } err = gpgme_data_new_from_file ( &in, cipher_1_asc, 1 ); @@ -123,7 +118,7 @@ main (int argc, char **argv ) err = gpgme_data_new ( &out ); fail_if_err (err); - err = gpgme_op_decrypt (ctx, pwdata, in, out ); + err = gpgme_op_decrypt (ctx, in, out ); fail_if_err (err); fflush (NULL); diff --git a/tests/t-sign.c b/tests/t-sign.c index c09b2c96..79f6b5cb 100644 --- a/tests/t-sign.c +++ b/tests/t-sign.c @@ -47,6 +47,24 @@ print_data ( GpgmeData dh ) fail_if_err (err); } +static const char * +passphrase_cb ( void *opaque, const char *desc, void *r_hd ) +{ + const char *pass; + + if ( !desc ) { + /* cleanup by looking at *r_hd */ + + + return NULL; + } + + pass = "abc"; + fprintf (stderr, "%% requesting passphrase for `%s': ", desc ); + fprintf (stderr, "sending `%s'\n", pass ); + + return pass; +} int @@ -59,25 +77,55 @@ main (int argc, char **argv ) do { err = gpgme_new (&ctx); fail_if_err (err); + if ( !getenv("GPG_AGENT_INFO") ) { + gpgme_set_passphrase_cb ( ctx, passphrase_cb, NULL ); + } + + gpgme_set_textmode (ctx, 1); + gpgme_set_armor (ctx, 1); err = gpgme_data_new_from_mem ( &in, "Hallo Leute\n", 12, 0 ); fail_if_err (err); + /* first a normal signature */ err = gpgme_data_new ( &out ); fail_if_err (err); - - gpgme_set_textmode (ctx, 1); - gpgme_set_armor (ctx, 1); - err = gpgme_op_sign (ctx, in, out ); + err = gpgme_op_sign (ctx, in, out, GPGME_SIG_MODE_NORMAL ); + fail_if_err (err); + fflush (NULL); + fputs ("Begin Result:\n", stdout ); + print_data (out); + fputs ("End Result.\n", stdout ); + gpgme_data_release (out); + gpgme_data_rewind (in); + + /* now a detached signature */ + err = gpgme_data_new ( &out ); fail_if_err (err); + err = gpgme_op_sign (ctx, in, out, GPGME_SIG_MODE_DETACH ); + fail_if_err (err); + fflush (NULL); + fputs ("Begin Result:\n", stdout ); + print_data (out); + fputs ("End Result.\n", stdout ); + gpgme_data_release (out); + gpgme_data_rewind (in); + + /* And finally a cleartext signature */ + err = gpgme_data_new ( &out ); + fail_if_err (err); + err = gpgme_op_sign (ctx, in, out, GPGME_SIG_MODE_CLEAR ); + fail_if_err (err); fflush (NULL); fputs ("Begin Result:\n", stdout ); print_data (out); fputs ("End Result.\n", stdout ); - - gpgme_data_release (in); gpgme_data_release (out); + gpgme_data_rewind (in); + + /* ready */ + gpgme_data_release (in); gpgme_release (ctx); } while ( argc > 1 && !strcmp( argv[1], "--loop" ) ); diff --git a/tests/t-verify.c b/tests/t-verify.c index ac9e3376..2b91a99a 100644 --- a/tests/t-verify.c +++ b/tests/t-verify.c @@ -35,7 +35,7 @@ static const char test_sig1[] = "ZgIAn0204PBR7yxSdQx6CFxugstNqmRv\n" "=yku6\n" "-----END PGP SIGNATURE-----\n" -#elif 0 +#elif 0 "-----BEGIN PGP SIGNATURE-----\n" "Version: GnuPG v1.0.4-2 (GNU/Linux)\n" "Comment: For info see http://www.gnupg.org\n" @@ -108,14 +108,19 @@ main (int argc, char **argv ) 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 valid message:\n"); err = gpgme_op_verify (ctx, sig, text, &status ); print_sig_stat ( status ); fail_if_err (err); + if ( (nota=gpgme_get_notation (ctx)) ) printf ("---Begin Notation---\n%s---End Notation---\n", nota ); |