1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
/* lcfs
SPDX-License-Identifier: GPL-2.0-or-later OR Apache-2.0
*/
#define _GNU_SOURCE
#include "config.h"
#include "lcfs-utils.h"
#include "lcfs-writer.h"
void digest_to_string(const uint8_t *csum, char *buf)
{
static const char hexchars[] = "0123456789abcdef";
uint32_t i, j;
for (i = 0, j = 0; i < LCFS_DIGEST_SIZE; i++, j += 2) {
uint8_t byte = csum[i];
buf[j] = hexchars[byte >> 4];
buf[j + 1] = hexchars[byte & 0xF];
}
buf[j] = '\0';
}
int digest_to_raw(const char *digest, uint8_t *raw, int max_size)
{
int size = 0;
while (*digest) {
char c1, c2;
int n1, n2;
if (size >= max_size)
return -1;
c1 = *digest++;
n1 = hexdigit(c1);
if (n1 < 0)
return -1;
c2 = *digest++;
n2 = hexdigit(c2);
if (n2 < 0)
return -1;
raw[size++] = (n1 & 0xf) << 4 | (n2 & 0xf);
}
return size;
}
|