1b64.h(3)                   Library Functions Manual                   b64.h(3)
2
3
4

NAME

6       b64.h - Кодирование base64.
7
8

SYNOPSIS

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                 Пт 23 Июн 2023                        b64.h(3)
Impressum