aboutsummaryrefslogtreecommitdiffstats
path: root/agent/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/command.c')
-rw-r--r--agent/command.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/agent/command.c b/agent/command.c
index ddba96abc..0c8a9ff70 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -1494,6 +1494,7 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
char *entry_errtext = NULL;
struct pin_entry_info_s *pi = NULL;
struct pin_entry_info_s *pi2 = NULL;
+ int is_generated;
if (ctrl->restricted)
return leave_cmd (ctx, gpg_error (GPG_ERR_FORBIDDEN));
@@ -1626,10 +1627,13 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
goto leave;
xfree (entry_errtext);
entry_errtext = NULL;
+ is_generated = !!(pi->status & PINENTRY_STATUS_PASSWORD_GENERATED);
+
/* We don't allow an empty passpharse in this mode. */
- if (check_passphrase_constraints (ctrl, pi->pin,
- pi->constraints_flags,
- &entry_errtext))
+ if (!is_generated
+ && check_passphrase_constraints (ctrl, pi->pin,
+ pi->constraints_flags,
+ &entry_errtext))
{
pi->failed_tries = 0;
pi2->failed_tries = 0;
@@ -1685,11 +1689,14 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
opt_qualbar, cacheid, CACHE_MODE_USER, NULL);
xfree (entry_errtext);
entry_errtext = NULL;
+ is_generated = !!(pi->status & PINENTRY_STATUS_PASSWORD_GENERATED);
+
if (!rc)
{
int i;
if (opt_check
+ && !is_generated
&& check_passphrase_constraints
(ctrl, response,
(opt_newsymkey? CHECK_CONSTRAINTS_NEW_SYMKEY:0),