mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-18 12:28:09 +00:00
tests: cleanup fromhex function
This commit is contained in:
parent
e6574f8eea
commit
ca4057aca0
23
tests.c
23
tests.c
@ -46,18 +46,19 @@
|
||||
#include "ed25519.h"
|
||||
#include "script.h"
|
||||
|
||||
uint8_t *fromhex(const char *str)
|
||||
#define FROMHEX_MAXLEN 256
|
||||
|
||||
const uint8_t *fromhex(const char *str)
|
||||
{
|
||||
static uint8_t buf[256];
|
||||
uint8_t c;
|
||||
for (size_t i = 0; i < strlen(str) / 2; i++) {
|
||||
c = 0;
|
||||
if (str[i*2] >= '0' && str[i*2] <= '9') c += (str[i*2] - '0') << 4;
|
||||
if (str[i*2] >= 'a' && str[i*2] <= 'f') c += (10 + str[i*2] - 'a') << 4;
|
||||
if (str[i*2] >= 'A' && str[i*2] <= 'F') c += (10 + str[i*2] - 'A') << 4;
|
||||
if (str[i*2+1] >= '0' && str[i*2+1] <= '9') c += (str[i*2+1] - '0');
|
||||
if (str[i*2+1] >= 'a' && str[i*2+1] <= 'f') c += (10 + str[i*2+1] - 'a');
|
||||
if (str[i*2+1] >= 'A' && str[i*2+1] <= 'F') c += (10 + str[i*2+1] - 'A');
|
||||
static uint8_t buf[FROMHEX_MAXLEN];
|
||||
size_t len = strlen(str) / 2;
|
||||
if (len > FROMHEX_MAXLEN) len = FROMHEX_MAXLEN;
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
uint8_t c = 0;
|
||||
if (str[i * 2] >= '0' && str[i*2] <= '9') c += (str[i * 2] - '0') << 4;
|
||||
if ((str[i * 2] & ~0x20) >= 'A' && (str[i*2] & ~0x20) <= 'F') c += (10 + (str[i * 2] & ~0x20) - 'A') << 4;
|
||||
if (str[i * 2 + 1] >= '0' && str[i * 2 + 1] <= '9') c += (str[i * 2 + 1] - '0');
|
||||
if ((str[i * 2 + 1] & ~0x20) >= 'A' && (str[i * 2 + 1] & ~0x20) <= 'F') c += (10 + (str[i * 2 + 1] & ~0x20) - 'A');
|
||||
buf[i] = c;
|
||||
}
|
||||
return buf;
|
||||
|
Loading…
Reference in New Issue
Block a user