+ssize_t write_lseek_blockwise(int fd, char *buf, size_t count, off_t offset);
+int device_ready(struct crypt_device *cd, const char *device, int mode);
+int device_size(const char *device, uint64_t *size);
+
+enum devcheck { DEV_OK = 0, DEV_EXCL = 1, DEV_SHARED = 2 };
+int device_check_and_adjust(struct crypt_device *cd,
+ const char *device,
+ enum devcheck device_check,
+ uint64_t *size,
+ uint64_t *offset,
+ uint32_t *flags);
+
+void logger(struct crypt_device *cd, int class, const char *file, int line, const char *format, ...);
+#define log_dbg(x...) logger(NULL, CRYPT_LOG_DEBUG, __FILE__, __LINE__, x)
+#define log_std(c, x...) logger(c, CRYPT_LOG_NORMAL, __FILE__, __LINE__, x)
+#define log_verbose(c, x...) logger(c, CRYPT_LOG_VERBOSE, __FILE__, __LINE__, x)
+#define log_err(c, x...) logger(c, CRYPT_LOG_ERROR, __FILE__, __LINE__, x)
+
+int crypt_get_debug_level(void);
+void debug_processes_using_device(const char *name);
+
+int crypt_memlock_inc(struct crypt_device *ctx);
+int crypt_memlock_dec(struct crypt_device *ctx);
+
+void get_topology_alignment(const char *device,
+ unsigned long *required_alignment, /* bytes */
+ unsigned long *alignment_offset, /* bytes */
+ unsigned long default_alignment);
+
+int crypt_random_init(struct crypt_device *ctx);
+int crypt_random_get(struct crypt_device *ctx, char *buf, size_t len, int quality);
+void crypt_random_exit(void);
+int crypt_random_default_key_rng(void);
+
+int crypt_plain_hash(struct crypt_device *ctx,
+ const char *hash_name,
+ char *key, size_t key_size,
+ const char *passphrase, size_t passphrase_size);
+int PLAIN_activate(struct crypt_device *cd,
+ const char *name,
+ struct volume_key *vk,
+ uint64_t size,
+ uint32_t flags);
+
+/**
+ * Different methods used to erase sensitive data concerning
+ * either encrypted payload area or master key inside keyslot
+ * area
+ */
+typedef enum {
+ CRYPT_WIPE_ZERO, /**< overwrite area using zero blocks */
+ CRYPT_WIPE_DISK, /**< erase disk (using Gutmann method if it is rotational disk)*/
+ CRYPT_WIPE_SSD, /**< erase solid state disk (random write) */
+ CRYPT_WIPE_RANDOM /**< overwrite area using some up to now unspecified
+ * random algorithm */
+} crypt_wipe_type;
+
+int crypt_wipe(const char *device,
+ uint64_t offset,
+ uint64_t sectors,
+ crypt_wipe_type type,
+ int flags);