Announce: OpenSSH 6.2 released

Roumen Petrov openssh at roumenpetrov.info
Wed Mar 27 08:36:03 EST 2013


Corinna Vinschen wrote:
> 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 openssh.com
>>     and aes256-gcm at openssh.com. 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 openssh.com" and "umac-128-etm at openssh.com". 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
> this:
>
>    typedef unsigned __int64 UINT64,*PUINT64;

winapi:
$ grep  typedef.*UINT b*
basetsd.h:typedef unsigned char UINT8;
basetsd.h:typedef unsigned short UINT16;
basetsd.h:typedef unsigned int UINT32, *PUINT32;
basetsd.h:typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
basetsd.h:typedef  unsigned int UINT_PTR, *PUINT_PTR;
basetsd.h:typedef unsigned __int64 UINT64,  *PUINT64;

openssh:
$ grep  typedef.*UINT u*
umac.c:typedef u_int8_t UINT8;  /* 1 byte   */
umac.c:typedef u_int16_t        UINT16; /* 2 byte   */
umac.c:typedef u_int32_t        UINT32; /* 4 byte   */
umac.c:typedef u_int64_t        UINT64; /* 8 bytes  */

>
> 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?
Question is if build is fine  for UINTnn where nn < 64 , why fail for 64 ?

May be correct patch is to define u_int64_t to be same as as unsigned 
__int64 ?
Please confirm that u_intNN_t, where NN < 64 are properly (re-)defined ?

>
> Thanks,
> Corinna
>
Regards,
Roumen

-- 
Get X.509 certificates support in OpenSSH:
http://roumenpetrov.info/openssh/




More information about the openssh-unix-dev mailing list