Date: Tuesday, September 22, 2015 @ 06:12:35 Author: bisson Revision: 247052
fix FS#46378 Added: gnupg/trunk/ssh-ed25519.patch Modified: gnupg/trunk/PKGBUILD -------------------+ PKGBUILD | 9 +++++-- ssh-ed25519.patch | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-09-22 04:05:59 UTC (rev 247051) +++ PKGBUILD 2015-09-22 04:12:35 UTC (rev 247052) @@ -6,7 +6,7 @@ pkgname=gnupg pkgver=2.1.8 -pkgrel=2 +pkgrel=3 pkgdesc='Complete and free implementation of the OpenPGP standard' url='http://www.gnupg.org/' license=('GPL') @@ -20,8 +20,10 @@ '46CC730865BB5C78EBABADCF04376F3EE0856959' '031EC2536E580D8EA286A9F22071B08A33BD3F06' 'D238EA65D64C67ED4C3073F28A861B1C7EFD60D9') -source=("ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2"{,.sig}) -sha1sums=('61f5bc656dd7fddd4ab67b720d47ef0651bfb727' 'SKIP') +source=("ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2"{,.sig} + 'ssh-ed25519.patch') +sha1sums=('61f5bc656dd7fddd4ab67b720d47ef0651bfb727' 'SKIP' + 'fd77cf366f6bd70c1d33e910044612aebe6bbe63') install=install @@ -32,6 +34,7 @@ prepare() { cd "${srcdir}/${pkgname}-${pkgver}" sed '/noinst_SCRIPTS = gpg-zip/c sbin_SCRIPTS += gpg-zip' -i tools/Makefile.in + patch -p1 -i ../ssh-ed25519.patch } build() { Added: ssh-ed25519.patch =================================================================== --- ssh-ed25519.patch (rev 0) +++ ssh-ed25519.patch 2015-09-22 04:12:35 UTC (rev 247052) @@ -0,0 +1,60 @@ +From 7d5999f0964c9412c0e18eb1adefdb729be68cd4 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka <gni...@fsij.org> +Date: Wed, 16 Sep 2015 10:37:38 +0900 +Subject: [PATCH] agent: Fix registering SSH Key of Ed25519. + +* agent/command-ssh.c (stream_read_string): Add the prefix of 0x40. + +-- + +GnuPG-bug-id: 2096 +--- + agent/command-ssh.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/agent/command-ssh.c b/agent/command-ssh.c +index 8868620..8be1255 100644 +--- a/agent/command-ssh.c ++++ b/agent/command-ssh.c +@@ -580,8 +580,9 @@ stream_read_string (estream_t stream, unsigned int secure, + + + /* Read a binary string from STREAM and store it as an opaque MPI at +- R_MPI. Depending on SECURE use secure memory. If the string is +- too large for key material return an error. */ ++ R_MPI, adding 0x40 (this is the prefix for EdDSA key in OpenPGP). ++ Depending on SECURE use secure memory. If the string is too large ++ for key material return an error. */ + static gpg_error_t + stream_read_blob (estream_t stream, unsigned int secure, gcry_mpi_t *r_mpi) + { +@@ -607,9 +608,9 @@ stream_read_blob (estream_t stream, unsigned int secure, gcry_mpi_t *r_mpi) + + /* Allocate space. */ + if (secure) +- buffer = xtrymalloc_secure (length? length:1); ++ buffer = xtrymalloc_secure (length+1); + else +- buffer = xtrymalloc (length?length:1); ++ buffer = xtrymalloc (length+1); + if (!buffer) + { + err = gpg_error_from_syserror (); +@@ -617,11 +618,12 @@ stream_read_blob (estream_t stream, unsigned int secure, gcry_mpi_t *r_mpi) + } + + /* Read data. */ +- err = stream_read_data (stream, buffer, length); ++ err = stream_read_data (stream, buffer + 1, length); + if (err) + goto leave; + +- *r_mpi = gcry_mpi_set_opaque (NULL, buffer, 8*length); ++ buffer[0] = 0x40; ++ *r_mpi = gcry_mpi_set_opaque (NULL, buffer, 8*(length+1)); + buffer = NULL; + + leave: +-- +2.1.4 +