struct sha256_ctx ctx;
uint64_t total_size = 0;
+ assert(fd >= 0);
+
sha256_init_ctx(&ctx);
for (;;) {
bool sha256_is_valid(const char *s) {
return s && in_charset(s, HEXDIGITS) && (strlen(s) == SHA256_DIGEST_SIZE * 2);
}
+
+char* sha256_direct_hex(const void *buffer, size_t sz) {
+ assert(buffer || sz == 0);
+
+ if (sz == SIZE_MAX)
+ sz = strlen(buffer);
+
+ return hexmem(SHA256_DIRECT(buffer, sz), SHA256_DIGEST_SIZE);
+}
int parse_sha256(const char *s, uint8_t ret[static SHA256_DIGEST_SIZE]);
bool sha256_is_valid(const char *s) _pure_;
+
+char* sha256_direct_hex(const void *buffer, size_t sz);
/* We include both a hash of the complete user data, and a truncated version of the data in the word
* we measure. The former protects the actual data, the latter is useful for debugging. */
- _cleanup_free_ char *hash = hexmem(SHA256_DIRECT(data->iov_base, data->iov_len), SHA256_DIGEST_SIZE);
+ _cleanup_free_ char *hash = sha256_direct_hex(data->iov_base, data->iov_len);
if (!hash)
return log_oom();
#include "chattr-util.h"
#include "fd-util.h"
#include "fs-util.h"
-#include "hexdecoct.h"
#include "iovec-util.h"
#include "libarchive-util.h"
#include "mountpoint-util.h"
else
assert(d->have_unique_mount_id == (r > 0));
- m = hexmem(SHA256_DIRECT(handle->f_handle, handle->handle_bytes), SHA256_DIGEST_SIZE);
+ m = sha256_direct_hex(handle->f_handle, handle->handle_bytes);
if (!m)
return log_oom();