From 05c55ee260edc07cd19da56dfd00347bfe3f529c Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 23 Mar 2018 08:14:58 +0100 Subject: agent: New OPTION pretend-request-origin * common/shareddefs.h (request_origin_t): New. * common/agent-opt.c (parse_request_origin): New. (str_request_origin): New. * agent/command.c (option_handler): Implement new option. -- This allows to pretend that a request originated from the extra or browser socket. Signed-off-by: Werner Koch --- agent/command.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'agent/command.c') diff --git a/agent/command.c b/agent/command.c index f9bc6ca96..8bb9b6a70 100644 --- a/agent/command.c +++ b/agent/command.c @@ -3101,6 +3101,21 @@ option_handler (assuan_context_t ctx, const char *key, const char *value) ctrl->s2k_count = 0; } } + else if (!strcmp (key, "pretend-request-origin")) + { + log_assert (!ctrl->restricted); + switch (parse_request_origin (value)) + { + case REQUEST_ORIGIN_LOCAL: ctrl->restricted = 0; break; + case REQUEST_ORIGIN_REMOTE: ctrl->restricted = 1; break; + case REQUEST_ORIGIN_BROWSER: ctrl->restricted = 2; break; + default: + err = gpg_error (GPG_ERR_INV_VALUE); + /* Better pretend to be remote in case of a bad value. */ + ctrl->restricted = 1; + break; + } + } else err = gpg_error (GPG_ERR_UNKNOWN_OPTION); -- cgit v1.2.3