* [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED
@ 2016-12-21 8:19 mingli.yu
2016-12-21 11:14 ` Burton, Ross
0 siblings, 1 reply; 6+ messages in thread
From: mingli.yu @ 2016-12-21 8:19 UTC (permalink / raw)
To: openembedded-core
From: Mingli Yu <Mingli.Yu@windriver.com>
* src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
* src/status-table.c (KEY_CONSIDERED): New.
* src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
KC_FLAGS. Use calloc.
(_gpgme_parse_key_considered): New.
* src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
(release_op_data): Free KC_FPR.
(_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
* src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
(release_op_data): Free KC_FPR.
(_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
Reference: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027
Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
---
...001-gpgme-add-GPGME_STATUS_KEY_CONSIDERED.patch | 300 +++++++++++++++++++++
meta/recipes-support/gpgme/gpgme_1.6.0.bb | 1 +
2 files changed, 301 insertions(+)
create mode 100644 meta/recipes-support/gpgme/gpgme/0001-gpgme-add-GPGME_STATUS_KEY_CONSIDERED.patch
diff --git a/meta/recipes-support/gpgme/gpgme/0001-gpgme-add-GPGME_STATUS_KEY_CONSIDERED.patch b/meta/recipes-support/gpgme/gpgme/0001-gpgme-add-GPGME_STATUS_KEY_CONSIDERED.patch
new file mode 100644
index 0000000..ebcf397
--- /dev/null
+++ b/meta/recipes-support/gpgme/gpgme/0001-gpgme-add-GPGME_STATUS_KEY_CONSIDERED.patch
@@ -0,0 +1,300 @@
+From e1bdd4c73d43d7ba98b976811ce82d3d11d81c6e Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Tue, 20 Dec 2016 06:12:38 +0000
+Subject: [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED
+
+* src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
+* src/status-table.c (KEY_CONSIDERED): New.
+* src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
+KC_FLAGS. Use calloc.
+(_gpgme_parse_key_considered): New.
+* src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
+(release_op_data): Free KC_FPR.
+(_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
+* src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
+(release_op_data): Free KC_FPR.
+(_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
+
+Reference: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027
+
+Upstream-status: Backport
+
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ src/encrypt.c | 23 ++++++++++++++++++++-
+ src/gpgme.h.in | 3 ++-
+ src/op-support.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++--------
+ src/ops.h | 8 +++++++-
+ src/sign.c | 26 +++++++++++++++++++++++-
+ src/status-table.c | 1 +
+ 6 files changed, 108 insertions(+), 12 deletions(-)
+
+diff --git a/src/encrypt.c b/src/encrypt.c
+index 9f5134d..82d90e4 100644
+--- a/src/encrypt.c
++++ b/src/encrypt.c
+@@ -39,6 +39,12 @@ typedef struct
+ /* The error code from a FAILURE status line or 0. */
+ gpg_error_t failure_code;
+
++ /* The fingerprint from the last KEY_CONSIDERED status line. */
++ char *kc_fpr;
++
++ /* The flags from the last KEY_CONSIDERED status line. */
++ unsigned int kc_flags;
++
+ /* A pointer to the next pointer of the last invalid recipient in
+ the list. This makes appending new invalid recipients painless
+ while preserving the order. */
+@@ -60,6 +66,7 @@ release_op_data (void *hook)
+ free (invalid_recipient);
+ invalid_recipient = next;
+ }
++ free (opd->kc_fpr);
+ }
+
+
+@@ -128,12 +135,26 @@ _gpgme_encrypt_status_handler (void *priv, gpgme_status_code_t code,
+ return opd->failure_code;
+ break;
+
++ case GPGME_STATUS_KEY_CONSIDERED:
++ /* This is emitted during gpg's key lookup to give information
++ * about the lookup results. We store the last one so it can be
++ * used in connection with INV_RECP. */
++ free (opd->kc_fpr);
++ opd->kc_fpr = NULL;
++ err = _gpgme_parse_key_considered (args, &opd->kc_fpr, &opd->kc_flags);
++ if (err)
++ return err;
++ break;
++
+ case GPGME_STATUS_INV_RECP:
+- err = _gpgme_parse_inv_recp (args, opd->lastp);
++ err = _gpgme_parse_inv_recp (args, 0, opd->kc_fpr, opd->kc_flags,
++ opd->lastp);
+ if (err)
+ return err;
+
+ opd->lastp = &(*opd->lastp)->next;
++ free (opd->kc_fpr);
++ opd->kc_fpr = NULL;
+ break;
+
+ case GPGME_STATUS_NO_RECP:
+diff --git a/src/gpgme.h.in b/src/gpgme.h.in
+index 6cea2c7..fdff1a0 100644
+--- a/src/gpgme.h.in
++++ b/src/gpgme.h.in
+@@ -531,7 +531,8 @@ typedef enum
+ GPGME_STATUS_BEGIN_SIGNING = 90,
+ GPGME_STATUS_KEY_NOT_CREATED = 91,
+ GPGME_STATUS_INQUIRE_MAXLEN = 92,
+- GPGME_STATUS_FAILURE = 93
++ GPGME_STATUS_FAILURE = 93,
++ GPGME_STATUS_KEY_CONSIDERED = 94
+ }
+ gpgme_status_code_t;
+
+diff --git a/src/op-support.c b/src/op-support.c
+index 02940ef..e7d3e45 100644
+--- a/src/op-support.c
++++ b/src/op-support.c
+@@ -190,16 +190,19 @@ _gpgme_op_reset (gpgme_ctx_t ctx, int type)
+ }
+
+ \f
+-/* Parse the INV_RECP or INV-SNDR status line in ARGS and return the
+- result in KEY. */
++/* Parse the INV_RECP or INV_SNDR status line in ARGS and return the
++ result in KEY. If KC_FPR (from the KEY_CONSIDERED status line) is
++ not NULL take the KC_FLAGS in account. */
+ gpgme_error_t
+-_gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
++_gpgme_parse_inv_recp (char *args, int for_signing,
++ const char *kc_fpr, unsigned int kc_flags,
++ gpgme_invalid_key_t *key)
+ {
+ gpgme_invalid_key_t inv_key;
+ char *tail;
+ long int reason;
+
+- inv_key = malloc (sizeof (*inv_key));
++ inv_key = calloc (1, sizeof (*inv_key));
+ if (!inv_key)
+ return gpg_error_from_syserror ();
+ inv_key->next = NULL;
+@@ -214,9 +217,11 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
+
+ switch (reason)
+ {
+- default:
+ case 0:
+- inv_key->reason = gpg_error (GPG_ERR_GENERAL);
++ if (kc_fpr && (kc_flags & 2))
++ inv_key->reason = gpg_error (GPG_ERR_SUBKEYS_EXP_OR_REV);
++ else
++ inv_key->reason = gpg_error (GPG_ERR_GENERAL);
+ break;
+
+ case 1:
+@@ -274,6 +279,10 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
+ case 14:
+ inv_key->reason = gpg_error (GPG_ERR_INV_USER_ID);
+ break;
++
++ default:
++ inv_key->reason = gpg_error (GPG_ERR_GENERAL);
++ break;
+ }
+
+ while (*tail && *tail == ' ')
+@@ -287,14 +296,48 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
+ return gpg_error_from_syserror ();
+ }
+ }
+- else
+- inv_key->fpr = NULL;
+
+ *key = inv_key;
+ return 0;
+ }
+
+
++/* Parse a KEY_CONSIDERED status line in ARGS and store the
++ * fingerprint and the flags at R_FPR and R_FLAGS. The caller must
++ * free the value at R_FPR on success. */
++gpgme_error_t
++_gpgme_parse_key_considered (const char *args,
++ char **r_fpr, unsigned int *r_flags)
++{
++ char *pend;
++ size_t n;
++
++ *r_fpr = NULL;
++
++ pend = strchr (args, ' ');
++ if (!pend || pend == args)
++ return trace_gpg_error (GPG_ERR_INV_ENGINE); /* Bogus status line. */
++ n = pend - args;
++ *r_fpr = malloc (n + 1);
++ if (!*r_fpr)
++ return gpg_error_from_syserror ();
++ memcpy (*r_fpr, args, n);
++ (*r_fpr)[n] = 0;
++ args = pend + 1;
++
++ gpg_err_set_errno (0);
++ *r_flags = strtoul (args, &pend, 0);
++ if (errno || args == pend || (*pend && *pend != ' '))
++ {
++ free (*r_fpr);
++ *r_fpr = NULL;
++ return trace_gpg_error (GPG_ERR_INV_ENGINE);
++ }
++
++ return 0;
++}
++
++
+ /* Parse the PLAINTEXT status line in ARGS and return the result in
+ FILENAMEP. */
+ gpgme_error_t
+diff --git a/src/ops.h b/src/ops.h
+index 3662d57..9c27529 100644
+--- a/src/ops.h
++++ b/src/ops.h
+@@ -57,9 +57,15 @@ gpgme_error_t _gpgme_op_data_lookup (gpgme_ctx_t ctx, ctx_op_data_id_t type,
+ /* Prepare a new operation on CTX. */
+ gpgme_error_t _gpgme_op_reset (gpgme_ctx_t ctx, int synchronous);
+
++/* Parse the KEY_CONSIDERED status line. */
++gpgme_error_t _gpgme_parse_key_considered (const char *args,
++ char **r_fpr, unsigned int *r_flags);
++
+ /* Parse the INV_RECP status line in ARGS and return the result in
+ KEY. */
+-gpgme_error_t _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key);
++gpgme_error_t _gpgme_parse_inv_recp (char *args, int for_signing,
++ const char *kc_fpr, unsigned int kc_flags,
++ gpgme_invalid_key_t *key);
+
+ /* Parse the PLAINTEXT status line in ARGS and return the result in
+ FILENAMEP. */
+diff --git a/src/sign.c b/src/sign.c
+index 6c9fc03..81cbbc7 100644
+--- a/src/sign.c
++++ b/src/sign.c
+@@ -42,6 +42,12 @@ typedef struct
+ /* The error code from a FAILURE status line or 0. */
+ gpg_error_t failure_code;
+
++ /* The fingerprint from the last KEY_CONSIDERED status line. */
++ char *kc_fpr;
++
++ /* The flags from the last KEY_CONSIDERED status line. */
++ unsigned int kc_flags;
++
+ /* A pointer to the next pointer of the last invalid signer in
+ the list. This makes appending new invalid signers painless
+ while preserving the order. */
+@@ -86,6 +92,7 @@ release_op_data (void *hook)
+ }
+
+ release_signatures (opd->result.signatures);
++ free (opd->kc_fpr);
+ }
+
+
+@@ -316,6 +323,17 @@ _gpgme_sign_status_handler (void *priv, gpgme_status_code_t code, char *args)
+ opd->last_sig_p = &(*opd->last_sig_p)->next;
+ break;
+
++ case GPGME_STATUS_KEY_CONSIDERED:
++ /* This is emitted during gpg's key lookup to give information
++ * about the lookup results. We store the last one so it can be
++ * used in connection with INV_RECP. */
++ free (opd->kc_fpr);
++ opd->kc_fpr = NULL;
++ err = _gpgme_parse_key_considered (args, &opd->kc_fpr, &opd->kc_flags);
++ if (err)
++ return err;
++ break;
++
+ case GPGME_STATUS_INV_RECP:
+ if (opd->inv_sgnr_seen && opd->ignore_inv_recp)
+ break;
+@@ -323,11 +341,17 @@ _gpgme_sign_status_handler (void *priv, gpgme_status_code_t code, char *args)
+ case GPGME_STATUS_INV_SGNR:
+ if (code == GPGME_STATUS_INV_SGNR)
+ opd->inv_sgnr_seen = 1;
+- err = _gpgme_parse_inv_recp (args, opd->last_signer_p);
++ free (opd->kc_fpr);
++ opd->kc_fpr = NULL;
++ err = _gpgme_parse_inv_recp (args, 1, opd->kc_fpr, opd->kc_flags,
++ opd->last_signer_p);
+ if (err)
+ return err;
+
+ opd->last_signer_p = &(*opd->last_signer_p)->next;
++ free (opd->kc_fpr);
++ opd->kc_fpr = NULL;
++
+ break;
+
+ case GPGME_STATUS_FAILURE:
+diff --git a/src/status-table.c b/src/status-table.c
+index 6d428d7..e70cb8b 100644
+--- a/src/status-table.c
++++ b/src/status-table.c
+@@ -84,6 +84,7 @@ static struct status_table_s status_table[] =
+ { "INQUIRE_MAXLEN", GPGME_STATUS_INQUIRE_MAXLEN },
+ { "INV_RECP", GPGME_STATUS_INV_RECP },
+ { "INV_SGNR", GPGME_STATUS_INV_SGNR },
++ { "KEY_CONSIDERED", GPGME_STATUS_KEY_CONSIDERED },
+ { "KEY_CREATED", GPGME_STATUS_KEY_CREATED },
+ { "KEY_NOT_CREATED", GPGME_STATUS_KEY_NOT_CREATED },
+ { "KEYEXPIRED", GPGME_STATUS_KEYEXPIRED },
+--
+2.11.0
+
diff --git a/meta/recipes-support/gpgme/gpgme_1.6.0.bb b/meta/recipes-support/gpgme/gpgme_1.6.0.bb
index a2d0587..546e029 100644
--- a/meta/recipes-support/gpgme/gpgme_1.6.0.bb
+++ b/meta/recipes-support/gpgme/gpgme_1.6.0.bb
@@ -13,6 +13,7 @@ UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
SRC_URI = "${GNUPG_MIRROR}/gpgme/${BP}.tar.bz2 \
file://gpgme.pc \
file://pkgconfig.patch \
+ file://0001-gpgme-add-GPGME_STATUS_KEY_CONSIDERED.patch \
"
SRC_URI[md5sum] = "60d730d22e8065fd5de309e8b98e304b"
--
2.8.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED
2016-12-21 8:19 [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED mingli.yu
@ 2016-12-21 11:14 ` Burton, Ross
2016-12-21 12:25 ` Alexander Kanavin
2016-12-22 1:52 ` Yu, Mingli
0 siblings, 2 replies; 6+ messages in thread
From: Burton, Ross @ 2016-12-21 11:14 UTC (permalink / raw)
To: Mingli Yu; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 896 bytes --]
On 21 December 2016 at 08:19, <mingli.yu@windriver.com> wrote:
> From: Mingli Yu <Mingli.Yu@windriver.com>
>
> * src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
> * src/status-table.c (KEY_CONSIDERED): New.
> * src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
> KC_FLAGS. Use calloc.
> (_gpgme_parse_key_considered): New.
> * src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
> (release_op_data): Free KC_FPR.
> (_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
> * src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
> (release_op_data): Free KC_FPR.
> (_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
>
> Reference: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=
> commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027
>
Can you explain *why* we should cherry pick a patch from upstream?
Ross
[-- Attachment #2: Type: text/html, Size: 1633 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED
2016-12-21 11:14 ` Burton, Ross
@ 2016-12-21 12:25 ` Alexander Kanavin
2016-12-22 2:24 ` Yu, Mingli
2016-12-22 1:52 ` Yu, Mingli
1 sibling, 1 reply; 6+ messages in thread
From: Alexander Kanavin @ 2016-12-21 12:25 UTC (permalink / raw)
To: openembedded-core
On 12/21/2016 01:14 PM, Burton, Ross wrote:
> https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027
> <https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027>
>
>
> Can you explain *why* we should cherry pick a patch from upstream?
Because someone didn't check RRS, which would suggest an update to gpgme
1.8.0 should be done instead.
http://recipes.yoctoproject.org/rrs/recipedetail/834/
Alex
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED
2016-12-21 11:14 ` Burton, Ross
2016-12-21 12:25 ` Alexander Kanavin
@ 2016-12-22 1:52 ` Yu, Mingli
1 sibling, 0 replies; 6+ messages in thread
From: Yu, Mingli @ 2016-12-22 1:52 UTC (permalink / raw)
To: Burton, Ross; +Cc: OE-core
On 2016年12月21日 19:14, Burton, Ross wrote:
>
> On 21 December 2016 at 08:19, <mingli.yu@windriver.com
> <mailto:mingli.yu@windriver.com>> wrote:
>
> From: Mingli Yu <Mingli.Yu@windriver.com
> <mailto:Mingli.Yu@windriver.com>>
>
> * src/gpgme.h.in <http://gpgme.h.in> (GPGME_STATUS_KEY_CONSIDERED): New.
> * src/status-table.c (KEY_CONSIDERED): New.
> * src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
> KC_FLAGS. Use calloc.
> (_gpgme_parse_key_considered): New.
> * src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
> (release_op_data): Free KC_FPR.
> (_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
> * src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
> (release_op_data): Free KC_FPR.
> (_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
>
> Reference:
> https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027
> <https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027>
>
>
> Can you explain *why* we should cherry pick a patch from upstream?
Thanks Ross!
The reason why I cherry pick this patch as there are three failed ptest
cases as below for python-pygpgme which depends on gpgme.
FAIL: test_edit_ownertrust (tests.test_editkey.EditKeyTestCase)
FAIL: test_edit_quit (tests.test_editkey.EditKeyTestCase)
FAIL: test_edit_sign (tests.test_editkey.EditKeyTestCase)
And also found the solution from
https://pagure.io/pygpgme/c/f14699792622715c9cec372400f9dc38f1122f63?branch=master
to fix the failed ptest cases for python-pygpgme, and this solution for
python-pygpgme also needs we update accordingly for gpgme.
Thanks,
Mingli
>
> Ross
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED
2016-12-21 12:25 ` Alexander Kanavin
@ 2016-12-22 2:24 ` Yu, Mingli
2016-12-22 14:30 ` Alexander Kanavin
0 siblings, 1 reply; 6+ messages in thread
From: Yu, Mingli @ 2016-12-22 2:24 UTC (permalink / raw)
To: Alexander Kanavin, openembedded-core
On 2016年12月21日 20:25, Alexander Kanavin wrote:
> On 12/21/2016 01:14 PM, Burton, Ross wrote:
>>
>> https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027
>>
>>
>> <https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commitdiff;h=315fb73d4a774e2c699ac1804f5377559b4d0027>
>>
>>
>>
>> Can you explain *why* we should cherry pick a patch from upstream?
>
> Because someone didn't check RRS, which would suggest an update to gpgme
> 1.8.0 should be done instead.
>
> http://recipes.yoctoproject.org/rrs/recipedetail/834/
Thanks Alex!
Actually I ever tried to upgrade gpgme to 1.8.0 before send out this
patch, but there comes other ptest failed issues for python-pygpgme
which not exist on current gpgme 1.6.0 if we simply update gpgme to 1.8.0.
Anyway I prefer to wait for more update for python-pygpgme from
https://pagure.io/pygpgme/commits/master before we move forward to gpgme
1.8.0.
Thanks,
Mingli
>
> Alex
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED
2016-12-22 2:24 ` Yu, Mingli
@ 2016-12-22 14:30 ` Alexander Kanavin
0 siblings, 0 replies; 6+ messages in thread
From: Alexander Kanavin @ 2016-12-22 14:30 UTC (permalink / raw)
To: Yu, Mingli, openembedded-core
On 12/22/2016 04:24 AM, Yu, Mingli wrote:
> Thanks Alex!
> Actually I ever tried to upgrade gpgme to 1.8.0 before send out this
> patch, but there comes other ptest failed issues for python-pygpgme
> which not exist on current gpgme 1.6.0 if we simply update gpgme to 1.8.0.
>
> Anyway I prefer to wait for more update for python-pygpgme from
> https://pagure.io/pygpgme/commits/master before we move forward to gpgme
> 1.8.0.
pygpgme upstream hasn't released a new version since 2012; the link
above is someone's fork to fix the pressing issues, and there's no
indication they will do more fixing. I suggest you just take the
necessary patches, add them to pygpgme recipe, and update gpgme recipe
at the same time. You can also review debian/ubuntu's pygpgme packages
to see what custom patching they have there.
Alex
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-12-22 14:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-21 8:19 [PATCH] gpgme: add GPGME_STATUS_KEY_CONSIDERED mingli.yu
2016-12-21 11:14 ` Burton, Ross
2016-12-21 12:25 ` Alexander Kanavin
2016-12-22 2:24 ` Yu, Mingli
2016-12-22 14:30 ` Alexander Kanavin
2016-12-22 1:52 ` Yu, Mingli
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox