Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_strex.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||||||||
4 | static int | - | ||||||||||||||||||||||||||||||
5 | send_bio_chars(void *arg, const void *buf, int len) | - | ||||||||||||||||||||||||||||||
6 | { | - | ||||||||||||||||||||||||||||||
7 | if (!arg
| 0 | ||||||||||||||||||||||||||||||
8 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
9 | if (BIO_write(arg, buf, len) != len
| 0 | ||||||||||||||||||||||||||||||
10 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
11 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
12 | } | - | ||||||||||||||||||||||||||||||
13 | - | |||||||||||||||||||||||||||||||
14 | static int | - | ||||||||||||||||||||||||||||||
15 | send_fp_chars(void *arg, const void *buf, int len) | - | ||||||||||||||||||||||||||||||
16 | { | - | ||||||||||||||||||||||||||||||
17 | if (!arg
| 0 | ||||||||||||||||||||||||||||||
18 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
19 | if (fwrite(buf, 1, (size_t)len, arg) != (size_t)len
| 0 | ||||||||||||||||||||||||||||||
20 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
21 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
22 | } | - | ||||||||||||||||||||||||||||||
23 | - | |||||||||||||||||||||||||||||||
24 | typedef int char_io(void *arg, const void *buf, int len); | - | ||||||||||||||||||||||||||||||
25 | static int | - | ||||||||||||||||||||||||||||||
26 | do_esc_char(unsigned long c, unsigned char flags, char *do_quotes, | - | ||||||||||||||||||||||||||||||
27 | char_io *io_ch, void *arg) | - | ||||||||||||||||||||||||||||||
28 | { | - | ||||||||||||||||||||||||||||||
29 | unsigned char chflgs, chtmp; | - | ||||||||||||||||||||||||||||||
30 | char tmphex[sizeof(long) * 2 + 3]; | - | ||||||||||||||||||||||||||||||
31 | - | |||||||||||||||||||||||||||||||
32 | if (c > 0xffffffffL
| 0 | ||||||||||||||||||||||||||||||
33 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
34 | if (c > 0xffff
| 0 | ||||||||||||||||||||||||||||||
35 | snprintf(tmphex, sizeof tmphex, "\\W%08lX", c); | - | ||||||||||||||||||||||||||||||
36 | if (!io_ch(arg, tmphex, 10)
| 0 | ||||||||||||||||||||||||||||||
37 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
38 | return never executed: 10;return 10; never executed: return 10; | 0 | ||||||||||||||||||||||||||||||
39 | } | - | ||||||||||||||||||||||||||||||
40 | if (c > 0xff
| 0 | ||||||||||||||||||||||||||||||
41 | snprintf(tmphex, sizeof tmphex, "\\U%04lX", c); | - | ||||||||||||||||||||||||||||||
42 | if (!io_ch(arg, tmphex, 6)
| 0 | ||||||||||||||||||||||||||||||
43 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
44 | return never executed: 6;return 6; never executed: return 6; | 0 | ||||||||||||||||||||||||||||||
45 | } | - | ||||||||||||||||||||||||||||||
46 | chtmp = (unsigned char)c; | - | ||||||||||||||||||||||||||||||
47 | if (chtmp > 0x7f
| 0 | ||||||||||||||||||||||||||||||
48 | chflgs = flags & 4; never executed: chflgs = flags & 4; | 0 | ||||||||||||||||||||||||||||||
49 | else | - | ||||||||||||||||||||||||||||||
50 | chflgs = char_type[chtmp] & flags; never executed: chflgs = char_type[chtmp] & flags; | 0 | ||||||||||||||||||||||||||||||
51 | if (chflgs & (1 | 0x20 | 0x40)
| 0 | ||||||||||||||||||||||||||||||
52 | - | |||||||||||||||||||||||||||||||
53 | if (chflgs & 8
| 0 | ||||||||||||||||||||||||||||||
54 | if (do_quotes
| 0 | ||||||||||||||||||||||||||||||
55 | * never executed: do_quotes = 1;*do_quotes = 1; never executed: *do_quotes = 1; | 0 | ||||||||||||||||||||||||||||||
56 | if (!io_ch(arg, &chtmp, 1)
| 0 | ||||||||||||||||||||||||||||||
57 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
58 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
59 | } | - | ||||||||||||||||||||||||||||||
60 | if (!io_ch(arg, "\\", 1)
| 0 | ||||||||||||||||||||||||||||||
61 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
62 | if (!io_ch(arg, &chtmp, 1)
| 0 | ||||||||||||||||||||||||||||||
63 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
64 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||||||||
65 | } | - | ||||||||||||||||||||||||||||||
66 | if (chflgs & (2|4)
| 0 | ||||||||||||||||||||||||||||||
67 | snprintf(tmphex, sizeof tmphex, "\\%02X", chtmp); | - | ||||||||||||||||||||||||||||||
68 | if (!io_ch(arg, tmphex, 3)
| 0 | ||||||||||||||||||||||||||||||
69 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
70 | return never executed: 3;return 3; never executed: return 3; | 0 | ||||||||||||||||||||||||||||||
71 | } | - | ||||||||||||||||||||||||||||||
72 | - | |||||||||||||||||||||||||||||||
73 | - | |||||||||||||||||||||||||||||||
74 | - | |||||||||||||||||||||||||||||||
75 | if (chtmp == '\\'
| 0 | ||||||||||||||||||||||||||||||
76 | if (!io_ch(arg, "\\\\", 2)
| 0 | ||||||||||||||||||||||||||||||
77 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
78 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||||||||
79 | } | - | ||||||||||||||||||||||||||||||
80 | if (!io_ch(arg, &chtmp, 1)
| 0 | ||||||||||||||||||||||||||||||
81 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
82 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
83 | } | - | ||||||||||||||||||||||||||||||
84 | static int | - | ||||||||||||||||||||||||||||||
85 | do_buf(unsigned char *buf, int buflen, int type, unsigned char flags, | - | ||||||||||||||||||||||||||||||
86 | char *quotes, char_io *io_ch, void *arg) | - | ||||||||||||||||||||||||||||||
87 | { | - | ||||||||||||||||||||||||||||||
88 | int i, outlen, len; | - | ||||||||||||||||||||||||||||||
89 | unsigned char orflags, *p, *q; | - | ||||||||||||||||||||||||||||||
90 | unsigned long c; | - | ||||||||||||||||||||||||||||||
91 | - | |||||||||||||||||||||||||||||||
92 | p = buf; | - | ||||||||||||||||||||||||||||||
93 | q = buf + buflen; | - | ||||||||||||||||||||||||||||||
94 | outlen = 0; | - | ||||||||||||||||||||||||||||||
95 | while (p != q
| 0 | ||||||||||||||||||||||||||||||
96 | if (p == buf
| 0 | ||||||||||||||||||||||||||||||
97 | orflags = 0x20; never executed: orflags = 0x20; | 0 | ||||||||||||||||||||||||||||||
98 | else | - | ||||||||||||||||||||||||||||||
99 | orflags = 0; never executed: orflags = 0; | 0 | ||||||||||||||||||||||||||||||
100 | switch (type & 0x7) { | - | ||||||||||||||||||||||||||||||
101 | case never executed: 4:case 4: never executed: case 4: | 0 | ||||||||||||||||||||||||||||||
102 | c = ((unsigned long)*p++) << 24; | - | ||||||||||||||||||||||||||||||
103 | c |= ((unsigned long)*p++) << 16; | - | ||||||||||||||||||||||||||||||
104 | c |= ((unsigned long)*p++) << 8; | - | ||||||||||||||||||||||||||||||
105 | c |= *p++; | - | ||||||||||||||||||||||||||||||
106 | if (c > 0x10FFFF
| 0 | ||||||||||||||||||||||||||||||
107 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
108 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
109 | - | |||||||||||||||||||||||||||||||
110 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||||||||||||||
111 | c = ((unsigned long)*p++) << 8; | - | ||||||||||||||||||||||||||||||
112 | c |= *p++; | - | ||||||||||||||||||||||||||||||
113 | if (((
| 0 | ||||||||||||||||||||||||||||||
114 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
115 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
116 | - | |||||||||||||||||||||||||||||||
117 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||||||||||||||
118 | c = *p++; | - | ||||||||||||||||||||||||||||||
119 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
120 | - | |||||||||||||||||||||||||||||||
121 | case never executed: 0:case 0: never executed: case 0: | 0 | ||||||||||||||||||||||||||||||
122 | i = UTF8_getc(p, q - p, &c); | - | ||||||||||||||||||||||||||||||
123 | if (i < 0
| 0 | ||||||||||||||||||||||||||||||
124 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
125 | p += i; | - | ||||||||||||||||||||||||||||||
126 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
127 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||||||||
128 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
129 | } | - | ||||||||||||||||||||||||||||||
130 | if (p == q
| 0 | ||||||||||||||||||||||||||||||
131 | orflags = 0x40; never executed: orflags = 0x40; | 0 | ||||||||||||||||||||||||||||||
132 | if (type & 0x8
| 0 | ||||||||||||||||||||||||||||||
133 | unsigned char utfbuf[6]; | - | ||||||||||||||||||||||||||||||
134 | int utflen; | - | ||||||||||||||||||||||||||||||
135 | - | |||||||||||||||||||||||||||||||
136 | utflen = UTF8_putc(utfbuf, sizeof utfbuf, c); | - | ||||||||||||||||||||||||||||||
137 | if (utflen < 0
| 0 | ||||||||||||||||||||||||||||||
138 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
139 | for (i = 0; i < utflen
| 0 | ||||||||||||||||||||||||||||||
140 | - | |||||||||||||||||||||||||||||||
141 | - | |||||||||||||||||||||||||||||||
142 | - | |||||||||||||||||||||||||||||||
143 | - | |||||||||||||||||||||||||||||||
144 | - | |||||||||||||||||||||||||||||||
145 | len = do_esc_char(utfbuf[i], | - | ||||||||||||||||||||||||||||||
146 | (unsigned char)(flags | orflags), quotes, | - | ||||||||||||||||||||||||||||||
147 | io_ch, arg); | - | ||||||||||||||||||||||||||||||
148 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
149 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
150 | outlen += len; | - | ||||||||||||||||||||||||||||||
151 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
152 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||||||||
153 | len = do_esc_char(c, (unsigned char)(flags | orflags), | - | ||||||||||||||||||||||||||||||
154 | quotes, io_ch, arg); | - | ||||||||||||||||||||||||||||||
155 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
156 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
157 | outlen += len; | - | ||||||||||||||||||||||||||||||
158 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
159 | } | - | ||||||||||||||||||||||||||||||
160 | return never executed: outlen;return outlen; never executed: return outlen; | 0 | ||||||||||||||||||||||||||||||
161 | } | - | ||||||||||||||||||||||||||||||
162 | - | |||||||||||||||||||||||||||||||
163 | - | |||||||||||||||||||||||||||||||
164 | - | |||||||||||||||||||||||||||||||
165 | static int | - | ||||||||||||||||||||||||||||||
166 | do_hex_dump(char_io *io_ch, void *arg, unsigned char *buf, int buflen) | - | ||||||||||||||||||||||||||||||
167 | { | - | ||||||||||||||||||||||||||||||
168 | static const char hexdig[] = "0123456789ABCDEF"; | - | ||||||||||||||||||||||||||||||
169 | unsigned char *p, *q; | - | ||||||||||||||||||||||||||||||
170 | char hextmp[2]; | - | ||||||||||||||||||||||||||||||
171 | if (arg
| 0 | ||||||||||||||||||||||||||||||
172 | p = buf; | - | ||||||||||||||||||||||||||||||
173 | q = buf + buflen; | - | ||||||||||||||||||||||||||||||
174 | while (p != q
| 0 | ||||||||||||||||||||||||||||||
175 | hextmp[0] = hexdig[*p >> 4]; | - | ||||||||||||||||||||||||||||||
176 | hextmp[1] = hexdig[*p & 0xf]; | - | ||||||||||||||||||||||||||||||
177 | if (!io_ch(arg, hextmp, 2)
| 0 | ||||||||||||||||||||||||||||||
178 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
179 | p++; | - | ||||||||||||||||||||||||||||||
180 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
181 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
182 | return never executed: buflen << 1;return buflen << 1; never executed: return buflen << 1; | 0 | ||||||||||||||||||||||||||||||
183 | } | - | ||||||||||||||||||||||||||||||
184 | - | |||||||||||||||||||||||||||||||
185 | - | |||||||||||||||||||||||||||||||
186 | - | |||||||||||||||||||||||||||||||
187 | - | |||||||||||||||||||||||||||||||
188 | - | |||||||||||||||||||||||||||||||
189 | - | |||||||||||||||||||||||||||||||
190 | - | |||||||||||||||||||||||||||||||
191 | static int | - | ||||||||||||||||||||||||||||||
192 | do_dump(unsigned long lflags, char_io *io_ch, void *arg, const ASN1_STRING *str) | - | ||||||||||||||||||||||||||||||
193 | { | - | ||||||||||||||||||||||||||||||
194 | - | |||||||||||||||||||||||||||||||
195 | - | |||||||||||||||||||||||||||||||
196 | - | |||||||||||||||||||||||||||||||
197 | ASN1_TYPE t; | - | ||||||||||||||||||||||||||||||
198 | unsigned char *der_buf, *p; | - | ||||||||||||||||||||||||||||||
199 | int outlen, der_len; | - | ||||||||||||||||||||||||||||||
200 | - | |||||||||||||||||||||||||||||||
201 | if (!io_ch(arg, "#", 1)
| 0 | ||||||||||||||||||||||||||||||
202 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
203 | - | |||||||||||||||||||||||||||||||
204 | if (!(lflags & 0x200)
| 0 | ||||||||||||||||||||||||||||||
205 | outlen = do_hex_dump(io_ch, arg, str->data, str->length); | - | ||||||||||||||||||||||||||||||
206 | if (outlen < 0
| 0 | ||||||||||||||||||||||||||||||
207 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
208 | return never executed: outlen + 1;return outlen + 1; never executed: return outlen + 1; | 0 | ||||||||||||||||||||||||||||||
209 | } | - | ||||||||||||||||||||||||||||||
210 | t.type = str->type; | - | ||||||||||||||||||||||||||||||
211 | t.value.ptr = (char *)str; | - | ||||||||||||||||||||||||||||||
212 | der_len = i2d_ASN1_TYPE(&t, | - | ||||||||||||||||||||||||||||||
213 | ((void *)0) | - | ||||||||||||||||||||||||||||||
214 | ); | - | ||||||||||||||||||||||||||||||
215 | der_buf = malloc(der_len); | - | ||||||||||||||||||||||||||||||
216 | if (!der_buf
| 0 | ||||||||||||||||||||||||||||||
217 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
218 | p = der_buf; | - | ||||||||||||||||||||||||||||||
219 | i2d_ASN1_TYPE(&t, &p); | - | ||||||||||||||||||||||||||||||
220 | outlen = do_hex_dump(io_ch, arg, der_buf, der_len); | - | ||||||||||||||||||||||||||||||
221 | free(der_buf); | - | ||||||||||||||||||||||||||||||
222 | if (outlen < 0
| 0 | ||||||||||||||||||||||||||||||
223 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
224 | return never executed: outlen + 1;return outlen + 1; never executed: return outlen + 1; | 0 | ||||||||||||||||||||||||||||||
225 | } | - | ||||||||||||||||||||||||||||||
226 | - | |||||||||||||||||||||||||||||||
227 | - | |||||||||||||||||||||||||||||||
228 | - | |||||||||||||||||||||||||||||||
229 | - | |||||||||||||||||||||||||||||||
230 | - | |||||||||||||||||||||||||||||||
231 | - | |||||||||||||||||||||||||||||||
232 | static const signed char tag2nbyte[] = { | - | ||||||||||||||||||||||||||||||
233 | -1, -1, -1, -1, -1, | - | ||||||||||||||||||||||||||||||
234 | -1, -1, -1, -1, -1, | - | ||||||||||||||||||||||||||||||
235 | -1, -1, 0, -1, | - | ||||||||||||||||||||||||||||||
236 | -1, -1, -1, -1, | - | ||||||||||||||||||||||||||||||
237 | -1, 1, 1, | - | ||||||||||||||||||||||||||||||
238 | -1, 1, 1, 1, | - | ||||||||||||||||||||||||||||||
239 | -1, 1, -1, | - | ||||||||||||||||||||||||||||||
240 | 4, -1, 2 | - | ||||||||||||||||||||||||||||||
241 | }; | - | ||||||||||||||||||||||||||||||
242 | static int | - | ||||||||||||||||||||||||||||||
243 | do_print_ex(char_io *io_ch, void *arg, unsigned long lflags, | - | ||||||||||||||||||||||||||||||
244 | const ASN1_STRING *str) | - | ||||||||||||||||||||||||||||||
245 | { | - | ||||||||||||||||||||||||||||||
246 | int outlen, len; | - | ||||||||||||||||||||||||||||||
247 | int type; | - | ||||||||||||||||||||||||||||||
248 | char quotes; | - | ||||||||||||||||||||||||||||||
249 | unsigned char flags; | - | ||||||||||||||||||||||||||||||
250 | - | |||||||||||||||||||||||||||||||
251 | quotes = 0; | - | ||||||||||||||||||||||||||||||
252 | - | |||||||||||||||||||||||||||||||
253 | flags = (unsigned char)(lflags & (1 | 8 | 2 | 4)); | - | ||||||||||||||||||||||||||||||
254 | type = str->type; | - | ||||||||||||||||||||||||||||||
255 | outlen = 0; | - | ||||||||||||||||||||||||||||||
256 | - | |||||||||||||||||||||||||||||||
257 | if (lflags & 0x40
| 0 | ||||||||||||||||||||||||||||||
258 | const char *tagname; | - | ||||||||||||||||||||||||||||||
259 | tagname = ASN1_tag2str(type); | - | ||||||||||||||||||||||||||||||
260 | outlen += strlen(tagname); | - | ||||||||||||||||||||||||||||||
261 | if (!io_ch(arg, tagname, outlen)
| 0 | ||||||||||||||||||||||||||||||
262 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
263 | outlen++; | - | ||||||||||||||||||||||||||||||
264 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
265 | - | |||||||||||||||||||||||||||||||
266 | - | |||||||||||||||||||||||||||||||
267 | - | |||||||||||||||||||||||||||||||
268 | - | |||||||||||||||||||||||||||||||
269 | if (lflags & 0x80
| 0 | ||||||||||||||||||||||||||||||
270 | type = -1; never executed: type = -1; | 0 | ||||||||||||||||||||||||||||||
271 | - | |||||||||||||||||||||||||||||||
272 | else if (lflags & 0x20
| 0 | ||||||||||||||||||||||||||||||
273 | type = 1; never executed: type = 1; | 0 | ||||||||||||||||||||||||||||||
274 | else { | - | ||||||||||||||||||||||||||||||
275 | - | |||||||||||||||||||||||||||||||
276 | if ((
| 0 | ||||||||||||||||||||||||||||||
277 | type = tag2nbyte[type]; never executed: type = tag2nbyte[type]; | 0 | ||||||||||||||||||||||||||||||
278 | else | - | ||||||||||||||||||||||||||||||
279 | type = -1; never executed: type = -1; | 0 | ||||||||||||||||||||||||||||||
280 | if ((
| 0 | ||||||||||||||||||||||||||||||
281 | type = 1; never executed: type = 1; | 0 | ||||||||||||||||||||||||||||||
282 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
283 | - | |||||||||||||||||||||||||||||||
284 | if (type == -1
| 0 | ||||||||||||||||||||||||||||||
285 | len = do_dump(lflags, io_ch, arg, str); | - | ||||||||||||||||||||||||||||||
286 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
287 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
288 | outlen += len; | - | ||||||||||||||||||||||||||||||
289 | return never executed: outlen;return outlen; never executed: return outlen; | 0 | ||||||||||||||||||||||||||||||
290 | } | - | ||||||||||||||||||||||||||||||
291 | - | |||||||||||||||||||||||||||||||
292 | if (lflags & 0x10
| 0 | ||||||||||||||||||||||||||||||
293 | - | |||||||||||||||||||||||||||||||
294 | - | |||||||||||||||||||||||||||||||
295 | - | |||||||||||||||||||||||||||||||
296 | - | |||||||||||||||||||||||||||||||
297 | - | |||||||||||||||||||||||||||||||
298 | if (!type
| 0 | ||||||||||||||||||||||||||||||
299 | type = 1; never executed: type = 1; | 0 | ||||||||||||||||||||||||||||||
300 | else | - | ||||||||||||||||||||||||||||||
301 | type |= 0x8; never executed: type |= 0x8; | 0 | ||||||||||||||||||||||||||||||
302 | } | - | ||||||||||||||||||||||||||||||
303 | - | |||||||||||||||||||||||||||||||
304 | len = do_buf(str->data, str->length, type, flags, "es, io_ch, | - | ||||||||||||||||||||||||||||||
305 | ((void *)0) | - | ||||||||||||||||||||||||||||||
306 | ); | - | ||||||||||||||||||||||||||||||
307 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
308 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
309 | outlen += len; | - | ||||||||||||||||||||||||||||||
310 | if (quotes
| 0 | ||||||||||||||||||||||||||||||
311 | outlen += 2; never executed: outlen += 2; | 0 | ||||||||||||||||||||||||||||||
312 | if (!arg
| 0 | ||||||||||||||||||||||||||||||
313 | return never executed: outlen;return outlen; never executed: return outlen; | 0 | ||||||||||||||||||||||||||||||
314 | if (quotes
| 0 | ||||||||||||||||||||||||||||||
315 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
316 | if (do_buf(str->data, str->length, type, flags,
| 0 | ||||||||||||||||||||||||||||||
317 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
318 | , io_ch, arg) < 0
| 0 | ||||||||||||||||||||||||||||||
319 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
320 | if (quotes
| 0 | ||||||||||||||||||||||||||||||
321 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
322 | return never executed: outlen;return outlen; never executed: return outlen; | 0 | ||||||||||||||||||||||||||||||
323 | } | - | ||||||||||||||||||||||||||||||
324 | - | |||||||||||||||||||||||||||||||
325 | - | |||||||||||||||||||||||||||||||
326 | - | |||||||||||||||||||||||||||||||
327 | static int | - | ||||||||||||||||||||||||||||||
328 | do_indent(char_io *io_ch, void *arg, int indent) | - | ||||||||||||||||||||||||||||||
329 | { | - | ||||||||||||||||||||||||||||||
330 | int i; | - | ||||||||||||||||||||||||||||||
331 | for (i = 0; i < indent
| 0 | ||||||||||||||||||||||||||||||
332 | if (!io_ch(arg, " ", 1)
| 0 | ||||||||||||||||||||||||||||||
333 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
334 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
335 | } | - | ||||||||||||||||||||||||||||||
336 | - | |||||||||||||||||||||||||||||||
337 | - | |||||||||||||||||||||||||||||||
338 | - | |||||||||||||||||||||||||||||||
339 | - | |||||||||||||||||||||||||||||||
340 | static int | - | ||||||||||||||||||||||||||||||
341 | do_name_ex(char_io *io_ch, void *arg, const X509_NAME *n, int indent, | - | ||||||||||||||||||||||||||||||
342 | unsigned long flags) | - | ||||||||||||||||||||||||||||||
343 | { | - | ||||||||||||||||||||||||||||||
344 | int i, prev = -1, orflags, cnt; | - | ||||||||||||||||||||||||||||||
345 | int fn_opt, fn_nid; | - | ||||||||||||||||||||||||||||||
346 | ASN1_OBJECT *fn; | - | ||||||||||||||||||||||||||||||
347 | ASN1_STRING *val; | - | ||||||||||||||||||||||||||||||
348 | X509_NAME_ENTRY *ent; | - | ||||||||||||||||||||||||||||||
349 | char objtmp[80]; | - | ||||||||||||||||||||||||||||||
350 | const char *objbuf; | - | ||||||||||||||||||||||||||||||
351 | int outlen, len; | - | ||||||||||||||||||||||||||||||
352 | char *sep_dn, *sep_mv, *sep_eq; | - | ||||||||||||||||||||||||||||||
353 | int sep_dn_len, sep_mv_len, sep_eq_len; | - | ||||||||||||||||||||||||||||||
354 | - | |||||||||||||||||||||||||||||||
355 | if (indent < 0
| 0 | ||||||||||||||||||||||||||||||
356 | indent = 0; never executed: indent = 0; | 0 | ||||||||||||||||||||||||||||||
357 | outlen = indent; | - | ||||||||||||||||||||||||||||||
358 | if (!do_indent(io_ch, arg, indent)
| 0 | ||||||||||||||||||||||||||||||
359 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
360 | - | |||||||||||||||||||||||||||||||
361 | switch (flags & (0xf << 16)) { | - | ||||||||||||||||||||||||||||||
362 | case never executed: (4 << 16):case (4 << 16): never executed: case (4 << 16): | 0 | ||||||||||||||||||||||||||||||
363 | sep_dn = "\n"; | - | ||||||||||||||||||||||||||||||
364 | sep_dn_len = 1; | - | ||||||||||||||||||||||||||||||
365 | sep_mv = " + "; | - | ||||||||||||||||||||||||||||||
366 | sep_mv_len = 3; | - | ||||||||||||||||||||||||||||||
367 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
368 | - | |||||||||||||||||||||||||||||||
369 | case never executed: (1 << 16):case (1 << 16): never executed: case (1 << 16): | 0 | ||||||||||||||||||||||||||||||
370 | sep_dn = ","; | - | ||||||||||||||||||||||||||||||
371 | sep_dn_len = 1; | - | ||||||||||||||||||||||||||||||
372 | sep_mv = "+"; | - | ||||||||||||||||||||||||||||||
373 | sep_mv_len = 1; | - | ||||||||||||||||||||||||||||||
374 | indent = 0; | - | ||||||||||||||||||||||||||||||
375 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
376 | - | |||||||||||||||||||||||||||||||
377 | case never executed: (2 << 16):case (2 << 16): never executed: case (2 << 16): | 0 | ||||||||||||||||||||||||||||||
378 | sep_dn = ", "; | - | ||||||||||||||||||||||||||||||
379 | sep_dn_len = 2; | - | ||||||||||||||||||||||||||||||
380 | sep_mv = " + "; | - | ||||||||||||||||||||||||||||||
381 | sep_mv_len = 3; | - | ||||||||||||||||||||||||||||||
382 | indent = 0; | - | ||||||||||||||||||||||||||||||
383 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
384 | - | |||||||||||||||||||||||||||||||
385 | case never executed: (3 << 16):case (3 << 16): never executed: case (3 << 16): | 0 | ||||||||||||||||||||||||||||||
386 | sep_dn = "; "; | - | ||||||||||||||||||||||||||||||
387 | sep_dn_len = 2; | - | ||||||||||||||||||||||||||||||
388 | sep_mv = " + "; | - | ||||||||||||||||||||||||||||||
389 | sep_mv_len = 3; | - | ||||||||||||||||||||||||||||||
390 | indent = 0; | - | ||||||||||||||||||||||||||||||
391 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
392 | - | |||||||||||||||||||||||||||||||
393 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||||||||
394 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
395 | } | - | ||||||||||||||||||||||||||||||
396 | - | |||||||||||||||||||||||||||||||
397 | if (flags & (1 << 23)
| 0 | ||||||||||||||||||||||||||||||
398 | sep_eq = " = "; | - | ||||||||||||||||||||||||||||||
399 | sep_eq_len = 3; | - | ||||||||||||||||||||||||||||||
400 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||||||||
401 | sep_eq = "="; | - | ||||||||||||||||||||||||||||||
402 | sep_eq_len = 1; | - | ||||||||||||||||||||||||||||||
403 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
404 | - | |||||||||||||||||||||||||||||||
405 | fn_opt = flags & (0x3 << 21); | - | ||||||||||||||||||||||||||||||
406 | - | |||||||||||||||||||||||||||||||
407 | cnt = X509_NAME_entry_count(n); | - | ||||||||||||||||||||||||||||||
408 | for (i = 0; i < cnt
| 0 | ||||||||||||||||||||||||||||||
409 | if (flags & (1 << 20)
| 0 | ||||||||||||||||||||||||||||||
410 | ent = X509_NAME_get_entry(n, cnt - i - 1); never executed: ent = X509_NAME_get_entry(n, cnt - i - 1); | 0 | ||||||||||||||||||||||||||||||
411 | else | - | ||||||||||||||||||||||||||||||
412 | ent = X509_NAME_get_entry(n, i); never executed: ent = X509_NAME_get_entry(n, i); | 0 | ||||||||||||||||||||||||||||||
413 | if (prev != -1
| 0 | ||||||||||||||||||||||||||||||
414 | if (prev == ent->set
| 0 | ||||||||||||||||||||||||||||||
415 | if (!io_ch(arg, sep_mv, sep_mv_len)
| 0 | ||||||||||||||||||||||||||||||
416 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
417 | outlen += sep_mv_len; | - | ||||||||||||||||||||||||||||||
418 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||||||||
419 | if (!io_ch(arg, sep_dn, sep_dn_len)
| 0 | ||||||||||||||||||||||||||||||
420 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
421 | outlen += sep_dn_len; | - | ||||||||||||||||||||||||||||||
422 | if (!do_indent(io_ch, arg, indent)
| 0 | ||||||||||||||||||||||||||||||
423 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
424 | outlen += indent; | - | ||||||||||||||||||||||||||||||
425 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
426 | } | - | ||||||||||||||||||||||||||||||
427 | prev = ent->set; | - | ||||||||||||||||||||||||||||||
428 | fn = X509_NAME_ENTRY_get_object(ent); | - | ||||||||||||||||||||||||||||||
429 | val = X509_NAME_ENTRY_get_data(ent); | - | ||||||||||||||||||||||||||||||
430 | fn_nid = OBJ_obj2nid(fn); | - | ||||||||||||||||||||||||||||||
431 | if (fn_opt != (3 << 21)
| 0 | ||||||||||||||||||||||||||||||
432 | int objlen, fld_len; | - | ||||||||||||||||||||||||||||||
433 | if ((
| 0 | ||||||||||||||||||||||||||||||
434 | (
| 0 | ||||||||||||||||||||||||||||||
435 | OBJ_obj2txt(objtmp, sizeof objtmp, fn, 1); | - | ||||||||||||||||||||||||||||||
436 | fld_len = 0; | - | ||||||||||||||||||||||||||||||
437 | objbuf = objtmp; | - | ||||||||||||||||||||||||||||||
438 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||||||||
439 | if (fn_opt == 0
| 0 | ||||||||||||||||||||||||||||||
440 | fld_len = 10; | - | ||||||||||||||||||||||||||||||
441 | objbuf = OBJ_nid2sn(fn_nid); | - | ||||||||||||||||||||||||||||||
442 | } never executed: else if (fn_opt == (1 << 21)end of block
| 0 | ||||||||||||||||||||||||||||||
443 | fld_len = 25; | - | ||||||||||||||||||||||||||||||
444 | objbuf = OBJ_nid2ln(fn_nid); | - | ||||||||||||||||||||||||||||||
445 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||||||||
446 | fld_len = 0; | - | ||||||||||||||||||||||||||||||
447 | objbuf = ""; | - | ||||||||||||||||||||||||||||||
448 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
449 | } | - | ||||||||||||||||||||||||||||||
450 | objlen = strlen(objbuf); | - | ||||||||||||||||||||||||||||||
451 | if (!io_ch(arg, objbuf, objlen)
| 0 | ||||||||||||||||||||||||||||||
452 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
453 | if ((
| 0 | ||||||||||||||||||||||||||||||
454 | if (!do_indent(io_ch, arg, fld_len - objlen)
| 0 | ||||||||||||||||||||||||||||||
455 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
456 | outlen += fld_len - objlen; | - | ||||||||||||||||||||||||||||||
457 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
458 | if (!io_ch(arg, sep_eq, sep_eq_len)
| 0 | ||||||||||||||||||||||||||||||
459 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
460 | outlen += objlen + sep_eq_len; | - | ||||||||||||||||||||||||||||||
461 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
462 | - | |||||||||||||||||||||||||||||||
463 | - | |||||||||||||||||||||||||||||||
464 | - | |||||||||||||||||||||||||||||||
465 | - | |||||||||||||||||||||||||||||||
466 | if ((
| 0 | ||||||||||||||||||||||||||||||
467 | (
| 0 | ||||||||||||||||||||||||||||||
468 | orflags = 0x80; never executed: orflags = 0x80; | 0 | ||||||||||||||||||||||||||||||
469 | else | - | ||||||||||||||||||||||||||||||
470 | orflags = 0; never executed: orflags = 0; | 0 | ||||||||||||||||||||||||||||||
471 | - | |||||||||||||||||||||||||||||||
472 | len = do_print_ex(io_ch, arg, flags | orflags, val); | - | ||||||||||||||||||||||||||||||
473 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
474 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
475 | outlen += len; | - | ||||||||||||||||||||||||||||||
476 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
477 | return never executed: outlen;return outlen; never executed: return outlen; | 0 | ||||||||||||||||||||||||||||||
478 | } | - | ||||||||||||||||||||||||||||||
479 | - | |||||||||||||||||||||||||||||||
480 | - | |||||||||||||||||||||||||||||||
481 | - | |||||||||||||||||||||||||||||||
482 | int | - | ||||||||||||||||||||||||||||||
483 | X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, | - | ||||||||||||||||||||||||||||||
484 | unsigned long flags) | - | ||||||||||||||||||||||||||||||
485 | { | - | ||||||||||||||||||||||||||||||
486 | if (flags == 0
| 0-6 | ||||||||||||||||||||||||||||||
487 | return executed 6 times by 1 test: X509_NAME_print(out, nm, indent);return X509_NAME_print(out, nm, indent); Executed by:
executed 6 times by 1 test: return X509_NAME_print(out, nm, indent); Executed by:
| 6 | ||||||||||||||||||||||||||||||
488 | return never executed: do_name_ex(send_bio_chars, out, nm, indent, flags);return do_name_ex(send_bio_chars, out, nm, indent, flags); never executed: return do_name_ex(send_bio_chars, out, nm, indent, flags); | 0 | ||||||||||||||||||||||||||||||
489 | } | - | ||||||||||||||||||||||||||||||
490 | - | |||||||||||||||||||||||||||||||
491 | int | - | ||||||||||||||||||||||||||||||
492 | X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, | - | ||||||||||||||||||||||||||||||
493 | unsigned long flags) | - | ||||||||||||||||||||||||||||||
494 | { | - | ||||||||||||||||||||||||||||||
495 | if (flags == 0
| 0 | ||||||||||||||||||||||||||||||
496 | BIO *btmp; | - | ||||||||||||||||||||||||||||||
497 | int ret; | - | ||||||||||||||||||||||||||||||
498 | btmp = BIO_new_fp(fp, 0x00); | - | ||||||||||||||||||||||||||||||
499 | if (!btmp
| 0 | ||||||||||||||||||||||||||||||
500 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
501 | ret = X509_NAME_print(btmp, nm, indent); | - | ||||||||||||||||||||||||||||||
502 | BIO_free(btmp); | - | ||||||||||||||||||||||||||||||
503 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||||||||
504 | } | - | ||||||||||||||||||||||||||||||
505 | return never executed: do_name_ex(send_fp_chars, fp, nm, indent, flags);return do_name_ex(send_fp_chars, fp, nm, indent, flags); never executed: return do_name_ex(send_fp_chars, fp, nm, indent, flags); | 0 | ||||||||||||||||||||||||||||||
506 | } | - | ||||||||||||||||||||||||||||||
507 | - | |||||||||||||||||||||||||||||||
508 | int | - | ||||||||||||||||||||||||||||||
509 | ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags) | - | ||||||||||||||||||||||||||||||
510 | { | - | ||||||||||||||||||||||||||||||
511 | return never executed: do_print_ex(send_bio_chars, out, flags, str);return do_print_ex(send_bio_chars, out, flags, str); never executed: return do_print_ex(send_bio_chars, out, flags, str); | 0 | ||||||||||||||||||||||||||||||
512 | } | - | ||||||||||||||||||||||||||||||
513 | - | |||||||||||||||||||||||||||||||
514 | int | - | ||||||||||||||||||||||||||||||
515 | ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags) | - | ||||||||||||||||||||||||||||||
516 | { | - | ||||||||||||||||||||||||||||||
517 | return never executed: do_print_ex(send_fp_chars, fp, flags, str);return do_print_ex(send_fp_chars, fp, flags, str); never executed: return do_print_ex(send_fp_chars, fp, flags, str); | 0 | ||||||||||||||||||||||||||||||
518 | } | - | ||||||||||||||||||||||||||||||
519 | - | |||||||||||||||||||||||||||||||
520 | - | |||||||||||||||||||||||||||||||
521 | - | |||||||||||||||||||||||||||||||
522 | - | |||||||||||||||||||||||||||||||
523 | - | |||||||||||||||||||||||||||||||
524 | int | - | ||||||||||||||||||||||||||||||
525 | ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in) | - | ||||||||||||||||||||||||||||||
526 | { | - | ||||||||||||||||||||||||||||||
527 | ASN1_STRING stmp, *str = &stmp; | - | ||||||||||||||||||||||||||||||
528 | int mbflag, type, ret; | - | ||||||||||||||||||||||||||||||
529 | - | |||||||||||||||||||||||||||||||
530 | if (!in
| 0-1838 | ||||||||||||||||||||||||||||||
531 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
532 | type = in->type; | - | ||||||||||||||||||||||||||||||
533 | if ((
| 0-1838 | ||||||||||||||||||||||||||||||
534 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
535 | mbflag = tag2nbyte[type]; | - | ||||||||||||||||||||||||||||||
536 | if (mbflag == -1
| 0-1838 | ||||||||||||||||||||||||||||||
537 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
538 | mbflag |= 0x1000; | - | ||||||||||||||||||||||||||||||
539 | stmp.data = | - | ||||||||||||||||||||||||||||||
540 | ((void *)0) | - | ||||||||||||||||||||||||||||||
541 | ; | - | ||||||||||||||||||||||||||||||
542 | stmp.length = 0; | - | ||||||||||||||||||||||||||||||
543 | ret = ASN1_mbstring_copy(&str, in->data, in->length, mbflag, | - | ||||||||||||||||||||||||||||||
544 | 0x2000); | - | ||||||||||||||||||||||||||||||
545 | if (ret < 0
| 0-1838 | ||||||||||||||||||||||||||||||
546 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||||||||
547 | *out = stmp.data; | - | ||||||||||||||||||||||||||||||
548 | return executed 1838 times by 8 tests: stmp.length;return stmp.length; Executed by:
executed 1838 times by 8 tests: return stmp.length; Executed by:
| 1838 | ||||||||||||||||||||||||||||||
549 | } | - | ||||||||||||||||||||||||||||||
Switch to Source code | Preprocessed file |