err = gpgme_op_decrypt (ctx, in, out);
err = gpgme_op_decrypt_verify (ctx, in, out);
op_decrypt (int (*pass_cb)(void *, const char*, const char*, int, int),	    void *pass_cb_value,	    const char *inbuf, char **outbuf){    gpgme_data_t in=NULL, out=NULL;    gpgme_ctx_t ctx;    gpgme_error_t err;        *outbuf = NULL;    op_init ();    err = gpgme_new (&ctx);    if (err)	return err;        err = gpgme_data_new_from_mem (&in, inbuf, strlen (inbuf), 1);    if (err)	goto leave;    err = gpgme_data_new (&out);    if (err)	goto leave;    gpgme_set_passphrase_cb (ctx, pass_cb, pass_cb_value);    err = gpgme_op_decrypt (ctx, in, out);    if (!err) {	size_t n =0;	*outbuf = gpgme_data_release_and_get_mem (out, &n);	(*outbuf)[n] = 0;	out = NULL;    }leave:        gpgme_release (ctx);    gpgme_data_release (in);    gpgme_data_release (out);    return err;}