aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2015-04-30 08:02:42 +0000
committerNIIBE Yutaka <[email protected]>2015-04-30 08:02:42 +0000
commit43429c7869152f301157e4b24790b3801dce0f0a (patch)
tree09cca158abea0f5f0d295bb3438423f35d9fc5e0
parentgpg: Emit status line NEWSIG before signature verification starts. (diff)
downloadgnupg-43429c7869152f301157e4b24790b3801dce0f0a.tar.gz
gnupg-43429c7869152f301157e4b24790b3801dce0f0a.zip
g10: fix cmp_public_key and cmp_secret_keys.
* g10/free-packet.c (cmp_public_keys, cmp_secret_keys): Compare opaque data at the first entry of the array when it's unknown algo. * configure.ac (NEED_LIBGCRYPT_VERSION): Require 1.5.0. -- GnuPG-bug-id: 1962
-rw-r--r--NEWS2
-rw-r--r--configure.ac2
-rw-r--r--g10/free-packet.c24
3 files changed, 18 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index fe58b1228..7b87ca9d4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
Noteworthy changes in version 2.0.28 (unreleased)
-------------------------------------------------
+ * Libgcrypt 1.5 is now required.
+
Noteworthy changes in version 2.0.27 (2015-02-18)
-------------------------------------------------
diff --git a/configure.ac b/configure.ac
index abd95180a..c93e7626c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,7 +47,7 @@ AC_INIT([gnupg],[mym4_full_version], [http://bugs.gnupg.org])
NEED_GPG_ERROR_VERSION=1.11
NEED_LIBGCRYPT_API=1
-NEED_LIBGCRYPT_VERSION=1.4.0
+NEED_LIBGCRYPT_VERSION=1.5.0
NEED_LIBASSUAN_API=2
NEED_LIBASSUAN_VERSION=2.0.0
diff --git a/g10/free-packet.c b/g10/free-packet.c
index 85f23ce3f..9b42cfdaf 100644
--- a/g10/free-packet.c
+++ b/g10/free-packet.c
@@ -452,11 +452,14 @@ cmp_public_keys( PKT_public_key *a, PKT_public_key *b )
return -1;
n = pubkey_get_npkey( b->pubkey_algo );
- if( !n )
- return -1; /* can't compare due to unknown algorithm */
- for(i=0; i < n; i++ ) {
- if( mpi_cmp( a->pkey[i], b->pkey[i] ) )
- return -1;
+ if( !n ) { /* unknown algorithm, rest is in opaque MPI */
+ if( mpi_cmp( a->pkey[0], b->pkey[0] ) )
+ return -1; /* can't compare due to unknown algorithm */
+ } else {
+ for(i=0; i < n; i++ ) {
+ if( mpi_cmp( a->pkey[i], b->pkey[i] ) )
+ return -1;
+ }
}
return 0;
@@ -479,11 +482,14 @@ cmp_secret_keys( PKT_secret_key *a, PKT_secret_key *b )
return -1;
n = pubkey_get_npkey( b->pubkey_algo );
- if( !n )
- return -1; /* can't compare due to unknown algorithm */
- for(i=0; i < n; i++ ) {
- if( mpi_cmp( a->skey[i], b->skey[i] ) )
+ if( !n ) { /* unknown algorithm, rest is in opaque MPI */
+ if( mpi_cmp( a->skey[0], b->skey[0] ) )
return -1;
+ } else {
+ for(i=0; i < n; i++ ) {
+ if( mpi_cmp( a->skey[i], b->skey[i] ) )
+ return -1;
+ }
}
return 0;