1b64.h(3) Library Functions Manual b64.h(3)
2
3
4
6 b64.h - Кодирование base64.
7
8
10 #include 'bee2/defs.h'
11 #include 'bee2/core/safe.h'
12
13
14 Функции
15 bool_t b64IsValid (const char *b64)
16 Корректная base64-строка?
17 void b64From (char *dest, const void *src, size_t count)
18 Кодирование буфера памяти
19 void b64To (void *dest, size_t *count, const char *src)
20 Декодирование буфера памяти
21
23 Реализовано кодирование буферов памяти base64-строками по правилам RFC
24 4848. Base64-строка -- это слово в алфавите b64_alphabet =
25 {'A',...,'F','a',...,'f','0',...,'9','+','/'}, которое может
26 дополняться одним или двумя символами '=' и длина которого всегда
27 кратна 4.
28
29 Правила кодирования: 1 Кодируемые данные разбиваются на блоки ---
30 тройки октетов или 24-ки битов. Каждая 24-ка разбивается на четыре
31 6-ки. Каждая 6-ка кодируется 1 символом b64_alphabet: 000000 ---
32 символом 'A',...., 111111 -- символом '/'. 2 Если последний блок данных
33 является неполным, то он дополняется до полного 8 или 16 нулевыми
34 битами, а затем кодируется 3 или 2 символами b64_alphabet. 3 Более
35 точно, если блок дополняется 8 нулевыми битами, то кодируются первые 18
36 = 6 * 3 битов блока (16 значащих битов и 2 дописанных нуля). Если же
37 блок дополняется 16 нулевыми битами, то кодируются первые 12 = 6 * 2
38 битов (8 значащих и 4 нуля). 4 Окончательное кодовое слово дополняется
39 символами '=' до тех пор, пока его длина не станет кратной 4. Если
40 последний блок данных полный, то символ '=' не дописывается. Если
41 последний блок состоял из 2 октетов, то будет дописан 1 символ '=',
42 если из 1 октета -- 2 символа.
43
44 Предусловие
45 Во все функции, кроме возможно b64IsValid(), передаются корректные
46 строки и буферы памяти.
47
49 void b64From (char * dest, const void * src, size_t count)
50 Буфер [count]src кодируется base64-строкой [4 * ((count + 2) / 3) +
51 1]dest.
52
53 Предусловие
54 Буферы dest и src не пересекаются.
55
56 Аргументы
57 dest строка-приемник
58 src память-источник
59 count число октетов
60
61 bool_t b64IsValid (const char * b64)
62 Проверяется корректность base64-строки b64. Строка считается
63 корректной, если:
64
65 • ее длина кратна 4;
66
67 • строка может заканчиваться 1 или 2 символами '=', все остальные
68 символы принадлежат алфавиту enc_table;
69
70 • если последний блок строки имеет вид abc=, то в 6-кe битов,
71 соответствующих символу c, два младших бита нулевые;
72
73 • если последний блок строки имеет вид ab==, то в 6-кe битов,
74 соответствующих символу b, четыре младших бита нулевые.
75
76 Возвращает
77 Признак корректности.
78
79 Регулярность
80 Функция нерегулярна.
81
82 Аргументы
83 b64 base64-строка
84
85 void b64To (void * dest, size_t * count, const char * src)
86 Base64-строка src декодируется в строку октетов [count?]dest.
87
88 Предусловие
89 Если dest != 0, то буфер [count]dest корректен и его размер
90 достаточен для размещения декодированных данных.
91
92 Буферы dest и src не пересекаются.
93
94 b64IsValid(src) == TRUE.
95
96 Прим.
97 Декодированные данные всегда уместятся
98 в буфер из 3 * strLen(src) / 4 октетов.
99
100 Аргументы
101 dest память-приемник
102 count размер dest / декодированных данных
103 src строка-источник
104
106 Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
107
108
109
110Библиотека Bee2 Ср 19 Июл 2023 00:00:00 b64.h(3)