[Development] Backporting the Keccak change

Thiago Macieira thiago.macieira at intel.com
Sun Sep 3 03:10:14 CEST 2017


On Saturday, 2 September 2017 12:03:13 PDT Oswald Buddenhagen wrote:
> On Wed, Aug 30, 2017 at 12:45:44PM -0700, Thiago Macieira wrote:
> >  a) revert the 5.6 backport of 88a8feeacb9bdaff9ee06164424e407eb904cd10 so
> > 
> > that 5.6.x will forever calculate Keccak, not SHA3;
> > 
> >  b) additionally backport 12c5264d9add1826d543c36d893db77262195fc6 to both
> >  5.6> 
> > and 5.9, with the proper binary compatibility notices, so that people who
> > need to can adapt their code to calculate Keccak. It won't be pretty, but
> > it will work.
> > 
> > I'm actually leaning towards (a) for 5.6 and (b) for 5.9.
> 
> b) isn't legitimate for 5.9, either, as we can't add new api in a patch
> release (forward compat promise). so it would be a) for 5.9, too. the
> unfortunate effect is that this is a behavior change against 5.9.0, but
> 5.9.2+ will certainly have a longer lifetime than 5.9.x so far.

While technically correct, I think this one is worth breaking the promise. 
Please note that we will break the promise anyway by adding 
QOperatingSystemVersion::AndroidOreo and we did it already for 5.9.1 for 
QOperatingSystemVersion::MacOSHighSierra. You can blame MSVC 2013 for this 
need.

Reverting the SHA3 calculation might not be such a bad idea, though.


> if we wanted to be really conservative, we'd leave the old meaning of
> the sha3 constants and introduce realSha3 (or something to that effect)
> instead, in 5.10+. keccak aliases would be also provided for a smooth
> migration.

Yeah, we can do that and we can also provide a #define to opt-in or out-opt of 
the real SHA3. Having people add a #define to their code if they need to keep 
compatibility is much easier than using an enumerator that isn't yet present 
in any released version.

So I agree with Ossi here. I suggest we do:
 a) revert the previous enumeration values to calculate Keccak
 b) accept a forwards BC break by adding new values for SHA3
 c) introduce a macro so people who need algorithm compatibility across 
  versions can opt-in without introducing ugly #if in their code

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Development mailing list