ObjFW  Diff

Differences From Artifact [ba733f14be]:

To Artifact [6b2bc955be]:

  • File src/macros.h — part of check-in [4857107479] at 2012-12-06 11:00:54 on branch trunk — OFMapTable: Rotate hash by a random number of bits

    By rotating the hash by a random number of bits, an attacker needs to
    find collisions on the full 32 bits of the hash and not only on the
    lower n bits that are actually used by the map table, as an attacker
    can't know which bits are actually used for the map table. (user: js, size: 9039) [annotate] [blame] [check-ins using]


321
322
323
324
325
326
327



328
329
330
331
332
333
334
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337







+
+
+







#if defined(__MACH__) && defined(__arm__)
# define OF_IOS
#endif

#define OF_ROL(value, bits)						\
	(((value) << ((bits) % (sizeof(value) * 8))) |			\
	(value) >> (sizeof(value) * 8 - ((bits) % (sizeof(value) * 8))))
#define OF_ROR(value, bits)						\
	(((value) >> ((bits) % (sizeof(value) * 8))) |			\
	(value) << (sizeof(value) * 8 - ((bits) % (sizeof(value) * 8))))

#define OF_HASH_INIT(hash) hash = of_hash_seed
#define OF_HASH_ADD(hash, byte)			\
	{					\
		hash += (uint8_t)(byte);	\
		hash += (hash << 10);		\
		hash ^= (hash >> 6);		\