NeoMutt  2023-11-03-85-g512e01
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
Gpgme Function API

Prototype for a Gpgme Function. More...

+ Collaboration diagram for Gpgme Function API:

Functions

static int op_exit (struct GpgmeData *gd, int op)
 Exit this menu - Implements gpgme_function_t -.
 
static int op_generic_select_entry (struct GpgmeData *gd, int op)
 Select the current entry - Implements gpgme_function_t -.
 
static int op_verify_key (struct GpgmeData *gd, int op)
 Verify a PGP public key - Implements gpgme_function_t -.
 
static int op_view_id (struct GpgmeData *gd, int op)
 View the key's user id - Implements gpgme_function_t -.
 

Detailed Description

Prototype for a Gpgme Function.

Parameters
menuMenu
opOperation to perform, e.g. OP_GENERIC_SELECT_ENTRY
Return values
enumFunctionRetval

Function Documentation

◆ op_exit()

static int op_exit ( struct GpgmeData gd,
int  op 
)
static

Exit this menu - Implements gpgme_function_t -.

Definition at line 719 of file gpgme_functions.c.

720{
721 gd->done = true;
722 return FR_SUCCESS;
723}
@ FR_SUCCESS
Valid function - successfully performed.
Definition: dispatcher.h:39
bool done
Should we close the Dialog?

◆ op_generic_select_entry()

static int op_generic_select_entry ( struct GpgmeData gd,
int  op 
)
static

Select the current entry - Implements gpgme_function_t -.

Definition at line 728 of file gpgme_functions.c.

729{
730 const int index = menu_get_index(gd->menu);
731 struct CryptKeyInfo *cur_key = gd->key_table[index];
732 /* FIXME make error reporting more verbose - this should be
733 * easy because GPGME provides more information */
735 {
736 if (!crypt_key_is_valid(cur_key))
737 {
738 mutt_error(_("This key can't be used: expired/disabled/revoked"));
739 return FR_ERROR;
740 }
741 }
742
743 if (OptPgpCheckTrust && (!crypt_id_is_valid(cur_key) || !crypt_id_is_strong(cur_key)))
744 {
745 const char *warn_s = NULL;
746 char buf2[1024];
747
748 if (cur_key->flags & KEYFLAG_CANTUSE)
749 {
750 warn_s = _("ID is expired/disabled/revoked. Do you really want to use the key?");
751 }
752 else
753 {
754 warn_s = "??";
755 switch (cur_key->validity)
756 {
757 case GPGME_VALIDITY_NEVER:
758 warn_s = _("ID is not valid. Do you really want to use the key?");
759 break;
760 case GPGME_VALIDITY_MARGINAL:
761 warn_s = _("ID is only marginally valid. Do you really want to use the key?");
762 break;
763 case GPGME_VALIDITY_FULL:
764 case GPGME_VALIDITY_ULTIMATE:
765 break;
766 case GPGME_VALIDITY_UNKNOWN:
767 case GPGME_VALIDITY_UNDEFINED:
768 warn_s = _("ID has undefined validity. Do you really want to use the key?");
769 break;
770 }
771 }
772
773 snprintf(buf2, sizeof(buf2), "%s", warn_s);
774
775 if (query_yesorno(buf2, MUTT_NO) != MUTT_YES)
776 {
778 return FR_NO_ACTION;
779 }
780 }
781
782 gd->key = crypt_copy_key(cur_key);
783 gd->done = true;
784 return FR_SUCCESS;
785}
struct CryptKeyInfo * crypt_copy_key(struct CryptKeyInfo *key)
Return a copy of KEY.
Definition: crypt_gpgme.c:233
int crypt_id_is_valid(struct CryptKeyInfo *key)
Is key ID valid.
Definition: crypt_gpgme.c:309
bool crypt_id_is_strong(struct CryptKeyInfo *key)
Is the key strong.
Definition: crypt_gpgme.c:274
@ FR_ERROR
Valid function - error occurred.
Definition: dispatcher.h:38
@ FR_NO_ACTION
Valid function - no action performed.
Definition: dispatcher.h:37
bool OptPgpCheckTrust
(pseudo) used by dlg_pgp()
Definition: globals.c:78
static bool crypt_key_is_valid(struct CryptKeyInfo *k)
Is the key valid.
#define mutt_error(...)
Definition: logging2.h:92
int menu_get_index(struct Menu *menu)
Get the current selection in the Menu.
Definition: menu.c:156
#define _(a)
Definition: message.h:28
void mutt_clear_error(void)
Clear the message line (bottom line of screen)
Definition: mutt_logging.c:73
#define KEYFLAG_CANTUSE
Definition: lib.h:140
@ MUTT_NO
User answered 'No', or assume 'No'.
Definition: quad.h:38
@ MUTT_YES
User answered 'Yes', or assume 'Yes'.
Definition: quad.h:39
enum QuadOption query_yesorno(const char *prompt, enum QuadOption def)
Ask the user a Yes/No question.
Definition: question.c:330
A stored PGP key.
Definition: crypt_gpgme.h:44
gpgme_validity_t validity
uid validity (cached for convenience)
Definition: crypt_gpgme.h:50
KeyFlags flags
global and per uid flags (for convenience)
Definition: crypt_gpgme.h:49
struct CryptKeyInfo * key
Selected Key.
struct CryptKeyInfo ** key_table
Array of Keys.
struct Menu * menu
Gpgme Menu.
+ Here is the call graph for this function:

◆ op_verify_key()

static int op_verify_key ( struct GpgmeData gd,
int  op 
)
static

Verify a PGP public key - Implements gpgme_function_t -.

Definition at line 790 of file gpgme_functions.c.

791{
792 const int index = menu_get_index(gd->menu);
793 struct CryptKeyInfo *cur_key = gd->key_table[index];
794 verify_key(cur_key);
796 return FR_SUCCESS;
797}
static void verify_key(struct CryptKeyInfo *key)
Show detailed information about the selected key.
#define MENU_REDRAW_FULL
Redraw everything.
Definition: lib.h:60
void menu_queue_redraw(struct Menu *menu, MenuRedrawFlags redraw)
Queue a request for a redraw.
Definition: menu.c:180
+ Here is the call graph for this function:

◆ op_view_id()

static int op_view_id ( struct GpgmeData gd,
int  op 
)
static

View the key's user id - Implements gpgme_function_t -.

Definition at line 802 of file gpgme_functions.c.

803{
804 const int index = menu_get_index(gd->menu);
805 struct CryptKeyInfo *cur_key = gd->key_table[index];
806 mutt_message("%s", cur_key->uid);
807 return FR_SUCCESS;
808}
#define mutt_message(...)
Definition: logging2.h:91
const char * uid
and for convenience point to this user ID
Definition: crypt_gpgme.h:48
+ Here is the call graph for this function: