|
|
@ -33,25 +33,31 @@ uint8_t hex2bin(char hex) { |
|
|
return byte; |
|
|
return byte; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void ecdaa_hextobin(const char *in_hex, uint8_t *out_bin, size_t outlen) { |
|
|
size_t hex_decode(const char *in_hex, uint8_t *out_bin, size_t outlen) { |
|
|
for (size_t i = 0, j = 0; i < outlen; i++, j+=2) { |
|
|
size_t i = 0; |
|
|
|
|
|
size_t j = 0; |
|
|
|
|
|
for (; i < outlen; i++, j+=2) { |
|
|
uint8_t val = hex2bin(in_hex[j]); |
|
|
uint8_t val = hex2bin(in_hex[j]); |
|
|
val += hex2bin(in_hex[j+1]) * 16; |
|
|
val += hex2bin(in_hex[j+1]) * 16; |
|
|
out_bin[i] = (char) val; |
|
|
out_bin[i] = (char) val; |
|
|
} |
|
|
} |
|
|
|
|
|
return i; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void ecdaa_bintohex(const uint8_t *in_bin, char *out_hex, size_t inlen) { |
|
|
size_t hex_encode(const uint8_t *in_bin, char *out_hex, size_t inlen) { |
|
|
for (size_t i = 0, j = 0; i < inlen; i++, j+=2) { |
|
|
size_t i = 0; |
|
|
|
|
|
size_t j = 0; |
|
|
|
|
|
for (; i < inlen; i++, j+=2) { |
|
|
out_hex[j] = bin2hex(in_bin[i]); |
|
|
out_hex[j] = bin2hex(in_bin[i]); |
|
|
out_hex[j+1] = bin2hex(in_bin[i] >> 4); |
|
|
out_hex[j+1] = bin2hex(in_bin[i] >> 4); |
|
|
} |
|
|
} |
|
|
|
|
|
return i; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int ecdaa_encode(const uint8_t *in_dec, char *out_enc, size_t inlen) { |
|
|
size_t base64_encode(const uint8_t *in_dec, char *out_enc, size_t inlen) { |
|
|
int outlen = 4 * ((inlen + 2) / 3); |
|
|
size_t outlen = 4 * ((inlen + 2) / 3); |
|
|
int i = 0; |
|
|
size_t i = 0; |
|
|
int j = 0; |
|
|
size_t j = 0; |
|
|
|
|
|
|
|
|
while(i < inlen) { |
|
|
while(i < inlen) { |
|
|
uint32_t octet_a = i < inlen ? in_dec[i++] : 0; |
|
|
uint32_t octet_a = i < inlen ? in_dec[i++] : 0; |
|
|
@ -76,10 +82,10 @@ int ecdaa_encode(const uint8_t *in_dec, char *out_enc, size_t inlen) { |
|
|
return j; |
|
|
return j; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int ecdaa_decode(const char *in_enc, uint8_t *out_dec, size_t outlen) { |
|
|
size_t base64_decode(const char *in_enc, uint8_t *out_dec, size_t outlen) { |
|
|
int inlen = 4 * ((outlen + 2) / 3); |
|
|
size_t inlen = 4 * ((outlen + 2) / 3); |
|
|
int i = 0; |
|
|
size_t i = 0; |
|
|
int j = 0; |
|
|
size_t j = 0; |
|
|
|
|
|
|
|
|
while (i < inlen) { |
|
|
while (i < inlen) { |
|
|
uint32_t sextet_a = in_enc[i] == '=' ? 0 & i++ : base64_index[in_enc[i++]]; |
|
|
uint32_t sextet_a = in_enc[i] == '=' ? 0 & i++ : base64_index[in_enc[i++]]; |
|
|
@ -95,3 +101,11 @@ int ecdaa_decode(const char *in_enc, uint8_t *out_dec, size_t outlen) { |
|
|
} |
|
|
} |
|
|
return i; |
|
|
return i; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
size_t ecdaa_encode(const uint8_t *in_dec, char *out_enc, size_t inlen) { |
|
|
|
|
|
return base64_encode(in_dec, out_enc, inlen); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
size_t ecdaa_decode(const char *in_enc, uint8_t *out_dec, size_t outlen) { |
|
|
|
|
|
return base64_decode(in_enc, out_dec, outlen); |
|
|
|
|
|
} |
|
|
|