Announce: OpenSSH 6.2 released

Corinna Vinschen vinschen at
Wed Mar 27 06:48:16 EST 2013

Hi guys,

On Mar 21 18:38, Damien Miller wrote:
> Changes since OpenSSH 6.1
> =========================
> This release introduces a number of new features:
> Features:
>  * ssh(1)/sshd(8): Added support for AES-GCM authenticated encryption in
>    SSH protocol 2. The new cipher is available as aes128-gcm at
>    and aes256-gcm at It uses an identical packet format to the
>    AES-GCM mode specified in RFC 5647, but uses simpler and different
>    selection rules during key exchange.
>  * ssh(1)/sshd(8): Added support for encrypt-then-mac (EtM) MAC modes
>    for SSH protocol 2. These modes alter the packet format and compute
>    the MAC over the packet length and encrypted packet rather than over
>    the plaintext data. These modes are considered more secure and are
>    used by default when available.
>  * ssh(1)/sshd(8): Added support for the UMAC-128 MAC as
>    "umac-128 at" and "umac-128-etm at". The latter
>    being an encrypt-then-mac mode.

while I can build openssh-6.2p1 fine on Cygwin for i686, I just found
that it doesn't build on the yet-to-be-released Cygwin for x86_64.

The reason is a clash of the UINT64 type.  It gets defined in umac.c as
well as in the Windows headers.  The Windows headers define it like

  typedef unsigned __int64 UINT64,*PUINT64;

The interesting thing here is that the same clash occurs in the i686
version, but gcc does not complain.  It only complains when building
for x86_64 for some reason.  It could be a result of using different
gcc versions (4.5.3 on i686, 4.8.0 on x86_64), but I'm not sure.

For the time being, I applied the following patch:

Index: openbsd-compat/bsd-cygwin_util.h
RCS file: /cvs/openssh/openbsd-compat/bsd-cygwin_util.h,v
retrieving revision 1.15
diff -u -p -r1.15 bsd-cygwin_util.h
--- openbsd-compat/bsd-cygwin_util.h	28 Aug 2012 09:57:19 -0000	1.15
+++ openbsd-compat/bsd-cygwin_util.h	26 Mar 2013 19:45:01 -0000
@@ -37,10 +37,13 @@
 #undef ERROR
 #define WIN32_LEAN_AND_MEAN
+#define UINT64 __UINT64
 #include <windows.h>
 #include <sys/cygwin.h>
 #include <io.h>
+#undef UINT64
 /* Make sure _WIN32 isn't defined later in the code, otherwise headers from
    other packages might get the wrong idea about the target system. */

Is that ok to apply?


Corinna Vinschen
Cygwin Maintainer
Red Hat

More information about the openssh-unix-dev mailing list