00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <config.h>
00023 #include "stringprep.h"
00024
00025 const Stringprep_profiles stringprep_profiles[] = {
00026 {"Nameprep", stringprep_nameprep},
00027 {"KRBprep", stringprep_kerberos5},
00028 {"Nodeprep", stringprep_xmpp_nodeprep},
00029 {"Resourceprep", stringprep_xmpp_resourceprep},
00030 {"plain", stringprep_plain},
00031 {"trace", stringprep_trace},
00032 {"SASLprep", stringprep_saslprep},
00033 {"ISCSIprep", stringprep_iscsi},
00034 {"iSCSI", stringprep_iscsi},
00035 {NULL, NULL}
00036 };
00037
00038 const Stringprep_profile stringprep_nameprep[] = {
00039 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
00040 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2},
00041 {STRINGPREP_NFKC, 0, 0},
00042 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
00043 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00044 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00045 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00046 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00047 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00048 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
00049 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00050 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00051 {STRINGPREP_BIDI, 0, 0},
00052 {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI,
00053 stringprep_rfc3454_C_8},
00054 {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1},
00055 {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2},
00056 {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
00057 stringprep_rfc3454_A_1},
00058 {0}
00059 };
00060
00061 const Stringprep_profile stringprep_kerberos5[] = {
00062
00063
00064 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
00065 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_3},
00066 {STRINGPREP_NFKC, 0, 0},
00067 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
00068 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00069 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00070 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00071 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00072 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00073 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
00074 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00075 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00076 {STRINGPREP_BIDI, 0, 0},
00077 {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI,
00078 stringprep_rfc3454_C_8},
00079 {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1},
00080 {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2},
00081 {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
00082 stringprep_rfc3454_A_1},
00083 {0}
00084 };
00085
00086 const Stringprep_table_element stringprep_xmpp_nodeprep_prohibit[] = {
00087 {0x000022},
00088 {0x000026},
00089 {0x000027},
00090 {0x00002F},
00091 {0x00003A},
00092 {0x00003C},
00093 {0x00003E},
00094 {0x000040},
00095 {0}
00096 };
00097
00098 const Stringprep_profile stringprep_xmpp_nodeprep[] = {
00099 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
00100 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2},
00101 {STRINGPREP_NFKC, 0, 0},
00102 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1},
00103 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
00104 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
00105 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00106 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00107 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00108 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00109 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00110 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
00111 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00112 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00113 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_xmpp_nodeprep_prohibit},
00114 {STRINGPREP_BIDI, 0, 0},
00115 {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00116 {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1},
00117 {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2},
00118 {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
00119 stringprep_rfc3454_A_1},
00120 {0}
00121 };
00122
00123 const Stringprep_profile stringprep_xmpp_resourceprep[] = {
00124 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
00125 {STRINGPREP_NFKC, 0, 0},
00126 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
00127 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
00128 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00129 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00130 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00131 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00132 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00133 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
00134 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00135 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00136 {STRINGPREP_BIDI, 0, 0},
00137 {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00138 {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
00139 {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
00140 {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
00141 stringprep_rfc3454_A_1},
00142 {0}
00143 };
00144
00145 const Stringprep_profile stringprep_plain[] = {
00146 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
00147 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00148 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00149 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00150 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00151 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00152 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00153 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00154 {STRINGPREP_BIDI, 0, 0},
00155 {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00156 {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
00157 {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
00158 {0}
00159 };
00160
00161 const Stringprep_profile stringprep_trace[] = {
00162 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
00163 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00164 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00165 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00166 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00167 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00168 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00169 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00170 {STRINGPREP_BIDI, 0, 0},
00171 {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00172 {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
00173 {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
00174 {0}
00175 };
00176
00177 const Stringprep_table_element stringprep_iscsi_prohibit[] = {
00178
00179
00180 {0x0000, 1},
00181 {0x0001},
00182 {0x0002},
00183 {0x0003},
00184 {0x0004},
00185 {0x0005},
00186 {0x0006},
00187 {0x0007},
00188 {0x0008},
00189 {0x0009},
00190 {0x000A},
00191 {0x000B},
00192 {0x000C},
00193 {0x000D},
00194 {0x000E},
00195 {0x000F},
00196 {0x0010},
00197 {0x0011},
00198 {0x0012},
00199 {0x0013},
00200 {0x0014},
00201 {0x0015},
00202 {0x0016},
00203 {0x0017},
00204 {0x0018},
00205 {0x0019},
00206 {0x001A},
00207 {0x001B},
00208 {0x001C},
00209 {0x001D},
00210 {0x001E},
00211 {0x001F},
00212 {0x0020},
00213 {0x0021},
00214 {0x0022},
00215 {0x0023},
00216 {0x0024},
00217 {0x0025},
00218 {0x0026},
00219 {0x0027},
00220 {0x0028},
00221 {0x0029},
00222 {0x002A},
00223 {0x002B},
00224 {0x002C},
00225 {0x002F},
00226 {0x003B},
00227 {0x003C},
00228 {0x003D},
00229 {0x003E},
00230 {0x003F},
00231 {0x0040},
00232 {0x005B},
00233 {0x005C},
00234 {0x005D},
00235 {0x005E},
00236 {0x005F},
00237 {0x0060},
00238 {0x007B},
00239 {0x007C},
00240 {0x007D},
00241 {0x007E},
00242 {0x007F},
00243 {0x3002},
00244 {0}
00245 };
00246
00247 const Stringprep_profile stringprep_iscsi[] = {
00248 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
00249 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2},
00250 {STRINGPREP_NFKC, 0, 0},
00251 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1},
00252 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
00253 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
00254 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00255 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00256 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00257 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00258 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00259 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
00260 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00261 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00262 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_iscsi_prohibit},
00263 {STRINGPREP_BIDI, 0, 0},
00264 {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00265 {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
00266 {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
00267 {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
00268 stringprep_rfc3454_A_1},
00269 {0}
00270 };
00271
00272 const Stringprep_table_element stringprep_saslprep_space_map[] = {
00273 {0x0000A0, 0, {0x0020}},
00274 {0x001680, 0, {0x0020}},
00275 {0x002000, 0, {0x0020}},
00276 {0x002001, 0, {0x0020}},
00277 {0x002002, 0, {0x0020}},
00278 {0x002003, 0, {0x0020}},
00279 {0x002004, 0, {0x0020}},
00280 {0x002005, 0, {0x0020}},
00281 {0x002006, 0, {0x0020}},
00282 {0x002007, 0, {0x0020}},
00283 {0x002008, 0, {0x0020}},
00284 {0x002009, 0, {0x0020}},
00285 {0x00200A, 0, {0x0020}},
00286 {0x00200B, 0, {0x0020}},
00287 {0x00202F, 0, {0x0020}},
00288 {0x00205F, 0, {0x0020}},
00289 {0x003000, 0, {0x0020}},
00290 {0}
00291 };
00292
00293 const Stringprep_profile stringprep_saslprep[] = {
00294 {STRINGPREP_MAP_TABLE, 0, stringprep_saslprep_space_map},
00295 {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
00296 {STRINGPREP_NFKC, 0, 0},
00297 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
00298 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
00299 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
00300 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
00301 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
00302 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
00303 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
00304 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
00305 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00306 {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
00307 {STRINGPREP_BIDI, 0, 0},
00308 {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
00309 {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
00310 {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
00311 {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
00312 stringprep_rfc3454_A_1},
00313 {0}
00314 };