Add and use internal header that implements endianness check
[openssl.git] / providers / implementations / digests / blake2_impl.h
index 52477a8fe260fbf3adf260c15820bc8ba3ca9500..aa6d8a3075cb78e26084184aca62db5f46ea9775 100644 (file)
  */
 
 #include <string.h>
+#include "internal/endian.h"
 
 static ossl_inline uint32_t load32(const uint8_t *src)
 {
-    const union {
-        long one;
-        char little;
-    } is_endian = { 1 };
+    DECLARE_IS_ENDIAN;
 
-    if (is_endian.little) {
+    if (IS_LITTLE_ENDIAN) {
         uint32_t w;
         memcpy(&w, src, sizeof(w));
         return w;
@@ -38,12 +36,9 @@ static ossl_inline uint32_t load32(const uint8_t *src)
 
 static ossl_inline uint64_t load64(const uint8_t *src)
 {
-    const union {
-        long one;
-        char little;
-    } is_endian = { 1 };
+    DECLARE_IS_ENDIAN;
 
-    if (is_endian.little) {
+    if (IS_LITTLE_ENDIAN) {
         uint64_t w;
         memcpy(&w, src, sizeof(w));
         return w;
@@ -62,12 +57,9 @@ static ossl_inline uint64_t load64(const uint8_t *src)
 
 static ossl_inline void store32(uint8_t *dst, uint32_t w)
 {
-    const union {
-        long one;
-        char little;
-    } is_endian = { 1 };
+    DECLARE_IS_ENDIAN;
 
-    if (is_endian.little) {
+    if (IS_LITTLE_ENDIAN) {
         memcpy(dst, &w, sizeof(w));
     } else {
         uint8_t *p = (uint8_t *)dst;
@@ -80,12 +72,9 @@ static ossl_inline void store32(uint8_t *dst, uint32_t w)
 
 static ossl_inline void store64(uint8_t *dst, uint64_t w)
 {
-    const union {
-        long one;
-        char little;
-    } is_endian = { 1 };
+    DECLARE_IS_ENDIAN;
 
-    if (is_endian.little) {
+    if (IS_LITTLE_ENDIAN) {
         memcpy(dst, &w, sizeof(w));
     } else {
         uint8_t *p = (uint8_t *)dst;