~ubuntu-branches/ubuntu/maverick/krb5/maverick

« back to all changes in this revision

Viewing changes to src/lib/krb5/unicode/ucdata/format.txt

  • Committer: Bazaar Package Importer
  • Author(s): Sam Hartman
  • Date: 2009-05-07 16:16:34 UTC
  • mfrom: (13.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20090507161634-xqyk0s9na0le4flj
Tags: 1.7dfsg~beta1-4
When  decrypting the TGS response fails with the subkey, try with the
session key to work around Heimdal bug, Closes: #527353 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# $Id: format.txt,v 1.2 2001/01/02 18:46:20 mleisher Exp $
 
3
#
 
4
 
 
5
CHARACTER DATA
 
6
==============
 
7
 
 
8
This package generates some data files that contain character properties useful
 
9
for text processing.
 
10
 
 
11
CHARACTER PROPERTIES
 
12
====================
 
13
 
 
14
The first data file is called "ctype.dat" and contains a compressed form of
 
15
the character properties found in the Unicode Character Database (UCDB).
 
16
Additional properties can be specified in limited UCDB format in another file
 
17
to avoid modifying the original UCDB.
 
18
 
 
19
The following is a property name and code table to be used with the character
 
20
data:
 
21
 
 
22
NAME CODE DESCRIPTION
 
23
---------------------
 
24
Mn   0    Mark, Non-Spacing
 
25
Mc   1    Mark, Spacing Combining
 
26
Me   2    Mark, Enclosing
 
27
Nd   3    Number, Decimal Digit
 
28
Nl   4    Number, Letter
 
29
No   5    Number, Other
 
30
Zs   6    Separator, Space
 
31
Zl   7    Separator, Line
 
32
Zp   8    Separator, Paragraph
 
33
Cc   9    Other, Control
 
34
Cf   10   Other, Format
 
35
Cs   11   Other, Surrogate
 
36
Co   12   Other, Private Use
 
37
Cn   13   Other, Not Assigned
 
38
Lu   14   Letter, Uppercase
 
39
Ll   15   Letter, Lowercase
 
40
Lt   16   Letter, Titlecase
 
41
Lm   17   Letter, Modifier
 
42
Lo   18   Letter, Other
 
43
Pc   19   Punctuation, Connector
 
44
Pd   20   Punctuation, Dash
 
45
Ps   21   Punctuation, Open
 
46
Pe   22   Punctuation, Close
 
47
Po   23   Punctuation, Other
 
48
Sm   24   Symbol, Math
 
49
Sc   25   Symbol, Currency
 
50
Sk   26   Symbol, Modifier
 
51
So   27   Symbol, Other
 
52
L    28   Left-To-Right
 
53
R    29   Right-To-Left
 
54
EN   30   European Number
 
55
ES   31   European Number Separator
 
56
ET   32   European Number Terminator
 
57
AN   33   Arabic Number
 
58
CS   34   Common Number Separator
 
59
B    35   Block Separator
 
60
S    36   Segment Separator
 
61
WS   37   Whitespace
 
62
ON   38   Other Neutrals
 
63
Pi   47   Punctuation, Initial
 
64
Pf   48   Punctuation, Final
 
65
#
 
66
# Implementation specific properties.
 
67
#
 
68
Cm   39   Composite
 
69
Nb   40   Non-Breaking
 
70
Sy   41   Symmetric (characters which are part of open/close pairs)
 
71
Hd   42   Hex Digit
 
72
Qm   43   Quote Mark
 
73
Mr   44   Mirroring
 
74
Ss   45   Space, Other (controls viewed as spaces in ctype isspace())
 
75
Cp   46   Defined character
 
76
 
 
77
The actual binary data is formatted as follows:
 
78
 
 
79
  Assumptions: unsigned short is at least 16-bits in size and unsigned long
 
80
               is at least 32-bits in size.
 
81
 
 
82
    unsigned short ByteOrderMark
 
83
    unsigned short OffsetArraySize
 
84
    unsigned long  Bytes
 
85
    unsigned short Offsets[OffsetArraySize + 1]
 
86
    unsigned long  Ranges[N], N = value of Offsets[OffsetArraySize]
 
87
 
 
88
  The Bytes field provides the total byte count used for the Offsets[] and
 
89
  Ranges[] arrays.  The Offsets[] array is aligned on a 4-byte boundary and
 
90
  there is always one extra node on the end to hold the final index of the
 
91
  Ranges[] array.  The Ranges[] array contains pairs of 4-byte values
 
92
  representing a range of Unicode characters.  The pairs are arranged in
 
93
  increasing order by the first character code in the range.
 
94
 
 
95
  Determining if a particular character is in the property list requires a
 
96
  simple binary search to determine if a character is in any of the ranges
 
97
  for the property.
 
98
 
 
99
  If the ByteOrderMark is equal to 0xFFFE, then the data was generated on a
 
100
  machine with a different endian order and the values must be byte-swapped.
 
101
 
 
102
  To swap a 16-bit value:
 
103
     c = (c >> 8) | ((c & 0xff) << 8)
 
104
 
 
105
  To swap a 32-bit value:
 
106
     c = ((c & 0xff) << 24) | (((c >> 8) & 0xff) << 16) |
 
107
         (((c >> 16) & 0xff) << 8) | (c >> 24)
 
108
 
 
109
CASE MAPPINGS
 
110
=============
 
111
 
 
112
The next data file is called "case.dat" and contains three case mapping tables
 
113
in the following order: upper, lower, and title case.  Each table is in
 
114
increasing order by character code and each mapping contains 3 unsigned longs
 
115
which represent the possible mappings.
 
116
 
 
117
The format for the binary form of these tables is:
 
118
 
 
119
  unsigned short ByteOrderMark
 
120
  unsigned short NumMappingNodes, count of all mapping nodes
 
121
  unsigned short CaseTableSizes[2], upper and lower mapping node counts
 
122
  unsigned long  CaseTables[NumMappingNodes]
 
123
 
 
124
  The starting indexes of the case tables are calculated as following:
 
125
 
 
126
    UpperIndex = 0;
 
127
    LowerIndex = CaseTableSizes[0] * 3;
 
128
    TitleIndex = LowerIndex + CaseTableSizes[1] * 3;
 
129
 
 
130
  The order of the fields for the three tables are:
 
131
 
 
132
    Upper case
 
133
    ----------
 
134
    unsigned long upper;
 
135
    unsigned long lower;
 
136
    unsigned long title;
 
137
 
 
138
    Lower case
 
139
    ----------
 
140
    unsigned long lower;
 
141
    unsigned long upper;
 
142
    unsigned long title;
 
143
 
 
144
    Title case
 
145
    ----------
 
146
    unsigned long title;
 
147
    unsigned long upper;
 
148
    unsigned long lower;
 
149
 
 
150
  If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
 
151
  same way as described in the CHARACTER PROPERTIES section.
 
152
 
 
153
  Because the tables are in increasing order by character code, locating a
 
154
  mapping requires a simple binary search on one of the 3 codes that make up
 
155
  each node.
 
156
 
 
157
  It is important to note that there can only be 65536 mapping nodes which
 
158
  divided into 3 portions allows 21845 nodes for each case mapping table.  The
 
159
  distribution of mappings may be more or less than 21845 per table, but only
 
160
  65536 are allowed.
 
161
 
 
162
COMPOSITIONS
 
163
============
 
164
 
 
165
This data file is called "comp.dat" and contains data that tracks character
 
166
pairs that have a single Unicode value representing the combination of the two
 
167
characters.
 
168
 
 
169
The format for the binary form of this table is:
 
170
 
 
171
  unsigned short ByteOrderMark
 
172
  unsigned short NumCompositionNodes, count of composition nodes
 
173
  unsigned long  Bytes, total number of bytes used for composition nodes
 
174
  unsigned long  CompositionNodes[NumCompositionNodes * 4]
 
175
 
 
176
  If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
 
177
  same way as described in the CHARACTER PROPERTIES section.
 
178
 
 
179
  The CompositionNodes[] array consists of groups of 4 unsigned longs.  The
 
180
  first of these is the character code representing the combination of two
 
181
  other character codes, the second records the number of character codes that
 
182
  make up the composition (not currently used), and the last two are the pair
 
183
  of character codes whose combination is represented by the character code in
 
184
  the first field.
 
185
 
 
186
DECOMPOSITIONS
 
187
==============
 
188
 
 
189
The next data file is called "decomp.dat" and contains the decomposition data
 
190
for all characters with decompositions containing more than one character and
 
191
are *not* compatibility decompositions.  Compatibility decompositions are
 
192
signaled in the UCDB format by the use of the <compat> tag in the
 
193
decomposition field.  Each list of character codes represents a full
 
194
decomposition of a composite character.  The nodes are arranged in increasing
 
195
order by character code.
 
196
 
 
197
The format for the binary form of this table is:
 
198
 
 
199
  unsigned short ByteOrderMark
 
200
  unsigned short NumDecompNodes, count of all decomposition nodes
 
201
  unsigned long  Bytes
 
202
  unsigned long  DecompNodes[(NumDecompNodes * 2) + 1]
 
203
  unsigned long  Decomp[N], N = sum of all counts in DecompNodes[]
 
204
 
 
205
  If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
 
206
  same way as described in the CHARACTER PROPERTIES section.
 
207
 
 
208
  The DecompNodes[] array consists of pairs of unsigned longs, the first of
 
209
  which is the character code and the second is the initial index of the list
 
210
  of character codes representing the decomposition.
 
211
 
 
212
  Locating the decomposition of a composite character requires a binary search
 
213
  for a character code in the DecompNodes[] array and using its index to
 
214
  locate the start of the decomposition.  The length of the decomposition list
 
215
  is the index in the following element in DecompNode[] minus the current
 
216
  index.
 
217
 
 
218
COMBINING CLASSES
 
219
=================
 
220
 
 
221
The fourth data file is called "cmbcl.dat" and contains the characters with
 
222
non-zero combining classes.
 
223
 
 
224
The format for the binary form of this table is:
 
225
 
 
226
  unsigned short ByteOrderMark
 
227
  unsigned short NumCCLNodes
 
228
  unsigned long  Bytes
 
229
  unsigned long  CCLNodes[NumCCLNodes * 3]
 
230
 
 
231
  If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
 
232
  same way as described in the CHARACTER PROPERTIES section.
 
233
 
 
234
  The CCLNodes[] array consists of groups of three unsigned longs.  The first
 
235
  and second are the beginning and ending of a range and the third is the
 
236
  combining class of that range.
 
237
 
 
238
  If a character is not found in this table, then the combining class is
 
239
  assumed to be 0.
 
240
 
 
241
  It is important to note that only 65536 distinct ranges plus combining class
 
242
  can be specified because the NumCCLNodes is usually a 16-bit number.
 
243
 
 
244
NUMBER TABLE
 
245
============
 
246
 
 
247
The final data file is called "num.dat" and contains the characters that have
 
248
a numeric value associated with them.
 
249
 
 
250
The format for the binary form of the table is:
 
251
 
 
252
  unsigned short ByteOrderMark
 
253
  unsigned short NumNumberNodes
 
254
  unsigned long  Bytes
 
255
  unsigned long  NumberNodes[NumNumberNodes]
 
256
  unsigned short ValueNodes[(Bytes - (NumNumberNodes * sizeof(unsigned long)))
 
257
                            / sizeof(short)]
 
258
 
 
259
  If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
 
260
  same way as described in the CHARACTER PROPERTIES section.
 
261
 
 
262
  The NumberNodes array contains pairs of values, the first of which is the
 
263
  character code and the second an index into the ValueNodes array.  The
 
264
  ValueNodes array contains pairs of integers which represent the numerator
 
265
  and denominator of the numeric value of the character.  If the character
 
266
  happens to map to an integer, both the values in ValueNodes will be the
 
267
  same.