1 | /* profiles.c Definitions of stringprep profiles.
|
---|
2 | * Copyright (C) 2002, 2003 Simon Josefsson
|
---|
3 | *
|
---|
4 | * This file is part of GNU Libidn.
|
---|
5 | *
|
---|
6 | * GNU Libidn is free software; you can redistribute it and/or
|
---|
7 | * modify it under the terms of the GNU Lesser General Public
|
---|
8 | * License as published by the Free Software Foundation; either
|
---|
9 | * version 2.1 of the License, or (at your option) any later version.
|
---|
10 | *
|
---|
11 | * GNU Libidn is distributed in the hope that it will be useful,
|
---|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
14 | * Lesser General Public License for more details.
|
---|
15 | *
|
---|
16 | * You should have received a copy of the GNU Lesser General Public
|
---|
17 | * License along with GNU Libidn; if not, write to the Free Software
|
---|
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
---|
19 | *
|
---|
20 | */
|
---|
21 |
|
---|
22 | #include "internal.h"
|
---|
23 |
|
---|
24 | Stringprep_profiles stringprep_profiles[] = {
|
---|
25 | {"generic", stringprep_generic}
|
---|
26 | ,
|
---|
27 | {"Nameprep", stringprep_nameprep}
|
---|
28 | ,
|
---|
29 | {"KRBprep", stringprep_kerberos5}
|
---|
30 | ,
|
---|
31 | {"Nodeprep", stringprep_xmpp_nodeprep}
|
---|
32 | ,
|
---|
33 | {"Resourceprep", stringprep_xmpp_resourceprep}
|
---|
34 | ,
|
---|
35 | {"plain", stringprep_plain}
|
---|
36 | ,
|
---|
37 | {"SASLprep", stringprep_saslprep}
|
---|
38 | ,
|
---|
39 | {"ISCSIprep", stringprep_iscsi}
|
---|
40 | ,
|
---|
41 | {NULL, NULL}
|
---|
42 | };
|
---|
43 |
|
---|
44 | Stringprep_profile stringprep_generic[] = {
|
---|
45 | /* 1) Map -- For each character in the input, check if it has a
|
---|
46 | mapping and, if so, replace it with its mapping. This is
|
---|
47 | described in section 3. */
|
---|
48 |
|
---|
49 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1, "B.1"}
|
---|
50 | ,
|
---|
51 | {STRINGPREP_MAP_TABLE, ~STRINGPREP_NO_NFKC, stringprep_rfc3454_B_2, "B.2"}
|
---|
52 | ,
|
---|
53 | {STRINGPREP_MAP_TABLE, STRINGPREP_NO_NFKC, stringprep_rfc3454_B_3, "B.3"}
|
---|
54 | ,
|
---|
55 |
|
---|
56 | /* 2) Normalize -- Possibly normalize the result of step 1 using
|
---|
57 | Unicode normalization. This is described in section 4. */
|
---|
58 |
|
---|
59 | {STRINGPREP_NFKC, ~STRINGPREP_NO_NFKC, 0, "NFKC"}
|
---|
60 | ,
|
---|
61 |
|
---|
62 | /* 3) Prohibit -- Check for any characters that are not allowed in
|
---|
63 | the output. If any are found, return an error. This is
|
---|
64 | described in section 5. */
|
---|
65 |
|
---|
66 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1, "C.1.1"}
|
---|
67 | ,
|
---|
68 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2, "C.1.2"}
|
---|
69 | ,
|
---|
70 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1, "C.2.1"}
|
---|
71 | ,
|
---|
72 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
73 | ,
|
---|
74 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
75 | ,
|
---|
76 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
77 | ,
|
---|
78 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
79 | ,
|
---|
80 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
81 | ,
|
---|
82 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7, "C.7"}
|
---|
83 | ,
|
---|
84 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
85 | ,
|
---|
86 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
87 | ,
|
---|
88 |
|
---|
89 | /* 4) Check bidi -- Possibly check for right-to-left characters, and
|
---|
90 | if any are found, make sure that the whole string satisfies
|
---|
91 | the requirements for bidirectional strings. If the string does
|
---|
92 | not satisfy the requirements for bidirectional strings, return
|
---|
93 | an error. This is described in section 6. */
|
---|
94 |
|
---|
95 | {STRINGPREP_BIDI, ~STRINGPREP_NO_BIDI, 0, "BIDI"}
|
---|
96 | ,
|
---|
97 | {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI,
|
---|
98 | stringprep_rfc3454_C_8, "C.8"}
|
---|
99 | ,
|
---|
100 | {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1,
|
---|
101 | "D.1"}
|
---|
102 | ,
|
---|
103 | {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2,
|
---|
104 | "D.2"}
|
---|
105 | ,
|
---|
106 |
|
---|
107 | /* 5) Check unassigned code points -- Possibly check the output for
|
---|
108 | unassigned code points, according to the profile. This is
|
---|
109 | described in section 7. */
|
---|
110 |
|
---|
111 | {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
|
---|
112 | stringprep_rfc3454_A_1, "A.1"}
|
---|
113 | ,
|
---|
114 |
|
---|
115 | {0}
|
---|
116 | };
|
---|
117 |
|
---|
118 | Stringprep_profile stringprep_nameprep[] = {
|
---|
119 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1, "B.1"}
|
---|
120 | ,
|
---|
121 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2, "B.2"}
|
---|
122 | ,
|
---|
123 | {STRINGPREP_NFKC, 0, 0, "NFKC"}
|
---|
124 | ,
|
---|
125 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2, "C.1.2"}
|
---|
126 | ,
|
---|
127 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
128 | ,
|
---|
129 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
130 | ,
|
---|
131 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
132 | ,
|
---|
133 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
134 | ,
|
---|
135 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
136 | ,
|
---|
137 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7, "C.7"}
|
---|
138 | ,
|
---|
139 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
140 | ,
|
---|
141 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
142 | ,
|
---|
143 | {STRINGPREP_BIDI, 0, 0, "BIDI"}
|
---|
144 | ,
|
---|
145 | {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI,
|
---|
146 | stringprep_rfc3454_C_8, "C.8"}
|
---|
147 | ,
|
---|
148 | {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1, "D.1"}
|
---|
149 | ,
|
---|
150 | {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2, "D.2"}
|
---|
151 | ,
|
---|
152 | {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
|
---|
153 | stringprep_rfc3454_A_1, "A.1"}
|
---|
154 | ,
|
---|
155 | {0}
|
---|
156 | };
|
---|
157 |
|
---|
158 | Stringprep_profile stringprep_kerberos5[] = {
|
---|
159 | /* XXX this is likely to be wrong as the specification is
|
---|
160 | a rough draft. */
|
---|
161 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1, "B.1"}
|
---|
162 | ,
|
---|
163 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_3, "B.2"}
|
---|
164 | ,
|
---|
165 | {STRINGPREP_NFKC, 0, 0, "NFKC"}
|
---|
166 | ,
|
---|
167 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2, "C.1.2"}
|
---|
168 | ,
|
---|
169 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
170 | ,
|
---|
171 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
172 | ,
|
---|
173 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
174 | ,
|
---|
175 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
176 | ,
|
---|
177 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
178 | ,
|
---|
179 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7, "C.7"}
|
---|
180 | ,
|
---|
181 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
182 | ,
|
---|
183 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
184 | ,
|
---|
185 | {STRINGPREP_BIDI, 0, 0, "BIDI"}
|
---|
186 | ,
|
---|
187 | {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI,
|
---|
188 | stringprep_rfc3454_C_8, "C.8"}
|
---|
189 | ,
|
---|
190 | {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1, "D.1"}
|
---|
191 | ,
|
---|
192 | {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2, "D.2"}
|
---|
193 | ,
|
---|
194 | {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
|
---|
195 | stringprep_rfc3454_A_1, "A.1"}
|
---|
196 | ,
|
---|
197 | {0}
|
---|
198 | };
|
---|
199 |
|
---|
200 | Stringprep_table_element stringprep_xmpp_nodeprep_prohibit[] = {
|
---|
201 | {0x000022}
|
---|
202 | , /* #x22 (") */
|
---|
203 | {0x000026}
|
---|
204 | , /* #x26 (&) */
|
---|
205 | {0x000027}
|
---|
206 | , /* #x27 (') */
|
---|
207 | {0x00002F}
|
---|
208 | , /* #x2F (/) */
|
---|
209 | {0x00003A}
|
---|
210 | , /* #x3A (:) */
|
---|
211 | {0x00003C}
|
---|
212 | , /* #x3C (<) */
|
---|
213 | {0x00003E}
|
---|
214 | , /* #x3E (>) */
|
---|
215 | {0x000040} /* #x40 (@) */
|
---|
216 | ,
|
---|
217 | {0}
|
---|
218 | };
|
---|
219 |
|
---|
220 | Stringprep_profile stringprep_xmpp_nodeprep[] = {
|
---|
221 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1, "B.1"}
|
---|
222 | ,
|
---|
223 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2, "B.2"}
|
---|
224 | ,
|
---|
225 | {STRINGPREP_NFKC, 0, 0, "NFKC"}
|
---|
226 | ,
|
---|
227 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1, "C.1.1"}
|
---|
228 | ,
|
---|
229 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2, "C.1.2"}
|
---|
230 | ,
|
---|
231 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1, "C.2.1"}
|
---|
232 | ,
|
---|
233 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
234 | ,
|
---|
235 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
236 | ,
|
---|
237 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
238 | ,
|
---|
239 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
240 | ,
|
---|
241 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
242 | ,
|
---|
243 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7, "C.7"}
|
---|
244 | ,
|
---|
245 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
246 | ,
|
---|
247 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
248 | ,
|
---|
249 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_xmpp_nodeprep_prohibit,
|
---|
250 | "XMPP-PROHIBIT"}
|
---|
251 | ,
|
---|
252 | {STRINGPREP_BIDI, 0, 0, "BIDI"}
|
---|
253 | ,
|
---|
254 | {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
255 | ,
|
---|
256 | {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1, "D.1"}
|
---|
257 | ,
|
---|
258 | {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2, "D.2"}
|
---|
259 | ,
|
---|
260 | {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
|
---|
261 | stringprep_rfc3454_A_1, "A.1"}
|
---|
262 | ,
|
---|
263 | {0}
|
---|
264 | };
|
---|
265 |
|
---|
266 | Stringprep_profile stringprep_xmpp_resourceprep[] = {
|
---|
267 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1, "B.1"}
|
---|
268 | ,
|
---|
269 | {STRINGPREP_NFKC, 0, 0, "NFKC"}
|
---|
270 | ,
|
---|
271 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2, "C.1.2"}
|
---|
272 | ,
|
---|
273 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1, "C.2.1"}
|
---|
274 | ,
|
---|
275 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
276 | ,
|
---|
277 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
278 | ,
|
---|
279 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
280 | ,
|
---|
281 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
282 | ,
|
---|
283 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
284 | ,
|
---|
285 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7, "C.7"}
|
---|
286 | ,
|
---|
287 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
288 | ,
|
---|
289 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
290 | ,
|
---|
291 | {STRINGPREP_BIDI, 0, 0, "BIDI"}
|
---|
292 | ,
|
---|
293 | {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
294 | ,
|
---|
295 | {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1,
|
---|
296 | "D.1"}
|
---|
297 | ,
|
---|
298 | {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2,
|
---|
299 | "D.2"}
|
---|
300 | ,
|
---|
301 | {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
|
---|
302 | stringprep_rfc3454_A_1, "A.1"}
|
---|
303 | ,
|
---|
304 | {0}
|
---|
305 | };
|
---|
306 |
|
---|
307 | Stringprep_profile stringprep_plain[] = {
|
---|
308 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1, "C.2.1"}
|
---|
309 | ,
|
---|
310 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
311 | ,
|
---|
312 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
313 | ,
|
---|
314 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
315 | ,
|
---|
316 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
317 | ,
|
---|
318 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
319 | ,
|
---|
320 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
321 | ,
|
---|
322 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
323 | ,
|
---|
324 | {STRINGPREP_BIDI, 0, 0, "BIDI"}
|
---|
325 | ,
|
---|
326 | {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
327 | ,
|
---|
328 | {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1,
|
---|
329 | "D.1"}
|
---|
330 | ,
|
---|
331 | {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2,
|
---|
332 | "D.2"}
|
---|
333 | ,
|
---|
334 | {0}
|
---|
335 | };
|
---|
336 |
|
---|
337 | Stringprep_table_element stringprep_iscsi_prohibit[] = {
|
---|
338 | {0x0000}
|
---|
339 | , /* [ASCII CONTROL CHARACTERS and SPACE through ,] */
|
---|
340 | {0x0001}
|
---|
341 | ,
|
---|
342 | {0x0002}
|
---|
343 | ,
|
---|
344 | {0x0003}
|
---|
345 | ,
|
---|
346 | {0x0004}
|
---|
347 | ,
|
---|
348 | {0x0005}
|
---|
349 | ,
|
---|
350 | {0x0006}
|
---|
351 | ,
|
---|
352 | {0x0007}
|
---|
353 | ,
|
---|
354 | {0x0008}
|
---|
355 | ,
|
---|
356 | {0x0009}
|
---|
357 | ,
|
---|
358 | {0x000A}
|
---|
359 | ,
|
---|
360 | {0x000B}
|
---|
361 | ,
|
---|
362 | {0x000C}
|
---|
363 | ,
|
---|
364 | {0x000D}
|
---|
365 | ,
|
---|
366 | {0x000E}
|
---|
367 | ,
|
---|
368 | {0x000F}
|
---|
369 | ,
|
---|
370 | {0x0010}
|
---|
371 | ,
|
---|
372 | {0x0011}
|
---|
373 | ,
|
---|
374 | {0x0012}
|
---|
375 | ,
|
---|
376 | {0x0013}
|
---|
377 | ,
|
---|
378 | {0x0014}
|
---|
379 | ,
|
---|
380 | {0x0015}
|
---|
381 | ,
|
---|
382 | {0x0016}
|
---|
383 | ,
|
---|
384 | {0x0017}
|
---|
385 | ,
|
---|
386 | {0x0018}
|
---|
387 | ,
|
---|
388 | {0x0019}
|
---|
389 | ,
|
---|
390 | {0x001A}
|
---|
391 | ,
|
---|
392 | {0x001B}
|
---|
393 | ,
|
---|
394 | {0x001C}
|
---|
395 | ,
|
---|
396 | {0x001D}
|
---|
397 | ,
|
---|
398 | {0x001E}
|
---|
399 | ,
|
---|
400 | {0x001F}
|
---|
401 | ,
|
---|
402 | {0x0020}
|
---|
403 | ,
|
---|
404 | {0x0021}
|
---|
405 | ,
|
---|
406 | {0x0022}
|
---|
407 | ,
|
---|
408 | {0x0023}
|
---|
409 | ,
|
---|
410 | {0x0024}
|
---|
411 | ,
|
---|
412 | {0x0025}
|
---|
413 | ,
|
---|
414 | {0x0026}
|
---|
415 | ,
|
---|
416 | {0x0027}
|
---|
417 | ,
|
---|
418 | {0x0028}
|
---|
419 | ,
|
---|
420 | {0x0029}
|
---|
421 | ,
|
---|
422 | {0x002A}
|
---|
423 | ,
|
---|
424 | {0x002B}
|
---|
425 | ,
|
---|
426 | {0x002C}
|
---|
427 | ,
|
---|
428 | {0x002F}
|
---|
429 | , /* [ASCII /] */
|
---|
430 | {0x003B}
|
---|
431 | , /* [ASCII ; through @] */
|
---|
432 | {0x003C}
|
---|
433 | ,
|
---|
434 | {0x003D}
|
---|
435 | ,
|
---|
436 | {0x003E}
|
---|
437 | ,
|
---|
438 | {0x003F}
|
---|
439 | ,
|
---|
440 | {0x0040}
|
---|
441 | ,
|
---|
442 | {0x005B}
|
---|
443 | , /* [ASCII [ through `] */
|
---|
444 | {0x005C}
|
---|
445 | ,
|
---|
446 | {0x005D}
|
---|
447 | ,
|
---|
448 | {0x005E}
|
---|
449 | ,
|
---|
450 | {0x005F}
|
---|
451 | ,
|
---|
452 | {0x0060}
|
---|
453 | ,
|
---|
454 | {0x007B}
|
---|
455 | , /* [ASCII { through DEL] */
|
---|
456 | {0x007C}
|
---|
457 | ,
|
---|
458 | {0x007D}
|
---|
459 | ,
|
---|
460 | {0x007E}
|
---|
461 | ,
|
---|
462 | {0x007F}
|
---|
463 | ,
|
---|
464 | {0x3002}
|
---|
465 | , /* ideographic full stop */
|
---|
466 | {0}
|
---|
467 | };
|
---|
468 |
|
---|
469 | Stringprep_profile stringprep_iscsi[] = {
|
---|
470 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1, "B.1"}
|
---|
471 | ,
|
---|
472 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2, "B.2"}
|
---|
473 | ,
|
---|
474 | {STRINGPREP_NFKC, 0, 0, "NFKC"}
|
---|
475 | ,
|
---|
476 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1, "C.1.1"}
|
---|
477 | ,
|
---|
478 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.1.2"}
|
---|
479 | ,
|
---|
480 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1, "C.2.1"}
|
---|
481 | ,
|
---|
482 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
483 | ,
|
---|
484 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
485 | ,
|
---|
486 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
487 | ,
|
---|
488 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
489 | ,
|
---|
490 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
491 | ,
|
---|
492 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
493 | ,
|
---|
494 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
495 | ,
|
---|
496 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_iscsi_prohibit, "ISCSI-PROHIBIT"}
|
---|
497 | ,
|
---|
498 | {STRINGPREP_BIDI, 0, 0, "BIDI"}
|
---|
499 | ,
|
---|
500 | {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
501 | ,
|
---|
502 | {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1,
|
---|
503 | "D.1"}
|
---|
504 | ,
|
---|
505 | {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2,
|
---|
506 | "D.2"}
|
---|
507 | ,
|
---|
508 | {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
|
---|
509 | stringprep_rfc3454_A_1, "A.1"}
|
---|
510 | ,
|
---|
511 | {0}
|
---|
512 | };
|
---|
513 |
|
---|
514 | Stringprep_table_element stringprep_saslprep_space_map[] = {
|
---|
515 | {0x0000A0, 0, {0x0020}
|
---|
516 | }
|
---|
517 | , /* 00A0; NO-BREAK SPACE */
|
---|
518 | {0x001680, 0, {0x0020}
|
---|
519 | }
|
---|
520 | , /* 1680; OGHAM SPACE MARK */
|
---|
521 | {0x002000, 0, {0x0020}
|
---|
522 | }
|
---|
523 | , /* 2000; EN QUAD */
|
---|
524 | {0x002001, 0, {0x0020}
|
---|
525 | }
|
---|
526 | , /* 2001; EM QUAD */
|
---|
527 | {0x002002, 0, {0x0020}
|
---|
528 | }
|
---|
529 | , /* 2002; EN SPACE */
|
---|
530 | {0x002003, 0, {0x0020}
|
---|
531 | }
|
---|
532 | , /* 2003; EM SPACE */
|
---|
533 | {0x002004, 0, {0x0020}
|
---|
534 | }
|
---|
535 | , /* 2004; THREE-PER-EM SPACE */
|
---|
536 | {0x002005, 0, {0x0020}
|
---|
537 | }
|
---|
538 | , /* 2005; FOUR-PER-EM SPACE */
|
---|
539 | {0x002006, 0, {0x0020}
|
---|
540 | }
|
---|
541 | , /* 2006; SIX-PER-EM SPACE */
|
---|
542 | {0x002007, 0, {0x0020}
|
---|
543 | }
|
---|
544 | , /* 2007; FIGURE SPACE */
|
---|
545 | {0x002008, 0, {0x0020}
|
---|
546 | }
|
---|
547 | , /* 2008; PUNCTUATION SPACE */
|
---|
548 | {0x002009, 0, {0x0020}
|
---|
549 | }
|
---|
550 | , /* 2009; THIN SPACE */
|
---|
551 | {0x00200A, 0, {0x0020}
|
---|
552 | }
|
---|
553 | , /* 200A; HAIR SPACE */
|
---|
554 | {0x00200B, 0, {0x0020}
|
---|
555 | }
|
---|
556 | , /* 200B; ZERO WIDTH SPACE */
|
---|
557 | {0x00202F, 0, {0x0020}
|
---|
558 | }
|
---|
559 | , /* 202F; NARROW NO-BREAK SPACE */
|
---|
560 | {0x00205F, 0, {0x0020}
|
---|
561 | }
|
---|
562 | , /* 205F; MEDIUM MATHEMATICAL SPACE */
|
---|
563 | {0x003000, 0, {0x0020}
|
---|
564 | }
|
---|
565 | , /* 3000; IDEOGRAPHIC SPACE */
|
---|
566 | {0}
|
---|
567 | };
|
---|
568 |
|
---|
569 | Stringprep_profile stringprep_saslprep[] = {
|
---|
570 | {STRINGPREP_MAP_TABLE, 0, stringprep_saslprep_space_map, "SASL-SPACE-MAP"}
|
---|
571 | ,
|
---|
572 | {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1, "B.1"}
|
---|
573 | ,
|
---|
574 | {STRINGPREP_NFKC, 0, 0, "NFKC"}
|
---|
575 | ,
|
---|
576 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.1.2"}
|
---|
577 | ,
|
---|
578 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1, "C.2.1"}
|
---|
579 | ,
|
---|
580 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2, "C.2.2"}
|
---|
581 | ,
|
---|
582 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3, "C.3"}
|
---|
583 | ,
|
---|
584 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4, "C.4"}
|
---|
585 | ,
|
---|
586 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5, "C.5"}
|
---|
587 | ,
|
---|
588 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6, "C.6"}
|
---|
589 | ,
|
---|
590 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7, "C.7"}
|
---|
591 | ,
|
---|
592 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
593 | ,
|
---|
594 | {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9, "C.9"}
|
---|
595 | ,
|
---|
596 | {STRINGPREP_BIDI, 0, 0, "BIDI"}
|
---|
597 | ,
|
---|
598 | {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8, "C.8"}
|
---|
599 | ,
|
---|
600 | {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1,
|
---|
601 | "D.1"}
|
---|
602 | ,
|
---|
603 | {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2,
|
---|
604 | "D.2"}
|
---|
605 | ,
|
---|
606 | {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
|
---|
607 | stringprep_rfc3454_A_1, "A.1"}
|
---|
608 | ,
|
---|
609 | {0}
|
---|
610 | };
|
---|