1 /** 2 * Author......: See docs/credits.txt 3 * License.....: MIT 4 */ 5 6 #ifndef _CONVERT_H 7 #define _CONVERT_H 8 9 #include <ctype.h> 10 11 bool is_hexify (const u8 *buf, const size_t len); 12 size_t exec_unhexify (const u8 *in_buf, const size_t in_len, u8 *out_buf, const size_t out_sz); 13 14 bool need_hexify (const u8 *buf, const size_t len, const char separator, bool always_ascii); 15 void exec_hexify (const u8 *buf, const size_t len, u8 *out); 16 17 bool is_valid_base64a_string (const u8 *s, const size_t len); 18 bool is_valid_base64a_char (const u8 c); 19 bool is_valid_base64b_string (const u8 *s, const size_t len); 20 bool is_valid_base64b_char (const u8 c); 21 bool is_valid_base64c_string (const u8 *s, const size_t len); 22 bool is_valid_base64c_char (const u8 c); 23 bool is_valid_hex_string (const u8 *s, const size_t len); 24 bool is_valid_hex_char (const u8 c); 25 bool is_valid_digit_string (const u8 *s, const size_t len); 26 bool is_valid_digit_char (const u8 c); 27 bool is_valid_float_string (const u8 *s, const size_t len); 28 bool is_valid_float_char (const u8 c); 29 30 u8 hex_convert (const u8 c); 31 32 u8 hex_to_u8 (const u8 hex[2]); 33 u32 hex_to_u32 (const u8 hex[8]); 34 u64 hex_to_u64 (const u8 hex[16]); 35 36 void u8_to_hex (const u8 v, u8 hex[2]); 37 void u32_to_hex (const u32 v, u8 hex[8]); 38 void u64_to_hex (const u64 v, u8 hex[16]); 39 40 u8 int_to_base32 (const u8 c); 41 u8 base32_to_int (const u8 c); 42 u8 int_to_base64 (const u8 c); 43 u8 base64_to_int (const u8 c); 44 u8 int_to_ab64 (const u8 c); 45 u8 ab64_to_int (const u8 c); 46 u8 int_to_base64url (const u8 c); 47 u8 base64url_to_int (const u8 c); 48 u8 int_to_itoa32 (const u8 c); 49 u8 itoa32_to_int (const u8 c); 50 u8 int_to_itoa64 (const u8 c); 51 u8 itoa64_to_int (const u8 c); 52 u8 int_to_bf64 (const u8 c); 53 u8 bf64_to_int (const u8 c); 54 u8 int_to_lotus64 (const u8 c); 55 u8 lotus64_to_int (const u8 c); 56 57 size_t base32_decode (u8 (*f) (const u8), const u8 *in_buf, const size_t in_len, u8 *out_buf); 58 size_t base32_encode (u8 (*f) (const u8), const u8 *in_buf, const size_t in_len, u8 *out_buf); 59 size_t base64_decode (u8 (*f) (const u8), const u8 *in_buf, const size_t in_len, u8 *out_buf); 60 size_t base64_encode (u8 (*f) (const u8), const u8 *in_buf, const size_t in_len, u8 *out_buf); 61 62 void lowercase (u8 *buf, const size_t len); 63 void uppercase (u8 *buf, const size_t len); 64 65 u8 v8a_from_v32 (const u32 v32); 66 u8 v8b_from_v32 (const u32 v32); 67 u8 v8c_from_v32 (const u32 v32); 68 u8 v8d_from_v32 (const u32 v32); 69 70 u16 v16a_from_v32 (const u32 v32); 71 u16 v16b_from_v32 (const u32 v32); 72 u32 v32_from_v16ab (const u16 v16a, const u16 v16b); 73 74 u32 v32a_from_v64 (const u64 v64); 75 u32 v32b_from_v64 (const u64 v64); 76 u64 v64_from_v32ab (const u32 v32a, const u32 v32b); 77 78 int hex_decode (const u8 *in_buf, const int in_len, u8 *out_buf); 79 int hex_encode (const u8 *in_buf, const int in_len, u8 *out_buf); 80 81 #endif // _CONVERT_H 82