Added implementation of keying material export (RFC 5705) (API for PRF implementation...
[BearSSL] / src / inner.h
index 33901ab..fb7f4a4 100644 (file)
  * GCC versions from 4.4 to 4.8 (inclusive) must use a special #pragma
  * to activate extra opcodes before including the relevant intrinsic
  * headers. But these don't work with Clang (which does not need them
  * GCC versions from 4.4 to 4.8 (inclusive) must use a special #pragma
  * to activate extra opcodes before including the relevant intrinsic
  * headers. But these don't work with Clang (which does not need them
- * either).
+ * either). We also need that #pragma for GCC 4.9 in order to work
+ * around a compiler bug (it tends to blow up on ghash_pclmul code
+ * otherwise).
  */
 #if BR_AES_X86NI_GCC && !defined BR_AES_X86NI_GCC_OLD
  */
 #if BR_AES_X86NI_GCC && !defined BR_AES_X86NI_GCC_OLD
-#if __GNUC__ == 4 && __GNUC_MINOR__ >= 4 && __GNUC_MINOR__ <= 8 && !__clang__
+#if __GNUC__ == 4 && __GNUC_MINOR__ >= 4 && __GNUC_MINOR__ <= 9 && !__clang__
 #define BR_AES_X86NI_GCC_OLD   1
 #endif
 #endif
 #define BR_AES_X86NI_GCC_OLD   1
 #endif
 #endif
 #define BR_BE_UNALIGNED   1
 #elif BR_POWER8_LE
 #define BR_LE_UNALIGNED   1
 #define BR_BE_UNALIGNED   1
 #elif BR_POWER8_LE
 #define BR_LE_UNALIGNED   1
-#elif (__powerpc__ || __powerpc64__ || _M_PPC || _ARCH_PPC || _ARCH_PPC64) \\
+#elif (__powerpc__ || __powerpc64__ || _M_PPC || _ARCH_PPC || _ARCH_PPC64) \
        && __BIG_ENDIAN__
 #define BR_BE_UNALIGNED   1
 #endif
        && __BIG_ENDIAN__
 #define BR_BE_UNALIGNED   1
 #endif
@@ -507,8 +509,8 @@ void br_sha2small_round(const unsigned char *buf, uint32_t *val);
  */
 void br_tls_phash(void *dst, size_t len,
        const br_hash_class *dig,
  */
 void br_tls_phash(void *dst, size_t len,
        const br_hash_class *dig,
-       const void *secret, size_t secret_len,
-       const char *label, const void *seed, size_t seed_len);
+       const void *secret, size_t secret_len, const char *label,
+       size_t seed_num, const br_tls_prf_seed_chunk *seed);
 
 /*
  * Copy all configured hash implementations from a multihash context
 
 /*
  * Copy all configured hash implementations from a multihash context