aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t-sign.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t-sign.c')
-rw-r--r--tests/t-sign.c60
1 files changed, 54 insertions, 6 deletions
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" ) );