summaryrefslogtreecommitdiff
path: root/utility/mount-encrypted.h
diff options
context:
space:
mode:
Diffstat (limited to 'utility/mount-encrypted.h')
-rw-r--r--utility/mount-encrypted.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/utility/mount-encrypted.h b/utility/mount-encrypted.h
new file mode 100644
index 00000000..df5b1d2d
--- /dev/null
+++ b/utility/mount-encrypted.h
@@ -0,0 +1,99 @@
+/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Private header file for mount-encrypted helper tool.
+ */
+#ifndef _MOUNT_ENCRYPTED_H_
+#define _MOUNT_ENCRYPTED_H_
+
+/* TODO(keescook): Disable debugging in production. */
+#define DEBUG_ENABLED 1
+
+#include <openssl/err.h>
+#include <openssl/sha.h>
+
+#define DIGEST_LENGTH SHA256_DIGEST_LENGTH
+
+#define _ERROR(f, a...) do { \
+ fprintf(stderr, "ERROR %s (%s, %d): ", \
+ __func__, __FILE__, __LINE__); \
+ fprintf(stderr, f, ## a); \
+} while (0)
+#define ERROR(f, a...) do { \
+ _ERROR(f, ## a); \
+ fprintf(stderr, "\n"); \
+} while (0)
+#define PERROR(f, a...) do { \
+ _ERROR(f, ## a); \
+ fprintf(stderr, ": %s\n", strerror(errno)); \
+} while (0)
+
+#define SSL_ERROR(f, a...) do { \
+ ERR_load_crypto_strings(); \
+ _ERROR(f, ## a); \
+ fprintf(stderr, "%s\n", ERR_error_string(ERR_get_error(), NULL)); \
+} while (0)
+
+#if DEBUG_ENABLED
+static struct timeval tick;
+# define TICK_INIT() gettimeofday(&tick, NULL)
+# ifdef DEBUG_TIME_DELTA
+# define TICK_REPORT() do { \
+ struct timeval now, diff; \
+ gettimeofday(&now, NULL); \
+ diff.tv_sec = now.tv_sec - tick.tv_sec; \
+ if (tick.tv_usec > now.tv_usec) { \
+ diff.tv_sec -= 1; \
+ diff.tv_usec = 1000000 - tick.tv_usec + now.tv_usec; \
+ } else { \
+ diff.tv_usec = now.tv_usec - tick.tv_usec; \
+ } \
+ tick = now; \
+ printf("\tTook: [%2d.%06d]\n", (int)diff.tv_sec, (int)diff.tv_usec); \
+} while (0)
+# else
+# define TICK_REPORT() do { \
+ gettimeofday(&tick, NULL); \
+ printf("[%d:%2d.%06d] ", getpid(), (int)tick.tv_sec, (int)tick.tv_usec); \
+} while (0)
+# endif
+#else
+# define TICK_INIT() do { } while (0)
+# define TICK_REPORT() do { } while (0)
+#endif
+
+#define INFO(f, a...) do { \
+ TICK_REPORT(); \
+ printf(f, ## a); \
+ printf("\n"); \
+} while (0)
+#define INFO_INIT(f, a...) do { \
+ TICK_INIT(); \
+ INFO(f, ## a); \
+} while (0)
+#if DEBUG_ENABLED
+# define DEBUG(f, a...) do { \
+ printf(f, ## a); \
+ printf("\n"); \
+} while (0)
+#else
+# define DEBUG(f, a...) do { } while (0)
+#endif
+
+#if DEBUG_ENABLED
+static inline void debug_dump_hex(const char *name, uint8_t *data,
+ uint32_t size)
+{
+ int i;
+ printf("%s: ", name);
+ for (i = 0; i < size; i++) {
+ printf("%02x ", data[i]);
+ }
+ printf("\n");
+}
+#else
+# define debug_dump_hex(n, d, s) do { } while (0)
+#endif
+
+#endif /* _MOUNT_ENCRYPTED_H_ */