ec/curve448: portability fixups.
[openssl.git] / crypto / ec / curve448 / curve448utils.h
index edc1761c5464c2651c74c25306272960afda3844..9bf837993c94bf900ccd5a7e68553d761927fe76 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2015 Cryptography Research, Inc.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * Originally written by Mike Hamburg
  */
 
-#ifndef __DECAF_COMMON_H__
-# define __DECAF_COMMON_H__ 1
+#ifndef HEADER_CURVE448UTILS_H
+# define HEADER_CURVE448UTILS_H
 
 # include <openssl/e_os2.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 /*
  * Internal word types. Somewhat tricky.  This could be decided separately per
  * platform.  However, the structs do need to be all the same size and
@@ -26,61 +22,57 @@ extern "C" {
  * header was built with eg arch_neon, you might end up linking a library built
  * with arch_arm32.
  */
-# ifndef DECAF_WORD_BITS
-#  if (defined(__ILP64__) || defined(__amd64__) || defined(__x86_64__) \
-      || (((__UINT_FAST32_MAX__)>>30)>>30))
-#   define DECAF_WORD_BITS 64      /* The number of bits in a word */
+# ifndef C448_WORD_BITS
+#  if (defined(__SIZEOF_INT128__) && (__SIZEOF_INT128__ == 16)) \
+      && !defined(__sparc__)
+#   define C448_WORD_BITS 64      /* The number of bits in a word */
 #  else
-#   define DECAF_WORD_BITS 32      /* The number of bits in a word */
+#   define C448_WORD_BITS 32      /* The number of bits in a word */
 #  endif
 # endif
 
-# if DECAF_WORD_BITS == 64
+# if C448_WORD_BITS == 64
 /* Word size for internal computations */
-typedef uint64_t decaf_word_t;
+typedef uint64_t c448_word_t;
 /* Signed word size for internal computations */
-typedef int64_t decaf_sword_t;
+typedef int64_t c448_sword_t;
 /* "Boolean" type, will be set to all-zero or all-one (i.e. -1u) */
-typedef uint64_t decaf_bool_t;
+typedef uint64_t c448_bool_t;
 /* Double-word size for internal computations */
-typedef __uint128_t decaf_dword_t;
+typedef __uint128_t c448_dword_t;
 /* Signed double-word size for internal computations */
-typedef __int128_t decaf_dsword_t;
-# elif DECAF_WORD_BITS == 32
+typedef __int128_t c448_dsword_t;
+# elif C448_WORD_BITS == 32
 /* Word size for internal computations */
-typedef uint32_t decaf_word_t;
+typedef uint32_t c448_word_t;
 /* Signed word size for internal computations */
-typedef int32_t decaf_sword_t;
+typedef int32_t c448_sword_t;
 /* "Boolean" type, will be set to all-zero or all-one (i.e. -1u) */
-typedef uint32_t decaf_bool_t;
+typedef uint32_t c448_bool_t;
 /* Double-word size for internal computations */
-typedef uint64_t decaf_dword_t;
+typedef uint64_t c448_dword_t;
 /* Signed double-word size for internal computations */
-typedef int64_t decaf_dsword_t;
+typedef int64_t c448_dsword_t;
 # else
-#  error "Only supporting DECAF_WORD_BITS = 32 or 64 for now"
+#  error "Only supporting C448_WORD_BITS = 32 or 64 for now"
 # endif
 
-/* DECAF_TRUE = -1 so that DECAF_TRUE & x = x */
-static const decaf_bool_t DECAF_TRUE = -(decaf_bool_t) 1;
+/* C448_TRUE = -1 so that C448_TRUE & x = x */
+# define C448_TRUE      (0 - (c448_bool_t)1)
 
-/* DECAF_FALSE = 0 so that DECAF_FALSE & x = 0 */
-static const decaf_bool_t DECAF_FALSE = 0;
+/* C448_FALSE = 0 so that C448_FALSE & x = 0 */
+# define C448_FALSE     0
 
 /* Another boolean type used to indicate success or failure. */
 typedef enum {
-    DECAF_SUCCESS = -1, /**< The operation succeeded. */
-    DECAF_FAILURE = 0   /**< The operation failed. */
-} decaf_error_t;
+    C448_SUCCESS = -1, /**< The operation succeeded. */
+    C448_FAILURE = 0   /**< The operation failed. */
+} c448_error_t;
 
 /* Return success if x is true */
-static ossl_inline decaf_error_t decaf_succeed_if(decaf_bool_t x)
+static ossl_inline c448_error_t c448_succeed_if(c448_bool_t x)
 {
-    return (decaf_error_t) x;
+    return (c448_error_t) x;
 }
 
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif                          /* __DECAF_COMMON_H__ */
+#endif                          /* __C448_COMMON_H__ */