source: psi/trunk/iris/libidn/profiles.c@ 189

Last change on this file since 189 was 2, checked in by dmik, 19 years ago

Imported original Psi 0.10 sources from Affinix

File size: 14.9 KB
Line 
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
24Stringprep_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
44Stringprep_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
118Stringprep_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
158Stringprep_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
200Stringprep_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
220Stringprep_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
266Stringprep_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
307Stringprep_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
337Stringprep_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
469Stringprep_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
514Stringprep_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
569Stringprep_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};
Note: See TracBrowser for help on using the repository browser.