NeoMutt  2021-10-29-220-g2b1eec
Teaching an old dog new tricks
DOXYGEN
valid_passphrase()

Ensure we have a valid passphrase. More...

+ Collaboration diagram for valid_passphrase():

Functions

static bool pgp_gpgme_valid_passphrase (void)
 Implements CryptModuleSpecs::valid_passphrase() -. More...
 
static bool smime_gpgme_valid_passphrase (void)
 Implements CryptModuleSpecs::valid_passphrase() -. More...
 
bool pgp_class_valid_passphrase (void)
 Implements CryptModuleSpecs::valid_passphrase() -. More...
 
bool smime_class_valid_passphrase (void)
 Implements CryptModuleSpecs::valid_passphrase() -. More...
 

Detailed Description

Ensure we have a valid passphrase.

Return values
trueSuccess
falseFailed

If the passphrase is within the expiry time (backend-specific), use it. If not prompt the user again.

Function Documentation

◆ pgp_gpgme_valid_passphrase()

static bool pgp_gpgme_valid_passphrase ( void  )
static

Implements CryptModuleSpecs::valid_passphrase() -.

This is handled by gpg-agent.

Definition at line 50 of file crypt_mod_pgp_gpgme.c.

51 {
52  return true;
53 }

◆ smime_gpgme_valid_passphrase()

static bool smime_gpgme_valid_passphrase ( void  )
static

Implements CryptModuleSpecs::valid_passphrase() -.

This is handled by gpg-agent.

Definition at line 50 of file crypt_mod_smime_gpgme.c.

51 {
52  return true;
53 }

◆ pgp_class_valid_passphrase()

bool pgp_class_valid_passphrase ( void  )

Implements CryptModuleSpecs::valid_passphrase() -.

Definition at line 82 of file pgp.c.

83 {
84  if (pgp_use_gpg_agent())
85  {
86  *PgpPass = '\0';
87  return true; /* handled by gpg-agent */
88  }
89 
91  {
92  /* Use cached copy. */
93  return true;
94  }
95 
97 
98  struct Buffer *buf = mutt_buffer_pool_get();
99  const int rc = mutt_get_field_unbuffered(_("Enter PGP passphrase:"), buf, MUTT_COMP_PASS);
102 
103  if (rc == 0)
104  {
105  const long c_pgp_timeout = cs_subset_long(NeoMutt->sub, "pgp_timeout");
107  return true;
108  }
109  else
110  {
111  PgpExptime = 0;
112  }
113 
114  return false;
115 }
static const char * mutt_buffer_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Definition: buffer.h:77
int mutt_get_field_unbuffered(const char *msg, struct Buffer *buf, CompletionFlags flags)
Ask the user for a string (ignoring macro buffer)
Definition: curs_lib.c:331
time_t mutt_date_epoch(void)
Return the number of seconds since the Unix epoch.
Definition: date.c:427
time_t mutt_date_add_timeout(time_t now, time_t timeout)
Safely add a timeout to a given time_t value.
Definition: date.c:636
void pgp_class_void_passphrase(void)
Implements CryptModuleSpecs::void_passphrase() -.
Definition: pgp.c:73
long cs_subset_long(const struct ConfigSubset *sub, const char *name)
Get a long config item by name.
Definition: helpers.c:121
#define _(a)
Definition: message.h:28
size_t mutt_str_copy(char *dest, const char *src, size_t dsize)
Copy a string into a buffer (guaranteeing NUL-termination)
Definition: string.c:560
#define MUTT_COMP_PASS
Password mode (no echo)
Definition: mutt.h:63
char PgpPass[1024]
Definition: pgp.c:67
time_t PgpExptime
Definition: pgp.c:68
bool pgp_use_gpg_agent(void)
Does the user want to use the gpg agent?
Definition: pgp.c:123
void mutt_buffer_pool_release(struct Buffer **pbuf)
Free a Buffer from the pool.
Definition: pool.c:112
struct Buffer * mutt_buffer_pool_get(void)
Get a Buffer from the pool.
Definition: pool.c:101
String manipulation buffer.
Definition: buffer.h:34
Container for Accounts, Notifications.
Definition: neomutt.h:37
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:39
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ smime_class_valid_passphrase()

bool smime_class_valid_passphrase ( void  )

Implements CryptModuleSpecs::valid_passphrase() -.

Definition at line 167 of file smime.c.

168 {
169  const time_t now = mutt_date_epoch();
170  if (now < SmimeExpTime)
171  {
172  /* Use cached copy. */
173  return true;
174  }
175 
177 
178  struct Buffer *buf = mutt_buffer_pool_get();
179  const int rc = mutt_get_field_unbuffered(_("Enter S/MIME passphrase:"), buf, MUTT_COMP_PASS);
182 
183  if (rc == 0)
184  {
185  const short c_smime_timeout =
186  cs_subset_number(NeoMutt->sub, "smime_timeout");
187  SmimeExpTime = mutt_date_add_timeout(now, c_smime_timeout);
188  return true;
189  }
190  else
191  {
192  SmimeExpTime = 0;
193  }
194 
195  return false;
196 }
void smime_class_void_passphrase(void)
Implements CryptModuleSpecs::void_passphrase() -.
Definition: smime.c:158
short cs_subset_number(const struct ConfigSubset *sub, const char *name)
Get a number config item by name.
Definition: helpers.c:169
char SmimePass[256]
Definition: smime.c:77
time_t SmimeExpTime
Definition: smime.c:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function: