summaryrefslogtreecommitdiffstats
path: root/utils/tomcrypt/src/headers/tomcrypt_argchk.h
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2020-08-08 18:45:07 +0200
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2020-10-18 19:08:32 +0200
commitcaa9d9c1c5cc4347edca0c9a9868fdd105b5e779 (patch)
tree403787a018da9eced31d1f84b6493e59466dddc7 /utils/tomcrypt/src/headers/tomcrypt_argchk.h
parent7603533f7fc9f7aec7c04a1258cf772247170e90 (diff)
downloadrockbox-caa9d9c1c5cc4347edca0c9a9868fdd105b5e779.tar.gz
rockbox-caa9d9c1c5cc4347edca0c9a9868fdd105b5e779.tar.bz2
rockbox-caa9d9c1c5cc4347edca0c9a9868fdd105b5e779.zip
utils: Add (partial) libtomcrypt.
Add the parts of libtomcrypt that we're about to use. Change-Id: I0adc1d7d1f4833e7bb3ed53b9a4d9a85977cfb8b
Diffstat (limited to 'utils/tomcrypt/src/headers/tomcrypt_argchk.h')
-rw-r--r--utils/tomcrypt/src/headers/tomcrypt_argchk.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/utils/tomcrypt/src/headers/tomcrypt_argchk.h b/utils/tomcrypt/src/headers/tomcrypt_argchk.h
new file mode 100644
index 0000000000..c946712f8c
--- /dev/null
+++ b/utils/tomcrypt/src/headers/tomcrypt_argchk.h
@@ -0,0 +1,53 @@
+/* LibTomCrypt, modular cryptographic library -- Tom St Denis
+ *
+ * LibTomCrypt is a library that provides various cryptographic
+ * algorithms in a highly modular and flexible manner.
+ *
+ * The library is free for all purposes without any express
+ * guarantee it works.
+ */
+
+/* Defines the LTC_ARGCHK macro used within the library */
+/* ARGTYPE is defined in tomcrypt_cfg.h */
+#if ARGTYPE == 0
+
+#include <signal.h>
+
+/* this is the default LibTomCrypt macro */
+#if defined(__clang__) || defined(__GNUC_MINOR__)
+#define NORETURN __attribute__ ((noreturn))
+#else
+#define NORETURN
+#endif
+
+void crypt_argchk(const char *v, const char *s, int d) NORETURN;
+#define LTC_ARGCHK(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0)
+#define LTC_ARGCHKVD(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0)
+
+#elif ARGTYPE == 1
+
+/* fatal type of error */
+#define LTC_ARGCHK(x) assert((x))
+#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
+
+#elif ARGTYPE == 2
+
+#define LTC_ARGCHK(x) if (!(x)) { fprintf(stderr, "\nwarning: ARGCHK failed at %s:%d\n", __FILE__, __LINE__); }
+#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
+
+#elif ARGTYPE == 3
+
+#define LTC_ARGCHK(x)
+#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
+
+#elif ARGTYPE == 4
+
+#define LTC_ARGCHK(x) if (!(x)) return CRYPT_INVALID_ARG;
+#define LTC_ARGCHKVD(x) if (!(x)) return;
+
+#endif
+
+
+/* ref: HEAD -> master, tag: v1.18.2 */
+/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */
+/* commit time: 2018-07-01 22:49:01 +0200 */