blob: b9a52b3339a94df889483747390d4173426e20d0 [file] [log] [blame]
/*
* cifra - embedded cryptography library
* Written in 2014 by Joseph Birr-Pixton <jpixton@gmail.com>
*
* To the extent possible under law, the author(s) have dedicated all
* copyright and related and neighboring rights to this software to the
* public domain worldwide. This software is distributed without any
* warranty.
*
* You should have received a copy of the CC0 Public Domain Dedication
* along with this software. If not, see
* <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
#ifndef TESTUTIL_H
#define TESTUTIL_H
#include <assert.h>
#include <string.h>
#include <stdio.h>
static inline uint8_t unhex_chr(char a)
{
if (a >= '0' && a <= '9')
return a - '0';
else if (a >= 'a' && a <= 'f')
return a - 'a' + 10;
else if (a >= 'A' && a <= 'F')
return a - 'A' + 10;
return 0;
}
static inline size_t unhex(uint8_t *buf, size_t len, const char *str)
{
size_t used = 0;
assert(strlen(str) % 2 == 0);
assert(strlen(str) / 2 <= len);
while (*str)
{
assert(len);
*buf = unhex_chr(str[0]) << 4 | unhex_chr(str[1]);
buf++;
used++;
str += 2;
len--;
}
return used;
}
static inline void dump(const char *label, const uint8_t *buf, size_t len)
{
printf("%s: ", label);
for (size_t i = 0; i < len; i++)
printf("%02x", buf[i]);
printf("\n");
}
#endif