~ubuntu-branches/ubuntu/wily/psi/wily

« back to all changes in this revision

Viewing changes to iris/src/libidn/profiles.c

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2009-09-25 17:49:51 UTC
  • mfrom: (6.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20090925174951-lvm7kdap82o8xhn3
Tags: 0.13-1
* Updated to upstream version 0.13
* Set Standards-Version to 3.8.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
};