1 # 1 "sortmap.c"
2 # 1 "<built-in>"
3 # 1 "<command-line>"
4 # 1 "sortmap.c"
5 /*
6  * CDDL HEADER START
7  *
8  * The contents of this file are subject to the terms of the
9  * Common Development and Distribution License (the "License").
10  * You may not use this file except in compliance with the License.
11  *
12  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
13  * or http://www.opensolaris.org/os/licensing.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  *
17  * When distributing Covered Code, include this CDDL HEADER in each
18  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19  * If applicable, add the following below this CDDL HEADER, with the
20  * fields enclosed by brackets "[]" replaced with your own identifying
21  * information: Portions Copyright [yyyy] [name of copyright owner]
22  *
23  * CDDL HEADER END
24  */
25 
26 /*
27  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
28  * Use is subject to license terms.
29  */
30 
31 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
32 /* All Rights Reserved */
33 
34 
35 /*
36  * This module constructs a list of entries from the pkgmap associated
37  * with this package. When finished, this list is sorted in alphabetical
38  * order and an accompanying structure list, mergstat, provides
39  * information about how these new files merge with existing files
40  * already on the system.
41  */
42 
43 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
44 /*
45  * CDDL HEADER START
46  *
47  * The contents of this file are subject to the terms of the
48  * Common Development and Distribution License (the "License").
49  * You may not use this file except in compliance with the License.
50  *
51  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
52  * or http://www.opensolaris.org/os/licensing.
53  * See the License for the specific language governing permissions
54  * and limitations under the License.
55  *
56  * When distributing Covered Code, include this CDDL HEADER in each
57  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
58  * If applicable, add the following below this CDDL HEADER, with the
59  * fields enclosed by brackets "[]" replaced with your own identifying
60  * information: Portions Copyright [yyyy] [name of copyright owner]
61  *
62  * CDDL HEADER END
63  */
64 
65 /*
66  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
67  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
68  */
69 
70 /*	Copyright (c) 1988 AT&T	*/
71 /*	  All Rights Reserved  	*/
72 
73 /*
74  * User-visible pieces of the ANSI C standard I/O package.
75  */
76 
77 
78 
79 
80 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
81 /*
82  * CDDL HEADER START
83  *
84  * The contents of this file are subject to the terms of the
85  * Common Development and Distribution License (the "License").
86  * You may not use this file except in compliance with the License.
87  *
88  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
89  * or http://www.opensolaris.org/os/licensing.
90  * See the License for the specific language governing permissions
91  * and limitations under the License.
92  *
93  * When distributing Covered Code, include this CDDL HEADER in each
94  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
95  * If applicable, add the following below this CDDL HEADER, with the
96  * fields enclosed by brackets "[]" replaced with your own identifying
97  * information: Portions Copyright [yyyy] [name of copyright owner]
98  *
99  * CDDL HEADER END
100  */
101 
102 /*
103  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
104  * Copyright 2016 Joyent, Inc.
105  *
106  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
107  * Use is subject to license terms.
108  */
109 
110 
111 
112 
113 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h" 1
114 /*
115  * CDDL HEADER START
116  *
117  * The contents of this file are subject to the terms of the
118  * Common Development and Distribution License, Version 1.0 only
119  * (the "License").  You may not use this file except in compliance
120  * with the License.
121  *
122  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
123  * or http://www.opensolaris.org/os/licensing.
124  * See the License for the specific language governing permissions
125  * and limitations under the License.
126  *
127  * When distributing Covered Code, include this CDDL HEADER in each
128  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
129  * If applicable, add the following below this CDDL HEADER, with the
130  * fields enclosed by brackets "[]" replaced with your own identifying
131  * information: Portions Copyright [yyyy] [name of copyright owner]
132  *
133  * CDDL HEADER END
134  */
135 /*
136  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
137  * Use is subject to license terms.
138  */
139 /*
140  * Copyright 2015 EveryCity Ltd. All rights reserved.
141  */
142 
143 
144 
145 
146 /*
147  * This file contains definitions designed to enable different compilers
148  * to be used harmoniously on Solaris systems.
149  */
150 
151 
152 
153 
154 
155 /*
156  * Allow for version tests for compiler bugs and features.
157  */
158 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h"
159 /*
160  * analogous to lint's PRINTFLIKEn
161  */
162 
163 
164 
165 
166 
167 /*
168  * Handle the kernel printf routines that can take '%b' too
169  */
170 # 78 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h"
171 /*
172  * This one's pretty obvious -- the function never returns
173  */
174 
175 
176 /*
177  * The function is 'extern inline' and expects GNU C89 behaviour, not C99
178  * behaviour.
179  *
180  * Should only be used on 'extern inline' definitions for GCC.
181  */
182 
183 
184 
185 
186 
187 
188 /*
189  * The function has control flow such that it may return multiple times (in
190  * the manner of setjmp or vfork)
191  */
192 
193 
194 
195 
196 
197 
198 /*
199  * This is an appropriate label for functions that do not
200  * modify their arguments, e.g. strlen()
201  */
202 
203 
204 /*
205  * This is a stronger form of __pure__. Can be used for functions
206  * that do not modify their arguments and don't depend on global
207  * memory.
208  */
209 
210 
211 
212 
213 /*
214  * This attribute, attached to a variable, means that the variable is meant to
215  * be possibly unused. GCC will not produce a warning for this variable.
216  */
217 # 138 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h"
218 /*
219  * Shorthand versions for readability
220  */
221 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 2
222 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
223 /*
224  * CDDL HEADER START
225  *
226  * The contents of this file are subject to the terms of the
227  * Common Development and Distribution License (the "License").
228  * You may not use this file except in compliance with the License.
229  *
230  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
231  * or http://www.opensolaris.org/os/licensing.
232  * See the License for the specific language governing permissions
233  * and limitations under the License.
234  *
235  *
236  * When distributing Covered Code, include this CDDL HEADER in each
237  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
238  * If applicable, add the following below this CDDL HEADER, with the
239  * fields enclosed by brackets "[]" replaced with your own identifying
240  * information: Portions Copyright [yyyy] [name of copyright owner]
241  *
242  * CDDL HEADER END
243  */
244 
245 /*
246  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
247  * Use is subject to license terms.
248  * Copyright 2016 Joyent, Inc.
249  */
250 
251 
252 
253 
254 /*
255  * This header file serves to group a set of well known defines and to
256  * set these for each instruction set architecture.  These defines may
257  * be divided into two groups;  characteristics of the processor and
258  * implementation choices for Solaris on a processor.
259  *
260  * Processor Characteristics:
261  *
262  * _LITTLE_ENDIAN / _BIG_ENDIAN:
263  *	The natural byte order of the processor.  A pointer to an int points
264  *	to the least/most significant byte of that int.
265  *
266  * _STACK_GROWS_UPWARD / _STACK_GROWS_DOWNWARD:
267  *	The processor specific direction of stack growth.  A push onto the
268  *	stack increases/decreases the stack pointer, so it stores data at
269  *	successively higher/lower addresses.  (Stackless machines ignored
270  *	without regrets).
271  *
272  * _LONG_LONG_HTOL / _LONG_LONG_LTOH:
273  *	A pointer to a long long points to the most/least significant long
274  *	within that long long.
275  *
276  * _BIT_FIELDS_HTOL / _BIT_FIELDS_LTOH:
277  *	The C compiler assigns bit fields from the high/low to the low/high end
278  *	of an int (most to least significant vs. least to most significant).
279  *
280  * _IEEE_754:
281  *	The processor (or supported implementations of the processor)
282  *	supports the ieee-754 floating point standard.  No other floating
283  *	point standards are supported (or significant).  Any other supported
284  *	floating point formats are expected to be cased on the ISA processor
285  *	symbol.
286  *
287  * _CHAR_IS_UNSIGNED / _CHAR_IS_SIGNED:
288  *	The C Compiler implements objects of type `char' as `unsigned' or
289  *	`signed' respectively.  This is really an implementation choice of
290  *	the compiler writer, but it is specified in the ABI and tends to
291  *	be uniform across compilers for an instruction set architecture.
292  *	Hence, it has the properties of a processor characteristic.
293  *
294  * _CHAR_ALIGNMENT / _SHORT_ALIGNMENT / _INT_ALIGNMENT / _LONG_ALIGNMENT /
295  * _LONG_LONG_ALIGNMENT / _DOUBLE_ALIGNMENT / _LONG_DOUBLE_ALIGNMENT /
296  * _POINTER_ALIGNMENT / _FLOAT_ALIGNMENT:
297  *	The ABI defines alignment requirements of each of the primitive
298  *	object types.  Some, if not all, may be hardware requirements as
299  * 	well.  The values are expressed in "byte-alignment" units.
300  *
301  * _MAX_ALIGNMENT:
302  *	The most stringent alignment requirement as specified by the ABI.
303  *	Equal to the maximum of all the above _XXX_ALIGNMENT values.
304  *
305  * _MAX_ALIGNMENT_TYPE:
306  * 	The name of the C type that has the value descried in _MAX_ALIGNMENT.
307  *
308  * _ALIGNMENT_REQUIRED:
309  *	True or false (1 or 0) whether or not the hardware requires the ABI
310  *	alignment.
311  *
312  * _LONG_LONG_ALIGNMENT_32
313  *	The 32-bit ABI supported by a 64-bit kernel may have different
314  *	alignment requirements for primitive object types.  The value of this
315  *	identifier is expressed in "byte-alignment" units.
316  *
317  * _HAVE_CPUID_INSN
318  *	This indicates that the architecture supports the 'cpuid'
319  *	instruction as defined by Intel.  (Intel allows other vendors
320  *	to extend the instruction for their own purposes.)
321  *
322  *
323  * Implementation Choices:
324  *
325  * _ILP32 / _LP64:
326  *	This specifies the compiler data type implementation as specified in
327  *	the relevant ABI.  The choice between these is strongly influenced
328  *	by the underlying hardware, but is not absolutely tied to it.
329  *	Currently only two data type models are supported:
330  *
331  *	_ILP32:
332  *		Int/Long/Pointer are 32 bits.  This is the historical UNIX
333  *		and Solaris implementation.  Due to its historical standing,
334  *		this is the default case.
335  *
336  *	_LP64:
337  *		Long/Pointer are 64 bits, Int is 32 bits.  This is the chosen
338  *		implementation for 64-bit ABIs such as SPARC V9.
339  *
340  *	_I32LPx:
341  *		A compilation environment where 'int' is 32-bit, and
342  *		longs and pointers are simply the same size.
343  *
344  *	In all cases, Char is 8 bits and Short is 16 bits.
345  *
346  * _SUNOS_VTOC_8 / _SUNOS_VTOC_16 / _SVR4_VTOC_16:
347  *	This specifies the form of the disk VTOC (or label):
348  *
349  *	_SUNOS_VTOC_8:
350  *		This is a VTOC form which is upwardly compatible with the
351  *		SunOS 4.x disk label and allows 8 partitions per disk.
352  *
353  *	_SUNOS_VTOC_16:
354  *		In this format the incore vtoc image matches the ondisk
355  *		version.  It allows 16 slices per disk, and is not
356  *		compatible with the SunOS 4.x disk label.
357  *
358  *	Note that these are not the only two VTOC forms possible and
359  *	additional forms may be added.  One possible form would be the
360  *	SVr4 VTOC form.  The symbol for that is reserved now, although
361  *	it is not implemented.
362  *
363  *	_SVR4_VTOC_16:
364  *		This VTOC form is compatible with the System V Release 4
365  *		VTOC (as implemented on the SVr4 Intel and 3b ports) with
366  *		16 partitions per disk.
367  *
368  *
369  * _DMA_USES_PHYSADDR / _DMA_USES_VIRTADDR
370  *	This describes the type of addresses used by system DMA:
371  *
372  *	_DMA_USES_PHYSADDR:
373  *		This type of DMA, used in the x86 implementation,
374  *		requires physical addresses for DMA buffers.  The 24-bit
375  *		addresses used by some legacy boards is the source of the
376  *		"low-memory" (<16MB) requirement for some devices using DMA.
377  *
378  *	_DMA_USES_VIRTADDR:
379  *		This method of DMA allows the use of virtual addresses for
380  *		DMA transfers.
381  *
382  * _FIRMWARE_NEEDS_FDISK / _NO_FDISK_PRESENT
383  *      This indicates the presence/absence of an fdisk table.
384  *
385  *      _FIRMWARE_NEEDS_FDISK
386  *              The fdisk table is required by system firmware.  If present,
387  *              it allows a disk to be subdivided into multiple fdisk
388  *              partitions, each of which is equivalent to a separate,
389  *              virtual disk.  This enables the co-existence of multiple
390  *              operating systems on a shared hard disk.
391  *
392  *      _NO_FDISK_PRESENT
393  *              If the fdisk table is absent, it is assumed that the entire
394  *              media is allocated for a single operating system.
395  *
396  * _HAVE_TEM_FIRMWARE
397  *	Defined if this architecture has the (fallback) option of
398  *	using prom_* calls for doing I/O if a suitable kernel driver
399  *	is not available to do it.
400  *
401  * _DONT_USE_1275_GENERIC_NAMES
402  *		Controls whether or not device tree node names should
403  *		comply with the IEEE 1275 "Generic Names" Recommended
404  *		Practice. With _DONT_USE_GENERIC_NAMES, device-specific
405  *		names identifying the particular device will be used.
406  *
407  * __i386_COMPAT
408  *	This indicates whether the i386 ABI is supported as a *non-native*
409  *	mode for the platform.  When this symbol is defined:
410  *	-	32-bit xstat-style system calls are enabled
411  *	-	32-bit xmknod-style system calls are enabled
412  *	-	32-bit system calls use i386 sizes -and- alignments
413  *
414  *	Note that this is NOT defined for the i386 native environment!
415  *
416  * __x86
417  *	This is ONLY a synonym for defined(__i386) || defined(__amd64)
418  *	which is useful only insofar as these two architectures share
419  *	common attributes.  Analogous to __sparc.
420  *
421  * _PSM_MODULES
422  *	This indicates whether or not the implementation uses PSM
423  *	modules for processor support, reading /etc/mach from inside
424  *	the kernel to extract a list.
425  *
426  * _RTC_CONFIG
427  *	This indicates whether or not the implementation uses /etc/rtc_config
428  *	to configure the real-time clock in the kernel.
429  *
430  * _UNIX_KRTLD
431  *	This indicates that the implementation uses a dynamically
432  *	linked unix + krtld to form the core kernel image at boot
433  *	time, or (in the absence of this symbol) a prelinked kernel image.
434  *
435  * _OBP
436  *	This indicates the firmware interface is OBP.
437  *
438  * _SOFT_HOSTID
439  *	This indicates that the implementation obtains the hostid
440  *	from the file /etc/hostid, rather than from hardware.
441  */
442 
443 
444 
445 
446 
447 /*
448  * The following set of definitions characterize Solaris on AMD's
449  * 64-bit systems.
450  */
451 # 305 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h"
452 /*
453  * Define the appropriate "processor characteristics"
454  */
455 # 333 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h"
456 /*
457  * Define the appropriate "implementation choices".
458  */
459 # 351 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h"
460 /*
461  * The following set of definitions characterize the Solaris on SPARC systems.
462  *
463  * The symbol __sparc indicates any of the SPARC family of processor
464  * architectures.  This includes SPARC V7, SPARC V8 and SPARC V9.
465  *
466  * The symbol __sparcv8 indicates the 32-bit SPARC V8 architecture as defined
467  * by Version 8 of the SPARC Architecture Manual.  (SPARC V7 is close enough
468  * to SPARC V8 for the former to be subsumed into the latter definition.)
469  *
470  * The symbol __sparcv9 indicates the 64-bit SPARC V9 architecture as defined
471  * by Version 9 of the SPARC Architecture Manual.
472  *
473  * The symbols __sparcv8 and __sparcv9 are mutually exclusive, and are only
474  * relevant when the symbol __sparc is defined.
475  */
476 /*
477  * XXX Due to the existence of 5110166, "defined(__sparcv9)" needs to be added
478  * to support backwards builds.  This workaround should be removed in s10_71.
479  */
480 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 2
481 
482 
483 
484 
485 
486 /*
487  * Values of _POSIX_C_SOURCE
488  *
489  *		undefined   not a POSIX compilation
490  *		1	    POSIX.1-1990 compilation
491  *		2	    POSIX.2-1992 compilation
492  *		199309L	    POSIX.1b-1993 compilation (Real Time)
493  *		199506L	    POSIX.1c-1995 compilation (POSIX Threads)
494  *		200112L	    POSIX.1-2001 compilation (Austin Group Revision)
495  *		200809L     POSIX.1-2008 compilation
496  */
497 
498 
499 
500 
501 /*
502  * The feature test macros __XOPEN_OR_POSIX, _STRICT_STDC, _STRICT_SYMBOLS,
503  * and _STDC_C99 are Sun implementation specific macros created in order to
504  * compress common standards specified feature test macros for easier reading.
505  * These macros should not be used by the application developer as
506  * unexpected results may occur. Instead, the user should reference
507  * standards(5) for correct usage of the standards feature test macros.
508  *
509  * __XOPEN_OR_POSIX     Used in cases where a symbol is defined by both
510  *                      X/Open or POSIX or in the negative, when neither
511  *                      X/Open or POSIX defines a symbol.
512  *
513  * _STRICT_STDC         __STDC__ is specified by the C Standards and defined
514  *                      by the compiler. For Sun compilers the value of
515  *                      __STDC__ is either 1, 0, or not defined based on the
516  *                      compilation mode (see cc(1)). When the value of
517  *                      __STDC__ is 1 and in the absence of any other feature
518  *                      test macros, the namespace available to the application
519  *                      is limited to only those symbols defined by the C
520  *                      Standard. _STRICT_STDC provides a more readable means
521  *                      of identifying symbols defined by the standard, or in
522  *                      the negative, symbols that are extensions to the C
523  *                      Standard. See additional comments for GNU C differences.
524  *
525  * _STDC_C99            __STDC_VERSION__ is specified by the C standards and
526  *                      defined by the compiler and indicates the version of
527  *                      the C standard. A value of 199901L indicates a
528  *                      compiler that complies with ISO/IEC 9899:1999, other-
529  *                      wise known as the C99 standard.
530  *
531  * _STDC_C11		Like _STDC_C99 except that the value of __STDC_VERSION__
532  *                      is 201112L indicating a compiler that compiles with
533  *                      ISO/IEXC 9899:2011, otherwise known as the C11 standard.
534  *
535  * _STRICT_SYMBOLS	Used in cases where symbol visibility is restricted
536  *                      by the standards, and the user has not explicitly
537  *                      relaxed the strictness via __EXTENSIONS__.
538  */
539 
540 
541 
542 
543 
544 /*
545  * ISO/IEC 9899:1990 and it's revisions, ISO/IEC 9899:1999 and ISO/IEC
546  * 99899:2011 specify the following predefined macro name:
547  *
548  * __STDC__	The integer constant 1, intended to indicate a conforming
549  *		implementation.
550  *
551  * Furthermore, a strictly conforming program shall use only those features
552  * of the language and library specified in these standards. A conforming
553  * implementation shall accept any strictly conforming program.
554  *
555  * Based on these requirements, Sun's C compiler defines __STDC__ to 1 for
556  * strictly conforming environments and __STDC__ to 0 for environments that
557  * use ANSI C semantics but allow extensions to the C standard. For non-ANSI
558  * C semantics, Sun's C compiler does not define __STDC__.
559  *
560  * The GNU C project interpretation is that __STDC__ should always be defined
561  * to 1 for compilation modes that accept ANSI C syntax regardless of whether
562  * or not extensions to the C standard are used. Violations of conforming
563  * behavior are conditionally flagged as warnings via the use of the
564  * -pedantic option. In addition to defining __STDC__ to 1, the GNU C
565  * compiler also defines __STRICT_ANSI__ as a means of specifying strictly
566  * conforming environments using the -ansi or -std=<standard> options.
567  *
568  * In the absence of any other compiler options, Sun and GNU set the value
569  * of __STDC__ as follows when using the following options:
570  *
571  *				Value of __STDC__  __STRICT_ANSI__
572  *
573  * cc -Xa (default)			0	      undefined
574  * cc -Xt (transitional)		0             undefined
575  * cc -Xc (strictly conforming)		1	      undefined
576  * cc -Xs (K&R C)		    undefined	      undefined
577  *
578  * gcc (default)			1	      undefined
579  * gcc -ansi, -std={c89, c99,...)  	1              defined
580  * gcc -traditional (K&R)	    undefined	      undefined
581  *
582  * The default compilation modes for Sun C compilers versus GNU C compilers
583  * results in a differing value for __STDC__ which results in a more
584  * restricted namespace when using Sun compilers. To allow both GNU and Sun
585  * interpretations to peacefully co-exist, we use the following Sun
586  * implementation _STRICT_STDC_ macro:
587  */
588 # 150 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
589 /*
590  * Compiler complies with ISO/IEC 9899:1999 or ISO/IEC 9989:2011
591  */
592 # 162 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
593 /*
594  * Use strict symbol visibility.
595  */
596 
597 
598 
599 
600 
601 /*
602  * Large file interfaces:
603  *
604  *	_LARGEFILE_SOURCE
605  *		1		large file-related additions to POSIX
606  *				interfaces requested (fseeko, etc.)
607  *	_LARGEFILE64_SOURCE
608  *		1		transitional large-file-related interfaces
609  *				requested (seek64, stat64, etc.)
610  *
611  * The corresponding announcement macros are respectively:
612  *	_LFS_LARGEFILE
613  *	_LFS64_LARGEFILE
614  * (These are set in <unistd.h>.)
615  *
616  * Requesting _LARGEFILE64_SOURCE implies requesting _LARGEFILE_SOURCE as
617  * well.
618  *
619  * The large file interfaces are made visible regardless of the initial values
620  * of the feature test macros under certain circumstances:
621  *    -	If no explicit standards-conforming environment is requested (neither
622  *	of _POSIX_SOURCE nor _XOPEN_SOURCE is defined and the value of
623  *	__STDC__ does not imply standards conformance).
624  *    -	Extended system interfaces are explicitly requested (__EXTENSIONS__
625  * 	is defined).
626  *    -	Access to in-kernel interfaces is requested (_KERNEL or _KMEMUSER is
627  *	defined).  (Note that this dependency is an artifact of the current
628  *	kernel implementation and may change in future releases.)
629  */
630 # 210 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
631 /*
632  * Large file compilation environment control:
633  *
634  * The setting of _FILE_OFFSET_BITS controls the size of various file-related
635  * types and governs the mapping between file-related source function symbol
636  * names and the corresponding binary entry points.
637  *
638  * In the 32-bit environment, the default value is 32; if not set, set it to
639  * the default here, to simplify tests in other headers.
640  *
641  * In the 64-bit compilation environment, the only value allowed is 64.
642  */
643 # 238 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
644 /*
645  * Use of _XOPEN_SOURCE
646  *
647  * The following X/Open specifications are supported:
648  *
649  * X/Open Portability Guide, Issue 3 (XPG3)
650  * X/Open CAE Specification, Issue 4 (XPG4)
651  * X/Open CAE Specification, Issue 4, Version 2 (XPG4v2)
652  * X/Open CAE Specification, Issue 5 (XPG5)
653  * Open Group Technical Standard, Issue 6 (XPG6), also referred to as
654  *    IEEE Std. 1003.1-2001 and ISO/IEC 9945:2002.
655  * Open Group Technical Standard, Issue 7 (XPG7), also referred to as
656  *    IEEE Std. 1003.1-2008 and ISO/IEC 9945:2009.
657  *
658  * XPG4v2 is also referred to as UNIX 95 (SUS or SUSv1).
659  * XPG5 is also referred to as UNIX 98 or the Single Unix Specification,
660  *     Version 2 (SUSv2)
661  * XPG6 is the result of a merge of the X/Open and POSIX specifications
662  *     and as such is also referred to as IEEE Std. 1003.1-2001 in
663  *     addition to UNIX 03 and SUSv3.
664  * XPG7 is also referred to as UNIX 08 and SUSv4.
665  *
666  * When writing a conforming X/Open application, as per the specification
667  * requirements, the appropriate feature test macros must be defined at
668  * compile time. These are as follows. For more info, see standards(5).
669  *
670  * Feature Test Macro				     Specification
671  * ------------------------------------------------  -------------
672  * _XOPEN_SOURCE                                         XPG3
673  * _XOPEN_SOURCE && _XOPEN_VERSION = 4                   XPG4
674  * _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED = 1           XPG4v2
675  * _XOPEN_SOURCE = 500                                   XPG5
676  * _XOPEN_SOURCE = 600  (or POSIX_C_SOURCE=200112L)      XPG6
677  * _XOPEN_SOURCE = 700  (or POSIX_C_SOURCE=200809L)      XPG7
678  *
679  * In order to simplify the guards within the headers, the following
680  * implementation private test macros have been created. Applications
681  * must NOT use these private test macros as unexpected results will
682  * occur.
683  *
684  * Note that in general, the use of these private macros is cumulative.
685  * For example, the use of _XPG3 with no other restrictions on the X/Open
686  * namespace will make the symbols visible for XPG3 through XPG6
687  * compilation environments. The use of _XPG4_2 with no other X/Open
688  * namespace restrictions indicates that the symbols were introduced in
689  * XPG4v2 and are therefore visible for XPG4v2 through XPG6 compilation
690  * environments, but not for XPG3 or XPG4 compilation environments.
691  *
692  * _XPG3    X/Open Portability Guide, Issue 3 (XPG3)
693  * _XPG4    X/Open CAE Specification, Issue 4 (XPG4)
694  * _XPG4_2  X/Open CAE Specification, Issue 4, Version 2 (XPG4v2/UNIX 95/SUS)
695  * _XPG5    X/Open CAE Specification, Issue 5 (XPG5/UNIX 98/SUSv2)
696  * _XPG6    Open Group Technical Standard, Issue 6 (XPG6/UNIX 03/SUSv3)
697  * _XPG7    Open Group Technical Standard, Issue 7 (XPG7/UNIX 08/SUSv4)
698  */
699 
700 /* X/Open Portability Guide, Issue 3 */
701 # 341 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
702 /*
703  * _XOPEN_VERSION is defined by the X/Open specifications and is not
704  * normally defined by the application, except in the case of an XPG4
705  * application.  On the implementation side, _XOPEN_VERSION defined with
706  * the value of 3 indicates an XPG3 application. _XOPEN_VERSION defined
707  * with the value of 4 indicates an XPG4 or XPG4v2 (UNIX 95) application.
708  * _XOPEN_VERSION  defined with a value of 500 indicates an XPG5 (UNIX 98)
709  * application and with a value of 600 indicates an XPG6 (UNIX 03)
710  * application and with a value of 700 indicates an XPG7 (UNIX 08).
711  * The appropriate version is determined by the use of the
712  * feature test macros described earlier.  The value of _XOPEN_VERSION
713  * defaults to 3 otherwise indicating support for XPG3 applications.
714  */
715 # 368 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
716 /*
717  * ANSI C and ISO 9899:1990 say the type long long doesn't exist in strictly
718  * conforming environments.  ISO 9899:1999 says it does.
719  *
720  * The presence of _LONGLONG_TYPE says "long long exists" which is therefore
721  * defined in all but strictly conforming environments that disallow it.
722  */
723 # 388 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
724 /*
725  * The following macro defines a value for the ISO C99 restrict
726  * keyword so that _RESTRICT_KYWD resolves to "restrict" if
727  * an ISO C99 compiler is used, "__restrict" for c++ and "" (null string)
728  * if any other compiler is used. This allows for the use of single
729  * prototype declarations regardless of compiler version.
730  */
731 # 410 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
732 /*
733  * The following macro defines a value for the ISO C11 _Noreturn
734  * keyword so that _NORETURN_KYWD resolves to "_Noreturn" if
735  * an ISO C11 compiler is used and "" (null string) if any other
736  * compiler is used. This allows for the use of single prototype
737  * declarations regardless of compiler version.
738  */
739 
740 
741 
742 
743 
744 
745 
746 /*
747  * The following macro indicates header support for the ANSI C++
748  * standard.  The ISO/IEC designation for this is ISO/IEC FDIS 14882.
749  */
750 
751 
752 /*
753  * The following macro indicates header support for the C99 standard,
754  * ISO/IEC 9899:1999, Programming Languages - C.
755  */
756 
757 
758 /*
759  * The following macro indicates header support for the C99 standard,
760  * ISO/IEC 9899:2011, Programming Languages - C.
761  */
762 
763 
764 /*
765  * The following macro indicates header support for DTrace. The value is an
766  * integer that corresponds to the major version number for DTrace.
767  */
768 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 2
769 
770 
771 
772 
773 
774 /*
775  * Do all of our 'redefine_extname' processing before
776  * declarations of the associated functions are seen.
777  * This is necessary to keep gcc happy.
778  */
779 
780 
781 /* large file compilation environment setup */
782 
783 
784 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
785 #pragma redefine_extname fopen fopen64
786 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
787 
788 
789 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
790 #pragma redefine_extname freopen freopen64
791 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
792 
793 
794 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
795 #pragma redefine_extname tmpfile tmpfile64
796 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
797 
798 
799 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
800 #pragma redefine_extname fgetpos fgetpos64
801 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
802 
803 
804 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
805 #pragma redefine_extname fsetpos fsetpos64
806 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
807 
808 
809 
810 # 58 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
811 #pragma redefine_extname fseeko fseeko64
812 # 58 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
813 
814 
815 # 59 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
816 #pragma redefine_extname ftello ftello64
817 # 59 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
818 
819 
820 
821 
822 /* In the LP64 compilation environment, all APIs are already large file */
823 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
824 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 1
825 /*
826  * CDDL HEADER START
827  *
828  * The contents of this file are subject to the terms of the
829  * Common Development and Distribution License, Version 1.0 only
830  * (the "License").  You may not use this file except in compliance
831  * with the License.
832  *
833  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
834  * or http://www.opensolaris.org/os/licensing.
835  * See the License for the specific language governing permissions
836  * and limitations under the License.
837  *
838  * When distributing Covered Code, include this CDDL HEADER in each
839  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
840  * If applicable, add the following below this CDDL HEADER, with the
841  * fields enclosed by brackets "[]" replaced with your own identifying
842  * information: Portions Copyright [yyyy] [name of copyright owner]
843  *
844  * CDDL HEADER END
845  */
846 /*
847  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
848  * Copyright 2014 PALO, Richard.
849  *
850  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
851  * Use is subject to license terms.
852  */
853 
854 /*	Copyright (c) 1988 AT&T	*/
855 /*	  All Rights Reserved  	*/
856 
857 /*
858  * An application should not include this header directly.  Instead it
859  * should be included only through the inclusion of other Sun headers.
860  *
861  * The contents of this header is limited to identifiers specified in the
862  * C Standard.  Any new identifiers specified in future amendments to the
863  * C Standard must be placed in this header.  If these new identifiers
864  * are required to also be in the C++ Standard "std" namespace, then for
865  * anything other than macro definitions, corresponding "using" directives
866  * must also be added to <stdio.h>.
867  */
868 
869 /*
870  * User-visible pieces of the ANSI C standard I/O package.
871  */
872 
873 
874 
875 
876 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
877 /*
878  * CDDL HEADER START
879  *
880  * The contents of this file are subject to the terms of the
881  * Common Development and Distribution License (the "License").
882  * You may not use this file except in compliance with the License.
883  *
884  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
885  * or http://www.opensolaris.org/os/licensing.
886  * See the License for the specific language governing permissions
887  * and limitations under the License.
888  *
889  * When distributing Covered Code, include this CDDL HEADER in each
890  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
891  * If applicable, add the following below this CDDL HEADER, with the
892  * fields enclosed by brackets "[]" replaced with your own identifying
893  * information: Portions Copyright [yyyy] [name of copyright owner]
894  *
895  * CDDL HEADER END
896  */
897 
898 /*
899  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
900  * Copyright 2016 Joyent, Inc.
901  *
902  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
903  * Use is subject to license terms.
904  */
905 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
906 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
907 /*
908  * This file and its contents are supplied under the terms of the
909  * Common Development and Distribution License ("CDDL"), version 1.0.
910  * You may only use this file in accordance with the terms of version
911  * 1.0 of the CDDL.
912  *
913  * A full copy of the text of the CDDL should have accompanied this
914  * source.  A copy of the CDDL is also available via the Internet at
915  * http://www.illumos.org/license/CDDL.
916  */
917 
918 /*
919  * Copyright 2014-2016 PALO, Richard.
920  */
921 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
922 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h" 1
923 /*
924  * CDDL HEADER START
925  *
926  * The contents of this file are subject to the terms of the
927  * Common Development and Distribution License, Version 1.0 only
928  * (the "License").  You may not use this file except in compliance
929  * with the License.
930  *
931  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
932  * or http://www.opensolaris.org/os/licensing.
933  * See the License for the specific language governing permissions
934  * and limitations under the License.
935  *
936  * When distributing Covered Code, include this CDDL HEADER in each
937  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
938  * If applicable, add the following below this CDDL HEADER, with the
939  * fields enclosed by brackets "[]" replaced with your own identifying
940  * information: Portions Copyright [yyyy] [name of copyright owner]
941  *
942  * CDDL HEADER END
943  */
944 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
945 /*	  All Rights Reserved	*/
946 
947 
948 /*
949  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
950  *
951  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
952  * Use is subject to license terms.
953  */
954 
955 
956 
957 
958 /*
959  * An application should not include this header directly.  Instead it
960  * should be included only through the inclusion of other Sun headers.
961  *
962  * The purpose of this header is to provide the type definitions for
963  * the va_list argument used by a number of printf and printf like
964  * functions. The headers that define these various function prototypes
965  * #include this header directly. These include but are not necessarily
966  * limited to <stdio.h>, <stdio_iso.h>, <wchar_iso.h>, <strlog.h> and
967  * <syslog.h>. The type definitions included in this header are for
968  * the benefit of consumers of va_list.
969  *
970  * Any application that accepts variable argument lists must as documented,
971  * include either <varargs.h> or the preferred <stdarg.h>. Doing so will
972  * pull in the appropriate compiler protocols defined in <sys/va_impl.h>
973  * which is in turn is included by <varargs.h> and <stdarg.h>. See comments
974  * in <sys/va_impl.h> for more detailed information regarding implementation
975  * and compiler specific protocols.
976  */
977 
978 /*
979  * The common definitions exported by this header or compilers using
980  * this header are:
981  *
982  * the identifier __builtin_va_alist for the variable list pseudo parameter
983  * the type __va_alist_type for the variable list pseudo parameter
984  * the type __va_list defining the type of the variable list iterator
985  *
986  * The feature macros (e.g. __BUILTIN_VA_STRUCT) and compiler macros
987  * (__GNUC__) and processor macros (e.g. __amd64) are intended to be
988  * defined by the compilation system, not the user of the system.
989  */
990 
991 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
992 /*
993  * CDDL HEADER START
994  *
995  * The contents of this file are subject to the terms of the
996  * Common Development and Distribution License (the "License").
997  * You may not use this file except in compliance with the License.
998  *
999  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1000  * or http://www.opensolaris.org/os/licensing.
1001  * See the License for the specific language governing permissions
1002  * and limitations under the License.
1003  *
1004  *
1005  * When distributing Covered Code, include this CDDL HEADER in each
1006  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1007  * If applicable, add the following below this CDDL HEADER, with the
1008  * fields enclosed by brackets "[]" replaced with your own identifying
1009  * information: Portions Copyright [yyyy] [name of copyright owner]
1010  *
1011  * CDDL HEADER END
1012  */
1013 
1014 /*
1015  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
1016  * Use is subject to license terms.
1017  * Copyright 2016 Joyent, Inc.
1018  */
1019 # 70 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h" 2
1020 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h"
1021 typedef __builtin_va_list __gnuc_va_list;
1022 /*
1023  * XX64 This seems unnecessary .. but is needed because vcmn_err is
1024  *	defined with __va_list instead of plain old va_list.
1025  *	Perhaps that should be fixed!
1026  */
1027 typedef __builtin_va_list __va_list;
1028 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
1029 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_tag.h" 1
1030 /*
1031  * CDDL HEADER START
1032  *
1033  * The contents of this file are subject to the terms of the
1034  * Common Development and Distribution License, Version 1.0 only
1035  * (the "License").  You may not use this file except in compliance
1036  * with the License.
1037  *
1038  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1039  * or http://www.opensolaris.org/os/licensing.
1040  * See the License for the specific language governing permissions
1041  * and limitations under the License.
1042  *
1043  * When distributing Covered Code, include this CDDL HEADER in each
1044  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1045  * If applicable, add the following below this CDDL HEADER, with the
1046  * fields enclosed by brackets "[]" replaced with your own identifying
1047  * information: Portions Copyright [yyyy] [name of copyright owner]
1048  *
1049  * CDDL HEADER END
1050  */
1051 /*
1052  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1053  * Use is subject to license terms.
1054  */
1055 
1056 
1057 
1058 
1059 #pragma ident "%Z%%M%	%I%	%E% SMI"
1060 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_tag.h"
1061 typedef struct __FILE __FILE;
1062 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
1063 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_impl.h" 1
1064 /*
1065  * CDDL HEADER START
1066  *
1067  * The contents of this file are subject to the terms of the
1068  * Common Development and Distribution License (the "License").
1069  * You may not use this file except in compliance with the License.
1070  *
1071  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1072  * or http://www.opensolaris.org/os/licensing.
1073  * See the License for the specific language governing permissions
1074  * and limitations under the License.
1075  *
1076  * When distributing Covered Code, include this CDDL HEADER in each
1077  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1078  * If applicable, add the following below this CDDL HEADER, with the
1079  * fields enclosed by brackets "[]" replaced with your own identifying
1080  * information: Portions Copyright [yyyy] [name of copyright owner]
1081  *
1082  * CDDL HEADER END
1083  */
1084 
1085 /*
1086  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
1087  * Use is subject to license terms.
1088  */
1089 
1090 
1091 
1092 
1093 #pragma ident "%Z%%M%	%I%	%E% SMI"
1094 
1095 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
1096 /*
1097  * CDDL HEADER START
1098  *
1099  * The contents of this file are subject to the terms of the
1100  * Common Development and Distribution License (the "License").
1101  * You may not use this file except in compliance with the License.
1102  *
1103  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1104  * or http://www.opensolaris.org/os/licensing.
1105  * See the License for the specific language governing permissions
1106  * and limitations under the License.
1107  *
1108  *
1109  * When distributing Covered Code, include this CDDL HEADER in each
1110  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1111  * If applicable, add the following below this CDDL HEADER, with the
1112  * fields enclosed by brackets "[]" replaced with your own identifying
1113  * information: Portions Copyright [yyyy] [name of copyright owner]
1114  *
1115  * CDDL HEADER END
1116  */
1117 
1118 /*
1119  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
1120  * Use is subject to license terms.
1121  * Copyright 2016 Joyent, Inc.
1122  */
1123 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_impl.h" 2
1124 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_impl.h"
1125 struct __FILE /* needs to be binary-compatible with old versions */
1126 {
1127 
1128 
1129 
1130 
1131  int _cnt; /* number of available characters in buffer */
1132  unsigned char *_ptr; /* next character from/to here in buffer */
1133 
1134  unsigned char *_base; /* the buffer */
1135  unsigned char _flag; /* the state of the stream */
1136  unsigned char _magic; /* Old home of the file descriptor */
1137     /* Only fileno(3C) can retrieve the value now */
1138  unsigned __orientation:2; /* the orientation of the stream */
1139  unsigned __ionolock:1; /* turn off implicit locking */
1140  unsigned __seekable:1; /* is file seekable? */
1141  unsigned __extendedfd:1; /* enable extended FILE */
1142  unsigned __xf_nocheck:1; /* no extended FILE runtime check */
1143  unsigned __filler:10;
1144 };
1145 # 57 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
1146 
1147 /*
1148  * If feature test macros are set that enable interfaces that use types
1149  * defined in <sys/types.h>, get those types by doing the include.
1150  *
1151  * Note that in asking for the interfaces associated with this feature test
1152  * macro one also asks for definitions of the POSIX types.
1153  */
1154 
1155 
1156 
1157 
1158 
1159 
1160 /*
1161  * The following typedefs are adopted from ones in <sys/types.h> (with leading
1162  * underscores added to avoid polluting the ANSI C name space).  See the
1163  * commentary there for further explanation.
1164  */
1165 
1166 typedef long long __longlong_t;
1167 # 93 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1168 typedef __FILE FILE;
1169 
1170 
1171 
1172 
1173 
1174 
1175 
1176 typedef unsigned int size_t; /* (historical version) */
1177 
1178 
1179 
1180 
1181 
1182 
1183 typedef __longlong_t fpos_t;
1184 # 117 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1185 /*
1186  * The value of _NFILE is defined in the Processor Specific ABI.  The value
1187  * is chosen for historical reasons rather than for truly processor related
1188  * attribute.  Note that the SPARC Processor Specific ABI uses the common
1189  * UNIX historical value of 20 so it is allowed to fall through.
1190  */
1191 # 156 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1192 extern __FILE __iob[60];
1193 # 191 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1194 extern int remove(const char *);
1195 extern int rename(const char *, const char *);
1196 extern FILE *tmpfile(void);
1197 extern char *tmpnam(char *);
1198 extern int fclose(FILE *);
1199 extern int fflush(FILE *);
1200 extern FILE *fopen(const char *, const char *);
1201 extern FILE *freopen(const char *,
1202    const char *, FILE *);
1203 extern void setbuf(FILE *, char *);
1204 extern int setvbuf(FILE *, char *, int,
1205    size_t);
1206 /* PRINTFLIKE2 */
1207 extern int fprintf(FILE *, const char *, ...);
1208 /* SCANFLIKE2 */
1209 extern int fscanf(FILE *, const char *, ...);
1210 /* PRINTFLIKE1 */
1211 extern int printf(const char *, ...);
1212 /* SCANFLIKE1 */
1213 extern int scanf(const char *, ...);
1214 /* PRINTFLIKE2 */
1215 extern int sprintf(char *, const char *, ...);
1216 /* SCANFLIKE2 */
1217 extern int sscanf(const char *,
1218    const char *, ...);
1219 extern int vfprintf(FILE *, const char *,
1220    __va_list);
1221 extern int vprintf(const char *, __va_list);
1222 extern int vsprintf(char *, const char *,
1223    __va_list);
1224 extern int fgetc(FILE *);
1225 extern char *fgets(char *, int, FILE *);
1226 extern int fputc(int, FILE *);
1227 extern int fputs(const char *, FILE *);
1228 
1229 
1230 extern int getc(FILE *);
1231 extern int putc(int, FILE *);
1232 
1233 
1234 
1235 extern int getchar(void);
1236 extern int putchar(int);
1237 
1238 
1239 /*
1240  * ISO/IEC C11 removed gets from the standard library. Therefore if a strict C11
1241  * environment has been requested, we remove it.
1242  */
1243 
1244 extern char *gets(char *);
1245 
1246 extern int puts(const char *);
1247 extern int ungetc(int, FILE *);
1248 extern size_t fread(void *, size_t, size_t,
1249  FILE *);
1250 extern size_t fwrite(const void *, size_t, size_t,
1251  FILE *);
1252 
1253 extern int fgetpos(FILE *, fpos_t *);
1254 extern int fsetpos(FILE *, const fpos_t *);
1255 
1256 extern int fseek(FILE *, long, int);
1257 extern long ftell(FILE *);
1258 extern void rewind(FILE *);
1259 
1260 
1261 extern void clearerr(FILE *);
1262 extern int feof(FILE *);
1263 extern int ferror(FILE *);
1264 
1265 extern void perror(const char *);
1266 
1267 
1268 extern int __filbuf(FILE *);
1269 extern int __flsbuf(int, FILE *);
1270 # 83 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 2
1271 
1272 /*
1273  * If feature test macros are set that enable interfaces that use types
1274  * defined in <sys/types.h>, get those types by doing the include.
1275  *
1276  * Note that in asking for the interfaces associated with this feature test
1277  * macro one also asks for definitions of the POSIX types.
1278  */
1279 
1280 /*
1281  * Allow global visibility for symbols defined in
1282  * C++ "std" namespace in <iso/stdio_iso.h>.
1283  */
1284 # 147 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1285 /*
1286  * This header needs to be included here because it relies on the global
1287  * visibility of FILE and size_t in the C++ environment.
1288  */
1289 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_c99.h" 1
1290 /*
1291  * CDDL HEADER START
1292  *
1293  * The contents of this file are subject to the terms of the
1294  * Common Development and Distribution License, Version 1.0 only
1295  * (the "License").  You may not use this file except in compliance
1296  * with the License.
1297  *
1298  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1299  * or http://www.opensolaris.org/os/licensing.
1300  * See the License for the specific language governing permissions
1301  * and limitations under the License.
1302  *
1303  * When distributing Covered Code, include this CDDL HEADER in each
1304  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1305  * If applicable, add the following below this CDDL HEADER, with the
1306  * fields enclosed by brackets "[]" replaced with your own identifying
1307  * information: Portions Copyright [yyyy] [name of copyright owner]
1308  *
1309  * CDDL HEADER END
1310  */
1311 /*
1312  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1313  *
1314  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1315  * Use is subject to license terms.
1316  */
1317 
1318 /*
1319  * An application should not include this header directly.  Instead it
1320  * should be included only through the inclusion of other Sun headers.
1321  *
1322  * The contents of this header is limited to identifiers specified in
1323  * the C99 standard and in conflict with the C++ implementation of the
1324  * standard header.  The C++ standard may adopt the C99 standard at
1325  * which point it is expected that the symbols included here will
1326  * become part of the C++ std namespace.
1327  */
1328 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_c99.h"
1329 /*
1330  * The following have been added as a result of the ISO/IEC 9899:1999
1331  * standard. For a strictly conforming C application, visibility is
1332  * contingent on the value of __STDC_VERSION__ (see sys/feature_tests.h).
1333  * For non-strictly conforming C applications, there are no restrictions
1334  * on the C namespace.
1335  */
1336 # 74 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_c99.h"
1337 extern int vfscanf(FILE *, const char *, __va_list);
1338 extern int vscanf(const char *, __va_list);
1339 extern int vsscanf(const char *, const char *,
1340   __va_list);
1341 
1342 
1343 
1344 
1345 extern int snprintf(char *, size_t, const char *,
1346  ...);
1347 extern int vsnprintf(char *, size_t, const char *,
1348  __va_list);
1349 # 152 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 2
1350 # 163 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1351 typedef __longlong_t off_t;
1352 
1353 
1354 
1355 
1356 
1357 typedef __longlong_t off64_t;
1358 # 179 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1359 typedef __longlong_t fpos64_t;
1360 
1361 
1362 
1363 /*
1364  * XPG4 requires that va_list be defined in <stdio.h> "as described in
1365  * <stdarg.h>".  ANSI-C and POSIX require that the namespace of <stdio.h>
1366  * not be polluted with this name.
1367  */
1368 # 198 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1369 /* Marked LEGACY in SUSv2 and removed in SUSv3 */
1370 # 213 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1371 extern unsigned char _sibuf[], _sobuf[];
1372 
1373 
1374 /* large file compilation environment setup */
1375 # 237 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1376 extern unsigned char *_bufendtab[];
1377 extern FILE *_lastbuf;
1378 
1379 
1380 /* In the LP64 compilation environment, all APIs are already large file */
1381 # 261 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1382 typedef int ssize_t; /* (historical version) */
1383 
1384 
1385 
1386 
1387 
1388 
1389 extern char *tmpnam_r(char *);
1390 
1391 
1392 
1393 
1394 extern int fcloseall(void);
1395 extern void setbuffer(FILE *, char *, size_t);
1396 extern int setlinebuf(FILE *);
1397 /* PRINTFLIKE2 */
1398 extern int asprintf(char **, const char *, ...);
1399 /* PRINTFLIKE2 */
1400 extern int vasprintf(char **, const char *, __va_list);
1401 
1402 
1403 
1404 
1405  /* || defined(_XPG7) */
1406 extern ssize_t getdelim(char **, size_t *,
1407  int, FILE *);
1408 extern ssize_t getline(char **, size_t *,
1409  FILE *);
1410 
1411 
1412 /*
1413  * The following are known to POSIX and XOPEN, but not to ANSI-C.
1414  */
1415 
1416 
1417 
1418 extern FILE *fdopen(int, const char *);
1419 extern char *ctermid(char *);
1420 extern int fileno(FILE *);
1421 
1422 
1423 
1424 /*
1425  * The following are known to POSIX.1c, but not to ANSI-C or XOPEN.
1426  */
1427 # 318 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1428 /*
1429  * The following are known to XOPEN, but not to ANSI-C or POSIX.
1430  */
1431 
1432 
1433 extern FILE *popen(const char *, const char *);
1434 extern char *tempnam(const char *, const char *);
1435 extern int pclose(FILE *);
1436 
1437 extern int getsubopt(char **, char *const *, char **);
1438 
1439 
1440 /* Marked LEGACY in SUSv2 and removed in SUSv3 */
1441 
1442 extern char *cuserid(char *);
1443 extern int getopt(int, char *const *, const char *);
1444 extern char *optarg;
1445 extern int optind, opterr, optopt;
1446 extern int getw(FILE *);
1447 extern int putw(int, FILE *);
1448 
1449 
1450 
1451 
1452 /*
1453  * The following are defined as part of the Large File Summit interfaces.
1454  */
1455 
1456 extern int fseeko(FILE *, off_t, int);
1457 extern off_t ftello(FILE *);
1458 
1459 
1460 /*
1461  * The following are defined as part of the transitional Large File Summit
1462  * interfaces.
1463  */
1464 
1465 
1466 extern FILE *fopen64(const char *, const char *);
1467 extern FILE *freopen64(const char *, const char *, FILE *);
1468 extern FILE *tmpfile64(void);
1469 extern int fgetpos64(FILE *, fpos64_t *);
1470 extern int fsetpos64(FILE *, const fpos64_t *);
1471 extern int fseeko64(FILE *, off64_t, int);
1472 extern off64_t ftello64(FILE *);
1473 
1474 
1475 /*
1476  * XPG7 symbols
1477  */
1478 
1479 extern FILE *fmemopen(void *, size_t,
1480       const char *);
1481 extern FILE *open_memstream(char **, size_t *);
1482 # 40 "sortmap.c" 2
1483 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/string.h" 1
1484 /*
1485  * CDDL HEADER START
1486  *
1487  * The contents of this file are subject to the terms of the
1488  * Common Development and Distribution License (the "License").
1489  * You may not use this file except in compliance with the License.
1490  *
1491  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1492  * or http://www.opensolaris.org/os/licensing.
1493  * See the License for the specific language governing permissions
1494  * and limitations under the License.
1495  *
1496  * When distributing Covered Code, include this CDDL HEADER in each
1497  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1498  * If applicable, add the following below this CDDL HEADER, with the
1499  * fields enclosed by brackets "[]" replaced with your own identifying
1500  * information: Portions Copyright [yyyy] [name of copyright owner]
1501  *
1502  * CDDL HEADER END
1503  */
1504 
1505 /*
1506  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1507  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
1508  */
1509 
1510 /*	Copyright (c) 1988 AT&T	*/
1511 /*	  All Rights Reserved  	*/
1512 
1513 
1514 
1515 
1516 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h" 1
1517 /*
1518  * CDDL HEADER START
1519  *
1520  * The contents of this file are subject to the terms of the
1521  * Common Development and Distribution License, Version 1.0 only
1522  * (the "License").  You may not use this file except in compliance
1523  * with the License.
1524  *
1525  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1526  * or http://www.opensolaris.org/os/licensing.
1527  * See the License for the specific language governing permissions
1528  * and limitations under the License.
1529  *
1530  * When distributing Covered Code, include this CDDL HEADER in each
1531  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1532  * If applicable, add the following below this CDDL HEADER, with the
1533  * fields enclosed by brackets "[]" replaced with your own identifying
1534  * information: Portions Copyright [yyyy] [name of copyright owner]
1535  *
1536  * CDDL HEADER END
1537  */
1538 /*	Copyright (c) 1988 AT&T	*/
1539 /*	  All Rights Reserved  	*/
1540 
1541 
1542 /*
1543  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1544  * Copyright 2014 PALO, Richard.
1545  *
1546  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1547  * Use is subject to license terms.
1548  */
1549 
1550 /*
1551  * An application should not include this header directly.  Instead it
1552  * should be included only through the inclusion of other Sun headers.
1553  *
1554  * The contents of this header is limited to identifiers specified in the
1555  * C Standard.  Any new identifiers specified in future amendments to the
1556  * C Standard must be placed in this header.  If these new identifiers
1557  * are required to also be in the C++ Standard "std" namespace, then for
1558  * anything other than macro definitions, corresponding "using" directives
1559  * must also be added to <string.h>.
1560  */
1561 
1562 
1563 
1564 
1565 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
1566 /*
1567  * CDDL HEADER START
1568  *
1569  * The contents of this file are subject to the terms of the
1570  * Common Development and Distribution License (the "License").
1571  * You may not use this file except in compliance with the License.
1572  *
1573  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1574  * or http://www.opensolaris.org/os/licensing.
1575  * See the License for the specific language governing permissions
1576  * and limitations under the License.
1577  *
1578  * When distributing Covered Code, include this CDDL HEADER in each
1579  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1580  * If applicable, add the following below this CDDL HEADER, with the
1581  * fields enclosed by brackets "[]" replaced with your own identifying
1582  * information: Portions Copyright [yyyy] [name of copyright owner]
1583  *
1584  * CDDL HEADER END
1585  */
1586 
1587 /*
1588  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
1589  * Copyright 2016 Joyent, Inc.
1590  *
1591  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
1592  * Use is subject to license terms.
1593  */
1594 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h" 2
1595 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
1596 /*
1597  * This file and its contents are supplied under the terms of the
1598  * Common Development and Distribution License ("CDDL"), version 1.0.
1599  * You may only use this file in accordance with the terms of version
1600  * 1.0 of the CDDL.
1601  *
1602  * A full copy of the text of the CDDL should have accompanied this
1603  * source.  A copy of the CDDL is also available via the Internet at
1604  * http://www.illumos.org/license/CDDL.
1605  */
1606 
1607 /*
1608  * Copyright 2014-2016 PALO, Richard.
1609  */
1610 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h" 2
1611 # 69 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h"
1612 extern int memcmp(const void *, const void *, size_t);
1613 extern void *memcpy(void *, const void *, size_t);
1614 extern void *memmove(void *, const void *, size_t);
1615 extern void *memset(void *, int, size_t);
1616 extern char *strcat(char *, const char *);
1617 extern int strcmp(const char *, const char *);
1618 extern char *strcpy(char *, const char *);
1619 extern int strcoll(const char *, const char *);
1620 extern size_t strcspn(const char *, const char *);
1621 extern char *strerror(int);
1622 extern size_t strlen(const char *);
1623 extern char *strncat(char *, const char *, size_t);
1624 extern int strncmp(const char *, const char *, size_t);
1625 extern char *strncpy(char *, const char *, size_t);
1626 extern size_t strspn(const char *, const char *);
1627 extern char *strtok(char *, const char *);
1628 extern size_t strxfrm(char *, const char *, size_t);
1629 
1630 /*
1631  * The C++ Standard (ISO/IEC 14882:1998) specifies that each of the
1632  * function signatures for the following functions be replaced by
1633  * two declarations, both of which have the same behavior.
1634  */
1635 # 139 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h"
1636 extern void *memchr(const void *, int, size_t);
1637 extern char *strchr(const char *, int);
1638 extern char *strpbrk(const char *, const char *);
1639 extern char *strrchr(const char *, int);
1640 extern char *strstr(const char *, const char *);
1641 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/string.h" 2
1642 
1643 /*
1644  * Allow global visibility for symbols defined in
1645  * C++ "std" namespace in <iso/string_iso.h>.
1646  */
1647 # 72 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/string.h"
1648 extern int strerror_r(int, char *, size_t);
1649 
1650 
1651 
1652 
1653 
1654 extern char *strtok_r(char *, const char *,
1655  char **);
1656 
1657 
1658 
1659 
1660 extern void *memccpy(void *, const void *,
1661   int, size_t);
1662 
1663 
1664 
1665 
1666 extern char *stpcpy(char *, const char *);
1667 extern char *stpncpy(char *, const char *, size_t);
1668 extern char *strndup(const char *, size_t);
1669 extern size_t strnlen(const char *, size_t);
1670 extern char *strsignal(int);
1671 
1672 
1673 
1674 typedef struct _locale *locale_t;
1675 
1676 
1677 extern int strcoll_l(const char *, const char *, locale_t);
1678 extern size_t strxfrm_l(char *, const char *,
1679     size_t, locale_t);
1680 extern int strcasecmp_l(const char *, const char *, locale_t);
1681 extern int strncasecmp_l(const char *, const char *, size_t, locale_t);
1682 extern char *strerror_l(int, locale_t);
1683 
1684 
1685 
1686 
1687 
1688 /* Note that some of these are also declared in strings.h for XPG4_2+ */
1689 extern void explicit_bzero(void *, size_t);
1690 extern int uucopy(const void *, void *, size_t);
1691 extern int uucopystr(const void *, void *, size_t);
1692 extern int ffs(int);
1693 extern int ffsl(long);
1694 extern int ffsll(long long);
1695 extern int fls(int);
1696 extern int flsl(long);
1697 extern int flsll(long long);
1698 extern void *memmem(const void *, size_t, const void *, size_t);
1699 extern char *strcasestr(const char *, const char *);
1700 extern char *strnstr(const char *, const char *, size_t);
1701 extern size_t strlcpy(char *, const char *, size_t);
1702 extern size_t strlcat(char *, const char *, size_t);
1703 extern char *strsep(char **stringp, const char *delim);
1704 extern char *strchrnul(const char *, int);
1705 extern char *strcasestr_l(const char *, const char *, locale_t);
1706 extern int strcasecmp(const char *, const char *);
1707 extern int strncasecmp(const char *, const char *, size_t);
1708 
1709 
1710 
1711 
1712 
1713 extern char *strdup(const char *);
1714 
1715 
1716 
1717 
1718 
1719 
1720 /*
1721  * gcc provides this inlining facility but Studio C does not.
1722  * We should use it exclusively once Studio C also provides it.
1723  */
1724 extern void *__builtin_alloca(size_t);
1725 # 41 "sortmap.c" 2
1726 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 1
1727 /*
1728  * CDDL HEADER START
1729  *
1730  * The contents of this file are subject to the terms of the
1731  * Common Development and Distribution License (the "License").
1732  * You may not use this file except in compliance with the License.
1733  *
1734  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1735  * or http://www.opensolaris.org/os/licensing.
1736  * See the License for the specific language governing permissions
1737  * and limitations under the License.
1738  *
1739  * When distributing Covered Code, include this CDDL HEADER in each
1740  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1741  * If applicable, add the following below this CDDL HEADER, with the
1742  * fields enclosed by brackets "[]" replaced with your own identifying
1743  * information: Portions Copyright [yyyy] [name of copyright owner]
1744  *
1745  * CDDL HEADER END
1746  */
1747 
1748 /*
1749  * Copyright (c) 2013 Gary Mills
1750  *
1751  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
1752  * Use is subject to license terms.
1753  */
1754 
1755 /*	Copyright (c) 1988 AT&T	*/
1756 /*	  All Rights Reserved  	*/
1757 
1758 
1759 
1760 
1761 
1762 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
1763 /*
1764  * CDDL HEADER START
1765  *
1766  * The contents of this file are subject to the terms of the
1767  * Common Development and Distribution License (the "License").
1768  * You may not use this file except in compliance with the License.
1769  *
1770  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1771  * or http://www.opensolaris.org/os/licensing.
1772  * See the License for the specific language governing permissions
1773  * and limitations under the License.
1774  *
1775  * When distributing Covered Code, include this CDDL HEADER in each
1776  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1777  * If applicable, add the following below this CDDL HEADER, with the
1778  * fields enclosed by brackets "[]" replaced with your own identifying
1779  * information: Portions Copyright [yyyy] [name of copyright owner]
1780  *
1781  * CDDL HEADER END
1782  */
1783 
1784 /*
1785  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
1786  * Copyright 2016 Joyent, Inc.
1787  *
1788  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
1789  * Use is subject to license terms.
1790  */
1791 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
1792 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
1793 /*
1794  * CDDL HEADER START
1795  *
1796  * The contents of this file are subject to the terms of the
1797  * Common Development and Distribution License (the "License").
1798  * You may not use this file except in compliance with the License.
1799  *
1800  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1801  * or http://www.opensolaris.org/os/licensing.
1802  * See the License for the specific language governing permissions
1803  * and limitations under the License.
1804  *
1805  *
1806  * When distributing Covered Code, include this CDDL HEADER in each
1807  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1808  * If applicable, add the following below this CDDL HEADER, with the
1809  * fields enclosed by brackets "[]" replaced with your own identifying
1810  * information: Portions Copyright [yyyy] [name of copyright owner]
1811  *
1812  * CDDL HEADER END
1813  */
1814 
1815 /*
1816  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
1817  * Use is subject to license terms.
1818  * Copyright 2016 Joyent, Inc.
1819  */
1820 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
1821 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/limits_iso.h" 1
1822 /*
1823  * CDDL HEADER START
1824  *
1825  * The contents of this file are subject to the terms of the
1826  * Common Development and Distribution License, Version 1.0 only
1827  * (the "License").  You may not use this file except in compliance
1828  * with the License.
1829  *
1830  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1831  * or http://www.opensolaris.org/os/licensing.
1832  * See the License for the specific language governing permissions
1833  * and limitations under the License.
1834  *
1835  * When distributing Covered Code, include this CDDL HEADER in each
1836  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1837  * If applicable, add the following below this CDDL HEADER, with the
1838  * fields enclosed by brackets "[]" replaced with your own identifying
1839  * information: Portions Copyright [yyyy] [name of copyright owner]
1840  *
1841  * CDDL HEADER END
1842  */
1843 /*
1844  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
1845  * Use is subject to license terms.
1846  */
1847 
1848 /*	Copyright (c) 1988 AT&T	*/
1849 /*	  All Rights Reserved  	*/
1850 
1851 
1852 /*
1853  * An application should not include this header directly.  Instead it
1854  * should be included only through the inclusion of other Sun headers.
1855  *
1856  * The contents of this header is limited to identifiers specified in the
1857  * C Standard.  Any new identifiers specified in future amendments to the
1858  * C Standard must be placed in this header.  If these new identifiers
1859  * are required to also be in the C++ Standard "std" namespace, then for
1860  * anything other than macro definitions, corresponding "using" directives
1861  * must also be added to <limits.h>.
1862  */
1863 
1864 
1865 
1866 
1867 #pragma ident "%Z%%M%	%I%	%E% SMI"
1868 
1869 
1870 
1871 
1872 
1873 /*
1874  * Sizes of integral types
1875  */
1876 # 87 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/limits_iso.h"
1877      /* min value of a "long int" */
1878 
1879 
1880 
1881 
1882 
1883      /* min value of a long long */
1884 
1885      /* max value of a long long */
1886 
1887      /* max value of "unsigned long long */
1888 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
1889 
1890 /*
1891  * Include fixed width type limits as proposed by the ISO/JTC1/SC22/WG14 C
1892  * committee's working draft for the revision of the current ISO C standard,
1893  * ISO/IEC 9899:1990 Programming language - C.  These are not currently
1894  * required by any standard but constitute a useful, general purpose set
1895  * of type definitions and limits which is namespace clean with respect to
1896  * all standards.
1897  */
1898 
1899 
1900 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h" 1
1901 /*
1902  * CDDL HEADER START
1903  *
1904  * The contents of this file are subject to the terms of the
1905  * Common Development and Distribution License, Version 1.0 only
1906  * (the "License").  You may not use this file except in compliance
1907  * with the License.
1908  *
1909  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1910  * or http://www.opensolaris.org/os/licensing.
1911  * See the License for the specific language governing permissions
1912  * and limitations under the License.
1913  *
1914  * When distributing Covered Code, include this CDDL HEADER in each
1915  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1916  * If applicable, add the following below this CDDL HEADER, with the
1917  * fields enclosed by brackets "[]" replaced with your own identifying
1918  * information: Portions Copyright [yyyy] [name of copyright owner]
1919  *
1920  * CDDL HEADER END
1921  */
1922 /*
1923  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1924  *
1925  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1926  * Use is subject to license terms.
1927  */
1928 
1929 
1930 
1931 
1932 /*
1933  * This file, <sys/int_limits.h>, is part of the Sun Microsystems implementation
1934  * of <inttypes.h> as defined in the ISO C standard, ISO/IEC 9899:1999
1935  * Programming language - C.
1936  *
1937  * Programs/Modules should not directly include this file.  Access to the
1938  * types defined in this file should be through the inclusion of one of the
1939  * following files:
1940  *
1941  *	<limits.h>		This nested inclusion is disabled for strictly
1942  *				ANSI-C conforming compilations.  The *_MIN
1943  *				definitions are not visible to POSIX or XPG
1944  *				conforming applications (due to what may be
1945  *				a bug in the specification - this is under
1946  *				investigation)
1947  *
1948  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
1949  *				components of <inttypes.h>.
1950  *
1951  *	<inttypes.h>		For use by applications.
1952  *
1953  * See these files for more details.
1954  */
1955 
1956 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
1957 /*
1958  * CDDL HEADER START
1959  *
1960  * The contents of this file are subject to the terms of the
1961  * Common Development and Distribution License (the "License").
1962  * You may not use this file except in compliance with the License.
1963  *
1964  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1965  * or http://www.opensolaris.org/os/licensing.
1966  * See the License for the specific language governing permissions
1967  * and limitations under the License.
1968  *
1969  * When distributing Covered Code, include this CDDL HEADER in each
1970  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1971  * If applicable, add the following below this CDDL HEADER, with the
1972  * fields enclosed by brackets "[]" replaced with your own identifying
1973  * information: Portions Copyright [yyyy] [name of copyright owner]
1974  *
1975  * CDDL HEADER END
1976  */
1977 
1978 /*
1979  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
1980  * Copyright 2016 Joyent, Inc.
1981  *
1982  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
1983  * Use is subject to license terms.
1984  */
1985 # 57 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h" 2
1986 
1987 
1988 
1989 
1990 
1991 /*
1992  * Limits
1993  *
1994  * The following define the limits for the types defined in <sys/int_types.h>.
1995  *
1996  * INTMAX_MIN (minimum value of the largest supported signed integer type),
1997  * INTMAX_MAX (maximum value of the largest supported signed integer type),
1998  * and UINTMAX_MAX (maximum value of the largest supported unsigned integer
1999  * type) can be set to implementation defined limits.
2000  *
2001  * NOTE : A programmer can test to see whether an implementation supports
2002  * a particular size of integer by testing if the macro that gives the
2003  * maximum for that datatype is defined. For example, if #ifdef UINT64_MAX
2004  * tests false, the implementation does not support unsigned 64 bit integers.
2005  *
2006  * The type of these macros is intentionally unspecified.
2007  *
2008  * The types int8_t, int_least8_t, and int_fast8_t are not defined for ISAs
2009  * where the ABI specifies "char" as unsigned when the translation mode is
2010  * not ANSI-C.
2011  */
2012 # 141 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h"
2013 /*
2014  * The following 2 macros are provided for testing whether the types
2015  * intptr_t and uintptr_t (integers large enough to hold a void *) are
2016  * defined in this header. They are needed in case the architecture can't
2017  * represent a pointer in any standard integral type.
2018  */
2019 # 155 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h"
2020 /* Maximum limits of ptrdiff_t defined in <sys/types.h> */
2021 
2022 
2023 
2024 
2025 
2026 
2027 /*
2028  * Maximum value of a "size_t".  SIZE_MAX was previously defined
2029  * in <limits.h>, however, the standards specify it be defined
2030  * in <stdint.h>. The <stdint.h> headers includes this header as
2031  * does <limits.h>. The value of SIZE_MAX should not deviate
2032  * from the value of ULONG_MAX defined <sys/types.h>.
2033  */
2034 
2035 
2036 
2037 
2038 
2039 
2040 /* Maximum limit of sig_atomic_t defined in <sys/types.h> */
2041 
2042 
2043 
2044 
2045 /*
2046  * Maximum limit of wchar_t. The WCHAR_* macros are also
2047  * defined in <iso/wchar_iso.h>, but inclusion of that header
2048  * will break ISO/IEC C namespace.
2049  */
2050 
2051 
2052 
2053 
2054 /* Maximum limit of wint_t */
2055 
2056 
2057 
2058 
2059 /*
2060  * It is probably a bug in the POSIX specification (IEEE-1003.1-1990) that
2061  * when including <limits.h> that the suffix _MAX is reserved but not the
2062  * suffix _MIN.  However, until that issue is resolved....
2063  */
2064 # 230 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h"
2065 /* Minimum value of a pointer-holding signed integer type */
2066 
2067 
2068 
2069 
2070 
2071 
2072 /* Minimum limits of ptrdiff_t defined in <sys/types.h> */
2073 
2074 
2075 
2076 
2077 
2078 
2079 /* Minimum limit of sig_atomic_t defined in <sys/types.h> */
2080 
2081 
2082 
2083 
2084 /*
2085  * Minimum limit of wchar_t. The WCHAR_* macros are also
2086  * defined in <iso/wchar_iso.h>, but inclusion of that header
2087  * will break ISO/IEC C namespace.
2088  */
2089 
2090 
2091 
2092 
2093 /* Minimum limit of wint_t */
2094 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
2095 # 62 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2096 /*
2097  * ARG_MAX is calculated as follows:
2098  * NCARGS - space for other stuff on initial stack
2099  * like aux vectors, saved registers, etc..
2100  */
2101 # 97 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2102 /*
2103  * POSIX conformant definitions - An implementation may define
2104  * other symbols which reflect the actual implementation. Alternate
2105  * definitions may not be as restrictive as the POSIX definitions.
2106  */
2107 # 140 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2108 /* POSIX.1c conformant */
2109 
2110 
2111 
2112 
2113 
2114 /* UNIX 03 conformant */
2115 
2116 
2117 
2118 
2119 
2120 /*
2121  * POSIX.2 and XPG4-XSH4 conformant definitions
2122  */
2123 # 164 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2124 /* UNIX 03 conformant */
2125 # 186 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2126 /*
2127  * For dual definitions for PASS_MAX and sysconf.c
2128  */
2129 # 201 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2130     /* NLS printf() and scanf() */
2131 # 216 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2132 /* Marked as LEGACY in SUSv2 and removed in UNIX 03 */
2133 
2134 
2135 
2136        /* of a double */
2137 
2138 
2139        /* of a "float" */
2140 
2141 
2142 /* Marked as LEGACY in SUSv1 and removed in SUSv2 */
2143 
2144 
2145        /* of a double */
2146 
2147        /* of a float */
2148 # 248 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2149 /*
2150  * POSIX 1003.1a, section 2.9.5, table 2-5 contains [NAME_MAX] and the
2151  * related text states:
2152  *
2153  * A definition of one of the values from Table 2-5 shall be omitted from the
2154  * <limits.h> on specific implementations where the corresponding value is
2155  * equal to or greater than the stated minimum, but where the value can vary
2156  * depending on the file to which it is applied. The actual value supported for
2157  * a specific pathname shall be provided by the pathconf() (5.7.1) function.
2158  *
2159  * This is clear that any machine supporting multiple file system types
2160  * and/or a network can not include this define, regardless of protection
2161  * by the _POSIX_SOURCE and _POSIX_C_SOURCE flags.
2162  *
2163  * #define	NAME_MAX	14
2164  */
2165 # 285 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2166 typedef long clock_t;
2167 
2168 
2169 extern long _sysconf(int); /* System Private interface to sysconf() */
2170 # 297 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
2171     /* Increased for illumos */
2172 # 42 "sortmap.c" 2
2173 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 1
2174 /*
2175  * CDDL HEADER START
2176  *
2177  * The contents of this file are subject to the terms of the
2178  * Common Development and Distribution License (the "License").
2179  * You may not use this file except in compliance with the License.
2180  *
2181  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2182  * or http://www.opensolaris.org/os/licensing.
2183  * See the License for the specific language governing permissions
2184  * and limitations under the License.
2185  *
2186  * When distributing Covered Code, include this CDDL HEADER in each
2187  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2188  * If applicable, add the following below this CDDL HEADER, with the
2189  * fields enclosed by brackets "[]" replaced with your own identifying
2190  * information: Portions Copyright [yyyy] [name of copyright owner]
2191  *
2192  * CDDL HEADER END
2193  */
2194 
2195 /*
2196  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2197  * Copyright (c) 2013 Gary Mills
2198  *
2199  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
2200  */
2201 
2202 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
2203 
2204 /*	Copyright (c) 1988 AT&T	*/
2205 /*	  All Rights Reserved  	*/
2206 
2207 
2208 
2209 
2210 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h" 1
2211 /*
2212  * CDDL HEADER START
2213  *
2214  * The contents of this file are subject to the terms of the
2215  * Common Development and Distribution License, Version 1.0 only
2216  * (the "License").  You may not use this file except in compliance
2217  * with the License.
2218  *
2219  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2220  * or http://www.opensolaris.org/os/licensing.
2221  * See the License for the specific language governing permissions
2222  * and limitations under the License.
2223  *
2224  * When distributing Covered Code, include this CDDL HEADER in each
2225  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2226  * If applicable, add the following below this CDDL HEADER, with the
2227  * fields enclosed by brackets "[]" replaced with your own identifying
2228  * information: Portions Copyright [yyyy] [name of copyright owner]
2229  *
2230  * CDDL HEADER END
2231  */
2232 /*
2233  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2234  * Copyright 2014 PALO, Richard.
2235  *
2236  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
2237  * Use is subject to license terms.
2238  */
2239 
2240 /*	Copyright (c) 1988 AT&T	*/
2241 /*	  All Rights Reserved  	*/
2242 
2243 
2244 /*
2245  * An application should not include this header directly.  Instead it
2246  * should be included only through the inclusion of other Sun headers.
2247  *
2248  * The contents of this header is limited to identifiers specified in the
2249  * C Standard.  Any new identifiers specified in future amendments to the
2250  * C Standard must be placed in this header.  If these new identifiers
2251  * are required to also be in the C++ Standard "std" namespace, then for
2252  * anything other than macro definitions, corresponding "using" directives
2253  * must also be added to <locale.h>.
2254  */
2255 
2256 
2257 
2258 
2259 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2260 /*
2261  * CDDL HEADER START
2262  *
2263  * The contents of this file are subject to the terms of the
2264  * Common Development and Distribution License (the "License").
2265  * You may not use this file except in compliance with the License.
2266  *
2267  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2268  * or http://www.opensolaris.org/os/licensing.
2269  * See the License for the specific language governing permissions
2270  * and limitations under the License.
2271  *
2272  * When distributing Covered Code, include this CDDL HEADER in each
2273  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2274  * If applicable, add the following below this CDDL HEADER, with the
2275  * fields enclosed by brackets "[]" replaced with your own identifying
2276  * information: Portions Copyright [yyyy] [name of copyright owner]
2277  *
2278  * CDDL HEADER END
2279  */
2280 
2281 /*
2282  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2283  * Copyright 2016 Joyent, Inc.
2284  *
2285  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2286  * Use is subject to license terms.
2287  */
2288 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h" 2
2289 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
2290 /*
2291  * This file and its contents are supplied under the terms of the
2292  * Common Development and Distribution License ("CDDL"), version 1.0.
2293  * You may only use this file in accordance with the terms of version
2294  * 1.0 of the CDDL.
2295  *
2296  * A full copy of the text of the CDDL should have accompanied this
2297  * source.  A copy of the CDDL is also available via the Internet at
2298  * http://www.illumos.org/license/CDDL.
2299  */
2300 
2301 /*
2302  * Copyright 2014-2016 PALO, Richard.
2303  */
2304 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h" 2
2305 
2306 
2307 
2308 
2309 
2310 unsigned char __mb_cur_max(void);
2311 # 65 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h"
2312 typedef struct {
2313  int quot;
2314  int rem;
2315 } div_t;
2316 
2317 typedef struct {
2318  long quot;
2319  long rem;
2320 } ldiv_t;
2321 # 88 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h"
2322 /*
2323  * wchar_t is a built-in type in standard C++ and as such is not
2324  * defined here when using standard C++. However, the GNU compiler
2325  * fixincludes utility nonetheless creates its own version of this
2326  * header for use by gcc and g++. In that version it adds a redundant
2327  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
2328  * header we need to include the following magic comment:
2329  *
2330  * we must use the C++ compiler's type
2331  *
2332  * The above comment should not be removed or changed until GNU
2333  * gcc/fixinc/inclhack.def is updated to bypass this header.
2334  */
2335 
2336 
2337 
2338 
2339 
2340 
2341 typedef long wchar_t;
2342 # 120 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h"
2343 extern void abort(void) __attribute__((__noreturn__));
2344 extern int abs(int);
2345 extern int atexit(void (*)(void));
2346 extern double atof(const char *);
2347 extern int atoi(const char *);
2348 extern long int atol(const char *);
2349 extern void *bsearch(const void *, const void *, size_t, size_t,
2350  int (*)(const void *, const void *));
2351 
2352 
2353 
2354 
2355 
2356 
2357 extern void *calloc(size_t, size_t);
2358 extern div_t div(int, int);
2359 extern void exit(int)
2360  __attribute__((__noreturn__));
2361 extern void free(void *);
2362 extern char *getenv(const char *);
2363 extern long int labs(long);
2364 extern ldiv_t ldiv(long, long);
2365 extern void *malloc(size_t);
2366 extern int mblen(const char *, size_t);
2367 extern size_t mbstowcs(wchar_t *, const char *,
2368  size_t);
2369 extern int mbtowc(wchar_t *, const char *, size_t);
2370 extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
2371 
2372 
2373 
2374 
2375 
2376 extern int rand(void);
2377 extern void *realloc(void *, size_t);
2378 extern void srand(unsigned int);
2379 extern double strtod(const char *, char **);
2380 extern long int strtol(const char *, char **, int);
2381 extern unsigned long int strtoul(const char *,
2382  char **, int);
2383 extern int system(const char *);
2384 extern int wctomb(char *, wchar_t);
2385 extern size_t wcstombs(char *, const wchar_t *,
2386  size_t);
2387 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
2388 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c99.h" 1
2389 /*
2390  * CDDL HEADER START
2391  *
2392  * The contents of this file are subject to the terms of the
2393  * Common Development and Distribution License, Version 1.0 only
2394  * (the "License").  You may not use this file except in compliance
2395  * with the License.
2396  *
2397  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2398  * or http://www.opensolaris.org/os/licensing.
2399  * See the License for the specific language governing permissions
2400  * and limitations under the License.
2401  *
2402  * When distributing Covered Code, include this CDDL HEADER in each
2403  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2404  * If applicable, add the following below this CDDL HEADER, with the
2405  * fields enclosed by brackets "[]" replaced with your own identifying
2406  * information: Portions Copyright [yyyy] [name of copyright owner]
2407  *
2408  * CDDL HEADER END
2409  */
2410 /*
2411  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2412  *
2413  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
2414  * Use is subject to license terms.
2415  */
2416 
2417 /*
2418  * An application should not include this header directly.  Instead it
2419  * should be included only through the inclusion of other Sun headers.
2420  *
2421  * The contents of this header is limited to identifiers specified in
2422  * the C99 standard and in conflict with the C++ implementation of the
2423  * standard header.  The C++ standard may adopt the C99 standard at
2424  * which point it is expected that the symbols included here will
2425  * become part of the C++ std namespace.
2426  */
2427 
2428 
2429 
2430 
2431 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2432 /*
2433  * CDDL HEADER START
2434  *
2435  * The contents of this file are subject to the terms of the
2436  * Common Development and Distribution License (the "License").
2437  * You may not use this file except in compliance with the License.
2438  *
2439  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2440  * or http://www.opensolaris.org/os/licensing.
2441  * See the License for the specific language governing permissions
2442  * and limitations under the License.
2443  *
2444  * When distributing Covered Code, include this CDDL HEADER in each
2445  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2446  * If applicable, add the following below this CDDL HEADER, with the
2447  * fields enclosed by brackets "[]" replaced with your own identifying
2448  * information: Portions Copyright [yyyy] [name of copyright owner]
2449  *
2450  * CDDL HEADER END
2451  */
2452 
2453 /*
2454  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2455  * Copyright 2016 Joyent, Inc.
2456  *
2457  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2458  * Use is subject to license terms.
2459  */
2460 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c99.h" 2
2461 
2462 
2463 
2464 
2465 
2466 /*
2467  * The following have been added as a result of the ISO/IEC 9899:1999
2468  * standard. For a strictly conforming C application, visibility is
2469  * contingent on the value of __STDC_VERSION__ (see sys/feature_tests.h).
2470  * For non-strictly conforming C applications, there are no restrictions
2471  * on the C namespace.
2472  */
2473 
2474 
2475 typedef struct {
2476  long long quot;
2477  long long rem;
2478 } lldiv_t;
2479 # 75 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c99.h"
2480 extern void _Exit(int);
2481 extern float strtof(const char *, char **);
2482 extern long double strtold(const char *, char **);
2483 
2484 
2485 extern long long atoll(const char *);
2486 extern long long llabs(long long);
2487 extern lldiv_t lldiv(long long, long long);
2488 extern long long strtoll(const char *, char **,
2489  int);
2490 extern unsigned long long strtoull(const char *,
2491  char **, int);
2492 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
2493 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h" 1
2494 /*
2495  * This file and its contents are supplied under the terms of the
2496  * Common Development and Distribution License ("CDDL"), version 1.0.
2497  * You may only use this file in accordance with the terms of version
2498  * 1.0 of the CDDL.
2499  *
2500  * A full copy of the text of the CDDL should have accompanied this
2501  * source.  A copy of the CDDL is also available via the Internet at
2502  * http://www.illumos.org/license/CDDL.
2503  */
2504 
2505 /*
2506  * Copyright 2016 Joyent, Inc.
2507  */
2508 
2509 /*
2510  * An application should not include this header directly.  Instead it
2511  * should be included only through the inclusion of other illumos headers.
2512  *
2513  * The contents of this header is limited to identifiers specified in
2514  * the C11 standard and in conflict with the C++ implementation of the
2515  * standard header.  The C++ standard may adopt the C11 standard at
2516  * which point it is expected that the symbols included here will
2517  * become part of the C++ std namespace.
2518  */
2519 
2520 
2521 
2522 
2523 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2524 /*
2525  * CDDL HEADER START
2526  *
2527  * The contents of this file are subject to the terms of the
2528  * Common Development and Distribution License (the "License").
2529  * You may not use this file except in compliance with the License.
2530  *
2531  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2532  * or http://www.opensolaris.org/os/licensing.
2533  * See the License for the specific language governing permissions
2534  * and limitations under the License.
2535  *
2536  * When distributing Covered Code, include this CDDL HEADER in each
2537  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2538  * If applicable, add the following below this CDDL HEADER, with the
2539  * fields enclosed by brackets "[]" replaced with your own identifying
2540  * information: Portions Copyright [yyyy] [name of copyright owner]
2541  *
2542  * CDDL HEADER END
2543  */
2544 
2545 /*
2546  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2547  * Copyright 2016 Joyent, Inc.
2548  *
2549  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2550  * Use is subject to license terms.
2551  */
2552 # 31 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h" 2
2553 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h"
2554 /*
2555  * The following have been added as a result of the ISO/IEC 9899:2011
2556  * standard. For a strictly conforming C application, visibility is
2557  * contingent on the value of __STDC_VERSION__ (see sys/feature_tests.h).
2558  * For non-strictly conforming C applications, there are no restrictions
2559  * on the C namespace.
2560  */
2561 
2562 /*
2563  * Work around fix-includes and other bad actors with using multiple headers.
2564  */
2565 # 60 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h"
2566 extern void *aligned_alloc(size_t, size_t);
2567 extern int at_quick_exit(void (*)(void));
2568 extern void quick_exit(int);
2569 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
2570 
2571 
2572 
2573 
2574 
2575 /*
2576  * Allow global visibility for symbols defined in
2577  * C++ "std" namespace in <iso/stdlib_iso.h>.
2578  */
2579 # 83 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2580 /*
2581  * Allow global visibility for symbols defined in
2582  * C++ "std" namespace in <iso/stdlib_c11.h>.
2583  */
2584 # 101 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2585 typedef unsigned int uid_t; /* UID type		*/
2586 
2587 
2588 /* large file compilation environment setup */
2589 
2590 
2591 
2592 
2593 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2594 #pragma redefine_extname mkstemp mkstemp64
2595 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2596 
2597 
2598 # 109 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2599 #pragma redefine_extname mkstemps mkstemps64
2600 # 109 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2601 
2602 
2603 # 110 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2604 #pragma redefine_extname mkostemp mkostemp64
2605 # 110 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2606 
2607 
2608 # 111 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2609 #pragma redefine_extname mkostemps mkostemps64
2610 # 111 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2611 # 121 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2612 /* In the LP64 compilation environment, all APIs are already large file */
2613 # 141 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2614 extern int rand_r(unsigned int *);
2615 
2616 
2617 extern void _exithandle(void);
2618 
2619 
2620 
2621 
2622 extern double drand48(void);
2623 extern double erand48(unsigned short *);
2624 extern long jrand48(unsigned short *);
2625 extern void lcong48(unsigned short *);
2626 extern long lrand48(void);
2627 extern long mrand48(void);
2628 extern long nrand48(unsigned short *);
2629 extern unsigned short *seed48(unsigned short *);
2630 extern void srand48(long);
2631 extern int putenv(char *);
2632 extern void setkey(const char *);
2633 
2634 
2635 /*
2636  * swab() has historically been in <stdlib.h> as delivered from AT&T
2637  * and continues to be visible in the default compilation environment.
2638  * As of Issue 4 of the X/Open Portability Guides, swab() was declared
2639  * in <unistd.h>. As a result, with respect to X/Open namespace the
2640  * swab() declaration in this header is only visible for the XPG3
2641  * environment.
2642  */
2643 # 182 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2644 extern void swab(const char *, char *, ssize_t);
2645 
2646 
2647 
2648 
2649 
2650 extern int mkstemp(char *);
2651 
2652 extern int mkstemps(char *, int);
2653 
2654 
2655 
2656 
2657 
2658 extern int mkstemp64(char *);
2659 
2660 extern int mkstemps64(char *, int);
2661 
2662 
2663 
2664 
2665 extern char *mkdtemp(char *);
2666 
2667 
2668 
2669 extern int mkostemp(char *, int);
2670 extern int mkostemps(char *, int, int);
2671 
2672 
2673 extern int mkostemp64(char *, int);
2674 extern int mkostemps64(char *, int, int);
2675 
2676 
2677 
2678 
2679 
2680 
2681 extern long a64l(const char *);
2682 extern char *ecvt(double, int, int *, int *);
2683 extern char *fcvt(double, int, int *, int *);
2684 extern char *gcvt(double, int, char *);
2685 extern int getsubopt(char **, char *const *, char **);
2686 extern int grantpt(int);
2687 extern char *initstate(unsigned, char *, size_t);
2688 extern char *l64a(long);
2689 extern char *mktemp(char *);
2690 extern char *ptsname(int);
2691 extern long random(void);
2692 extern char *realpath(const char *, char *);
2693 extern char *setstate(const char *);
2694 extern void srandom(unsigned);
2695 extern int unlockpt(int);
2696 /* Marked LEGACY in SUSv2 and removed in SUSv3 */
2697 
2698 extern int ttyslot(void);
2699 extern void *valloc(size_t);
2700 
2701 
2702 
2703 
2704 
2705 
2706 extern int posix_memalign(void **, size_t, size_t);
2707 extern int posix_openpt(int);
2708 extern int setenv(const char *, const char *, int);
2709 extern int unsetenv(const char *);
2710 
2711 
2712 
2713 
2714 extern char *canonicalize_file_name(const char *);
2715 extern int clearenv(void);
2716 extern void closefrom(int);
2717 extern int daemon(int, int);
2718 extern int dup2(int, int);
2719 extern int dup3(int, int, int);
2720 extern int fdwalk(int (*)(void *, int), void *);
2721 extern char *qecvt(long double, int, int *, int *);
2722 extern char *qfcvt(long double, int, int *, int *);
2723 extern char *qgcvt(long double, int, char *);
2724 extern char *getcwd(char *, size_t);
2725 extern const char *getexecname(void);
2726 
2727 
2728 
2729 
2730 
2731 
2732 # 269 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2733 #pragma redefine_extname getlogin getloginx
2734 # 269 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2735 
2736 
2737 
2738 
2739 
2740 
2741 extern char *getlogin(void);
2742 
2743 
2744 extern int getopt(int, char *const *, const char *);
2745 extern char *optarg;
2746 extern int optind, opterr, optopt;
2747 extern char *getpass(const char *);
2748 extern char *getpassphrase(const char *);
2749 extern int getpw(uid_t, char *);
2750 extern int isatty(int);
2751 extern void *memalign(size_t, size_t);
2752 extern char *ttyname(int);
2753 extern char *mkdtemp(char *);
2754 extern const char *getprogname(void);
2755 extern void setprogname(const char *);
2756 
2757 
2758 extern char *lltostr(long long, char *);
2759 extern char *ulltostr(unsigned long long, char *);
2760 
2761 
2762 
2763 
2764 /* OpenBSD compatibility functions */
2765 
2766 
2767 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 1
2768 /*
2769  * CDDL HEADER START
2770  *
2771  * The contents of this file are subject to the terms of the
2772  * Common Development and Distribution License, Version 1.0 only
2773  * (the "License").  You may not use this file except in compliance
2774  * with the License.
2775  *
2776  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2777  * or http://www.opensolaris.org/os/licensing.
2778  * See the License for the specific language governing permissions
2779  * and limitations under the License.
2780  *
2781  * When distributing Covered Code, include this CDDL HEADER in each
2782  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2783  * If applicable, add the following below this CDDL HEADER, with the
2784  * fields enclosed by brackets "[]" replaced with your own identifying
2785  * information: Portions Copyright [yyyy] [name of copyright owner]
2786  *
2787  * CDDL HEADER END
2788  */
2789 /*
2790  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2791  *
2792  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
2793  * Use is subject to license terms.
2794  */
2795 
2796 
2797 
2798 
2799 /*
2800  * This file, <inttypes.h>, is specified by the ISO C standard,
2801  * standard, ISO/IEC 9899:1999 Programming language - C and is
2802  * also defined by SUSv3.
2803  *
2804  * ISO	  International Organization for Standardization.
2805  * SUSv3  Single Unix Specification, Version 3
2806  */
2807 
2808 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2809 /*
2810  * CDDL HEADER START
2811  *
2812  * The contents of this file are subject to the terms of the
2813  * Common Development and Distribution License (the "License").
2814  * You may not use this file except in compliance with the License.
2815  *
2816  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2817  * or http://www.opensolaris.org/os/licensing.
2818  * See the License for the specific language governing permissions
2819  * and limitations under the License.
2820  *
2821  * When distributing Covered Code, include this CDDL HEADER in each
2822  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2823  * If applicable, add the following below this CDDL HEADER, with the
2824  * fields enclosed by brackets "[]" replaced with your own identifying
2825  * information: Portions Copyright [yyyy] [name of copyright owner]
2826  *
2827  * CDDL HEADER END
2828  */
2829 
2830 /*
2831  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2832  * Copyright 2016 Joyent, Inc.
2833  *
2834  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2835  * Use is subject to license terms.
2836  */
2837 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 2
2838 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 1
2839 /*
2840  * CDDL HEADER START
2841  *
2842  * The contents of this file are subject to the terms of the
2843  * Common Development and Distribution License, Version 1.0 only
2844  * (the "License").  You may not use this file except in compliance
2845  * with the License.
2846  *
2847  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2848  * or http://www.opensolaris.org/os/licensing.
2849  * See the License for the specific language governing permissions
2850  * and limitations under the License.
2851  *
2852  * When distributing Covered Code, include this CDDL HEADER in each
2853  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2854  * If applicable, add the following below this CDDL HEADER, with the
2855  * fields enclosed by brackets "[]" replaced with your own identifying
2856  * information: Portions Copyright [yyyy] [name of copyright owner]
2857  *
2858  * CDDL HEADER END
2859  */
2860 /*
2861  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
2862  * Use is subject to license terms.
2863  */
2864 
2865 
2866 
2867 
2868 #pragma ident "%Z%%M%	%I%	%E% SMI"
2869 
2870 /*
2871  * This header, <sys/inttypes.h>, contains (through nested inclusion) the
2872  * vast majority of the facilities specified for <inttypes.h> as defined
2873  * by the ISO C Standard, ISO/IEC 9899:1999 Programming language - C.
2874  *
2875  * Kernel/Driver developers are encouraged to include this file to access
2876  * the fixed size types, limits and utility macros. Application developers
2877  * should use the standard defined header <inttypes.h>.
2878  */
2879 
2880 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2881 /*
2882  * CDDL HEADER START
2883  *
2884  * The contents of this file are subject to the terms of the
2885  * Common Development and Distribution License (the "License").
2886  * You may not use this file except in compliance with the License.
2887  *
2888  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2889  * or http://www.opensolaris.org/os/licensing.
2890  * See the License for the specific language governing permissions
2891  * and limitations under the License.
2892  *
2893  * When distributing Covered Code, include this CDDL HEADER in each
2894  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2895  * If applicable, add the following below this CDDL HEADER, with the
2896  * fields enclosed by brackets "[]" replaced with your own identifying
2897  * information: Portions Copyright [yyyy] [name of copyright owner]
2898  *
2899  * CDDL HEADER END
2900  */
2901 
2902 /*
2903  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2904  * Copyright 2016 Joyent, Inc.
2905  *
2906  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2907  * Use is subject to license terms.
2908  */
2909 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
2910 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
2911 /*
2912  * CDDL HEADER START
2913  *
2914  * The contents of this file are subject to the terms of the
2915  * Common Development and Distribution License, Version 1.0 only
2916  * (the "License").  You may not use this file except in compliance
2917  * with the License.
2918  *
2919  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2920  * or http://www.opensolaris.org/os/licensing.
2921  * See the License for the specific language governing permissions
2922  * and limitations under the License.
2923  *
2924  * When distributing Covered Code, include this CDDL HEADER in each
2925  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2926  * If applicable, add the following below this CDDL HEADER, with the
2927  * fields enclosed by brackets "[]" replaced with your own identifying
2928  * information: Portions Copyright [yyyy] [name of copyright owner]
2929  *
2930  * CDDL HEADER END
2931  */
2932 /*
2933  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2934  *
2935  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
2936  * Use is subject to license terms.
2937  */
2938 
2939 
2940 
2941 
2942 /*
2943  * This file, <sys/int_types.h>, is part of the Sun Microsystems implementation
2944  * of <inttypes.h> defined in the ISO C standard, ISO/IEC 9899:1999
2945  * Programming language - C.
2946  *
2947  * Programs/Modules should not directly include this file.  Access to the
2948  * types defined in this file should be through the inclusion of one of the
2949  * following files:
2950  *
2951  *	<sys/types.h>		Provides only the "_t" types defined in this
2952  *				file which is a subset of the contents of
2953  *				<inttypes.h>.  (This can be appropriate for
2954  *				all programs/modules except those claiming
2955  *				ANSI-C conformance.)
2956  *
2957  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
2958  *				components of <inttypes.h>.
2959  *
2960  *	<inttypes.h>		For use by applications.
2961  *
2962  * See these files for more details.
2963  */
2964 
2965 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2966 /*
2967  * CDDL HEADER START
2968  *
2969  * The contents of this file are subject to the terms of the
2970  * Common Development and Distribution License (the "License").
2971  * You may not use this file except in compliance with the License.
2972  *
2973  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2974  * or http://www.opensolaris.org/os/licensing.
2975  * See the License for the specific language governing permissions
2976  * and limitations under the License.
2977  *
2978  * When distributing Covered Code, include this CDDL HEADER in each
2979  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2980  * If applicable, add the following below this CDDL HEADER, with the
2981  * fields enclosed by brackets "[]" replaced with your own identifying
2982  * information: Portions Copyright [yyyy] [name of copyright owner]
2983  *
2984  * CDDL HEADER END
2985  */
2986 
2987 /*
2988  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2989  * Copyright 2016 Joyent, Inc.
2990  *
2991  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2992  * Use is subject to license terms.
2993  */
2994 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 2
2995 
2996 
2997 
2998 
2999 
3000 /*
3001  * Basic / Extended integer types
3002  *
3003  * The following defines the basic fixed-size integer types.
3004  *
3005  * Implementations are free to typedef them to Standard C integer types or
3006  * extensions that they support. If an implementation does not support one
3007  * of the particular integer data types below, then it should not define the
3008  * typedefs and macros corresponding to that data type.  Note that int8_t
3009  * is not defined in -Xs mode on ISAs for which the ABI specifies "char"
3010  * as an unsigned entity because there is no way to define an eight bit
3011  * signed integral.
3012  */
3013 
3014 typedef char int8_t;
3015 
3016 
3017 
3018 typedef short int16_t;
3019 typedef int int32_t;
3020 
3021 
3022 
3023 
3024 
3025 
3026 typedef long long int64_t;
3027 
3028 
3029 
3030 typedef unsigned char uint8_t;
3031 typedef unsigned short uint16_t;
3032 typedef unsigned int uint32_t;
3033 
3034 
3035 
3036 
3037 typedef unsigned long long uint64_t;
3038 
3039 
3040 
3041 /*
3042  * intmax_t and uintmax_t are to be the longest (in number of bits) signed
3043  * and unsigned integer types supported by the implementation.
3044  */
3045 
3046 typedef int64_t intmax_t;
3047 typedef uint64_t uintmax_t;
3048 
3049 
3050 
3051 
3052 
3053 /*
3054  * intptr_t and uintptr_t are signed and unsigned integer types large enough
3055  * to hold any data pointer; that is, data pointers can be assigned into or
3056  * from these integer types without losing precision.
3057  */
3058 
3059 
3060 
3061 
3062 typedef int intptr_t;
3063 typedef unsigned int uintptr_t;
3064 
3065 
3066 /*
3067  * The following define the fastest integer types that can hold the
3068  * specified number of bits.
3069  */
3070 
3071 typedef char int_fast8_t;
3072 
3073 
3074 
3075 typedef int int_fast16_t;
3076 typedef int int_fast32_t;
3077 
3078 
3079 
3080 
3081 typedef long long int_fast64_t;
3082 
3083 
3084 
3085 typedef unsigned char uint_fast8_t;
3086 typedef unsigned int uint_fast16_t;
3087 typedef unsigned int uint_fast32_t;
3088 
3089 
3090 
3091 
3092 typedef unsigned long long uint_fast64_t;
3093 
3094 
3095 
3096 /*
3097  * The following define the smallest integer types that can hold the
3098  * specified number of bits.
3099  */
3100 
3101 typedef char int_least8_t;
3102 
3103 
3104 
3105 typedef short int_least16_t;
3106 typedef int int_least32_t;
3107 
3108 
3109 
3110 
3111 typedef long long int_least64_t;
3112 
3113 
3114 
3115 /*
3116  * If these are changed, please update char16_t and char32_t in head/uchar.h.
3117  */
3118 typedef unsigned char uint_least8_t;
3119 typedef unsigned short uint_least16_t;
3120 typedef unsigned int uint_least32_t;
3121 
3122 
3123 
3124 
3125 typedef unsigned long long uint_least64_t;
3126 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3127 
3128 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h" 1
3129 /*
3130  * CDDL HEADER START
3131  *
3132  * The contents of this file are subject to the terms of the
3133  * Common Development and Distribution License, Version 1.0 only
3134  * (the "License").  You may not use this file except in compliance
3135  * with the License.
3136  *
3137  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3138  * or http://www.opensolaris.org/os/licensing.
3139  * See the License for the specific language governing permissions
3140  * and limitations under the License.
3141  *
3142  * When distributing Covered Code, include this CDDL HEADER in each
3143  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3144  * If applicable, add the following below this CDDL HEADER, with the
3145  * fields enclosed by brackets "[]" replaced with your own identifying
3146  * information: Portions Copyright [yyyy] [name of copyright owner]
3147  *
3148  * CDDL HEADER END
3149  */
3150 /*
3151  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3152  *
3153  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3154  * Use is subject to license terms.
3155  */
3156 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3157 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h" 1
3158 /*
3159  * CDDL HEADER START
3160  *
3161  * The contents of this file are subject to the terms of the
3162  * Common Development and Distribution License, Version 1.0 only
3163  * (the "License").  You may not use this file except in compliance
3164  * with the License.
3165  *
3166  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3167  * or http://www.opensolaris.org/os/licensing.
3168  * See the License for the specific language governing permissions
3169  * and limitations under the License.
3170  *
3171  * When distributing Covered Code, include this CDDL HEADER in each
3172  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3173  * If applicable, add the following below this CDDL HEADER, with the
3174  * fields enclosed by brackets "[]" replaced with your own identifying
3175  * information: Portions Copyright [yyyy] [name of copyright owner]
3176  *
3177  * CDDL HEADER END
3178  */
3179 /*
3180  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3181  *
3182  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3183  * Use is subject to license terms.
3184  */
3185 
3186 
3187 
3188 
3189 /*
3190  * This file, <sys/int_const.h>, is part of the Sun Microsystems implementation
3191  * of <inttypes.h> as proposed in the ISO/JTC1/SC22/WG14 C committee's working
3192  * draft for the revision of the current ISO C standard, ISO/IEC 9899:1990
3193  * Programming language - C.
3194  *
3195  * Programs/Modules should not directly include this file.  Access to the
3196  * types defined in this file should be through the inclusion of one of the
3197  * following files:
3198  *
3199  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
3200  *				components of <inttypes.h>.
3201  *
3202  *	<inttypes.h>		For use by applications.
3203  *
3204  * See these files for more details.
3205  *
3206  * Use at your own risk.  This file will track the evolution of the revision
3207  * of the current ISO C standard.  As of February 1996, the committee is
3208  * squarely behind the fixed sized types.
3209  */
3210 
3211 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3212 /*
3213  * CDDL HEADER START
3214  *
3215  * The contents of this file are subject to the terms of the
3216  * Common Development and Distribution License (the "License").
3217  * You may not use this file except in compliance with the License.
3218  *
3219  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3220  * or http://www.opensolaris.org/os/licensing.
3221  * See the License for the specific language governing permissions
3222  * and limitations under the License.
3223  *
3224  * When distributing Covered Code, include this CDDL HEADER in each
3225  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3226  * If applicable, add the following below this CDDL HEADER, with the
3227  * fields enclosed by brackets "[]" replaced with your own identifying
3228  * information: Portions Copyright [yyyy] [name of copyright owner]
3229  *
3230  * CDDL HEADER END
3231  */
3232 
3233 /*
3234  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3235  * Copyright 2016 Joyent, Inc.
3236  *
3237  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3238  * Use is subject to license terms.
3239  */
3240 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h" 2
3241 
3242 
3243 
3244 
3245 
3246 /*
3247  * Constants
3248  *
3249  * The following macros create constants of the types defined in
3250  * <sys/int_types.h>. The intent is that:
3251  *	Constants defined using these macros have a specific size and
3252  *	signedness. The suffix used for int64_t and uint64_t (ll and ull)
3253  *	are for examples only. Implementations are permitted to use other
3254  *	suffixes.
3255  *
3256  * The "CSTYLED" comments are flags to an internal code style analysis tool
3257  * telling it to silently accept the line which follows.  This internal
3258  * standard requires a space between arguments, but the historical,
3259  * non-ANSI-C ``method'' of concatenation can't tolerate those spaces.
3260  */
3261 /* CSTYLED */
3262 # 86 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h"
3263 /* CSTYLED */
3264 
3265 
3266 
3267 
3268 /* CSTYLED */
3269 
3270 /* CSTYLED */
3271 
3272 /* CSTYLED */
3273 
3274 
3275 
3276 
3277 
3278 
3279 /* CSTYLED */
3280 # 114 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h"
3281 /* CSTYLED */
3282 
3283 /* CSTYLED */
3284 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3285 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h" 1
3286 /*
3287  * CDDL HEADER START
3288  *
3289  * The contents of this file are subject to the terms of the
3290  * Common Development and Distribution License, Version 1.0 only
3291  * (the "License").  You may not use this file except in compliance
3292  * with the License.
3293  *
3294  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3295  * or http://www.opensolaris.org/os/licensing.
3296  * See the License for the specific language governing permissions
3297  * and limitations under the License.
3298  *
3299  * When distributing Covered Code, include this CDDL HEADER in each
3300  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3301  * If applicable, add the following below this CDDL HEADER, with the
3302  * fields enclosed by brackets "[]" replaced with your own identifying
3303  * information: Portions Copyright [yyyy] [name of copyright owner]
3304  *
3305  * CDDL HEADER END
3306  */
3307 /*
3308  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3309  *
3310  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3311  * Use is subject to license terms.
3312  */
3313 
3314 
3315 
3316 
3317 /*
3318  * This file, <sys/int_fmtio.h>, is part of the Sun Microsystems implementation
3319  * of <inttypes.h> as defined by the ISO C Standard, ISO/IEC 9899:1999
3320  * Programming language - C.
3321  *
3322  * ISO  International Organization for Standardization.
3323  *
3324  * Programs/Modules should not directly include this file.  Access to the
3325  * types defined in this file should be through the inclusion of one of the
3326  * following files:
3327  *
3328  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
3329  *				components of <inttypes.h>.
3330  *
3331  *	<inttypes.h>		For use by applications.
3332  *
3333  * See these files for more details.
3334  */
3335 
3336 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3337 /*
3338  * CDDL HEADER START
3339  *
3340  * The contents of this file are subject to the terms of the
3341  * Common Development and Distribution License (the "License").
3342  * You may not use this file except in compliance with the License.
3343  *
3344  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3345  * or http://www.opensolaris.org/os/licensing.
3346  * See the License for the specific language governing permissions
3347  * and limitations under the License.
3348  *
3349  * When distributing Covered Code, include this CDDL HEADER in each
3350  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3351  * If applicable, add the following below this CDDL HEADER, with the
3352  * fields enclosed by brackets "[]" replaced with your own identifying
3353  * information: Portions Copyright [yyyy] [name of copyright owner]
3354  *
3355  * CDDL HEADER END
3356  */
3357 
3358 /*
3359  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3360  * Copyright 2016 Joyent, Inc.
3361  *
3362  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3363  * Use is subject to license terms.
3364  */
3365 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h" 2
3366 
3367 
3368 
3369 
3370 
3371 /*
3372  * Formatted I/O
3373  *
3374  * The following macros can be used even when an implementation has not
3375  * extended the printf/scanf family of functions.
3376  *
3377  * The form of the names of the macros is either "PRI" for printf specifiers
3378  * or "SCN" for scanf specifiers, followed by the conversion specifier letter
3379  * followed by the datatype size. For example, PRId32 is the macro for
3380  * the printf d conversion specifier with the flags for 32 bit datatype.
3381  *
3382  * An example using one of these macros:
3383  *
3384  *	uint64_t u;
3385  *	printf("u = %016" PRIx64 "\n", u);
3386  *
3387  * For the purpose of example, the definitions of the printf/scanf macros
3388  * below have the values appropriate for a machine with 8 bit shorts, 16
3389  * bit shorts, 32 bit ints, 32 or 64 bit longs depending on compilation
3390  * mode, and 64 bit long longs.
3391  */
3392 
3393 /*
3394  * fprintf macros for signed integers
3395  */
3396 # 139 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3397 /*
3398  * fprintf macros for unsigned integers
3399  */
3400 # 227 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3401 /*
3402  * fprintf macros for pointers
3403  */
3404 # 247 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3405 /*
3406  * fscanf macros for signed integers
3407  */
3408 # 282 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3409 /*
3410  * fscanf macros for unsigned integers
3411  */
3412 # 349 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3413 /*
3414  * The following macros define I/O formats for intmax_t and uintmax_t.
3415  */
3416 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3417 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 2
3418 
3419 
3420 
3421 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 1
3422 /*
3423  * CDDL HEADER START
3424  *
3425  * The contents of this file are subject to the terms of the
3426  * Common Development and Distribution License, Version 1.0 only
3427  * (the "License").  You may not use this file except in compliance
3428  * with the License.
3429  *
3430  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3431  * or http://www.opensolaris.org/os/licensing.
3432  * See the License for the specific language governing permissions
3433  * and limitations under the License.
3434  *
3435  * When distributing Covered Code, include this CDDL HEADER in each
3436  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3437  * If applicable, add the following below this CDDL HEADER, with the
3438  * fields enclosed by brackets "[]" replaced with your own identifying
3439  * information: Portions Copyright [yyyy] [name of copyright owner]
3440  *
3441  * CDDL HEADER END
3442  */
3443 /*
3444  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
3445  * Use is subject to license terms.
3446  */
3447 
3448 
3449 
3450 
3451 #pragma ident "%Z%%M%	%I%	%E% SMI"
3452 
3453 /*
3454  * This header is included by <stdint.h> which was introduced by
3455  * the ISO C Standard, ISO/IEC 9899:1999 Programming language - C.
3456  * The header is a subset of the <inttypes.h> header.
3457  */
3458 
3459 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
3460 /*
3461  * CDDL HEADER START
3462  *
3463  * The contents of this file are subject to the terms of the
3464  * Common Development and Distribution License, Version 1.0 only
3465  * (the "License").  You may not use this file except in compliance
3466  * with the License.
3467  *
3468  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3469  * or http://www.opensolaris.org/os/licensing.
3470  * See the License for the specific language governing permissions
3471  * and limitations under the License.
3472  *
3473  * When distributing Covered Code, include this CDDL HEADER in each
3474  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3475  * If applicable, add the following below this CDDL HEADER, with the
3476  * fields enclosed by brackets "[]" replaced with your own identifying
3477  * information: Portions Copyright [yyyy] [name of copyright owner]
3478  *
3479  * CDDL HEADER END
3480  */
3481 /*
3482  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3483  *
3484  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3485  * Use is subject to license terms.
3486  */
3487 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 2
3488 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h" 1
3489 /*
3490  * CDDL HEADER START
3491  *
3492  * The contents of this file are subject to the terms of the
3493  * Common Development and Distribution License, Version 1.0 only
3494  * (the "License").  You may not use this file except in compliance
3495  * with the License.
3496  *
3497  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3498  * or http://www.opensolaris.org/os/licensing.
3499  * See the License for the specific language governing permissions
3500  * and limitations under the License.
3501  *
3502  * When distributing Covered Code, include this CDDL HEADER in each
3503  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3504  * If applicable, add the following below this CDDL HEADER, with the
3505  * fields enclosed by brackets "[]" replaced with your own identifying
3506  * information: Portions Copyright [yyyy] [name of copyright owner]
3507  *
3508  * CDDL HEADER END
3509  */
3510 /*
3511  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3512  *
3513  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3514  * Use is subject to license terms.
3515  */
3516 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 2
3517 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h" 1
3518 /*
3519  * CDDL HEADER START
3520  *
3521  * The contents of this file are subject to the terms of the
3522  * Common Development and Distribution License, Version 1.0 only
3523  * (the "License").  You may not use this file except in compliance
3524  * with the License.
3525  *
3526  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3527  * or http://www.opensolaris.org/os/licensing.
3528  * See the License for the specific language governing permissions
3529  * and limitations under the License.
3530  *
3531  * When distributing Covered Code, include this CDDL HEADER in each
3532  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3533  * If applicable, add the following below this CDDL HEADER, with the
3534  * fields enclosed by brackets "[]" replaced with your own identifying
3535  * information: Portions Copyright [yyyy] [name of copyright owner]
3536  *
3537  * CDDL HEADER END
3538  */
3539 /*
3540  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3541  *
3542  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3543  * Use is subject to license terms.
3544  */
3545 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 2
3546 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 2
3547 
3548 
3549 
3550 
3551 
3552 
3553 /* Inclusion of <stddef.h> breaks namespace, therefore define wchar_t */
3554 
3555 /*
3556  * wchar_t is a built-in type in standard C++ and as such is not
3557  * defined here when using standard C++. However, the GNU compiler
3558  * fixincludes utility nonetheless creates its own version of this
3559  * header for use by gcc and g++. In that version it adds a redundant
3560  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
3561  * header we need to include the following magic comment:
3562  *
3563  * we must use the C++ compiler's type
3564  *
3565  * The above comment should not be removed or changed until GNU
3566  * gcc/fixinc/inclhack.def is updated to bypass this header.
3567  */
3568 # 81 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h"
3569 typedef struct {
3570  intmax_t quot;
3571  intmax_t rem;
3572 } imaxdiv_t;
3573 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h"
3574 extern intmax_t imaxabs(intmax_t);
3575 extern imaxdiv_t imaxdiv(intmax_t, intmax_t);
3576 extern intmax_t strtoimax(const char *, char **,
3577  int);
3578 extern uintmax_t strtoumax(const char *, char **,
3579  int);
3580 extern intmax_t wcstoimax(const wchar_t *,
3581  wchar_t **, int);
3582 extern uintmax_t wcstoumax(const wchar_t *,
3583  wchar_t **, int);
3584 # 302 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
3585 extern uint32_t arc4random(void);
3586 extern void arc4random_buf(void *, size_t);
3587 extern uint32_t arc4random_uniform(uint32_t);
3588 extern void freezero(void *, size_t);
3589 extern void *recallocarray(void *, size_t, size_t, size_t);
3590 # 43 "sortmap.c" 2
3591 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 1
3592 /*
3593  * CDDL HEADER START
3594  *
3595  * The contents of this file are subject to the terms of the
3596  * Common Development and Distribution License (the "License").
3597  * You may not use this file except in compliance with the License.
3598  *
3599  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3600  * or http://www.opensolaris.org/os/licensing.
3601  * See the License for the specific language governing permissions
3602  * and limitations under the License.
3603  *
3604  * When distributing Covered Code, include this CDDL HEADER in each
3605  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3606  * If applicable, add the following below this CDDL HEADER, with the
3607  * fields enclosed by brackets "[]" replaced with your own identifying
3608  * information: Portions Copyright [yyyy] [name of copyright owner]
3609  *
3610  * CDDL HEADER END
3611  */
3612 
3613 /*
3614  * Copyright 2014 PALO, Richard.
3615  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3616  * Copyright (c) 2013 Gary Mills
3617  *
3618  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
3619  */
3620 
3621 /*	Copyright (c) 1988 AT&T	*/
3622 /*	  All Rights Reserved  	*/
3623 
3624 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
3625 
3626 
3627 
3628 
3629 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3630 /*
3631  * CDDL HEADER START
3632  *
3633  * The contents of this file are subject to the terms of the
3634  * Common Development and Distribution License (the "License").
3635  * You may not use this file except in compliance with the License.
3636  *
3637  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3638  * or http://www.opensolaris.org/os/licensing.
3639  * See the License for the specific language governing permissions
3640  * and limitations under the License.
3641  *
3642  * When distributing Covered Code, include this CDDL HEADER in each
3643  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3644  * If applicable, add the following below this CDDL HEADER, with the
3645  * fields enclosed by brackets "[]" replaced with your own identifying
3646  * information: Portions Copyright [yyyy] [name of copyright owner]
3647  *
3648  * CDDL HEADER END
3649  */
3650 
3651 /*
3652  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3653  * Copyright 2016 Joyent, Inc.
3654  *
3655  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3656  * Use is subject to license terms.
3657  */
3658 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
3659 
3660 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
3661 /*
3662  * This file and its contents are supplied under the terms of the
3663  * Common Development and Distribution License ("CDDL"), version 1.0.
3664  * You may only use this file in accordance with the terms of version
3665  * 1.0 of the CDDL.
3666  *
3667  * A full copy of the text of the CDDL should have accompanied this
3668  * source.  A copy of the CDDL is also available via the Internet at
3669  * http://www.illumos.org/license/CDDL.
3670  */
3671 
3672 /*
3673  * Copyright 2014-2016 PALO, Richard.
3674  */
3675 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
3676 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
3677 /*
3678  * CDDL HEADER START
3679  *
3680  * The contents of this file are subject to the terms of the
3681  * Common Development and Distribution License (the "License").
3682  * You may not use this file except in compliance with the License.
3683  *
3684  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3685  * or http://www.opensolaris.org/os/licensing.
3686  * See the License for the specific language governing permissions
3687  * and limitations under the License.
3688  *
3689  * When distributing Covered Code, include this CDDL HEADER in each
3690  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3691  * If applicable, add the following below this CDDL HEADER, with the
3692  * fields enclosed by brackets "[]" replaced with your own identifying
3693  * information: Portions Copyright [yyyy] [name of copyright owner]
3694  *
3695  * CDDL HEADER END
3696  */
3697 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
3698 /*	  All Rights Reserved  	*/
3699 
3700 
3701 /*
3702  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3703  * Use is subject to license terms.
3704  *
3705  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
3706  * Copyright 2016 Joyent, Inc.
3707  */
3708 
3709 
3710 
3711 
3712 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3713 /*
3714  * CDDL HEADER START
3715  *
3716  * The contents of this file are subject to the terms of the
3717  * Common Development and Distribution License (the "License").
3718  * You may not use this file except in compliance with the License.
3719  *
3720  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3721  * or http://www.opensolaris.org/os/licensing.
3722  * See the License for the specific language governing permissions
3723  * and limitations under the License.
3724  *
3725  * When distributing Covered Code, include this CDDL HEADER in each
3726  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3727  * If applicable, add the following below this CDDL HEADER, with the
3728  * fields enclosed by brackets "[]" replaced with your own identifying
3729  * information: Portions Copyright [yyyy] [name of copyright owner]
3730  *
3731  * CDDL HEADER END
3732  */
3733 
3734 /*
3735  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3736  * Copyright 2016 Joyent, Inc.
3737  *
3738  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3739  * Use is subject to license terms.
3740  */
3741 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
3742 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
3743 /*
3744  * CDDL HEADER START
3745  *
3746  * The contents of this file are subject to the terms of the
3747  * Common Development and Distribution License (the "License").
3748  * You may not use this file except in compliance with the License.
3749  *
3750  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3751  * or http://www.opensolaris.org/os/licensing.
3752  * See the License for the specific language governing permissions
3753  * and limitations under the License.
3754  *
3755  *
3756  * When distributing Covered Code, include this CDDL HEADER in each
3757  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3758  * If applicable, add the following below this CDDL HEADER, with the
3759  * fields enclosed by brackets "[]" replaced with your own identifying
3760  * information: Portions Copyright [yyyy] [name of copyright owner]
3761  *
3762  * CDDL HEADER END
3763  */
3764 
3765 /*
3766  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
3767  * Use is subject to license terms.
3768  * Copyright 2016 Joyent, Inc.
3769  */
3770 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
3771 
3772 /*
3773  * Machine dependent definitions moved to <sys/machtypes.h>.
3774  */
3775 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machtypes.h" 1
3776 /*
3777  * CDDL HEADER START
3778  *
3779  * The contents of this file are subject to the terms of the
3780  * Common Development and Distribution License, Version 1.0 only
3781  * (the "License").  You may not use this file except in compliance
3782  * with the License.
3783  *
3784  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3785  * or http://www.opensolaris.org/os/licensing.
3786  * See the License for the specific language governing permissions
3787  * and limitations under the License.
3788  *
3789  * When distributing Covered Code, include this CDDL HEADER in each
3790  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3791  * If applicable, add the following below this CDDL HEADER, with the
3792  * fields enclosed by brackets "[]" replaced with your own identifying
3793  * information: Portions Copyright [yyyy] [name of copyright owner]
3794  *
3795  * CDDL HEADER END
3796  */
3797 /*
3798  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3799  * Use is subject to license terms.
3800  */
3801 
3802 
3803 
3804 
3805 #pragma ident "%Z%%M%	%I%	%E% SMI"
3806 
3807 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3808 /*
3809  * CDDL HEADER START
3810  *
3811  * The contents of this file are subject to the terms of the
3812  * Common Development and Distribution License (the "License").
3813  * You may not use this file except in compliance with the License.
3814  *
3815  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3816  * or http://www.opensolaris.org/os/licensing.
3817  * See the License for the specific language governing permissions
3818  * and limitations under the License.
3819  *
3820  * When distributing Covered Code, include this CDDL HEADER in each
3821  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3822  * If applicable, add the following below this CDDL HEADER, with the
3823  * fields enclosed by brackets "[]" replaced with your own identifying
3824  * information: Portions Copyright [yyyy] [name of copyright owner]
3825  *
3826  * CDDL HEADER END
3827  */
3828 
3829 /*
3830  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3831  * Copyright 2016 Joyent, Inc.
3832  *
3833  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3834  * Use is subject to license terms.
3835  */
3836 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machtypes.h" 2
3837 
3838 
3839 
3840 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ia32/sys/machtypes.h" 1
3841 /*
3842  * CDDL HEADER START
3843  *
3844  * The contents of this file are subject to the terms of the
3845  * Common Development and Distribution License (the "License").
3846  * You may not use this file except in compliance with the License.
3847  *
3848  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3849  * or http://www.opensolaris.org/os/licensing.
3850  * See the License for the specific language governing permissions
3851  * and limitations under the License.
3852  *
3853  * When distributing Covered Code, include this CDDL HEADER in each
3854  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3855  * If applicable, add the following below this CDDL HEADER, with the
3856  * fields enclosed by brackets "[]" replaced with your own identifying
3857  * information: Portions Copyright [yyyy] [name of copyright owner]
3858  *
3859  * CDDL HEADER END
3860  */
3861 /*
3862  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
3863  * Use is subject to license terms.
3864  */
3865 
3866 
3867 
3868 
3869 #pragma ident "%Z%%M%	%I%	%E% SMI"
3870 
3871 
3872 
3873 
3874 
3875 /*
3876  * Machine dependent types:
3877  *
3878  *	intel ia32 Version
3879  */
3880 # 61 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ia32/sys/machtypes.h"
3881 typedef struct _label_t { long val[6]; } label_t;
3882 
3883 
3884 
3885 typedef unsigned char lock_t; /* lock work for busy wait */
3886 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machtypes.h" 2
3887 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
3888 
3889 /*
3890  * Include fixed width type declarations proposed by the ISO/JTC1/SC22/WG14 C
3891  * committee's working draft for the revision of the current ISO C standard,
3892  * ISO/IEC 9899:1990 Programming language - C.  These are not currently
3893  * required by any standard but constitute a useful, general purpose set
3894  * of type definitions which is namespace clean with respect to all standards.
3895  */
3896 
3897 
3898 
3899 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
3900 /*
3901  * CDDL HEADER START
3902  *
3903  * The contents of this file are subject to the terms of the
3904  * Common Development and Distribution License, Version 1.0 only
3905  * (the "License").  You may not use this file except in compliance
3906  * with the License.
3907  *
3908  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3909  * or http://www.opensolaris.org/os/licensing.
3910  * See the License for the specific language governing permissions
3911  * and limitations under the License.
3912  *
3913  * When distributing Covered Code, include this CDDL HEADER in each
3914  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3915  * If applicable, add the following below this CDDL HEADER, with the
3916  * fields enclosed by brackets "[]" replaced with your own identifying
3917  * information: Portions Copyright [yyyy] [name of copyright owner]
3918  *
3919  * CDDL HEADER END
3920  */
3921 /*
3922  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3923  *
3924  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3925  * Use is subject to license terms.
3926  */
3927 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
3928 # 65 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
3929 /*
3930  * Strictly conforming ANSI C environments prior to the 1999
3931  * revision of the C Standard (ISO/IEC 9899:1999) do not have
3932  * the long long data type.
3933  */
3934 
3935 typedef long long longlong_t;
3936 typedef unsigned long long u_longlong_t;
3937 # 85 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
3938 /*
3939  * These types (t_{u}scalar_t) exist because the XTI/TPI/DLPI standards had
3940  * to use them instead of int32_t and uint32_t because DEC had
3941  * shipped 64-bit wide.
3942  */
3943 
3944 
3945 
3946 
3947 typedef long t_scalar_t; /* historical versions */
3948 typedef unsigned long t_uscalar_t;
3949 
3950 
3951 /*
3952  * POSIX Extensions
3953  */
3954 typedef unsigned char uchar_t;
3955 typedef unsigned short ushort_t;
3956 typedef unsigned int uint_t;
3957 typedef unsigned long ulong_t;
3958 
3959 typedef char *caddr_t; /* ?<core address> type */
3960 typedef long daddr_t; /* <disk address> type */
3961 typedef short cnt_t; /* ?<count> type */
3962 
3963 
3964 
3965 
3966 
3967 
3968 typedef int ptrdiff_t; /* (historical version) */
3969 
3970 
3971 
3972 /*
3973  * VM-related types
3974  */
3975 typedef ulong_t pfn_t; /* page frame number */
3976 typedef ulong_t pgcnt_t; /* number of pages */
3977 typedef long spgcnt_t; /* signed number of pages */
3978 
3979 typedef uchar_t use_t; /* use count for swap.  */
3980 typedef short sysid_t;
3981 typedef short index_t;
3982 typedef void *timeout_id_t; /* opaque handle from timeout(9F) */
3983 typedef void *bufcall_id_t; /* opaque handle from bufcall(9F) */
3984 
3985 /*
3986  * The size of off_t and related types depends on the setting of
3987  * _FILE_OFFSET_BITS.  (Note that other system headers define other types
3988  * related to those defined here.)
3989  *
3990  * If _LARGEFILE64_SOURCE is defined, variants of these types that are
3991  * explicitly 64 bits wide become available.
3992  */
3993 # 165 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
3994 typedef u_longlong_t ino_t; /* expanded inode type	*/
3995 typedef longlong_t blkcnt_t; /* count of file blocks */
3996 typedef u_longlong_t fsblkcnt_t; /* count of file system blocks */
3997 typedef u_longlong_t fsfilcnt_t; /* count of files */
3998 # 178 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
3999 typedef u_longlong_t ino64_t; /* expanded inode type	*/
4000 typedef longlong_t blkcnt64_t; /* count of file blocks */
4001 typedef u_longlong_t fsblkcnt64_t; /* count of file system blocks */
4002 typedef u_longlong_t fsfilcnt64_t; /* count of files */
4003 
4004 
4005 
4006 
4007 
4008 
4009 typedef long blksize_t; /* used for block sizes */
4010 
4011 
4012 
4013 
4014 
4015 typedef enum { B_FALSE, B_TRUE } boolean_t;
4016 # 205 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4017 /*
4018  * The {u,}pad64_t types can be used in structures such that those structures
4019  * may be accessed by code produced by compilation environments which don't
4020  * support a 64 bit integral datatype.  The intention is not to allow
4021  * use of these fields in such environments, but to maintain the alignment
4022  * and offsets of the structure.
4023  *
4024  * Similar comments for {u,}pad128_t.
4025  *
4026  * Note that these types do NOT generate any stronger alignment constraints
4027  * than those available in the underlying ABI.  See <sys/isa_defs.h>
4028  */
4029 
4030 typedef int64_t pad64_t;
4031 typedef uint64_t upad64_t;
4032 # 232 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4033 typedef union {
4034  long double _q;
4035  int32_t _l[4];
4036 } pad128_t;
4037 
4038 typedef union {
4039  long double _q;
4040  uint32_t _l[4];
4041 } upad128_t;
4042 
4043 typedef longlong_t offset_t;
4044 typedef u_longlong_t u_offset_t;
4045 typedef u_longlong_t len_t;
4046 typedef u_longlong_t diskaddr_t;
4047 
4048 
4049 
4050 
4051 /*
4052  * Definitions remaining from previous partial support for 64-bit file
4053  * offsets.  This partial support for devices greater than 2gb requires
4054  * compiler support for long long.
4055  */
4056 
4057 typedef union {
4058  offset_t _f; /* Full 64 bit offset value */
4059  struct {
4060   int32_t _l; /* lower 32 bits of offset value */
4061   int32_t _u; /* upper 32 bits of offset value */
4062  } _p;
4063 } lloff_t;
4064 # 276 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4065 typedef union {
4066  longlong_t _f; /* Full 64 bit disk address value */
4067  struct {
4068   int32_t _l; /* lower 32 bits of disk address value */
4069   int32_t _u; /* upper 32 bits of disk address value */
4070  } _p;
4071 } lldaddr_t;
4072 # 295 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4073 typedef uint_t k_fltset_t; /* kernel fault set type */
4074 
4075 /*
4076  * The following type is for various kinds of identifiers.  The
4077  * actual type must be the same for all since some system calls
4078  * (such as sigsend) take arguments that may be any of these
4079  * types.  The enumeration type idtype_t defined in sys/procset.h
4080  * is used to indicate what type of id is being specified --
4081  * a process id, process group id, session id, scheduling class id,
4082  * user id, group id, project id, task id or zone id.
4083  */
4084 
4085 
4086 
4087 typedef long id_t; /* (historical version) */
4088 
4089 
4090 typedef id_t lgrp_id_t; /* lgroup ID */
4091 
4092 /*
4093  * Type useconds_t is an unsigned integral type capable of storing
4094  * values at least in the range of zero to 1,000,000.
4095  */
4096 typedef uint_t useconds_t; /* Time, in microseconds */
4097 
4098 
4099 
4100 typedef long suseconds_t; /* signed # of microseconds */
4101 
4102 
4103 /*
4104  * Typedefs for dev_t components.
4105  */
4106 
4107 
4108 
4109 
4110 typedef ulong_t major_t; /* (historical version) */
4111 typedef ulong_t minor_t; /* (historical version) */
4112 
4113 
4114 /*
4115  * The data type of a thread priority.
4116  */
4117 typedef short pri_t;
4118 
4119 /*
4120  * The data type for a CPU flags field.  (Can be extended to larger unsigned
4121  * types, if needed, limited by ability to update atomically.)
4122  */
4123 typedef ushort_t cpu_flag_t;
4124 
4125 /*
4126  * For compatibility reasons the following typedefs (prefixed o_)
4127  * can't grow regardless of the EFT definition. Although,
4128  * applications should not explicitly use these typedefs
4129  * they may be included via a system header definition.
4130  * WARNING: These typedefs may be removed in a future
4131  * release.
4132  *		ex. the definitions in s5inode.h (now obsoleted)
4133  *			remained small to preserve compatibility
4134  *			in the S5 file system type.
4135  */
4136 typedef ushort_t o_mode_t; /* old file attribute type */
4137 typedef short o_dev_t; /* old device type	*/
4138 typedef ushort_t o_uid_t; /* old UID type		*/
4139 typedef o_uid_t o_gid_t; /* old GID type		*/
4140 typedef short o_nlink_t; /* old file link type	*/
4141 typedef short o_pid_t; /* old process id type	*/
4142 typedef ushort_t o_ino_t; /* old inode type	*/
4143 
4144 
4145 /*
4146  * POSIX and XOPEN Declarations
4147  */
4148 typedef int key_t; /* IPC key type		*/
4149 
4150 
4151 
4152 typedef ulong_t mode_t; /* (historical version) */
4153 
4154 
4155 
4156 
4157 
4158 
4159 
4160 typedef uid_t gid_t; /* GID type		*/
4161 
4162 typedef uint32_t datalink_id_t;
4163 typedef uint32_t vrid_t;
4164 
4165 typedef id_t taskid_t;
4166 typedef id_t projid_t;
4167 typedef id_t poolid_t;
4168 typedef id_t zoneid_t;
4169 typedef id_t ctid_t;
4170 
4171 /*
4172  * POSIX definitions are same as defined in thread.h and synch.h.
4173  * Any changes made to here should be reflected in corresponding
4174  * files as described in comments.
4175  */
4176 typedef uint_t pthread_t; /* = thread_t in thread.h */
4177 typedef uint_t pthread_key_t; /* = thread_key_t in thread.h */
4178 
4179 /* "Magic numbers" tagging synchronization object types */
4180 
4181 
4182 
4183 
4184 
4185 typedef struct _pthread_mutex { /* = mutex_t in synch.h */
4186  struct {
4187   uint16_t __pthread_mutex_flag1;
4188   uint8_t __pthread_mutex_flag2;
4189   uint8_t __pthread_mutex_ceiling;
4190   uint16_t __pthread_mutex_type;
4191   uint16_t __pthread_mutex_magic;
4192  } __pthread_mutex_flags;
4193  union {
4194   struct {
4195    uint8_t __pthread_mutex_pad[8];
4196   } __pthread_mutex_lock64;
4197   struct {
4198    uint32_t __pthread_ownerpid;
4199    uint32_t __pthread_lockword;
4200   } __pthread_mutex_lock32;
4201   upad64_t __pthread_mutex_owner64;
4202  } __pthread_mutex_lock;
4203  upad64_t __pthread_mutex_data;
4204 } pthread_mutex_t;
4205 
4206 typedef struct _pthread_cond { /* = cond_t in synch.h */
4207  struct {
4208   uint8_t __pthread_cond_flag[4];
4209   uint16_t __pthread_cond_type;
4210   uint16_t __pthread_cond_magic;
4211  } __pthread_cond_flags;
4212  upad64_t __pthread_cond_data;
4213 } pthread_cond_t;
4214 
4215 /*
4216  * UNIX 98 Extension
4217  */
4218 typedef struct _pthread_rwlock { /* = rwlock_t in synch.h */
4219  int32_t __pthread_rwlock_readers;
4220  uint16_t __pthread_rwlock_type;
4221  uint16_t __pthread_rwlock_magic;
4222  pthread_mutex_t __pthread_rwlock_mutex;
4223  pthread_cond_t __pthread_rwlock_readercv;
4224  pthread_cond_t __pthread_rwlock_writercv;
4225 } pthread_rwlock_t;
4226 
4227 /*
4228  * SUSV3
4229  */
4230 typedef struct {
4231  uint32_t __pthread_barrier_count;
4232  uint32_t __pthread_barrier_current;
4233  upad64_t __pthread_barrier_cycle;
4234  upad64_t __pthread_barrier_reserved;
4235  pthread_mutex_t __pthread_barrier_lock;
4236  pthread_cond_t __pthread_barrier_cond;
4237 } pthread_barrier_t;
4238 
4239 typedef pthread_mutex_t pthread_spinlock_t;
4240 
4241 /*
4242  * attributes for threads, dynamically allocated by library
4243  */
4244 typedef struct _pthread_attr {
4245  void *__pthread_attrp;
4246 } pthread_attr_t;
4247 
4248 /*
4249  * attributes for mutex, dynamically allocated by library
4250  */
4251 typedef struct _pthread_mutexattr {
4252  void *__pthread_mutexattrp;
4253 } pthread_mutexattr_t;
4254 
4255 /*
4256  * attributes for cond, dynamically allocated by library
4257  */
4258 typedef struct _pthread_condattr {
4259  void *__pthread_condattrp;
4260 } pthread_condattr_t;
4261 
4262 /*
4263  * pthread_once
4264  */
4265 typedef struct _once {
4266  upad64_t __pthread_once_pad[4];
4267 } pthread_once_t;
4268 
4269 /*
4270  * UNIX 98 Extensions
4271  * attributes for rwlock, dynamically allocated by library
4272  */
4273 typedef struct _pthread_rwlockattr {
4274  void *__pthread_rwlockattrp;
4275 } pthread_rwlockattr_t;
4276 
4277 /*
4278  * SUSV3
4279  * attributes for pthread_barrier_t, dynamically allocated by library
4280  */
4281 typedef struct {
4282  void *__pthread_barrierattrp;
4283 } pthread_barrierattr_t;
4284 
4285 typedef ulong_t dev_t; /* expanded device type */
4286 
4287 
4288 
4289 
4290 
4291 typedef ulong_t nlink_t; /* (historical version) */
4292 typedef long pid_t; /* (historical version) */
4293 # 537 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4294 typedef long time_t; /* time of day in seconds */
4295 # 547 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4296 typedef int clockid_t; /* clock identifier type */
4297 
4298 
4299 
4300 
4301 typedef int timer_t; /* timer identifier type */
4302 
4303 
4304 
4305 
4306 /* BEGIN CSTYLED */
4307 typedef unsigned char unchar;
4308 typedef unsigned short ushort;
4309 typedef unsigned int uint;
4310 typedef unsigned long ulong;
4311 /* END CSTYLED */
4312 # 605 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4313 /*
4314  * The following is the value of type id_t to use to indicate the
4315  * caller's current id.  See procset.h for the type idtype_t
4316  * which defines which kind of id is being specified.
4317  */
4318 # 620 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4319 /*
4320  * The following value of type pfn_t is used to indicate
4321  * invalid page frame number.
4322  */
4323 
4324 
4325 
4326 /* BEGIN CSTYLED */
4327 typedef unsigned char u_char;
4328 typedef unsigned short u_short;
4329 typedef unsigned int u_int;
4330 typedef unsigned long u_long;
4331 typedef struct _quad { int val[2]; } quad_t; /* used by UFS */
4332 typedef quad_t quad; /* used by UFS */
4333 /* END CSTYLED */
4334 
4335 /*
4336  * Nested include for BSD/sockets source compatibility.
4337  * (The select macros used to be defined here).
4338  */
4339 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 1
4340 /*
4341  * CDDL HEADER START
4342  *
4343  * The contents of this file are subject to the terms of the
4344  * Common Development and Distribution License (the "License").
4345  * You may not use this file except in compliance with the License.
4346  *
4347  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4348  * or http://www.opensolaris.org/os/licensing.
4349  * See the License for the specific language governing permissions
4350  * and limitations under the License.
4351  *
4352  * When distributing Covered Code, include this CDDL HEADER in each
4353  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4354  * If applicable, add the following below this CDDL HEADER, with the
4355  * fields enclosed by brackets "[]" replaced with your own identifying
4356  * information: Portions Copyright [yyyy] [name of copyright owner]
4357  *
4358  * CDDL HEADER END
4359  */
4360 
4361 /*
4362  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4363  *
4364  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
4365  *
4366  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
4367  * Use is subject to license terms.
4368  */
4369 
4370 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
4371 /*	  All Rights Reserved	*/
4372 
4373 /*
4374  * University Copyright- Copyright (c) 1982, 1986, 1988
4375  * The Regents of the University of California
4376  * All Rights Reserved
4377  *
4378  * University Acknowledgment- Portions of this document are derived from
4379  * software developed by the University of California, Berkeley, and its
4380  * contributors.
4381  */
4382 
4383 
4384 
4385 
4386 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4387 /*
4388  * CDDL HEADER START
4389  *
4390  * The contents of this file are subject to the terms of the
4391  * Common Development and Distribution License (the "License").
4392  * You may not use this file except in compliance with the License.
4393  *
4394  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4395  * or http://www.opensolaris.org/os/licensing.
4396  * See the License for the specific language governing permissions
4397  * and limitations under the License.
4398  *
4399  * When distributing Covered Code, include this CDDL HEADER in each
4400  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4401  * If applicable, add the following below this CDDL HEADER, with the
4402  * fields enclosed by brackets "[]" replaced with your own identifying
4403  * information: Portions Copyright [yyyy] [name of copyright owner]
4404  *
4405  * CDDL HEADER END
4406  */
4407 
4408 /*
4409  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4410  * Copyright 2016 Joyent, Inc.
4411  *
4412  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4413  * Use is subject to license terms.
4414  */
4415 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 2
4416 
4417 
4418 
4419 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h" 1
4420 /*
4421  * CDDL HEADER START
4422  *
4423  * The contents of this file are subject to the terms of the
4424  * Common Development and Distribution License, Version 1.0 only
4425  * (the "License").  You may not use this file except in compliance
4426  * with the License.
4427  *
4428  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4429  * or http://www.opensolaris.org/os/licensing.
4430  * See the License for the specific language governing permissions
4431  * and limitations under the License.
4432  *
4433  * When distributing Covered Code, include this CDDL HEADER in each
4434  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4435  * If applicable, add the following below this CDDL HEADER, with the
4436  * fields enclosed by brackets "[]" replaced with your own identifying
4437  * information: Portions Copyright [yyyy] [name of copyright owner]
4438  *
4439  * CDDL HEADER END
4440  */
4441 /*
4442  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
4443  * Use is subject to license terms.
4444  */
4445 
4446 /*
4447  * Implementation-private.  This header should not be included
4448  * directly by an application.  The application should instead
4449  * include <time.h> which includes this header conditionally
4450  * depending on which feature test macros are defined. By default,
4451  * this header is included by <time.h>.  X/Open and POSIX
4452  * standards requirements result in this header being included
4453  * by <time.h> only under a restricted set of conditions.
4454  */
4455 
4456 
4457 
4458 
4459 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4460 /*
4461  * CDDL HEADER START
4462  *
4463  * The contents of this file are subject to the terms of the
4464  * Common Development and Distribution License (the "License").
4465  * You may not use this file except in compliance with the License.
4466  *
4467  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4468  * or http://www.opensolaris.org/os/licensing.
4469  * See the License for the specific language governing permissions
4470  * and limitations under the License.
4471  *
4472  * When distributing Covered Code, include this CDDL HEADER in each
4473  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4474  * If applicable, add the following below this CDDL HEADER, with the
4475  * fields enclosed by brackets "[]" replaced with your own identifying
4476  * information: Portions Copyright [yyyy] [name of copyright owner]
4477  *
4478  * CDDL HEADER END
4479  */
4480 
4481 /*
4482  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4483  * Copyright 2016 Joyent, Inc.
4484  *
4485  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4486  * Use is subject to license terms.
4487  */
4488 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h" 2
4489 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h"
4490 /*
4491  * Time expressed in seconds and nanoseconds
4492  */
4493 
4494 typedef struct timespec { /* definition per POSIX.4 */
4495  time_t tv_sec; /* seconds */
4496  long tv_nsec; /* and nanoseconds */
4497 } timespec_t;
4498 # 81 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h"
4499 typedef struct timespec timestruc_t; /* definition per SVr4 */
4500 
4501 /*
4502  * The following has been left in for backward compatibility. Portable
4503  * applications should not use the structure name timestruc.
4504  */
4505 
4506 
4507 
4508 
4509 
4510 /*
4511  * Timer specification
4512  */
4513 typedef struct itimerspec { /* definition per POSIX.4 */
4514  struct timespec it_interval; /* timer period */
4515  struct timespec it_value; /* timer expiration */
4516 } itimerspec_t;
4517 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 2
4518 
4519 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 1
4520 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
4521 /*	  All Rights Reserved  	*/
4522 
4523 
4524 /*
4525  * Copyright (c) 1982, 1986, 1993 Regents of the University of California.
4526  * All rights reserved.  The Berkeley software License Agreement
4527  * specifies the terms and conditions for redistribution.
4528  */
4529 
4530 /*
4531  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4532  *
4533  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
4534  * Use is subject to license terms.
4535  *
4536  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
4537  */
4538 
4539 /*
4540  * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
4541  */
4542 
4543 
4544 
4545 
4546 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4547 /*
4548  * CDDL HEADER START
4549  *
4550  * The contents of this file are subject to the terms of the
4551  * Common Development and Distribution License (the "License").
4552  * You may not use this file except in compliance with the License.
4553  *
4554  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4555  * or http://www.opensolaris.org/os/licensing.
4556  * See the License for the specific language governing permissions
4557  * and limitations under the License.
4558  *
4559  * When distributing Covered Code, include this CDDL HEADER in each
4560  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4561  * If applicable, add the following below this CDDL HEADER, with the
4562  * fields enclosed by brackets "[]" replaced with your own identifying
4563  * information: Portions Copyright [yyyy] [name of copyright owner]
4564  *
4565  * CDDL HEADER END
4566  */
4567 
4568 /*
4569  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4570  * Copyright 2016 Joyent, Inc.
4571  *
4572  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4573  * Use is subject to license terms.
4574  */
4575 # 28 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
4576 
4577 /*
4578  * Structure returned by gettimeofday(2) system call,
4579  * and used in other calls.
4580  */
4581 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4582 struct timeval {
4583  time_t tv_sec; /* seconds */
4584  suseconds_t tv_usec; /* and microseconds */
4585 };
4586 # 84 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4587 struct timezone {
4588  int tz_minuteswest; /* minutes west of Greenwich */
4589  int tz_dsttime; /* type of dst correction */
4590 };
4591 # 96 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4592 /*
4593  * Needed for longlong_t type.  Placement of this due to <sys/types.h>
4594  * including <sys/select.h> which relies on the presense of the itimerval
4595  * structure.
4596  */
4597 
4598 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
4599 /*
4600  * CDDL HEADER START
4601  *
4602  * The contents of this file are subject to the terms of the
4603  * Common Development and Distribution License (the "License").
4604  * You may not use this file except in compliance with the License.
4605  *
4606  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4607  * or http://www.opensolaris.org/os/licensing.
4608  * See the License for the specific language governing permissions
4609  * and limitations under the License.
4610  *
4611  * When distributing Covered Code, include this CDDL HEADER in each
4612  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4613  * If applicable, add the following below this CDDL HEADER, with the
4614  * fields enclosed by brackets "[]" replaced with your own identifying
4615  * information: Portions Copyright [yyyy] [name of copyright owner]
4616  *
4617  * CDDL HEADER END
4618  */
4619 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
4620 /*	  All Rights Reserved  	*/
4621 
4622 
4623 /*
4624  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
4625  * Use is subject to license terms.
4626  *
4627  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
4628  * Copyright 2016 Joyent, Inc.
4629  */
4630 # 103 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
4631 # 123 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4632 /*
4633  * Operations on timevals.
4634  */
4635 # 193 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4636 /*
4637  * Names of the interval timers, and structure
4638  * defining a timer setting.
4639  */
4640 
4641 
4642 
4643     /* time and when system is running on */
4644     /* behalf of the process. */
4645 
4646     /* time profiling of multithreaded */
4647     /* programs. */
4648 
4649 
4650 struct itimerval {
4651  struct timeval it_interval; /* timer interval */
4652  struct timeval it_value; /* current value */
4653 };
4654 # 239 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4655 /*
4656  *	Definitions for commonly used resolutions.
4657  */
4658 # 257 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4659 /*
4660  * Time expressed as a 64-bit nanosecond counter.
4661  */
4662 typedef longlong_t hrtime_t;
4663 # 386 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4664 int adjtime(struct timeval *, struct timeval *);
4665 
4666 
4667 
4668 
4669 int futimesat(int, const char *, const struct timeval *);
4670 
4671 
4672 
4673 
4674 
4675 int getitimer(int, struct itimerval *);
4676 int utimes(const char *, const struct timeval *);
4677 
4678 
4679 
4680 
4681 int setitimer(int, struct itimerval *,
4682  struct itimerval *);
4683 
4684 
4685 
4686 
4687 /*
4688  * gettimeofday() and settimeofday() were included in SVr4 due to their
4689  * common use in BSD based applications.  They were to be included exactly
4690  * as in BSD, with two parameters.  However, AT&T/USL noted that the second
4691  * parameter was unused and deleted it, thereby making a routine included
4692  * for compatibility, incompatible.
4693  *
4694  * XSH4.2 (spec 1170) defines gettimeofday and settimeofday to have two
4695  * parameters.
4696  *
4697  * This has caused general disagreement in the application community as to
4698  * the syntax of these routines.  Solaris defaults to the XSH4.2 definition.
4699  * The flag _SVID_GETTOD may be used to force the SVID version.
4700  */
4701 
4702 
4703 
4704 
4705 
4706 int settimeofday(struct timeval *, void *);
4707 
4708 hrtime_t gethrtime(void);
4709 hrtime_t gethrvtime(void);
4710 # 441 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4711 int gettimeofday(struct timeval *, void *);
4712 
4713 
4714 
4715 
4716 /*
4717  * The inclusion of <time.h> is historical and was added for
4718  * backward compatibility in delta 1.2 when a number of definitions
4719  * were moved out of <sys/time.h>.  More recently, the timespec and
4720  * itimerspec structure definitions, along with the _CLOCK_*, CLOCK_*,
4721  * _TIMER_*, and TIMER_* symbols were moved to <sys/time_impl.h>,
4722  * which is now included by <time.h>.  This change was due to POSIX
4723  * 1003.1b-1993 and X/Open UNIX 98 requirements.  For non-POSIX and
4724  * non-X/Open applications, including this header will still make
4725  * visible these definitions.
4726  */
4727 
4728 
4729 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 1
4730 /*
4731  * CDDL HEADER START
4732  *
4733  * The contents of this file are subject to the terms of the
4734  * Common Development and Distribution License (the "License").
4735  * You may not use this file except in compliance with the License.
4736  *
4737  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4738  * or http://www.opensolaris.org/os/licensing.
4739  * See the License for the specific language governing permissions
4740  * and limitations under the License.
4741  *
4742  * When distributing Covered Code, include this CDDL HEADER in each
4743  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4744  * If applicable, add the following below this CDDL HEADER, with the
4745  * fields enclosed by brackets "[]" replaced with your own identifying
4746  * information: Portions Copyright [yyyy] [name of copyright owner]
4747  *
4748  * CDDL HEADER END
4749  */
4750 /*	Copyright (c) 1988 AT&T	*/
4751 /*	  All Rights Reserved  	*/
4752 
4753 
4754 /*
4755  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4756  *
4757  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
4758  * Use is subject to license terms.
4759  */
4760 /*
4761  * Copyright 2010 Nexenta Systems, Inc.  Al rights reserved.
4762  * Copyright 2016 Joyent, Inc.
4763  */
4764 
4765 
4766 
4767 
4768 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4769 /*
4770  * CDDL HEADER START
4771  *
4772  * The contents of this file are subject to the terms of the
4773  * Common Development and Distribution License (the "License").
4774  * You may not use this file except in compliance with the License.
4775  *
4776  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4777  * or http://www.opensolaris.org/os/licensing.
4778  * See the License for the specific language governing permissions
4779  * and limitations under the License.
4780  *
4781  * When distributing Covered Code, include this CDDL HEADER in each
4782  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4783  * If applicable, add the following below this CDDL HEADER, with the
4784  * fields enclosed by brackets "[]" replaced with your own identifying
4785  * information: Portions Copyright [yyyy] [name of copyright owner]
4786  *
4787  * CDDL HEADER END
4788  */
4789 
4790 /*
4791  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4792  * Copyright 2016 Joyent, Inc.
4793  *
4794  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4795  * Use is subject to license terms.
4796  */
4797 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
4798 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h" 1
4799 /*
4800  * CDDL HEADER START
4801  *
4802  * The contents of this file are subject to the terms of the
4803  * Common Development and Distribution License, Version 1.0 only
4804  * (the "License").  You may not use this file except in compliance
4805  * with the License.
4806  *
4807  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4808  * or http://www.opensolaris.org/os/licensing.
4809  * See the License for the specific language governing permissions
4810  * and limitations under the License.
4811  *
4812  * When distributing Covered Code, include this CDDL HEADER in each
4813  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4814  * If applicable, add the following below this CDDL HEADER, with the
4815  * fields enclosed by brackets "[]" replaced with your own identifying
4816  * information: Portions Copyright [yyyy] [name of copyright owner]
4817  *
4818  * CDDL HEADER END
4819  */
4820 /*	Copyright (c) 1988 AT&T	*/
4821 /*	  All Rights Reserved  	*/
4822 
4823 /*
4824  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4825  * Copyright 2014 PALO, Richard.
4826  *
4827  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
4828  * Use is subject to license terms.
4829  */
4830 
4831 /*
4832  * An application should not include this header directly.  Instead it
4833  * should be included only through the inclusion of other Sun headers.
4834  *
4835  * The contents of this header is limited to identifiers specified in the
4836  * C Standard.  Any new identifiers specified in future amendments to the
4837  * C Standard must be placed in this header.  If these new identifiers
4838  * are required to also be in the C++ Standard "std" namespace, then for
4839  * anything other than macro definitions, corresponding "using" directives
4840  * must also be added to <time.h.h>.
4841  */
4842 
4843 
4844 
4845 
4846 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4847 /*
4848  * CDDL HEADER START
4849  *
4850  * The contents of this file are subject to the terms of the
4851  * Common Development and Distribution License (the "License").
4852  * You may not use this file except in compliance with the License.
4853  *
4854  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4855  * or http://www.opensolaris.org/os/licensing.
4856  * See the License for the specific language governing permissions
4857  * and limitations under the License.
4858  *
4859  * When distributing Covered Code, include this CDDL HEADER in each
4860  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4861  * If applicable, add the following below this CDDL HEADER, with the
4862  * fields enclosed by brackets "[]" replaced with your own identifying
4863  * information: Portions Copyright [yyyy] [name of copyright owner]
4864  *
4865  * CDDL HEADER END
4866  */
4867 
4868 /*
4869  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4870  * Copyright 2016 Joyent, Inc.
4871  *
4872  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4873  * Use is subject to license terms.
4874  */
4875 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h" 2
4876 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
4877 /*
4878  * This file and its contents are supplied under the terms of the
4879  * Common Development and Distribution License ("CDDL"), version 1.0.
4880  * You may only use this file in accordance with the terms of version
4881  * 1.0 of the CDDL.
4882  *
4883  * A full copy of the text of the CDDL should have accompanied this
4884  * source.  A copy of the CDDL is also available via the Internet at
4885  * http://www.illumos.org/license/CDDL.
4886  */
4887 
4888 /*
4889  * Copyright 2014-2016 PALO, Richard.
4890  */
4891 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h" 2
4892 # 80 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h"
4893 struct tm { /* see ctime(3) */
4894  int tm_sec;
4895  int tm_min;
4896  int tm_hour;
4897  int tm_mday;
4898  int tm_mon;
4899  int tm_year;
4900  int tm_wday;
4901  int tm_yday;
4902  int tm_isdst;
4903 };
4904 
4905 
4906 extern char *asctime(const struct tm *);
4907 extern clock_t clock(void);
4908 extern char *ctime(const time_t *);
4909 extern double difftime(time_t, time_t);
4910 extern struct tm *gmtime(const time_t *);
4911 extern struct tm *localtime(const time_t *);
4912 extern time_t mktime(struct tm *);
4913 extern time_t time(time_t *);
4914 extern size_t strftime(char *, size_t, const char *,
4915  const struct tm *);
4916 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
4917 /*
4918  * C11 requires sys/time_impl.h for the definition of the struct timespec.
4919  */
4920 
4921 
4922 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
4923 /*
4924  * CDDL HEADER START
4925  *
4926  * The contents of this file are subject to the terms of the
4927  * Common Development and Distribution License (the "License").
4928  * You may not use this file except in compliance with the License.
4929  *
4930  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4931  * or http://www.opensolaris.org/os/licensing.
4932  * See the License for the specific language governing permissions
4933  * and limitations under the License.
4934  *
4935  * When distributing Covered Code, include this CDDL HEADER in each
4936  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4937  * If applicable, add the following below this CDDL HEADER, with the
4938  * fields enclosed by brackets "[]" replaced with your own identifying
4939  * information: Portions Copyright [yyyy] [name of copyright owner]
4940  *
4941  * CDDL HEADER END
4942  */
4943 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
4944 /*	  All Rights Reserved  	*/
4945 
4946 
4947 /*
4948  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
4949  * Use is subject to license terms.
4950  *
4951  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
4952  * Copyright 2016 Joyent, Inc.
4953  */
4954 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
4955 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h" 1
4956 /*
4957  * CDDL HEADER START
4958  *
4959  * The contents of this file are subject to the terms of the
4960  * Common Development and Distribution License, Version 1.0 only
4961  * (the "License").  You may not use this file except in compliance
4962  * with the License.
4963  *
4964  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4965  * or http://www.opensolaris.org/os/licensing.
4966  * See the License for the specific language governing permissions
4967  * and limitations under the License.
4968  *
4969  * When distributing Covered Code, include this CDDL HEADER in each
4970  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4971  * If applicable, add the following below this CDDL HEADER, with the
4972  * fields enclosed by brackets "[]" replaced with your own identifying
4973  * information: Portions Copyright [yyyy] [name of copyright owner]
4974  *
4975  * CDDL HEADER END
4976  */
4977 /*
4978  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
4979  * Use is subject to license terms.
4980  */
4981 
4982 /*
4983  * Implementation-private.  This header should not be included
4984  * directly by an application.  The application should instead
4985  * include <time.h> which includes this header conditionally
4986  * depending on which feature test macros are defined. By default,
4987  * this header is included by <time.h>.  X/Open and POSIX
4988  * standards requirements result in this header being included
4989  * by <time.h> only under a restricted set of conditions.
4990  */
4991 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
4992 
4993 
4994 /*
4995  * Allow global visibility for symbols defined in
4996  * C++ "std" namespace in <iso/time_iso.h>.
4997  */
4998 # 87 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
4999 extern struct tm *gmtime_r(const time_t *,
5000    struct tm *);
5001 extern struct tm *localtime_r(const time_t *,
5002    struct tm *);
5003 # 105 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5004 extern char *strptime(const char *, const char *,
5005   struct tm *);
5006 
5007 
5008 
5009 
5010 
5011 /*
5012  * Neither X/Open nor POSIX allow the inclusion of <signal.h> for the
5013  * definition of the sigevent structure.  Both require the inclusion
5014  * of <signal.h> and <time.h> when using the timer_create() function.
5015  * However, X/Open also specifies that the sigevent structure be defined
5016  * in <time.h> as described in the header <signal.h>.  This prevents
5017  * compiler warnings for applications that only include <time.h> and not
5018  * also <signal.h>.  The sigval union and the sigevent structure is
5019  * therefore defined both here and in <sys/siginfo.h> which gets included
5020  * via inclusion of <signal.h>.
5021  */
5022 
5023 
5024 union sigval {
5025  int sival_int; /* integer value */
5026  void *sival_ptr; /* pointer value */
5027 };
5028 
5029 
5030 
5031 
5032 struct sigevent {
5033  int sigev_notify; /* notification mode */
5034  int sigev_signo; /* signal number */
5035  union sigval sigev_value; /* signal value */
5036  void (*sigev_notify_function)(union sigval);
5037  pthread_attr_t *sigev_notify_attributes;
5038  int __sigev_pad2;
5039 };
5040 
5041 
5042 extern int clock_getres(clockid_t, struct timespec *);
5043 extern int clock_gettime(clockid_t, struct timespec *);
5044 extern int clock_settime(clockid_t, const struct timespec *);
5045 extern int timer_create(clockid_t, struct sigevent *,
5046   timer_t *);
5047 extern int timer_delete(timer_t);
5048 extern int timer_getoverrun(timer_t);
5049 extern int timer_gettime(timer_t, struct itimerspec *);
5050 extern int timer_settime(timer_t, int, const struct itimerspec *,
5051   struct itimerspec *);
5052 
5053 extern int nanosleep(const struct timespec *, struct timespec *);
5054 extern int clock_nanosleep(clockid_t, int,
5055  const struct timespec *, struct timespec *);
5056 
5057 
5058 
5059 
5060 
5061 
5062 extern void tzset(void);
5063 extern char *tzname[2];
5064 
5065 /* CLK_TCK marked as LEGACY in SUSv2 and removed in SUSv3 */
5066 # 177 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5067 extern long timezone;
5068 extern int daylight;
5069 
5070 
5071 
5072 
5073 
5074 
5075 extern time_t timegm(struct tm *);
5076 extern int cftime(char *, char *, const time_t *);
5077 extern int ascftime(char *, const char *, const struct tm *);
5078 extern long altzone;
5079 
5080 
5081 
5082 
5083 extern struct tm *getdate(const char *);
5084 
5085 
5086 
5087 
5088 
5089 extern int getdate_err;
5090 
5091 
5092 
5093 /*
5094  * ctime_r() & asctime_r() prototypes are defined here.
5095  */
5096 
5097 /*
5098  * Previous releases of Solaris, starting at 2.3, provided definitions of
5099  * various functions as specified in POSIX.1c, Draft 6.  For some of these
5100  * functions, the final POSIX 1003.1c standard had a different number of
5101  * arguments and return values.
5102  *
5103  * The following segment of this header provides support for the standard
5104  * interfaces while supporting applications written under earlier
5105  * releases.  The application defines appropriate values of the feature
5106  * test macros _POSIX_C_SOURCE and _POSIX_PTHREAD_SEMANTICS to indicate
5107  * whether it was written to expect the Draft 6 or standard versions of
5108  * these interfaces, before including this header.  This header then
5109  * provides a mapping from the source version of the interface to an
5110  * appropriate binary interface.  Such mappings permit an application
5111  * to be built from libraries and objects which have mixed expectations
5112  * of the definitions of these functions.
5113  *
5114  * For applications using the Draft 6 definitions, the binary symbol is the
5115  * same as the source symbol, and no explicit mapping is needed.  For the
5116  * standard interface, the function func() is mapped to the binary symbol
5117  * _posix_func().  The preferred mechanism for the remapping is a compiler
5118  * #pragma.  If the compiler does not provide such a #pragma, the header file
5119  * defines a static function func() which calls the _posix_func() version;
5120  * this has to be done instead of #define since POSIX specifies that an
5121  * application can #undef the symbol and still be bound to the correct
5122  * implementation.  Unfortunately, the statics confuse lint so we fallback to
5123  * #define in that case.
5124  *
5125  * NOTE: Support for the Draft 6 definitions is provided for compatibility
5126  * only.  New applications/libraries should use the standard definitions.
5127  */
5128 # 280 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5129 extern char *asctime_r(const struct tm *, char *, int);
5130 extern char *ctime_r(const time_t *, char *, int);
5131 # 295 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5132 extern size_t strftime_l(char *, size_t,
5133  const char *, const struct tm *, locale_t);
5134 
5135 
5136 
5137 
5138 
5139 /*
5140  * Note, the C11 standard requires that all the various base values that are
5141  * passed into timespec_get() be non-zero. Hence why TIME_UTC starts at one.
5142  */
5143 
5144 
5145 extern int timespec_get(struct timespec *, int);
5146 # 460 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
5147 
5148 
5149 /*
5150  * The inclusion of <sys/select.h> is needed for the FD_CLR,
5151  * FD_ISSET, FD_SET, and FD_SETSIZE macros as well as the
5152  * select() prototype defined in the XOpen specifications
5153  * beginning with XSH4v2.  Placement required after definition
5154  * for itimerval.
5155  */
5156 
5157 
5158 
5159 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 1
5160 /*
5161  * CDDL HEADER START
5162  *
5163  * The contents of this file are subject to the terms of the
5164  * Common Development and Distribution License (the "License").
5165  * You may not use this file except in compliance with the License.
5166  *
5167  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5168  * or http://www.opensolaris.org/os/licensing.
5169  * See the License for the specific language governing permissions
5170  * and limitations under the License.
5171  *
5172  * When distributing Covered Code, include this CDDL HEADER in each
5173  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5174  * If applicable, add the following below this CDDL HEADER, with the
5175  * fields enclosed by brackets "[]" replaced with your own identifying
5176  * information: Portions Copyright [yyyy] [name of copyright owner]
5177  *
5178  * CDDL HEADER END
5179  */
5180 
5181 /*
5182  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
5183  *
5184  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
5185  *
5186  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
5187  * Use is subject to license terms.
5188  */
5189 
5190 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
5191 /*	  All Rights Reserved	*/
5192 
5193 /*
5194  * University Copyright- Copyright (c) 1982, 1986, 1988
5195  * The Regents of the University of California
5196  * All Rights Reserved
5197  *
5198  * University Acknowledgment- Portions of this document are derived from
5199  * software developed by the University of California, Berkeley, and its
5200  * contributors.
5201  */
5202 # 473 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
5203 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 2
5204 # 62 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5205 /*
5206  * The sigset_t type is defined in <sys/signal.h> and duplicated
5207  * in <sys/ucontext.h> as a result of XPG4v2 requirements. XPG6
5208  * now allows the visibility of signal.h in this header, however
5209  * an order of inclusion problem occurs as a result of inclusion
5210  * of <sys/select.h> in <signal.h> under certain conditions.
5211  * Rather than include <sys/signal.h> here, we've duplicated
5212  * the sigset_t type instead. This type is required for the XPG6
5213  * introduced pselect() function also declared in this header.
5214  */
5215 
5216 
5217 typedef struct { /* signal set type */
5218  unsigned int __sigbits[4];
5219 } sigset_t;
5220 
5221 
5222 
5223 
5224 /*
5225  * Select uses bit masks of file descriptors in longs.
5226  * These macros manipulate such bit fields.
5227  * FD_SETSIZE may be defined by the user, but the default here
5228  * should be >= NOFILE (param.h).
5229  */
5230 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5231 typedef long fd_mask;
5232 
5233 typedef long fds_mask;
5234 
5235 /*
5236  *  The value of _NBBY needs to be consistant with the value
5237  *  of NBBY in <sys/param.h>.
5238  */
5239 # 136 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5240 typedef struct fd_set {
5241 
5242 
5243 
5244  long fds_bits[(((1024)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
5245 } fd_set;
5246 # 159 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5247 extern int select(int, fd_set *, fd_set *,
5248  fd_set *, struct timeval *);
5249 
5250 
5251 extern int pselect(int, fd_set *, fd_set *,
5252  fd_set *, const struct timespec *,
5253  const sigset_t *);
5254 # 641 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
5255 
5256 
5257 
5258 /*
5259  * _VOID was defined to be either void or char but this is not
5260  * required because previous SunOS compilers have accepted the void
5261  * type. However, because many system header and source files use the
5262  * void keyword, the volatile keyword, and ANSI C function prototypes,
5263  * non-ANSI compilers cannot compile the system anyway. The _VOID macro
5264  * should therefore not be used and remains for source compatibility
5265  * only.
5266  */
5267 /* CSTYLED */
5268 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
5269 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h" 1
5270 /*
5271  * CDDL HEADER START
5272  *
5273  * The contents of this file are subject to the terms of the
5274  * Common Development and Distribution License (the "License").
5275  * You may not use this file except in compliance with the License.
5276  *
5277  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5278  * or http://www.opensolaris.org/os/licensing.
5279  * See the License for the specific language governing permissions
5280  * and limitations under the License.
5281  *
5282  * When distributing Covered Code, include this CDDL HEADER in each
5283  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5284  * If applicable, add the following below this CDDL HEADER, with the
5285  * fields enclosed by brackets "[]" replaced with your own identifying
5286  * information: Portions Copyright [yyyy] [name of copyright owner]
5287  *
5288  * CDDL HEADER END
5289  */
5290 
5291 /*
5292  *	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
5293  *	  All Rights Reserved
5294  *
5295  */
5296 
5297 /*
5298  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
5299  * Use is subject to license terms.
5300  */
5301 
5302 /*
5303  * WARNING: This is an implementation-specific header,
5304  * its contents are not guaranteed. Applications
5305  * should include <unistd.h> and not this header.
5306  */
5307 
5308 
5309 
5310 
5311 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
5312 /*
5313  * CDDL HEADER START
5314  *
5315  * The contents of this file are subject to the terms of the
5316  * Common Development and Distribution License (the "License").
5317  * You may not use this file except in compliance with the License.
5318  *
5319  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5320  * or http://www.opensolaris.org/os/licensing.
5321  * See the License for the specific language governing permissions
5322  * and limitations under the License.
5323  *
5324  * When distributing Covered Code, include this CDDL HEADER in each
5325  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5326  * If applicable, add the following below this CDDL HEADER, with the
5327  * fields enclosed by brackets "[]" replaced with your own identifying
5328  * information: Portions Copyright [yyyy] [name of copyright owner]
5329  *
5330  * CDDL HEADER END
5331  */
5332 
5333 /*
5334  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
5335  * Copyright 2016 Joyent, Inc.
5336  *
5337  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
5338  * Use is subject to license terms.
5339  */
5340 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h" 2
5341 
5342 
5343 
5344 
5345 
5346 /* command names for confstr */
5347 
5348 
5349 
5350 /*
5351  * command names for large file configuration information
5352  */
5353 /* large file compilation environment configuration */
5354 
5355 
5356 
5357 
5358 /* transitional large file interface configuration */
5359 
5360 
5361 
5362 
5363 
5364 /* UNIX 98 */
5365 # 84 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5366 /* UNIX 03 */
5367 # 103 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5368 /* command names for POSIX sysconf */
5369 
5370 /* POSIX.1 names */
5371 # 114 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5372 /* SVR4 names */
5373 
5374 
5375 
5376 
5377 /* 13 reserved for SVr4-ES/MP _SC_NACLS_MAX */
5378 
5379 
5380 
5381 
5382 /* POSIX.4 names */
5383 # 152 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5384 /* XPG4 names */
5385 # 174 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5386 /* additional XSH4/XCU4 command names for sysconf */
5387 
5388 
5389 
5390 /* additional XPG4v2 (UNIX 95) command names */
5391 
5392 
5393 
5394 
5395 
5396 /* defined for XTI (XNS Issue 5) */
5397 
5398 
5399 
5400 
5401 
5402 
5403 
5404 /*
5405  * Hardware specific items
5406  * Note that not all items are supported on all architectures
5407  */
5408 # 214 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5409 /*
5410  * POSIX.1c (pthreads) names. These values are defined above
5411  * the sub-500 range. See psarc case 1995/257.
5412  */
5413 # 235 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5414 /* UNIX 98 */
5415 # 244 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5416 /* UNIX 03 */
5417 # 285 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5418 /* command names for POSIX pathconf */
5419 
5420 /* POSIX.1 names */
5421 # 297 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5422 /* POSIX.4 names */
5423 
5424 
5425 
5426 /* UNIX 03 names */
5427 # 315 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5428 /* UNIX 08 names */
5429 
5430 
5431 /*
5432  * Large File Summit names
5433  *
5434  * This value matches the MIPS ABI choice, but leaves a large gap in the
5435  * value space.
5436  */
5437 
5438 
5439 /*
5440  * Extended attributes
5441  */
5442 
5443 
5444 
5445 /*
5446  * If you add a _PC define above 101, you must change _PC_LAST (and truss).
5447  */
5448 
5449 
5450 /*
5451  * Case sensitivity values (related to _PC_CASE_BEHAVIOR)
5452  */
5453 
5454 
5455 
5456 /*
5457  * The value of 0 is returned when
5458  * ACL's are not supported
5459  */
5460 # 366 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5461 /*
5462  * Marked LEGACY in SUSv2 and removed in SUSv3. Though SUSv3 applications
5463  * should not rely on this value, it has been aligned with the current
5464  * standard to avoid confusion if used.
5465  */
5466 # 408 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5467 /* UNIX 03 names */
5468 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
5469 
5470 
5471 
5472 
5473 
5474 /* Symbolic constants for the "access" routine: */
5475 # 61 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5476 /* Symbolic constants for the "lseek" routine: */
5477 # 86 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5478 /* Path names: */
5479 
5480 
5481 
5482 
5483 /*
5484  * compile-time symbolic constants,
5485  * Support does not mean the feature is enabled.
5486  * Use pathconf/sysconf to obtain actual configuration value.
5487  */
5488 
5489 /* Values unchanged in UNIX 03 */
5490 
5491 
5492 
5493 
5494 
5495 /*
5496  * POSIX.1b compile-time symbolic constants.
5497  */
5498 # 134 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5499 /*
5500  * POSIX.1c compile-time symbolic constants.
5501  */
5502 # 155 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5503 /* New in UNIX 03 */
5504 # 167 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5505 /*
5506  * Support for the POSIX.1 mutex protocol attribute. For realtime applications
5507  * which need mutexes to support priority inheritance/ceiling.
5508  */
5509 # 187 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5510 /*
5511  * Large File Summit-related announcement macros.  The system supports both
5512  * the additional and transitional Large File Summit interfaces.  (The final
5513  * two macros provide a finer granularity breakdown of _LFS64_LARGEFILE.)
5514  */
5515 
5516 
5517 
5518 
5519 
5520 /* large file compilation environment setup */
5521 
5522 
5523 
5524 # 200 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5525 #pragma redefine_extname ftruncate ftruncate64
5526 # 200 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5527 
5528 
5529 # 201 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5530 #pragma redefine_extname lseek lseek64
5531 # 201 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5532 
5533 
5534 # 202 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5535 #pragma redefine_extname pread pread64
5536 # 202 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5537 
5538 
5539 # 203 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5540 #pragma redefine_extname pwrite pwrite64
5541 # 203 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5542 
5543 
5544 # 204 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5545 #pragma redefine_extname truncate truncate64
5546 # 204 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5547 
5548 
5549 # 205 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5550 #pragma redefine_extname lockf lockf64
5551 # 205 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5552 
5553 
5554 # 206 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5555 #pragma redefine_extname tell tell64
5556 # 206 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5557 # 218 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5558 /* In the LP64 compilation environment, the APIs are already large file */
5559 # 239 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5560 extern int access(const char *, int);
5561 
5562 extern int acct(const char *);
5563 
5564 extern unsigned alarm(unsigned);
5565 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5566 
5567 
5568 extern int brk(void *);
5569 
5570 extern int chdir(const char *);
5571 extern int chown(const char *, uid_t, gid_t);
5572 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5573 
5574 
5575 extern int chroot(const char *);
5576 
5577 extern int close(int);
5578 
5579 
5580 
5581 
5582 
5583 
5584 extern char *ctermid(char *);
5585 
5586 
5587 extern char *ctermid_r(char *);
5588 
5589 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5590 
5591 extern char *cuserid(char *);
5592 
5593 extern int dup(int);
5594 extern int dup2(int, int);
5595 extern int dup3(int, int, int);
5596 
5597 
5598 
5599 
5600 extern void endusershell(void);
5601 
5602 extern int execl(const char *, const char *, ...);
5603 extern int execle(const char *, const char *, ...);
5604 extern int execlp(const char *, const char *, ...);
5605 extern int execv(const char *, char *const *);
5606 extern int execve(const char *, char *const *, char *const *);
5607 extern int execvp(const char *, char *const *);
5608 extern void _exit(int)
5609  __attribute__((__noreturn__));
5610 /*
5611  * The following fattach prototype is duplicated in <stropts.h>. The
5612  * duplication is necessitated by XPG4.2 which requires the prototype
5613  * be defined in <stropts.h>.
5614  */
5615 
5616 extern int fattach(int, const char *);
5617 
5618 
5619 extern int fchdir(int);
5620 extern int fchown(int, uid_t, gid_t);
5621 
5622 
5623 extern int fchroot(int);
5624 
5625 
5626 
5627 extern int fdatasync(int);
5628 
5629 /*
5630  * The following fdetach prototype is duplicated in <stropts.h>. The
5631  * duplication is necessitated by XPG4.2 which requires the prototype
5632  * be defined in <stropts.h>.
5633  */
5634 
5635 extern int fdetach(const char *);
5636 
5637 extern pid_t fork(void);
5638 
5639 extern pid_t fork1(void);
5640 extern pid_t forkall(void);
5641 
5642 extern long fpathconf(int, int);
5643 
5644 
5645 extern int fsync(int);
5646 
5647 
5648 
5649 
5650 extern int ftruncate(int, off_t);
5651 
5652 extern char *getcwd(char *, size_t);
5653 
5654 
5655 extern int getdtablesize(void);
5656 
5657 extern gid_t getegid(void);
5658 extern uid_t geteuid(void);
5659 extern gid_t getgid(void);
5660 extern int getgroups(int, gid_t *);
5661 
5662 extern long gethostid(void);
5663 
5664 
5665 
5666 
5667 extern int gethostname(char *, int);
5668 # 372 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5669 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5670 
5671 extern int getpagesize(void);
5672 
5673 extern pid_t getpgid(pid_t);
5674 
5675 extern pid_t getpid(void);
5676 extern pid_t getppid(void);
5677 extern pid_t getpgrp(void);
5678 
5679 
5680 char *gettxt(const char *, const char *);
5681 
5682 
5683 extern pid_t getsid(pid_t);
5684 
5685 extern uid_t getuid(void);
5686 
5687 extern char *getusershell(void);
5688 
5689 /*
5690  * The following ioctl prototype is duplicated in <stropts.h>. The
5691  * duplication is necessitated by XPG4.2 which requires the prototype
5692  * be defined in <stropts.h>.
5693  */
5694 
5695 extern int ioctl(int, int, ...);
5696 extern int isaexec(const char *, char *const *, char *const *);
5697 extern int issetugid(void);
5698 
5699 extern int isatty(int);
5700 
5701 extern int lchown(const char *, uid_t, gid_t);
5702 
5703 extern int link(const char *, const char *);
5704 
5705 extern offset_t llseek(int, offset_t, int);
5706 
5707 
5708 
5709 
5710 extern int lockf(int, int, off_t);
5711 
5712 extern off_t lseek(int, off_t, int);
5713 
5714 
5715 extern int nice(int);
5716 
5717 
5718 extern int mincore(caddr_t, size_t, char *);
5719 
5720 extern long pathconf(const char *, int);
5721 extern int pause(void);
5722 extern int pipe(int *);
5723 extern int pipe2(int *, int);
5724 
5725 
5726 
5727 extern ssize_t pread(int, void *, size_t, off_t);
5728 
5729 
5730 extern void profil(unsigned short *, size_t, unsigned long, unsigned int);
5731 
5732 /*
5733  * pthread_atfork() is also declared in <pthread.h> as per SUSv3. The
5734  * declarations are identical. A change to either one may also require
5735  * appropriate namespace updates in order to avoid redeclaration
5736  * warnings in the case where both prototypes are exposed via inclusion
5737  * of both <pthread.h> and <unistd.h>.
5738  */
5739 
5740 
5741 
5742 extern int pthread_atfork(void (*) (void), void (*) (void), void (*) (void));
5743 
5744 
5745 
5746 extern int ptrace(int, pid_t, int, int);
5747 
5748 
5749 
5750 
5751 extern ssize_t pwrite(int, const void *, size_t, off_t);
5752 
5753 
5754 /* per RFC 3542; This is also defined in netdb.h */
5755 extern int rcmd_af(char **, unsigned short, const char *, const char *,
5756  const char *, int *, int);
5757 
5758 extern ssize_t read(int, void *, size_t);
5759 
5760 
5761 extern ssize_t readlink(const char *, char *,
5762  size_t);
5763 
5764 
5765 
5766 
5767 
5768 
5769 extern int rename(const char *, const char *);
5770 
5771 
5772 
5773 
5774 
5775 
5776 
5777 extern int resolvepath(const char *, char *, size_t);
5778 /* per RFC 3542; This is also defined in netdb.h */
5779 extern int rexec_af(char **, unsigned short, const char *, const char *,
5780  const char *, int *, int);
5781 
5782 extern int rmdir(const char *);
5783 
5784 /* per RFC 3542; This is also defined in netdb.h */
5785 extern int rresvport_af(int *, int);
5786 
5787 
5788 
5789 
5790 extern void *sbrk(intptr_t);
5791 
5792 
5793 extern int setegid(gid_t);
5794 extern int seteuid(uid_t);
5795 
5796 extern int setgid(gid_t);
5797 
5798 extern int setgroups(int, const gid_t *);
5799 extern int sethostname(char *, int);
5800 
5801 extern int setpgid(pid_t, pid_t);
5802 
5803 extern pid_t setpgrp(void);
5804 extern int setregid(gid_t, gid_t);
5805 extern int setreuid(uid_t, uid_t);
5806 
5807 extern pid_t setsid(void);
5808 extern int setuid(uid_t);
5809 
5810 extern void setusershell(void);
5811 
5812 extern unsigned sleep(unsigned);
5813 
5814 extern int stime(const time_t *);
5815 
5816 
5817 
5818 
5819 
5820 
5821 extern int symlink(const char *, const char *);
5822 extern void sync(void);
5823 # 534 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5824 extern long sysconf(int);
5825 extern pid_t tcgetpgrp(int);
5826 extern int tcsetpgrp(int, pid_t);
5827 
5828 
5829 
5830 extern off_t tell(int);
5831 
5832 
5833 
5834 
5835 extern int truncate(const char *, off_t);
5836 
5837 extern char *ttyname(int);
5838 
5839 extern useconds_t ualarm(useconds_t, useconds_t);
5840 
5841 extern int unlink(const char *);
5842 
5843 extern char *getwd(char *);
5844 extern int usleep(useconds_t);
5845 extern pid_t vfork(void) __attribute__((__returns_twice__));
5846 #pragma unknown_control_flow(vfork)
5847 
5848 
5849 extern void vhangup(void);
5850 
5851 extern ssize_t write(int, const void *, size_t);
5852 
5853 extern void yield(void);
5854 
5855 
5856 
5857 
5858  /* || defined(_XPG7) */
5859 extern int faccessat(int, const char *, int, int);
5860 extern int fchownat(int, const char *, uid_t, gid_t, int);
5861 extern int linkat(int, const char *, int, const char *, int);
5862 extern ssize_t readlinkat(int, const char *,
5863  char *, size_t);
5864 extern int renameat(int, const char *, int, const char *);
5865 extern int symlinkat(const char *, int, const char *);
5866 extern int unlinkat(int, const char *, int);
5867 
5868 
5869 extern int get_nprocs(void);
5870 extern int get_nprocs_conf(void);
5871 
5872 
5873 /* transitional large file interface versions */
5874 
5875 
5876 extern int ftruncate64(int, off64_t);
5877 extern off64_t lseek64(int, off64_t, int);
5878 extern ssize_t pread64(int, void *, size_t, off64_t);
5879 extern ssize_t pwrite64(int, const void *, size_t, off64_t);
5880 extern off64_t tell64(int);
5881 extern int truncate64(const char *, off64_t);
5882 extern int lockf64(int, int, off64_t);
5883 
5884 
5885 /*
5886  * getlogin_r() & ttyname_r() prototypes are defined here.
5887  */
5888 
5889 /*
5890  * Previous releases of Solaris, starting at 2.3, provided definitions of
5891  * various functions as specified in POSIX.1c, Draft 6.  For some of these
5892  * functions, the final POSIX 1003.1c standard had a different number of
5893  * arguments and return values.
5894  *
5895  * The following segment of this header provides support for the standard
5896  * interfaces while supporting applications written under earlier
5897  * releases.  The application defines appropriate values of the feature
5898  * test macros _POSIX_C_SOURCE and _POSIX_PTHREAD_SEMANTICS to indicate
5899  * whether it was written to expect the Draft 6 or standard versions of
5900  * these interfaces, before including this header.  This header then
5901  * provides a mapping from the source version of the interface to an
5902  * appropriate binary interface.  Such mappings permit an application
5903  * to be built from libraries and objects which have mixed expectations
5904  * of the definitions of these functions.
5905  *
5906  * For applications using the Draft 6 definitions, the binary symbol is the
5907  * same as the source symbol, and no explicit mapping is needed.  For the
5908  * standard interface, the function func() is mapped to the binary symbol
5909  * _posix_func().  The preferred mechanism for the remapping is a compiler
5910  * #pragma.  If the compiler does not provide such a #pragma, the header file
5911  * defines a static function func() which calls the _posix_func() version;
5912  * this has to be done instead of #define since POSIX specifies that an
5913  * application can #undef the symbol and still be bound to the correct
5914  * implementation.  Unfortunately, the statics confuse lint so we fallback to
5915  * #define in that case.
5916  *
5917  * NOTE: Support for the Draft 6 definitions is provided for compatibility
5918  * only.  New applications/libraries should use the standard definitions.
5919  */
5920 # 693 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5921 
5922 # 693 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5923 #pragma redefine_extname getlogin_r getloginx_r
5924 # 693 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5925 
5926 
5927 
5928 
5929 
5930 
5931 extern char *getlogin_r(char *, int);
5932 
5933 extern char *ttyname_r(int, char *, int);
5934 
5935 
5936 
5937 
5938 
5939 
5940 extern int getentropy(void *, size_t);
5941 # 44 "sortmap.c" 2
5942 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
5943 /*
5944  * CDDL HEADER START
5945  *
5946  * The contents of this file are subject to the terms of the
5947  * Common Development and Distribution License (the "License").
5948  * You may not use this file except in compliance with the License.
5949  *
5950  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5951  * or http://www.opensolaris.org/os/licensing.
5952  * See the License for the specific language governing permissions
5953  * and limitations under the License.
5954  *
5955  * When distributing Covered Code, include this CDDL HEADER in each
5956  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5957  * If applicable, add the following below this CDDL HEADER, with the
5958  * fields enclosed by brackets "[]" replaced with your own identifying
5959  * information: Portions Copyright [yyyy] [name of copyright owner]
5960  *
5961  * CDDL HEADER END
5962  */
5963 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
5964 /*	  All Rights Reserved  	*/
5965 
5966 
5967 /*
5968  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
5969  * Use is subject to license terms.
5970  *
5971  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
5972  * Copyright 2016 Joyent, Inc.
5973  */
5974 # 45 "sortmap.c" 2
5975 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
5976 /*
5977  * CDDL HEADER START
5978  *
5979  * The contents of this file are subject to the terms of the
5980  * Common Development and Distribution License (the "License").
5981  * You may not use this file except in compliance with the License.
5982  *
5983  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5984  * or http://www.opensolaris.org/os/licensing.
5985  * See the License for the specific language governing permissions
5986  * and limitations under the License.
5987  *
5988  * When distributing Covered Code, include this CDDL HEADER in each
5989  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5990  * If applicable, add the following below this CDDL HEADER, with the
5991  * fields enclosed by brackets "[]" replaced with your own identifying
5992  * information: Portions Copyright [yyyy] [name of copyright owner]
5993  *
5994  * CDDL HEADER END
5995  */
5996 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
5997 /*	  All Rights Reserved  	*/
5998 
5999 /*
6000  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
6001  * Use is subject to license terms.
6002  */
6003 
6004 
6005 
6006 
6007 #pragma ident "%Z%%M%	%I%	%E% SMI"
6008 
6009 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 1
6010 /*
6011  * CDDL HEADER START
6012  *
6013  * The contents of this file are subject to the terms of the
6014  * Common Development and Distribution License (the "License").
6015  * You may not use this file except in compliance with the License.
6016  *
6017  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6018  * or http://www.opensolaris.org/os/licensing.
6019  * See the License for the specific language governing permissions
6020  * and limitations under the License.
6021  *
6022  * When distributing Covered Code, include this CDDL HEADER in each
6023  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6024  * If applicable, add the following below this CDDL HEADER, with the
6025  * fields enclosed by brackets "[]" replaced with your own identifying
6026  * information: Portions Copyright [yyyy] [name of copyright owner]
6027  *
6028  * CDDL HEADER END
6029  */
6030 /*	Copyright (c) 1988 AT&T	*/
6031 /*	  All Rights Reserved  	*/
6032 
6033 
6034 /*
6035  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6036  *
6037  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
6038  * Use is subject to license terms.
6039  */
6040 /*
6041  * Copyright 2010 Nexenta Systems, Inc.  Al rights reserved.
6042  * Copyright 2016 Joyent, Inc.
6043  */
6044 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 2
6045 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h"
6046 extern char *errstr;
6047 
6048 struct ainfo {
6049  char *local;
6050  mode_t mode;
6051  char owner[64 +1];
6052  char group[64 +1];
6053  major_t major;
6054  minor_t minor;
6055 };
6056 
6057 struct cinfo {
6058  long cksum;
6059  fsblkcnt_t size;
6060  time_t modtime;
6061 };
6062 
6063 struct pinfo {
6064  char status;
6065  char pkg[64 +1];
6066  char editflag;
6067  char aclass[64 +1];
6068  struct pinfo
6069   *next;
6070 };
6071 
6072 struct cfent {
6073  short volno;
6074  char ftype;
6075  char pkg_class[64 +1];
6076  int pkg_class_idx;
6077  char *path;
6078  struct ainfo ainfo;
6079  struct cinfo cinfo;
6080  short npkgs;
6081  struct pinfo
6082   *pinfo;
6083 };
6084 
6085 /* averify() & cverify() error codes */
6086 # 46 "sortmap.c" 2
6087 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkglocs.h" 1
6088 /*
6089  * CDDL HEADER START
6090  *
6091  * The contents of this file are subject to the terms of the
6092  * Common Development and Distribution License, Version 1.0 only
6093  * (the "License").  You may not use this file except in compliance
6094  * with the License.
6095  *
6096  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6097  * or http://www.opensolaris.org/os/licensing.
6098  * See the License for the specific language governing permissions
6099  * and limitations under the License.
6100  *
6101  * When distributing Covered Code, include this CDDL HEADER in each
6102  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6103  * If applicable, add the following below this CDDL HEADER, with the
6104  * fields enclosed by brackets "[]" replaced with your own identifying
6105  * information: Portions Copyright [yyyy] [name of copyright owner]
6106  *
6107  * CDDL HEADER END
6108  */
6109 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6110 /*	  All Rights Reserved  	*/
6111 # 47 "sortmap.c" 2
6112 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h" 1
6113 /*
6114  * CDDL HEADER START
6115  *
6116  * The contents of this file are subject to the terms of the
6117  * Common Development and Distribution License, Version 1.0 only
6118  * (the "License").  You may not use this file except in compliance
6119  * with the License.
6120  *
6121  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6122  * or http://www.opensolaris.org/os/licensing.
6123  * See the License for the specific language governing permissions
6124  * and limitations under the License.
6125  *
6126  * When distributing Covered Code, include this CDDL HEADER in each
6127  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6128  * If applicable, add the following below this CDDL HEADER, with the
6129  * fields enclosed by brackets "[]" replaced with your own identifying
6130  * information: Portions Copyright [yyyy] [name of copyright owner]
6131  *
6132  * CDDL HEADER END
6133  */
6134 /*
6135  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
6136  * Use is subject to license terms.
6137  */
6138 
6139 /*
6140  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6141  *
6142  * Portions of this file developed by Garrett D'Amore are licensed
6143  * under the terms of the Common Development and Distribution License (CDDL)
6144  * version 1.0 only.  The use of subsequent versions of the License are
6145  * is specifically prohibited unless those terms are not in conflict with
6146  * version 1.0 of the License.  You can find this license on-line at
6147  * http://www.illumos.org/license/CDDL
6148  */
6149 
6150 
6151 
6152 
6153 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h" 1
6154 /*
6155  * CDDL HEADER START
6156  *
6157  * The contents of this file are subject to the terms of the
6158  * Common Development and Distribution License, Version 1.0 only
6159  * (the "License").  You may not use this file except in compliance
6160  * with the License.
6161  *
6162  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6163  * or http://www.opensolaris.org/os/licensing.
6164  * See the License for the specific language governing permissions
6165  * and limitations under the License.
6166  *
6167  * When distributing Covered Code, include this CDDL HEADER in each
6168  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6169  * If applicable, add the following below this CDDL HEADER, with the
6170  * fields enclosed by brackets "[]" replaced with your own identifying
6171  * information: Portions Copyright [yyyy] [name of copyright owner]
6172  *
6173  * CDDL HEADER END
6174  */
6175 /*
6176  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6177  * Copyright 2014 PALO, Richard.
6178  *
6179  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
6180  * Use is subject to license terms.
6181  */
6182 
6183 /*	Copyright (c) 1988 AT&T	*/
6184 /*	  All Rights Reserved  	*/
6185 
6186 
6187 /*
6188  * An application should not include this header directly.  Instead it
6189  * should be included only through the inclusion of other Sun headers.
6190  *
6191  * The contents of this header is limited to identifiers specified in the
6192  * C Standard.  Any new identifiers specified in future amendments to the
6193  * C Standard must be placed in this header.  If these new identifiers
6194  * are required to also be in the C++ Standard "std" namespace, then for
6195  * anything other than macro definitions, corresponding "using" directives
6196  * must also be added to <locale.h>.
6197  */
6198 
6199 
6200 
6201 
6202 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
6203 /*
6204  * CDDL HEADER START
6205  *
6206  * The contents of this file are subject to the terms of the
6207  * Common Development and Distribution License (the "License").
6208  * You may not use this file except in compliance with the License.
6209  *
6210  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6211  * or http://www.opensolaris.org/os/licensing.
6212  * See the License for the specific language governing permissions
6213  * and limitations under the License.
6214  *
6215  * When distributing Covered Code, include this CDDL HEADER in each
6216  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6217  * If applicable, add the following below this CDDL HEADER, with the
6218  * fields enclosed by brackets "[]" replaced with your own identifying
6219  * information: Portions Copyright [yyyy] [name of copyright owner]
6220  *
6221  * CDDL HEADER END
6222  */
6223 
6224 /*
6225  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
6226  * Copyright 2016 Joyent, Inc.
6227  *
6228  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
6229  * Use is subject to license terms.
6230  */
6231 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h" 2
6232 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
6233 /*
6234  * This file and its contents are supplied under the terms of the
6235  * Common Development and Distribution License ("CDDL"), version 1.0.
6236  * You may only use this file in accordance with the terms of version
6237  * 1.0 of the CDDL.
6238  *
6239  * A full copy of the text of the CDDL should have accompanied this
6240  * source.  A copy of the CDDL is also available via the Internet at
6241  * http://www.illumos.org/license/CDDL.
6242  */
6243 
6244 /*
6245  * Copyright 2014-2016 PALO, Richard.
6246  */
6247 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h" 2
6248 # 60 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h"
6249 struct lconv {
6250  char *decimal_point;
6251  char *thousands_sep;
6252  char *grouping;
6253  char *int_curr_symbol;
6254  char *currency_symbol;
6255  char *mon_decimal_point;
6256  char *mon_thousands_sep;
6257  char *mon_grouping;
6258  char *positive_sign;
6259  char *negative_sign;
6260  char int_frac_digits;
6261  char frac_digits;
6262  char p_cs_precedes;
6263  char p_sep_by_space;
6264  char n_cs_precedes;
6265  char n_sep_by_space;
6266  char p_sign_posn;
6267  char n_sign_posn;
6268 
6269 /*
6270  * New in IEEE Std 1003.1-2001 for alignment with the ISO/IEC 9899:1999
6271  * standard.  Namespace and binary compatibility dictate that visibility
6272  * of these new members be limited.  Visibility is limited to a strictly
6273  * conforming ANSI C environment (-Xc) or if _LCONV_C99 is defined.
6274  */
6275 # 94 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h"
6276 };
6277 # 104 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h"
6278 extern char *setlocale(int, const char *);
6279 extern struct lconv *localeconv(void);
6280 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h" 2
6281 
6282 
6283 
6284 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h" 1
6285 /*
6286  * CDDL HEADER START
6287  *
6288  * The contents of this file are subject to the terms of the
6289  * Common Development and Distribution License (the "License").
6290  * You may not use this file except in compliance with the License.
6291  *
6292  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6293  * or http://www.opensolaris.org/os/licensing.
6294  * See the License for the specific language governing permissions
6295  * and limitations under the License.
6296  *
6297  * When distributing Covered Code, include this CDDL HEADER in each
6298  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6299  * If applicable, add the following below this CDDL HEADER, with the
6300  * fields enclosed by brackets "[]" replaced with your own identifying
6301  * information: Portions Copyright [yyyy] [name of copyright owner]
6302  *
6303  * CDDL HEADER END
6304  */
6305 /*
6306  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6307  *
6308  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6309  * Use is subject to license terms.
6310  */
6311 
6312 
6313 
6314 
6315 
6316 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
6317 /*
6318  * CDDL HEADER START
6319  *
6320  * The contents of this file are subject to the terms of the
6321  * Common Development and Distribution License (the "License").
6322  * You may not use this file except in compliance with the License.
6323  *
6324  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6325  * or http://www.opensolaris.org/os/licensing.
6326  * See the License for the specific language governing permissions
6327  * and limitations under the License.
6328  *
6329  *
6330  * When distributing Covered Code, include this CDDL HEADER in each
6331  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6332  * If applicable, add the following below this CDDL HEADER, with the
6333  * fields enclosed by brackets "[]" replaced with your own identifying
6334  * information: Portions Copyright [yyyy] [name of copyright owner]
6335  *
6336  * CDDL HEADER END
6337  */
6338 
6339 /*
6340  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6341  * Use is subject to license terms.
6342  * Copyright 2016 Joyent, Inc.
6343  */
6344 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h" 2
6345 
6346 
6347 
6348 
6349 
6350 /*
6351  * wchar_t is a built-in type in standard C++ and as such is not
6352  * defined here when using standard C++. However, the GNU compiler
6353  * fixincludes utility nonetheless creates its own version of this
6354  * header for use by gcc and g++. In that version it adds a redundant
6355  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
6356  * header we need to include the following magic comment:
6357  *
6358  * we must use the C++ compiler's type
6359  *
6360  * The above comment should not be removed or changed until GNU
6361  * gcc/fixinc/inclhack.def is updated to bypass this header.
6362  */
6363 # 67 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h"
6364 extern char *dcgettext(const char *, const char *, const int);
6365 extern char *dgettext(const char *, const char *);
6366 extern char *gettext(const char *);
6367 extern char *textdomain(const char *);
6368 extern char *bindtextdomain(const char *, const char *);
6369 
6370 /*
6371  * LI18NUX 2000 Globalization Specification Version 1.0
6372  * with Amendment 2
6373  */
6374 extern char *dcngettext(const char *, const char *,
6375  const char *, unsigned long int, int);
6376 extern char *dngettext(const char *, const char *,
6377  const char *, unsigned long int);
6378 extern char *ngettext(const char *, const char *, unsigned long int);
6379 extern char *bind_textdomain_codeset(const char *, const char *);
6380 
6381 /* Word handling functions --- requires dynamic linking */
6382 /* Warning: these are experimental and subject to change. */
6383 extern int wdinit(void);
6384 extern int wdchkind(wchar_t);
6385 extern int wdbindf(wchar_t, wchar_t, int);
6386 extern wchar_t *wddelim(wchar_t, wchar_t, int);
6387 extern wchar_t mcfiller(void);
6388 extern int mcwrap(void);
6389 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h" 2
6390 
6391 
6392 /*
6393  * Allow global visibility for symbols defined in
6394  * C++ "std" namespace in <iso/locale_iso.h>.
6395  */
6396 # 71 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h"
6397 /*
6398  * These were added in POSIX 2008 as part of the newlocale() specification.
6399  */
6400 # 87 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h"
6401 extern locale_t duplocale(locale_t);
6402 extern void freelocale(locale_t);
6403 extern locale_t newlocale(int, const char *, locale_t);
6404 extern locale_t uselocale(locale_t);
6405 
6406 
6407 extern locale_t __global_locale(void);
6408 # 48 "sortmap.c" 2
6409 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h" 1
6410 /*
6411  * CDDL HEADER START
6412  *
6413  * The contents of this file are subject to the terms of the
6414  * Common Development and Distribution License (the "License").
6415  * You may not use this file except in compliance with the License.
6416  *
6417  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6418  * or http://www.opensolaris.org/os/licensing.
6419  * See the License for the specific language governing permissions
6420  * and limitations under the License.
6421  *
6422  * When distributing Covered Code, include this CDDL HEADER in each
6423  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6424  * If applicable, add the following below this CDDL HEADER, with the
6425  * fields enclosed by brackets "[]" replaced with your own identifying
6426  * information: Portions Copyright [yyyy] [name of copyright owner]
6427  *
6428  * CDDL HEADER END
6429  */
6430 /*
6431  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6432  *
6433  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6434  * Use is subject to license terms.
6435  */
6436 # 49 "sortmap.c" 2
6437 # 1 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h" 1
6438 /*
6439  * CDDL HEADER START
6440  *
6441  * The contents of this file are subject to the terms of the
6442  * Common Development and Distribution License (the "License").
6443  * You may not use this file except in compliance with the License.
6444  *
6445  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6446  * or http://www.opensolaris.org/os/licensing.
6447  * See the License for the specific language governing permissions
6448  * and limitations under the License.
6449  *
6450  * When distributing Covered Code, include this CDDL HEADER in each
6451  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6452  * If applicable, add the following below this CDDL HEADER, with the
6453  * fields enclosed by brackets "[]" replaced with your own identifying
6454  * information: Portions Copyright [yyyy] [name of copyright owner]
6455  *
6456  * CDDL HEADER END
6457  */
6458 
6459 /*
6460  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
6461  * Use is subject to license terms.
6462  */
6463 
6464 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
6465 /* All Rights Reserved */
6466 # 38 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h"
6467 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
6468 /*
6469  * CDDL HEADER START
6470  *
6471  * The contents of this file are subject to the terms of the
6472  * Common Development and Distribution License (the "License").
6473  * You may not use this file except in compliance with the License.
6474  *
6475  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6476  * or http://www.opensolaris.org/os/licensing.
6477  * See the License for the specific language governing permissions
6478  * and limitations under the License.
6479  *
6480  * When distributing Covered Code, include this CDDL HEADER in each
6481  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6482  * If applicable, add the following below this CDDL HEADER, with the
6483  * fields enclosed by brackets "[]" replaced with your own identifying
6484  * information: Portions Copyright [yyyy] [name of copyright owner]
6485  *
6486  * CDDL HEADER END
6487  */
6488 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6489 /*	  All Rights Reserved  	*/
6490 
6491 
6492 /*
6493  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
6494  * Use is subject to license terms.
6495  *
6496  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
6497  * Copyright 2016 Joyent, Inc.
6498  */
6499 # 39 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h" 2
6500 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 1
6501 /*
6502  * CDDL HEADER START
6503  *
6504  * The contents of this file are subject to the terms of the
6505  * Common Development and Distribution License (the "License").
6506  * You may not use this file except in compliance with the License.
6507  *
6508  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6509  * or http://www.opensolaris.org/os/licensing.
6510  * See the License for the specific language governing permissions
6511  * and limitations under the License.
6512  *
6513  * When distributing Covered Code, include this CDDL HEADER in each
6514  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6515  * If applicable, add the following below this CDDL HEADER, with the
6516  * fields enclosed by brackets "[]" replaced with your own identifying
6517  * information: Portions Copyright [yyyy] [name of copyright owner]
6518  *
6519  * CDDL HEADER END
6520  */
6521 
6522 /*
6523  * Copyright (c) 2013 Gary Mills
6524  *
6525  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6526  * Use is subject to license terms.
6527  */
6528 
6529 /*	Copyright (c) 1988 AT&T	*/
6530 /*	  All Rights Reserved  	*/
6531 # 40 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h" 2
6532 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
6533 /*
6534  * CDDL HEADER START
6535  *
6536  * The contents of this file are subject to the terms of the
6537  * Common Development and Distribution License (the "License").
6538  * You may not use this file except in compliance with the License.
6539  *
6540  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6541  * or http://www.opensolaris.org/os/licensing.
6542  * See the License for the specific language governing permissions
6543  * and limitations under the License.
6544  *
6545  * When distributing Covered Code, include this CDDL HEADER in each
6546  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6547  * If applicable, add the following below this CDDL HEADER, with the
6548  * fields enclosed by brackets "[]" replaced with your own identifying
6549  * information: Portions Copyright [yyyy] [name of copyright owner]
6550  *
6551  * CDDL HEADER END
6552  */
6553 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6554 /*	  All Rights Reserved  	*/
6555 
6556 /*
6557  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
6558  * Use is subject to license terms.
6559  */
6560 # 41 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h" 2
6561 
6562 /* Settings for procedure scripts */
6563 
6564 
6565 
6566 
6567 
6568 
6569 /* Settings for class action scripts */
6570 
6571 
6572 
6573 
6574 
6575 /* Settings for non-privileged scripts */
6576 # 64 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h"
6577 /* Settings for admin "rscriptalt" option */
6578 # 80 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h"
6579 /* Additional cfent/cfextra codes. */
6580 
6581 
6582 
6583 /* This holds admin file data. */
6584 struct admin {
6585  char *mail;
6586  char *instance;
6587  char *partial;
6588  char *runlevel;
6589  char *idepend;
6590  char *rdepend;
6591  char *space;
6592  char *setuid;
6593  char *conflict;
6594  char *action;
6595  char *networktimeout;
6596  char *networkretries;
6597  char *authentication;
6598  char *keystore;
6599  char *proxy;
6600  char *basedir;
6601  char *rscriptalt;
6602 };
6603 
6604 /*
6605  * This table details the status of all filesystems available to the target
6606  * host.
6607  */
6608 struct fstable {
6609  char *name; /* name of filesystem, (mount point) */
6610  int namlen; /* The length of the name (mountpoint) */
6611  fsblkcnt_t bsize; /* fundamental file system block size */
6612  fsblkcnt_t frsize; /* file system fragment size */
6613  fsblkcnt_t bfree; /* total # of free blocks */
6614  fsblkcnt_t bused; /* total # of used blocks */
6615  fsblkcnt_t ffree; /* total # of free file nodes */
6616  fsblkcnt_t fused; /* total # of used file nodes */
6617  char *fstype; /* type of filesystem - nfs, lo, ... */
6618  char *remote_name; /* client's mounted filesystem */
6619  unsigned writeable:1; /* access permission */
6620  unsigned write_tested:1; /* access permission fully tested */
6621  unsigned remote:1; /* on a remote filesystem */
6622  unsigned mounted:1; /* actually mounted right now */
6623  unsigned srvr_map:1; /* use server_map() */
6624  unsigned cl_mounted:1; /* mounted in client space */
6625  unsigned mnt_failed:1; /* attempt to loopback mount failed */
6626  unsigned served:1; /* filesystem comes from a server */
6627 };
6628 # 50 "sortmap.c" 2
6629 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 1
6630 /*
6631  * CDDL HEADER START
6632  *
6633  * The contents of this file are subject to the terms of the
6634  * Common Development and Distribution License (the "License").
6635  * You may not use this file except in compliance with the License.
6636  *
6637  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6638  * or http://www.opensolaris.org/os/licensing.
6639  * See the License for the specific language governing permissions
6640  * and limitations under the License.
6641  *
6642  * When distributing Covered Code, include this CDDL HEADER in each
6643  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6644  * If applicable, add the following below this CDDL HEADER, with the
6645  * fields enclosed by brackets "[]" replaced with your own identifying
6646  * information: Portions Copyright [yyyy] [name of copyright owner]
6647  *
6648  * CDDL HEADER END
6649  */
6650 
6651 /*
6652  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
6653  * Use is subject to license terms.
6654  */
6655 
6656 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
6657 /* All Rights Reserved */
6658 # 38 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
6659 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
6660 /*
6661  * CDDL HEADER START
6662  *
6663  * The contents of this file are subject to the terms of the
6664  * Common Development and Distribution License (the "License").
6665  * You may not use this file except in compliance with the License.
6666  *
6667  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6668  * or http://www.opensolaris.org/os/licensing.
6669  * See the License for the specific language governing permissions
6670  * and limitations under the License.
6671  *
6672  * When distributing Covered Code, include this CDDL HEADER in each
6673  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6674  * If applicable, add the following below this CDDL HEADER, with the
6675  * fields enclosed by brackets "[]" replaced with your own identifying
6676  * information: Portions Copyright [yyyy] [name of copyright owner]
6677  *
6678  * CDDL HEADER END
6679  */
6680 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6681 /*	  All Rights Reserved  	*/
6682 
6683 
6684 /*
6685  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
6686  * Use is subject to license terms.
6687  *
6688  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
6689  * Copyright 2016 Joyent, Inc.
6690  */
6691 # 39 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6692 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 1
6693 /*
6694  * CDDL HEADER START
6695  *
6696  * The contents of this file are subject to the terms of the
6697  * Common Development and Distribution License (the "License").
6698  * You may not use this file except in compliance with the License.
6699  *
6700  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6701  * or http://www.opensolaris.org/os/licensing.
6702  * See the License for the specific language governing permissions
6703  * and limitations under the License.
6704  *
6705  * When distributing Covered Code, include this CDDL HEADER in each
6706  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6707  * If applicable, add the following below this CDDL HEADER, with the
6708  * fields enclosed by brackets "[]" replaced with your own identifying
6709  * information: Portions Copyright [yyyy] [name of copyright owner]
6710  *
6711  * CDDL HEADER END
6712  */
6713 
6714 /*
6715  * Copyright (c) 2013 Gary Mills
6716  *
6717  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6718  * Use is subject to license terms.
6719  */
6720 
6721 /*	Copyright (c) 1988 AT&T	*/
6722 /*	  All Rights Reserved  	*/
6723 # 40 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6724 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
6725 /*
6726  * CDDL HEADER START
6727  *
6728  * The contents of this file are subject to the terms of the
6729  * Common Development and Distribution License (the "License").
6730  * You may not use this file except in compliance with the License.
6731  *
6732  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6733  * or http://www.opensolaris.org/os/licensing.
6734  * See the License for the specific language governing permissions
6735  * and limitations under the License.
6736  *
6737  * When distributing Covered Code, include this CDDL HEADER in each
6738  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6739  * If applicable, add the following below this CDDL HEADER, with the
6740  * fields enclosed by brackets "[]" replaced with your own identifying
6741  * information: Portions Copyright [yyyy] [name of copyright owner]
6742  *
6743  * CDDL HEADER END
6744  */
6745 
6746 /*
6747  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6748  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
6749  */
6750 
6751 /*	Copyright (c) 1988 AT&T	*/
6752 /*	  All Rights Reserved  	*/
6753 
6754 /*
6755  * User-visible pieces of the ANSI C standard I/O package.
6756  */
6757 # 41 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6758 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgdev.h" 1
6759 /*
6760  * CDDL HEADER START
6761  *
6762  * The contents of this file are subject to the terms of the
6763  * Common Development and Distribution License, Version 1.0 only
6764  * (the "License").  You may not use this file except in compliance
6765  * with the License.
6766  *
6767  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6768  * or http://www.opensolaris.org/os/licensing.
6769  * See the License for the specific language governing permissions
6770  * and limitations under the License.
6771  *
6772  * When distributing Covered Code, include this CDDL HEADER in each
6773  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6774  * If applicable, add the following below this CDDL HEADER, with the
6775  * fields enclosed by brackets "[]" replaced with your own identifying
6776  * information: Portions Copyright [yyyy] [name of copyright owner]
6777  *
6778  * CDDL HEADER END
6779  */
6780 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6781 /*	  All Rights Reserved  	*/
6782 
6783 
6784 
6785 
6786 
6787 #pragma ident "%Z%%M%	%I%	%E% SMI"
6788 
6789 
6790 
6791 
6792 
6793 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
6794 /*
6795  * CDDL HEADER START
6796  *
6797  * The contents of this file are subject to the terms of the
6798  * Common Development and Distribution License (the "License").
6799  * You may not use this file except in compliance with the License.
6800  *
6801  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6802  * or http://www.opensolaris.org/os/licensing.
6803  * See the License for the specific language governing permissions
6804  * and limitations under the License.
6805  *
6806  * When distributing Covered Code, include this CDDL HEADER in each
6807  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6808  * If applicable, add the following below this CDDL HEADER, with the
6809  * fields enclosed by brackets "[]" replaced with your own identifying
6810  * information: Portions Copyright [yyyy] [name of copyright owner]
6811  *
6812  * CDDL HEADER END
6813  */
6814 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6815 /*	  All Rights Reserved  	*/
6816 
6817 
6818 /*
6819  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
6820  * Use is subject to license terms.
6821  *
6822  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
6823  * Copyright 2016 Joyent, Inc.
6824  */
6825 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgdev.h" 2
6826 
6827 struct pkgdev {
6828  int rdonly;
6829  int mntflg;
6830  longlong_t capacity; /* number of 512-blocks on device */
6831  char *name;
6832  char *dirname;
6833  char *pathname;
6834  char *mount;
6835  char *fstyp;
6836  char *cdevice;
6837  char *bdevice;
6838  char *norewind;
6839 };
6840 # 42 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6841 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
6842 /*
6843  * CDDL HEADER START
6844  *
6845  * The contents of this file are subject to the terms of the
6846  * Common Development and Distribution License (the "License").
6847  * You may not use this file except in compliance with the License.
6848  *
6849  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6850  * or http://www.opensolaris.org/os/licensing.
6851  * See the License for the specific language governing permissions
6852  * and limitations under the License.
6853  *
6854  * When distributing Covered Code, include this CDDL HEADER in each
6855  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6856  * If applicable, add the following below this CDDL HEADER, with the
6857  * fields enclosed by brackets "[]" replaced with your own identifying
6858  * information: Portions Copyright [yyyy] [name of copyright owner]
6859  *
6860  * CDDL HEADER END
6861  */
6862 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6863 /*	  All Rights Reserved  	*/
6864 
6865 /*
6866  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
6867  * Use is subject to license terms.
6868  */
6869 # 43 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6870 # 1 "/usr/include/openssl/bio.h" 1 3 4
6871 /* crypto/bio/bio.h */
6872 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
6873  * All rights reserved.
6874  *
6875  * This package is an SSL implementation written
6876  * by Eric Young (eay@cryptsoft.com).
6877  * The implementation was written so as to conform with Netscapes SSL.
6878  *
6879  * This library is free for commercial and non-commercial use as long as
6880  * the following conditions are aheared to.  The following conditions
6881  * apply to all code found in this distribution, be it the RC4, RSA,
6882  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
6883  * included with this distribution is covered by the same copyright terms
6884  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
6885  *
6886  * Copyright remains Eric Young's, and as such any Copyright notices in
6887  * the code are not to be removed.
6888  * If this package is used in a product, Eric Young should be given attribution
6889  * as the author of the parts of the library used.
6890  * This can be in the form of a textual message at program startup or
6891  * in documentation (online or textual) provided with the package.
6892  *
6893  * Redistribution and use in source and binary forms, with or without
6894  * modification, are permitted provided that the following conditions
6895  * are met:
6896  * 1. Redistributions of source code must retain the copyright
6897  *    notice, this list of conditions and the following disclaimer.
6898  * 2. Redistributions in binary form must reproduce the above copyright
6899  *    notice, this list of conditions and the following disclaimer in the
6900  *    documentation and/or other materials provided with the distribution.
6901  * 3. All advertising materials mentioning features or use of this software
6902  *    must display the following acknowledgement:
6903  *    "This product includes cryptographic software written by
6904  *     Eric Young (eay@cryptsoft.com)"
6905  *    The word 'cryptographic' can be left out if the rouines from the library
6906  *    being used are not cryptographic related :-).
6907  * 4. If you include any Windows specific code (or a derivative thereof) from
6908  *    the apps directory (application code) you must include an acknowledgement:
6909  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
6910  *
6911  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
6912  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
6913  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
6914  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
6915  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
6916  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
6917  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
6918  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
6919  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
6920  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
6921  * SUCH DAMAGE.
6922  *
6923  * The licence and distribution terms for any publically available version or
6924  * derivative of this code cannot be changed.  i.e. this code cannot simply be
6925  * copied and put under another distribution licence
6926  * [including the GNU Public Licence.]
6927  */
6928 
6929 
6930 
6931 
6932 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
6933 /* e_os2.h */
6934 /* ====================================================================
6935  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
6936  *
6937  * Redistribution and use in source and binary forms, with or without
6938  * modification, are permitted provided that the following conditions
6939  * are met:
6940  *
6941  * 1. Redistributions of source code must retain the above copyright
6942  *    notice, this list of conditions and the following disclaimer.
6943  *
6944  * 2. Redistributions in binary form must reproduce the above copyright
6945  *    notice, this list of conditions and the following disclaimer in
6946  *    the documentation and/or other materials provided with the
6947  *    distribution.
6948  *
6949  * 3. All advertising materials mentioning features or use of this
6950  *    software must display the following acknowledgment:
6951  *    "This product includes software developed by the OpenSSL Project
6952  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
6953  *
6954  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
6955  *    endorse or promote products derived from this software without
6956  *    prior written permission. For written permission, please contact
6957  *    openssl-core@openssl.org.
6958  *
6959  * 5. Products derived from this software may not be called "OpenSSL"
6960  *    nor may "OpenSSL" appear in their names without prior written
6961  *    permission of the OpenSSL Project.
6962  *
6963  * 6. Redistributions of any form whatsoever must retain the following
6964  *    acknowledgment:
6965  *    "This product includes software developed by the OpenSSL Project
6966  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
6967  *
6968  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
6969  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
6970  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
6971  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
6972  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
6973  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
6974  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
6975  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
6976  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
6977  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
6978  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
6979  * OF THE POSSIBILITY OF SUCH DAMAGE.
6980  * ====================================================================
6981  *
6982  * This product includes cryptographic software written by Eric Young
6983  * (eay@cryptsoft.com).  This product includes software written by Tim
6984  * Hudson (tjh@cryptsoft.com).
6985  *
6986  */
6987 
6988 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
6989 /* opensslconf.h */
6990 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
6991 
6992 
6993 
6994 
6995 /* OpenSSL was configured with the following options: */
6996 # 108 "/usr/include/openssl/opensslconf.h" 3 4
6997 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
6998    asks for it.  This is a transient feature that is provided for those
6999    who haven't had the time to do the appropriate changes in their
7000    applications.  */
7001 # 204 "/usr/include/openssl/opensslconf.h" 3 4
7002 /* crypto/opensslconf.h.in */
7003 
7004 /* Generate 80386 code? */
7005 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
7006 # 65 "/usr/include/openssl/e_os2.h" 3 4
7007 /******************************************************************************
7008  * Detect operating systems.  This probably needs completing.
7009  * The result is that at least one OPENSSL_SYS_os macro should be defined.
7010  * However, if none is defined, Unix is assumed.
7011  **/
7012 
7013 
7014 
7015 /* ---------------------- Macintosh, before MacOS X ----------------------- */
7016 
7017 
7018 
7019 
7020 
7021 /* ---------------------- NetWare ----------------------------------------- */
7022 
7023 
7024 
7025 
7026 
7027 /* --------------------- Microsoft operating systems ---------------------- */
7028 
7029 /*
7030  * Note that MSDOS actually denotes 32-bit environments running on top of
7031  * MS-DOS, such as DJGPP one.
7032  */
7033 
7034 
7035 
7036 
7037 
7038 /*
7039  * For 32 bit environment, there seems to be the CygWin environment and then
7040  * all the others that try to do the same thing Microsoft does...
7041  */
7042 # 129 "/usr/include/openssl/e_os2.h" 3 4
7043 /* Anything that tries to look like Microsoft is "Windows" */
7044 # 138 "/usr/include/openssl/e_os2.h" 3 4
7045 /*
7046  * DLL settings.  This part is a bit tough, because it's up to the
7047  * application implementor how he or she will link the application, so it
7048  * requires some macro to be used.
7049  */
7050 # 152 "/usr/include/openssl/e_os2.h" 3 4
7051 /* ------------------------------- OpenVMS -------------------------------- */
7052 # 166 "/usr/include/openssl/e_os2.h" 3 4
7053 /* -------------------------------- OS/2 ---------------------------------- */
7054 
7055 
7056 
7057 
7058 
7059 /* -------------------------------- Unix ---------------------------------- */
7060 # 207 "/usr/include/openssl/e_os2.h" 3 4
7061 /* -------------------------------- VOS ----------------------------------- */
7062 # 218 "/usr/include/openssl/e_os2.h" 3 4
7063 /* ------------------------------ VxWorks --------------------------------- */
7064 
7065 
7066 
7067 
7068 /* -------------------------------- BeOS ---------------------------------- */
7069 # 234 "/usr/include/openssl/e_os2.h" 3 4
7070 /**
7071  * That's it for OS-specific stuff
7072  *****************************************************************************/
7073 
7074 /* Specials for I/O an exit */
7075 # 247 "/usr/include/openssl/e_os2.h" 3 4
7076 /*-
7077  * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare
7078  * certain global symbols that, with some compilers under VMS, have to be
7079  * defined and declared explicitely with globaldef and globalref.
7080  * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare
7081  * DLL exports and imports for compilers under Win32.  These are a little
7082  * more complicated to use.  Basically, for any library that exports some
7083  * global variables, the following code must be present in the header file
7084  * that declares them, before OPENSSL_EXTERN is used:
7085  *
7086  * #ifdef SOME_BUILD_FLAG_MACRO
7087  * # undef OPENSSL_EXTERN
7088  * # define OPENSSL_EXTERN OPENSSL_EXPORT
7089  * #endif
7090  *
7091  * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL
7092  * have some generally sensible values, and for OPENSSL_EXTERN to have the
7093  * value OPENSSL_IMPORT.
7094  */
7095 # 282 "/usr/include/openssl/e_os2.h" 3 4
7096 /*-
7097  * Macros to allow global variables to be reached through function calls when
7098  * required (if a shared library version requires it, for example.
7099  * The way it's done allows definitions like this:
7100  *
7101  *      // in foobar.c
7102  *      OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)
7103  *      // in foobar.h
7104  *      OPENSSL_DECLARE_GLOBAL(int,foobar);
7105  *      #define foobar OPENSSL_GLOBAL_REF(foobar)
7106  */
7107 # 63 "/usr/include/openssl/bio.h" 2 3 4
7108 
7109 
7110 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
7111 /*
7112  * CDDL HEADER START
7113  *
7114  * The contents of this file are subject to the terms of the
7115  * Common Development and Distribution License (the "License").
7116  * You may not use this file except in compliance with the License.
7117  *
7118  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7119  * or http://www.opensolaris.org/os/licensing.
7120  * See the License for the specific language governing permissions
7121  * and limitations under the License.
7122  *
7123  * When distributing Covered Code, include this CDDL HEADER in each
7124  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7125  * If applicable, add the following below this CDDL HEADER, with the
7126  * fields enclosed by brackets "[]" replaced with your own identifying
7127  * information: Portions Copyright [yyyy] [name of copyright owner]
7128  *
7129  * CDDL HEADER END
7130  */
7131 
7132 /*
7133  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7134  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
7135  */
7136 
7137 /*	Copyright (c) 1988 AT&T	*/
7138 /*	  All Rights Reserved  	*/
7139 
7140 /*
7141  * User-visible pieces of the ANSI C standard I/O package.
7142  */
7143 # 66 "/usr/include/openssl/bio.h" 2 3 4
7144 
7145 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdarg.h" 1 3 4
7146 /*
7147  * CDDL HEADER START
7148  *
7149  * The contents of this file are subject to the terms of the
7150  * Common Development and Distribution License, Version 1.0 only
7151  * (the "License").  You may not use this file except in compliance
7152  * with the License.
7153  *
7154  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7155  * or http://www.opensolaris.org/os/licensing.
7156  * See the License for the specific language governing permissions
7157  * and limitations under the License.
7158  *
7159  * When distributing Covered Code, include this CDDL HEADER in each
7160  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7161  * If applicable, add the following below this CDDL HEADER, with the
7162  * fields enclosed by brackets "[]" replaced with your own identifying
7163  * information: Portions Copyright [yyyy] [name of copyright owner]
7164  *
7165  * CDDL HEADER END
7166  */
7167 /*	Copyright (c) 1988 AT&T	*/
7168 /*	  All Rights Reserved	*/
7169 
7170 /*
7171  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7172  *
7173  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7174  * Use is subject to license terms.
7175  */
7176 
7177 
7178 
7179 
7180 /*
7181  * This header defines the ISO C 1989, ISO C++ 1998, and ISO C 1999
7182  * variable argument definitions.  For legacy support, it also defines
7183  * the pre-standard variable argument definitions.
7184  *
7185  * The varargs definitions within this header are defined in terms of
7186  * implementation definitions.  These implementation definitions reside
7187  * in <sys/va_list.h>.  This organization enables protected use of
7188  * the implementation by other standard headers without introducing
7189  * names into the users' namespace.
7190  */
7191 
7192 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_iso.h" 1 3 4
7193 /*
7194  * CDDL HEADER START
7195  *
7196  * The contents of this file are subject to the terms of the
7197  * Common Development and Distribution License, Version 1.0 only
7198  * (the "License").  You may not use this file except in compliance
7199  * with the License.
7200  *
7201  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7202  * or http://www.opensolaris.org/os/licensing.
7203  * See the License for the specific language governing permissions
7204  * and limitations under the License.
7205  *
7206  * When distributing Covered Code, include this CDDL HEADER in each
7207  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7208  * If applicable, add the following below this CDDL HEADER, with the
7209  * fields enclosed by brackets "[]" replaced with your own identifying
7210  * information: Portions Copyright [yyyy] [name of copyright owner]
7211  *
7212  * CDDL HEADER END
7213  */
7214 /*	Copyright (c) 1988 AT&T	*/
7215 /*	  All Rights Reserved  	*/
7216 
7217 
7218 /*
7219  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7220  * Use is subject to license terms.
7221  */
7222 
7223 /*
7224  * An application should not include this header directly.  Instead it
7225  * should be included only through the inclusion of other Sun headers.
7226  *
7227  * The contents of this header is limited to identifiers specified in the
7228  * C Standard.  Any new identifiers specified in future amendments to the
7229  * C Standard must be placed in this header.  If these new identifiers
7230  * are required to also be in the C++ Standard "std" namespace, then for
7231  * anything other than macro definitions, corresponding "using" directives
7232  * must also be added to <stdarg.h>.
7233  */
7234 
7235 
7236 
7237 
7238 #pragma ident "%Z%%M%	%I%	%E% SMI"
7239 
7240 /*
7241  * This header defines the ISO C 1989 and ISO C++ 1998 variable
7242  * argument definitions.
7243  *
7244  * The varargs definitions within this header are defined in terms of
7245  * implementation definitions.  These implementation definitions reside
7246  * in <sys/va_impl.h>.  This organization enables protected use of
7247  * the implementation by other standard headers without introducing
7248  * names into the users' namespace.
7249  */
7250 
7251 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_impl.h" 1 3 4
7252 /*
7253  * CDDL HEADER START
7254  *
7255  * The contents of this file are subject to the terms of the
7256  * Common Development and Distribution License, Version 1.0 only
7257  * (the "License").  You may not use this file except in compliance
7258  * with the License.
7259  *
7260  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7261  * or http://www.opensolaris.org/os/licensing.
7262  * See the License for the specific language governing permissions
7263  * and limitations under the License.
7264  *
7265  * When distributing Covered Code, include this CDDL HEADER in each
7266  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7267  * If applicable, add the following below this CDDL HEADER, with the
7268  * fields enclosed by brackets "[]" replaced with your own identifying
7269  * information: Portions Copyright [yyyy] [name of copyright owner]
7270  *
7271  * CDDL HEADER END
7272  */
7273 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
7274 /*	  All Rights Reserved	*/
7275 
7276 
7277 /*
7278  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7279  *
7280  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7281  * Use is subject to license terms.
7282  */
7283 
7284 
7285 
7286 
7287 /*
7288  * An application should not include this header directly.  Instead it
7289  * should be included only through the inclusion of other Sun headers,
7290  * specifically <stdarg.h> and <varargs.h>.
7291  *
7292  * This header serves two purposes.
7293  *
7294  * First, it provides a common set of definitions that implementations
7295  * of the various standards for variable argument lists may use.  These
7296  * various standards are implemented in <varargs.h>, <stdarg.h>,
7297  * <iso/stdarg_iso.h>, <iso/stdarg_c99.h>, and <sys/varargs.h>.
7298  *
7299  * Second, it provides varying implementations of the common definitions,
7300  * depending upon the compiler.
7301  */
7302 
7303 /*
7304  * The common definitions exported by this header or compilers using
7305  * this header are:
7306  *
7307  * the macro __va_start(list, name) starting the list iteration
7308  * the macro __va_arg(list, type) getting the current arg and iterating
7309  * the macro __va_copy(to, from) to bookmark the list iteration
7310  * the macro __va_end(list) to end the iteration
7311  *
7312  * In addition, the following are exported via inclusion of <sys/va_list.h>:
7313  *
7314  * the identifier __builtin_va_alist for the variable list pseudo parameter
7315  * the type __va_alist_type for the variable list pseudo parameter
7316  * the type __va_list defining the type of the variable list iterator
7317  */
7318 
7319 /*
7320  * This header uses feature macros (e.g. __BUILTIN_VA_ARG_INCR and
7321  * __BUILTIN_VA_STRUCT), compiler macros (e.g. __GNUC__), and processor
7322  * macros (e.g. __sparc) to determine the protocol appropriate to the
7323  * current compilation.  It is intended that the compilation system
7324  * define the feature, processor, and compiler macros, not the user of
7325  * the system.
7326  */
7327 
7328 /*
7329  * Many compilation systems depend upon the use of special functions
7330  * built into the the compilation system to handle variable argument
7331  * lists.  These built-in symbols may include one or more of the
7332  * following:
7333  *
7334  *      __builtin_va_alist
7335  *      __builtin_va_start
7336  *      __builtin_va_arg_incr
7337  *      __builtin_stdarg_start
7338  *      __builtin_va_end
7339  *      __builtin_va_arg
7340  *      __builtin_va_copy
7341  */
7342 
7343 /*
7344  * The following are defined in <sys/va_list.h>:
7345  *
7346  *      __va_alist_type
7347  *      __va_void()
7348  *      __va_ptr_base
7349  *      ISA definitions via inclusion of <sys/isa_defs.h>
7350  *
7351  * Inclusion of this header also makes visible the symbols in <sys/va_list.h>.
7352  * This header is included in <varargs.h>, <sys/varargs.h> and in <stdarg.h>
7353  * via inclusion of <iso/stdarg_iso.h>.
7354  */
7355 
7356 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h" 1 3 4
7357 /*
7358  * CDDL HEADER START
7359  *
7360  * The contents of this file are subject to the terms of the
7361  * Common Development and Distribution License, Version 1.0 only
7362  * (the "License").  You may not use this file except in compliance
7363  * with the License.
7364  *
7365  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7366  * or http://www.opensolaris.org/os/licensing.
7367  * See the License for the specific language governing permissions
7368  * and limitations under the License.
7369  *
7370  * When distributing Covered Code, include this CDDL HEADER in each
7371  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7372  * If applicable, add the following below this CDDL HEADER, with the
7373  * fields enclosed by brackets "[]" replaced with your own identifying
7374  * information: Portions Copyright [yyyy] [name of copyright owner]
7375  *
7376  * CDDL HEADER END
7377  */
7378 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
7379 /*	  All Rights Reserved	*/
7380 
7381 
7382 /*
7383  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7384  *
7385  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7386  * Use is subject to license terms.
7387  */
7388 # 106 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_impl.h" 2 3 4
7389 # 60 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_iso.h" 2 3 4
7390 # 71 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_iso.h" 3 4
7391 typedef __va_list va_list;
7392 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdarg.h" 2 3 4
7393 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_c99.h" 1 3 4
7394 /*
7395  * CDDL HEADER START
7396  *
7397  * The contents of this file are subject to the terms of the
7398  * Common Development and Distribution License, Version 1.0 only
7399  * (the "License").  You may not use this file except in compliance
7400  * with the License.
7401  *
7402  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7403  * or http://www.opensolaris.org/os/licensing.
7404  * See the License for the specific language governing permissions
7405  * and limitations under the License.
7406  *
7407  * When distributing Covered Code, include this CDDL HEADER in each
7408  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7409  * If applicable, add the following below this CDDL HEADER, with the
7410  * fields enclosed by brackets "[]" replaced with your own identifying
7411  * information: Portions Copyright [yyyy] [name of copyright owner]
7412  *
7413  * CDDL HEADER END
7414  */
7415 /*	Copyright (c) 1988 AT&T	*/
7416 /*	  All Rights Reserved	*/
7417 
7418 
7419 /*
7420  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7421  * Use is subject to license terms.
7422  */
7423 
7424 
7425 
7426 
7427 #pragma ident "%Z%%M%	%I%	%E% SMI"
7428 
7429 /*
7430  * An application should not include this header directly.  Instead it
7431  * should be included only through the inclusion of other Sun headers.
7432  *
7433  * This header defines the va_copy variable argument macro, which is
7434  * new in ISO C 1999, and thus not present in ISO C 1989 and ISO C++
7435  * 1998.  Because this macro is a long-standing Solaris extension, it
7436  * is also permitted in other contexts.
7437  *
7438  * The varargs definitions within this header are defined in terms of
7439  * implementation definitions.  These implementation definitions reside
7440  * in <sys/va_list.h>.  This organization enables protected use of
7441  * the implementation by other standard headers without introducing
7442  * names into the users' namespace.
7443  */
7444 
7445 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1 3 4
7446 /*
7447  * CDDL HEADER START
7448  *
7449  * The contents of this file are subject to the terms of the
7450  * Common Development and Distribution License (the "License").
7451  * You may not use this file except in compliance with the License.
7452  *
7453  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7454  * or http://www.opensolaris.org/os/licensing.
7455  * See the License for the specific language governing permissions
7456  * and limitations under the License.
7457  *
7458  * When distributing Covered Code, include this CDDL HEADER in each
7459  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7460  * If applicable, add the following below this CDDL HEADER, with the
7461  * fields enclosed by brackets "[]" replaced with your own identifying
7462  * information: Portions Copyright [yyyy] [name of copyright owner]
7463  *
7464  * CDDL HEADER END
7465  */
7466 
7467 /*
7468  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
7469  * Copyright 2016 Joyent, Inc.
7470  *
7471  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
7472  * Use is subject to license terms.
7473  */
7474 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_c99.h" 2 3 4
7475 
7476 
7477 
7478 
7479 
7480 /*
7481  * va_copy was initially a Solaris extension to provide a portable
7482  * way to perform a variable argument list ``bookmarking'' function.
7483  * It is now specified in the ISO/IEC 9899:1999 standard.
7484  */
7485 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdarg.h" 2 3 4
7486 
7487 /*
7488  * Allow global visibility for symbols defined in
7489  * C++ "std" namespace in <iso/stdarg_iso.h>.
7490  */
7491 # 68 "/usr/include/openssl/bio.h" 2 3 4
7492 
7493 # 1 "/usr/include/openssl/crypto.h" 1 3 4
7494 /* crypto/crypto.h */
7495 /* ====================================================================
7496  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
7497  *
7498  * Redistribution and use in source and binary forms, with or without
7499  * modification, are permitted provided that the following conditions
7500  * are met:
7501  *
7502  * 1. Redistributions of source code must retain the above copyright
7503  *    notice, this list of conditions and the following disclaimer.
7504  *
7505  * 2. Redistributions in binary form must reproduce the above copyright
7506  *    notice, this list of conditions and the following disclaimer in
7507  *    the documentation and/or other materials provided with the
7508  *    distribution.
7509  *
7510  * 3. All advertising materials mentioning features or use of this
7511  *    software must display the following acknowledgment:
7512  *    "This product includes software developed by the OpenSSL Project
7513  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
7514  *
7515  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
7516  *    endorse or promote products derived from this software without
7517  *    prior written permission. For written permission, please contact
7518  *    openssl-core@openssl.org.
7519  *
7520  * 5. Products derived from this software may not be called "OpenSSL"
7521  *    nor may "OpenSSL" appear in their names without prior written
7522  *    permission of the OpenSSL Project.
7523  *
7524  * 6. Redistributions of any form whatsoever must retain the following
7525  *    acknowledgment:
7526  *    "This product includes software developed by the OpenSSL Project
7527  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
7528  *
7529  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
7530  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7531  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
7532  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
7533  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7534  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
7535  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
7536  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7537  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
7538  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
7539  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
7540  * OF THE POSSIBILITY OF SUCH DAMAGE.
7541  * ====================================================================
7542  *
7543  * This product includes cryptographic software written by Eric Young
7544  * (eay@cryptsoft.com).  This product includes software written by Tim
7545  * Hudson (tjh@cryptsoft.com).
7546  *
7547  */
7548 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
7549  * All rights reserved.
7550  *
7551  * This package is an SSL implementation written
7552  * by Eric Young (eay@cryptsoft.com).
7553  * The implementation was written so as to conform with Netscapes SSL.
7554  *
7555  * This library is free for commercial and non-commercial use as long as
7556  * the following conditions are aheared to.  The following conditions
7557  * apply to all code found in this distribution, be it the RC4, RSA,
7558  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
7559  * included with this distribution is covered by the same copyright terms
7560  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
7561  *
7562  * Copyright remains Eric Young's, and as such any Copyright notices in
7563  * the code are not to be removed.
7564  * If this package is used in a product, Eric Young should be given attribution
7565  * as the author of the parts of the library used.
7566  * This can be in the form of a textual message at program startup or
7567  * in documentation (online or textual) provided with the package.
7568  *
7569  * Redistribution and use in source and binary forms, with or without
7570  * modification, are permitted provided that the following conditions
7571  * are met:
7572  * 1. Redistributions of source code must retain the copyright
7573  *    notice, this list of conditions and the following disclaimer.
7574  * 2. Redistributions in binary form must reproduce the above copyright
7575  *    notice, this list of conditions and the following disclaimer in the
7576  *    documentation and/or other materials provided with the distribution.
7577  * 3. All advertising materials mentioning features or use of this software
7578  *    must display the following acknowledgement:
7579  *    "This product includes cryptographic software written by
7580  *     Eric Young (eay@cryptsoft.com)"
7581  *    The word 'cryptographic' can be left out if the rouines from the library
7582  *    being used are not cryptographic related :-).
7583  * 4. If you include any Windows specific code (or a derivative thereof) from
7584  *    the apps directory (application code) you must include an acknowledgement:
7585  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
7586  *
7587  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
7588  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7589  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7590  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
7591  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7592  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7593  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7594  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7595  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7596  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7597  * SUCH DAMAGE.
7598  *
7599  * The licence and distribution terms for any publically available version or
7600  * derivative of this code cannot be changed.  i.e. this code cannot simply be
7601  * copied and put under another distribution licence
7602  * [including the GNU Public Licence.]
7603  */
7604 /* ====================================================================
7605  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
7606  * ECDH support in OpenSSL originally developed by
7607  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
7608  */
7609 
7610 
7611 
7612 
7613 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 1 3 4
7614 /*
7615  * CDDL HEADER START
7616  *
7617  * The contents of this file are subject to the terms of the
7618  * Common Development and Distribution License (the "License").
7619  * You may not use this file except in compliance with the License.
7620  *
7621  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7622  * or http://www.opensolaris.org/os/licensing.
7623  * See the License for the specific language governing permissions
7624  * and limitations under the License.
7625  *
7626  * When distributing Covered Code, include this CDDL HEADER in each
7627  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7628  * If applicable, add the following below this CDDL HEADER, with the
7629  * fields enclosed by brackets "[]" replaced with your own identifying
7630  * information: Portions Copyright [yyyy] [name of copyright owner]
7631  *
7632  * CDDL HEADER END
7633  */
7634 
7635 /*
7636  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7637  * Copyright (c) 2013 Gary Mills
7638  *
7639  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
7640  */
7641 
7642 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
7643 
7644 /*	Copyright (c) 1988 AT&T	*/
7645 /*	  All Rights Reserved  	*/
7646 # 121 "/usr/include/openssl/crypto.h" 2 3 4
7647 
7648 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
7649 /* e_os2.h */
7650 /* ====================================================================
7651  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
7652  *
7653  * Redistribution and use in source and binary forms, with or without
7654  * modification, are permitted provided that the following conditions
7655  * are met:
7656  *
7657  * 1. Redistributions of source code must retain the above copyright
7658  *    notice, this list of conditions and the following disclaimer.
7659  *
7660  * 2. Redistributions in binary form must reproduce the above copyright
7661  *    notice, this list of conditions and the following disclaimer in
7662  *    the documentation and/or other materials provided with the
7663  *    distribution.
7664  *
7665  * 3. All advertising materials mentioning features or use of this
7666  *    software must display the following acknowledgment:
7667  *    "This product includes software developed by the OpenSSL Project
7668  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
7669  *
7670  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
7671  *    endorse or promote products derived from this software without
7672  *    prior written permission. For written permission, please contact
7673  *    openssl-core@openssl.org.
7674  *
7675  * 5. Products derived from this software may not be called "OpenSSL"
7676  *    nor may "OpenSSL" appear in their names without prior written
7677  *    permission of the OpenSSL Project.
7678  *
7679  * 6. Redistributions of any form whatsoever must retain the following
7680  *    acknowledgment:
7681  *    "This product includes software developed by the OpenSSL Project
7682  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
7683  *
7684  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
7685  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7686  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
7687  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
7688  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7689  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
7690  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
7691  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7692  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
7693  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
7694  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
7695  * OF THE POSSIBILITY OF SUCH DAMAGE.
7696  * ====================================================================
7697  *
7698  * This product includes cryptographic software written by Eric Young
7699  * (eay@cryptsoft.com).  This product includes software written by Tim
7700  * Hudson (tjh@cryptsoft.com).
7701  *
7702  */
7703 
7704 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
7705 /* opensslconf.h */
7706 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
7707 
7708 
7709 
7710 
7711 /* OpenSSL was configured with the following options: */
7712 # 108 "/usr/include/openssl/opensslconf.h" 3 4
7713 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
7714    asks for it.  This is a transient feature that is provided for those
7715    who haven't had the time to do the appropriate changes in their
7716    applications.  */
7717 # 204 "/usr/include/openssl/opensslconf.h" 3 4
7718 /* crypto/opensslconf.h.in */
7719 
7720 /* Generate 80386 code? */
7721 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
7722 # 123 "/usr/include/openssl/crypto.h" 2 3 4
7723 
7724 
7725 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
7726 /*
7727  * CDDL HEADER START
7728  *
7729  * The contents of this file are subject to the terms of the
7730  * Common Development and Distribution License (the "License").
7731  * You may not use this file except in compliance with the License.
7732  *
7733  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7734  * or http://www.opensolaris.org/os/licensing.
7735  * See the License for the specific language governing permissions
7736  * and limitations under the License.
7737  *
7738  * When distributing Covered Code, include this CDDL HEADER in each
7739  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7740  * If applicable, add the following below this CDDL HEADER, with the
7741  * fields enclosed by brackets "[]" replaced with your own identifying
7742  * information: Portions Copyright [yyyy] [name of copyright owner]
7743  *
7744  * CDDL HEADER END
7745  */
7746 
7747 /*
7748  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7749  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
7750  */
7751 
7752 /*	Copyright (c) 1988 AT&T	*/
7753 /*	  All Rights Reserved  	*/
7754 
7755 /*
7756  * User-visible pieces of the ANSI C standard I/O package.
7757  */
7758 # 126 "/usr/include/openssl/crypto.h" 2 3 4
7759 
7760 
7761 # 1 "/usr/include/openssl/stack.h" 1 3 4
7762 /* crypto/stack/stack.h */
7763 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
7764  * All rights reserved.
7765  *
7766  * This package is an SSL implementation written
7767  * by Eric Young (eay@cryptsoft.com).
7768  * The implementation was written so as to conform with Netscapes SSL.
7769  *
7770  * This library is free for commercial and non-commercial use as long as
7771  * the following conditions are aheared to.  The following conditions
7772  * apply to all code found in this distribution, be it the RC4, RSA,
7773  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
7774  * included with this distribution is covered by the same copyright terms
7775  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
7776  *
7777  * Copyright remains Eric Young's, and as such any Copyright notices in
7778  * the code are not to be removed.
7779  * If this package is used in a product, Eric Young should be given attribution
7780  * as the author of the parts of the library used.
7781  * This can be in the form of a textual message at program startup or
7782  * in documentation (online or textual) provided with the package.
7783  *
7784  * Redistribution and use in source and binary forms, with or without
7785  * modification, are permitted provided that the following conditions
7786  * are met:
7787  * 1. Redistributions of source code must retain the copyright
7788  *    notice, this list of conditions and the following disclaimer.
7789  * 2. Redistributions in binary form must reproduce the above copyright
7790  *    notice, this list of conditions and the following disclaimer in the
7791  *    documentation and/or other materials provided with the distribution.
7792  * 3. All advertising materials mentioning features or use of this software
7793  *    must display the following acknowledgement:
7794  *    "This product includes cryptographic software written by
7795  *     Eric Young (eay@cryptsoft.com)"
7796  *    The word 'cryptographic' can be left out if the rouines from the library
7797  *    being used are not cryptographic related :-).
7798  * 4. If you include any Windows specific code (or a derivative thereof) from
7799  *    the apps directory (application code) you must include an acknowledgement:
7800  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
7801  *
7802  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
7803  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7804  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7805  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
7806  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7807  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7808  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7809  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7810  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7811  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7812  * SUCH DAMAGE.
7813  *
7814  * The licence and distribution terms for any publically available version or
7815  * derivative of this code cannot be changed.  i.e. this code cannot simply be
7816  * copied and put under another distribution licence
7817  * [including the GNU Public Licence.]
7818  */
7819 # 66 "/usr/include/openssl/stack.h" 3 4
7820 typedef struct stack_st {
7821     int num;
7822     char **data;
7823     int sorted;
7824     int num_alloc;
7825     int (*comp) (const void *, const void *);
7826 } _STACK; /* Use STACK_OF(...) instead */
7827 
7828 
7829 
7830 
7831 int sk_num(const _STACK *);
7832 void *sk_value(const _STACK *, int);
7833 
7834 void *sk_set(_STACK *, int, void *);
7835 
7836 _STACK *sk_new(int (*cmp) (const void *, const void *));
7837 _STACK *sk_new_null(void);
7838 void sk_free(_STACK *);
7839 void sk_pop_free(_STACK *st, void (*func) (void *));
7840 _STACK *sk_deep_copy(_STACK *, void *(*)(void *), void (*)(void *));
7841 int sk_insert(_STACK *sk, void *data, int where);
7842 void *sk_delete(_STACK *st, int loc);
7843 void *sk_delete_ptr(_STACK *st, void *p);
7844 int sk_find(_STACK *st, void *data);
7845 int sk_find_ex(_STACK *st, void *data);
7846 int sk_push(_STACK *st, void *data);
7847 int sk_unshift(_STACK *st, void *data);
7848 void *sk_shift(_STACK *st);
7849 void *sk_pop(_STACK *st);
7850 void sk_zero(_STACK *st);
7851 int (*sk_set_cmp_func(_STACK *sk, int (*c) (const void *, const void *)))
7852  (const void *, const void *);
7853 _STACK *sk_dup(_STACK *st);
7854 void sk_sort(_STACK *st);
7855 int sk_is_sorted(const _STACK *st);
7856 # 129 "/usr/include/openssl/crypto.h" 2 3 4
7857 # 1 "/usr/include/openssl/safestack.h" 1 3 4
7858 /* ====================================================================
7859  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
7860  *
7861  * Redistribution and use in source and binary forms, with or without
7862  * modification, are permitted provided that the following conditions
7863  * are met:
7864  *
7865  * 1. Redistributions of source code must retain the above copyright
7866  *    notice, this list of conditions and the following disclaimer.
7867  *
7868  * 2. Redistributions in binary form must reproduce the above copyright
7869  *    notice, this list of conditions and the following disclaimer in
7870  *    the documentation and/or other materials provided with the
7871  *    distribution.
7872  *
7873  * 3. All advertising materials mentioning features or use of this
7874  *    software must display the following acknowledgment:
7875  *    "This product includes software developed by the OpenSSL Project
7876  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
7877  *
7878  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
7879  *    endorse or promote products derived from this software without
7880  *    prior written permission. For written permission, please contact
7881  *    openssl-core@openssl.org.
7882  *
7883  * 5. Products derived from this software may not be called "OpenSSL"
7884  *    nor may "OpenSSL" appear in their names without prior written
7885  *    permission of the OpenSSL Project.
7886  *
7887  * 6. Redistributions of any form whatsoever must retain the following
7888  *    acknowledgment:
7889  *    "This product includes software developed by the OpenSSL Project
7890  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
7891  *
7892  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
7893  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7894  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
7895  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
7896  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7897  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
7898  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
7899  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7900  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
7901  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
7902  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
7903  * OF THE POSSIBILITY OF SUCH DAMAGE.
7904  * ====================================================================
7905  *
7906  * This product includes cryptographic software written by Eric Young
7907  * (eay@cryptsoft.com).  This product includes software written by Tim
7908  * Hudson (tjh@cryptsoft.com).
7909  *
7910  */
7911 
7912 
7913 
7914 
7915 # 1 "/usr/include/openssl/stack.h" 1 3 4
7916 /* crypto/stack/stack.h */
7917 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
7918  * All rights reserved.
7919  *
7920  * This package is an SSL implementation written
7921  * by Eric Young (eay@cryptsoft.com).
7922  * The implementation was written so as to conform with Netscapes SSL.
7923  *
7924  * This library is free for commercial and non-commercial use as long as
7925  * the following conditions are aheared to.  The following conditions
7926  * apply to all code found in this distribution, be it the RC4, RSA,
7927  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
7928  * included with this distribution is covered by the same copyright terms
7929  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
7930  *
7931  * Copyright remains Eric Young's, and as such any Copyright notices in
7932  * the code are not to be removed.
7933  * If this package is used in a product, Eric Young should be given attribution
7934  * as the author of the parts of the library used.
7935  * This can be in the form of a textual message at program startup or
7936  * in documentation (online or textual) provided with the package.
7937  *
7938  * Redistribution and use in source and binary forms, with or without
7939  * modification, are permitted provided that the following conditions
7940  * are met:
7941  * 1. Redistributions of source code must retain the copyright
7942  *    notice, this list of conditions and the following disclaimer.
7943  * 2. Redistributions in binary form must reproduce the above copyright
7944  *    notice, this list of conditions and the following disclaimer in the
7945  *    documentation and/or other materials provided with the distribution.
7946  * 3. All advertising materials mentioning features or use of this software
7947  *    must display the following acknowledgement:
7948  *    "This product includes cryptographic software written by
7949  *     Eric Young (eay@cryptsoft.com)"
7950  *    The word 'cryptographic' can be left out if the rouines from the library
7951  *    being used are not cryptographic related :-).
7952  * 4. If you include any Windows specific code (or a derivative thereof) from
7953  *    the apps directory (application code) you must include an acknowledgement:
7954  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
7955  *
7956  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
7957  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7958  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7959  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
7960  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7961  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7962  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7963  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7964  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7965  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7966  * SUCH DAMAGE.
7967  *
7968  * The licence and distribution terms for any publically available version or
7969  * derivative of this code cannot be changed.  i.e. this code cannot simply be
7970  * copied and put under another distribution licence
7971  * [including the GNU Public Licence.]
7972  */
7973 # 59 "/usr/include/openssl/safestack.h" 2 3 4
7974 # 69 "/usr/include/openssl/safestack.h" 3 4
7975 /*
7976  * In C++ we get problems because an explicit cast is needed from (void *) we
7977  * use CHECKED_STACK_OF to ensure the correct type is passed in the macros
7978  * below.
7979  */
7980 # 102 "/usr/include/openssl/safestack.h" 3 4
7981 /* nada (obsolete in new safestack approach)*/
7982 
7983 
7984 /*-
7985  * Strings are special: normally an lhash entry will point to a single
7986  * (somewhat) mutable object. In the case of strings:
7987  *
7988  * a) Instead of a single char, there is an array of chars, NUL-terminated.
7989  * b) The string may have be immutable.
7990  *
7991  * So, they need their own declarations. Especially important for
7992  * type-checking tools, such as Deputy.
7993  *
7994  * In practice, however, it appears to be hard to have a const
7995  * string. For now, I'm settling for dealing with the fact it is a
7996  * string at all.
7997  */
7998 typedef char *OPENSSL_STRING;
7999 
8000 typedef const char *OPENSSL_CSTRING;
8001 
8002 /*
8003  * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but
8004  * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned
8005  * above, instead of a single char each entry is a NUL-terminated array of
8006  * chars. So, we have to implement STRING specially for STACK_OF. This is
8007  * dealt with in the autogenerated macros below.
8008  */
8009 
8010 struct stack_st_OPENSSL_STRING { _STACK stack; };
8011 
8012 /*
8013  * Similarly, we sometimes use a block of characters, NOT nul-terminated.
8014  * These should also be distinguished from "normal" stacks.
8015  */
8016 typedef void *OPENSSL_BLOCK;
8017 struct stack_st_OPENSSL_BLOCK { _STACK stack; };
8018 
8019 /*
8020  * SKM_sk_... stack macros are internal to safestack.h: never use them
8021  * directly, use sk_<type>_... instead
8022  */
8023 # 211 "/usr/include/openssl/safestack.h" 3 4
8024 /*
8025  * This block of defines is updated by util/mkstack.pl, please do not touch!
8026  */
8027 # 130 "/usr/include/openssl/crypto.h" 2 3 4
8028 # 1 "/usr/include/openssl/opensslv.h" 1 3 4
8029 
8030 
8031 
8032 
8033 
8034 
8035 
8036 /*-
8037  * Numeric release version identifier:
8038  * MNNFFPPS: major minor fix patch status
8039  * The status nibble has one of the values 0 for development, 1 to e for betas
8040  * 1 to 14, and f for release.  The patch level is exactly that.
8041  * For example:
8042  * 0.9.3-dev      0x00903000
8043  * 0.9.3-beta1    0x00903001
8044  * 0.9.3-beta2-dev 0x00903002
8045  * 0.9.3-beta2    0x00903002 (same as ...beta2-dev)
8046  * 0.9.3          0x0090300f
8047  * 0.9.3a         0x0090301f
8048  * 0.9.4          0x0090400f
8049  * 1.2.3z         0x102031af
8050  *
8051  * For continuity reasons (because 0.9.5 is already out, and is coded
8052  * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level
8053  * part is slightly different, by setting the highest bit.  This means
8054  * that 0.9.5a looks like this: 0x0090581f.  At 0.9.6, we can start
8055  * with 0x0090600S...
8056  *
8057  * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.)
8058  * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
8059  *  major minor fix final patch/beta)
8060  */
8061 # 41 "/usr/include/openssl/opensslv.h" 3 4
8062 /*-
8063  * The macros below are to be used for shared library (.so, .dll, ...)
8064  * versioning.  That kind of versioning works a bit differently between
8065  * operating systems.  The most usual scheme is to set a major and a minor
8066  * number, and have the runtime loader check that the major number is equal
8067  * to what it was at application link time, while the minor number has to
8068  * be greater or equal to what it was at application link time.  With this
8069  * scheme, the version number is usually part of the file name, like this:
8070  *
8071  *      libcrypto.so.0.9
8072  *
8073  * Some unixen also make a softlink with the major verson number only:
8074  *
8075  *      libcrypto.so.0
8076  *
8077  * On Tru64 and IRIX 6.x it works a little bit differently.  There, the
8078  * shared library version is stored in the file, and is actually a series
8079  * of versions, separated by colons.  The rightmost version present in the
8080  * library when linking an application is stored in the application to be
8081  * matched at run time.  When the application is run, a check is done to
8082  * see if the library version stored in the application matches any of the
8083  * versions in the version string of the library itself.
8084  * This version string can be constructed in any way, depending on what
8085  * kind of matching is desired.  However, to implement the same scheme as
8086  * the one used in the other unixen, all compatible versions, from lowest
8087  * to highest, should be part of the string.  Consecutive builds would
8088  * give the following versions strings:
8089  *
8090  *      3.0
8091  *      3.0:3.1
8092  *      3.0:3.1:3.2
8093  *      4.0
8094  *      4.0:4.1
8095  *
8096  * Notice how version 4 is completely incompatible with version, and
8097  * therefore give the breach you can see.
8098  *
8099  * There may be other schemes as well that I haven't yet discovered.
8100  *
8101  * So, here's the way it works here: first of all, the library version
8102  * number doesn't need at all to match the overall OpenSSL version.
8103  * However, it's nice and more understandable if it actually does.
8104  * The current library version is stored in the macro SHLIB_VERSION_NUMBER,
8105  * which is just a piece of text in the format "M.m.e" (Major, minor, edit).
8106  * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways,
8107  * we need to keep a history of version numbers, which is done in the
8108  * macro SHLIB_VERSION_HISTORY.  The numbers are separated by colons and
8109  * should only keep the versions that are binary compatible with the current.
8110  */
8111 # 131 "/usr/include/openssl/crypto.h" 2 3 4
8112 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
8113 /* ====================================================================
8114  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
8115  *
8116  * Redistribution and use in source and binary forms, with or without
8117  * modification, are permitted provided that the following conditions
8118  * are met:
8119  *
8120  * 1. Redistributions of source code must retain the above copyright
8121  *    notice, this list of conditions and the following disclaimer.
8122  *
8123  * 2. Redistributions in binary form must reproduce the above copyright
8124  *    notice, this list of conditions and the following disclaimer in
8125  *    the documentation and/or other materials provided with the
8126  *    distribution.
8127  *
8128  * 3. All advertising materials mentioning features or use of this
8129  *    software must display the following acknowledgment:
8130  *    "This product includes software developed by the OpenSSL Project
8131  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8132  *
8133  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8134  *    endorse or promote products derived from this software without
8135  *    prior written permission. For written permission, please contact
8136  *    openssl-core@openssl.org.
8137  *
8138  * 5. Products derived from this software may not be called "OpenSSL"
8139  *    nor may "OpenSSL" appear in their names without prior written
8140  *    permission of the OpenSSL Project.
8141  *
8142  * 6. Redistributions of any form whatsoever must retain the following
8143  *    acknowledgment:
8144  *    "This product includes software developed by the OpenSSL Project
8145  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8146  *
8147  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8148  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8149  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8150  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8151  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8152  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8153  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8154  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8155  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8156  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8157  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8158  * OF THE POSSIBILITY OF SUCH DAMAGE.
8159  * ====================================================================
8160  *
8161  * This product includes cryptographic software written by Eric Young
8162  * (eay@cryptsoft.com).  This product includes software written by Tim
8163  * Hudson (tjh@cryptsoft.com).
8164  *
8165  */
8166 # 62 "/usr/include/openssl/ossl_typ.h" 3 4
8167 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
8168 /* e_os2.h */
8169 /* ====================================================================
8170  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
8171  *
8172  * Redistribution and use in source and binary forms, with or without
8173  * modification, are permitted provided that the following conditions
8174  * are met:
8175  *
8176  * 1. Redistributions of source code must retain the above copyright
8177  *    notice, this list of conditions and the following disclaimer.
8178  *
8179  * 2. Redistributions in binary form must reproduce the above copyright
8180  *    notice, this list of conditions and the following disclaimer in
8181  *    the documentation and/or other materials provided with the
8182  *    distribution.
8183  *
8184  * 3. All advertising materials mentioning features or use of this
8185  *    software must display the following acknowledgment:
8186  *    "This product includes software developed by the OpenSSL Project
8187  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8188  *
8189  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8190  *    endorse or promote products derived from this software without
8191  *    prior written permission. For written permission, please contact
8192  *    openssl-core@openssl.org.
8193  *
8194  * 5. Products derived from this software may not be called "OpenSSL"
8195  *    nor may "OpenSSL" appear in their names without prior written
8196  *    permission of the OpenSSL Project.
8197  *
8198  * 6. Redistributions of any form whatsoever must retain the following
8199  *    acknowledgment:
8200  *    "This product includes software developed by the OpenSSL Project
8201  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8202  *
8203  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8204  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8205  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8206  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8207  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8208  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8209  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8210  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8211  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8212  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8213  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8214  * OF THE POSSIBILITY OF SUCH DAMAGE.
8215  * ====================================================================
8216  *
8217  * This product includes cryptographic software written by Eric Young
8218  * (eay@cryptsoft.com).  This product includes software written by Tim
8219  * Hudson (tjh@cryptsoft.com).
8220  *
8221  */
8222 
8223 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
8224 /* opensslconf.h */
8225 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
8226 
8227 
8228 
8229 
8230 /* OpenSSL was configured with the following options: */
8231 # 108 "/usr/include/openssl/opensslconf.h" 3 4
8232 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
8233    asks for it.  This is a transient feature that is provided for those
8234    who haven't had the time to do the appropriate changes in their
8235    applications.  */
8236 # 204 "/usr/include/openssl/opensslconf.h" 3 4
8237 /* crypto/opensslconf.h.in */
8238 
8239 /* Generate 80386 code? */
8240 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
8241 # 63 "/usr/include/openssl/ossl_typ.h" 2 3 4
8242 # 83 "/usr/include/openssl/ossl_typ.h" 3 4
8243 typedef struct asn1_string_st ASN1_INTEGER;
8244 typedef struct asn1_string_st ASN1_ENUMERATED;
8245 typedef struct asn1_string_st ASN1_BIT_STRING;
8246 typedef struct asn1_string_st ASN1_OCTET_STRING;
8247 typedef struct asn1_string_st ASN1_PRINTABLESTRING;
8248 typedef struct asn1_string_st ASN1_T61STRING;
8249 typedef struct asn1_string_st ASN1_IA5STRING;
8250 typedef struct asn1_string_st ASN1_GENERALSTRING;
8251 typedef struct asn1_string_st ASN1_UNIVERSALSTRING;
8252 typedef struct asn1_string_st ASN1_BMPSTRING;
8253 typedef struct asn1_string_st ASN1_UTCTIME;
8254 typedef struct asn1_string_st ASN1_TIME;
8255 typedef struct asn1_string_st ASN1_GENERALIZEDTIME;
8256 typedef struct asn1_string_st ASN1_VISIBLESTRING;
8257 typedef struct asn1_string_st ASN1_UTF8STRING;
8258 typedef struct asn1_string_st ASN1_STRING;
8259 typedef int ASN1_BOOLEAN;
8260 typedef int ASN1_NULL;
8261 
8262 
8263 typedef struct asn1_object_st ASN1_OBJECT;
8264 
8265 typedef struct ASN1_ITEM_st ASN1_ITEM;
8266 typedef struct asn1_pctx_st ASN1_PCTX;
8267 # 120 "/usr/include/openssl/ossl_typ.h" 3 4
8268 typedef struct bignum_st BIGNUM;
8269 typedef struct bignum_ctx BN_CTX;
8270 typedef struct bn_blinding_st BN_BLINDING;
8271 typedef struct bn_mont_ctx_st BN_MONT_CTX;
8272 typedef struct bn_recp_ctx_st BN_RECP_CTX;
8273 typedef struct bn_gencb_st BN_GENCB;
8274 
8275 typedef struct buf_mem_st BUF_MEM;
8276 
8277 typedef struct evp_cipher_st EVP_CIPHER;
8278 typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
8279 typedef struct env_md_st EVP_MD;
8280 typedef struct env_md_ctx_st EVP_MD_CTX;
8281 typedef struct evp_pkey_st EVP_PKEY;
8282 
8283 typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD;
8284 
8285 typedef struct evp_pkey_method_st EVP_PKEY_METHOD;
8286 typedef struct evp_pkey_ctx_st EVP_PKEY_CTX;
8287 
8288 typedef struct dh_st DH;
8289 typedef struct dh_method DH_METHOD;
8290 
8291 typedef struct dsa_st DSA;
8292 typedef struct dsa_method DSA_METHOD;
8293 
8294 typedef struct rsa_st RSA;
8295 typedef struct rsa_meth_st RSA_METHOD;
8296 
8297 typedef struct rand_meth_st RAND_METHOD;
8298 
8299 typedef struct ecdh_method ECDH_METHOD;
8300 typedef struct ecdsa_method ECDSA_METHOD;
8301 
8302 typedef struct x509_st X509;
8303 typedef struct X509_algor_st X509_ALGOR;
8304 typedef struct X509_crl_st X509_CRL;
8305 typedef struct x509_crl_method_st X509_CRL_METHOD;
8306 typedef struct x509_revoked_st X509_REVOKED;
8307 typedef struct X509_name_st X509_NAME;
8308 typedef struct X509_pubkey_st X509_PUBKEY;
8309 typedef struct x509_store_st X509_STORE;
8310 typedef struct x509_store_ctx_st X509_STORE_CTX;
8311 
8312 typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO;
8313 
8314 typedef struct v3_ext_ctx X509V3_CTX;
8315 typedef struct conf_st CONF;
8316 
8317 typedef struct store_st STORE;
8318 typedef struct store_method_st STORE_METHOD;
8319 
8320 typedef struct ui_st UI;
8321 typedef struct ui_method_st UI_METHOD;
8322 
8323 typedef struct st_ERR_FNS ERR_FNS;
8324 
8325 typedef struct engine_st ENGINE;
8326 typedef struct ssl_st SSL;
8327 typedef struct ssl_ctx_st SSL_CTX;
8328 
8329 typedef struct comp_method_st COMP_METHOD;
8330 
8331 typedef struct X509_POLICY_NODE_st X509_POLICY_NODE;
8332 typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL;
8333 typedef struct X509_POLICY_TREE_st X509_POLICY_TREE;
8334 typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE;
8335 
8336 typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID;
8337 typedef struct DIST_POINT_st DIST_POINT;
8338 typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT;
8339 typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS;
8340 
8341   /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */
8342 
8343 
8344 
8345 typedef struct crypto_ex_data_st CRYPTO_EX_DATA;
8346 /* Callback types for crypto.h */
8347 typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
8348                            int idx, long argl, void *argp);
8349 typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
8350                              int idx, long argl, void *argp);
8351 typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from,
8352                            void *from_d, int idx, long argl, void *argp);
8353 
8354 typedef struct ocsp_req_ctx_st OCSP_REQ_CTX;
8355 typedef struct ocsp_response_st OCSP_RESPONSE;
8356 typedef struct ocsp_responder_id_st OCSP_RESPID;
8357 # 132 "/usr/include/openssl/crypto.h" 2 3 4
8358 
8359 
8360 
8361 
8362 
8363 /*
8364  * Resolve problems on some operating systems with symbol names that clash
8365  * one way or another
8366  */
8367 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
8368 /* ====================================================================
8369  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
8370  *
8371  * Redistribution and use in source and binary forms, with or without
8372  * modification, are permitted provided that the following conditions
8373  * are met:
8374  *
8375  * 1. Redistributions of source code must retain the above copyright
8376  *    notice, this list of conditions and the following disclaimer.
8377  *
8378  * 2. Redistributions in binary form must reproduce the above copyright
8379  *    notice, this list of conditions and the following disclaimer in
8380  *    the documentation and/or other materials provided with the
8381  *    distribution.
8382  *
8383  * 3. All advertising materials mentioning features or use of this
8384  *    software must display the following acknowledgment:
8385  *    "This product includes software developed by the OpenSSL Project
8386  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8387  *
8388  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8389  *    endorse or promote products derived from this software without
8390  *    prior written permission. For written permission, please contact
8391  *    openssl-core@openssl.org.
8392  *
8393  * 5. Products derived from this software may not be called "OpenSSL"
8394  *    nor may "OpenSSL" appear in their names without prior written
8395  *    permission of the OpenSSL Project.
8396  *
8397  * 6. Redistributions of any form whatsoever must retain the following
8398  *    acknowledgment:
8399  *    "This product includes software developed by the OpenSSL Project
8400  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8401  *
8402  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8403  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8404  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8405  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8406  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8407  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8408  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8409  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8410  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8411  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8412  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8413  * OF THE POSSIBILITY OF SUCH DAMAGE.
8414  * ====================================================================
8415  *
8416  * This product includes cryptographic software written by Eric Young
8417  * (eay@cryptsoft.com).  This product includes software written by Tim
8418  * Hudson (tjh@cryptsoft.com).
8419  *
8420  */
8421 
8422 
8423 
8424 
8425 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
8426 /* e_os2.h */
8427 /* ====================================================================
8428  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
8429  *
8430  * Redistribution and use in source and binary forms, with or without
8431  * modification, are permitted provided that the following conditions
8432  * are met:
8433  *
8434  * 1. Redistributions of source code must retain the above copyright
8435  *    notice, this list of conditions and the following disclaimer.
8436  *
8437  * 2. Redistributions in binary form must reproduce the above copyright
8438  *    notice, this list of conditions and the following disclaimer in
8439  *    the documentation and/or other materials provided with the
8440  *    distribution.
8441  *
8442  * 3. All advertising materials mentioning features or use of this
8443  *    software must display the following acknowledgment:
8444  *    "This product includes software developed by the OpenSSL Project
8445  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8446  *
8447  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8448  *    endorse or promote products derived from this software without
8449  *    prior written permission. For written permission, please contact
8450  *    openssl-core@openssl.org.
8451  *
8452  * 5. Products derived from this software may not be called "OpenSSL"
8453  *    nor may "OpenSSL" appear in their names without prior written
8454  *    permission of the OpenSSL Project.
8455  *
8456  * 6. Redistributions of any form whatsoever must retain the following
8457  *    acknowledgment:
8458  *    "This product includes software developed by the OpenSSL Project
8459  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8460  *
8461  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8462  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8463  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8464  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8465  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8466  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8467  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8468  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8469  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8470  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8471  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8472  * OF THE POSSIBILITY OF SUCH DAMAGE.
8473  * ====================================================================
8474  *
8475  * This product includes cryptographic software written by Eric Young
8476  * (eay@cryptsoft.com).  This product includes software written by Tim
8477  * Hudson (tjh@cryptsoft.com).
8478  *
8479  */
8480 
8481 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
8482 /* opensslconf.h */
8483 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
8484 
8485 
8486 
8487 
8488 /* OpenSSL was configured with the following options: */
8489 # 108 "/usr/include/openssl/opensslconf.h" 3 4
8490 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
8491    asks for it.  This is a transient feature that is provided for those
8492    who haven't had the time to do the appropriate changes in their
8493    applications.  */
8494 # 204 "/usr/include/openssl/opensslconf.h" 3 4
8495 /* crypto/opensslconf.h.in */
8496 
8497 /* Generate 80386 code? */
8498 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
8499 # 59 "/usr/include/openssl/symhacks.h" 2 3 4
8500 
8501 /*
8502  * Hacks to solve the problem with linkers incapable of handling very long
8503  * symbol names.  In the case of VMS, the limit is 31 characters on VMS for
8504  * VAX.
8505  */
8506 /*
8507  * Note that this affects util/libeay.num and util/ssleay.num...  you may
8508  * change those manually, but that's not recommended, as those files are
8509  * controlled centrally and updated on Unix, and the central definition may
8510  * disagree with yours, which in turn may come with shareable library
8511  * incompatibilities.
8512  */
8513 # 481 "/usr/include/openssl/symhacks.h" 3 4
8514 /* Case insensitive linking causes problems.... */
8515 # 142 "/usr/include/openssl/crypto.h" 2 3 4
8516 
8517 
8518 
8519 
8520 
8521 /* Backward compatibility to SSLeay */
8522 /*
8523  * This is more to be used to check the correct DLL is being used in the MS
8524  * world.
8525  */
8526 
8527 
8528 /* #define SSLEAY_OPTIONS       1 no longer supported */
8529 
8530 
8531 
8532 
8533 
8534 /* Already declared in ossl_typ.h */
8535 # 174 "/usr/include/openssl/crypto.h" 3 4
8536 /* A generic structure to pass assorted data in a expandable way */
8537 typedef struct openssl_item_st {
8538     int code;
8539     void *value; /* Not used for flag attributes */
8540     size_t value_size; /* Max size of value for output, length for
8541                                  * input */
8542     size_t *value_length; /* Returned length of value for output */
8543 } OPENSSL_ITEM;
8544 
8545 /*
8546  * When changing the CRYPTO_LOCK_* list, be sure to maintin the text lock
8547  * names in cryptlib.c
8548  */
8549 # 256 "/usr/include/openssl/crypto.h" 3 4
8550 /*
8551  * Some applications as well as some parts of OpenSSL need to allocate and
8552  * deallocate locks in a dynamic fashion.  The following typedef makes this
8553  * possible in a type-safe manner.
8554  */
8555 /* struct CRYPTO_dynlock_value has to be defined by the application. */
8556 typedef struct {
8557     int references;
8558     struct CRYPTO_dynlock_value *data;
8559 } CRYPTO_dynlock;
8560 
8561 /*
8562  * The following can be used to detect memory leaks in the SSLeay library. It
8563  * used, it turns on malloc checking
8564  */
8565 
8566 
8567 
8568 
8569 
8570 
8571 /*
8572  * The following are bit values to turn on or off options connected to the
8573  * malloc checking functionality
8574  */
8575 
8576 /* Adds time to the memory checking information */
8577 
8578 /* Adds thread number to the memory checking information */
8579 
8580 
8581 
8582 
8583 /* predec of the BIO type */
8584 typedef struct bio_st BIO_dummy;
8585 
8586 struct crypto_ex_data_st {
8587     struct stack_st_void *sk;
8588     /* gcc is screwing up this data structure :-( */
8589     int dummy;
8590 };
8591 struct stack_st_void { _STACK stack; };
8592 
8593 /*
8594  * This stuff is basically class callback functions The current classes are
8595  * SSL_CTX, SSL, SSL_SESSION, and a few more
8596  */
8597 
8598 typedef struct crypto_ex_data_func_st {
8599     long argl; /* Arbitary long */
8600     void *argp; /* Arbitary void * */
8601     CRYPTO_EX_new *new_func;
8602     CRYPTO_EX_free *free_func;
8603     CRYPTO_EX_dup *dup_func;
8604 } CRYPTO_EX_DATA_FUNCS;
8605 
8606 struct stack_st_CRYPTO_EX_DATA_FUNCS { _STACK stack; };
8607 
8608 /*
8609  * Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA
8610  * entry.
8611  */
8612 # 336 "/usr/include/openssl/crypto.h" 3 4
8613 /*
8614  * Dynamically assigned indexes start from this value (don't use directly,
8615  * use via CRYPTO_ex_data_new_class).
8616  */
8617 
8618 
8619 /*
8620  * This is the default callbacks, but we can have others as well: this is
8621  * needed in Win32 where the application malloc and the library malloc may
8622  * not be the same.
8623  */
8624 # 356 "/usr/include/openssl/crypto.h" 3 4
8625 /*
8626  * Set standard debugging functions (not done by default unless CRYPTO_MDEBUG
8627  * is defined)
8628  */
8629 # 369 "/usr/include/openssl/crypto.h" 3 4
8630 int CRYPTO_mem_ctrl(int mode);
8631 int CRYPTO_is_mem_check_on(void);
8632 
8633 /* for applications */
8634 
8635 
8636 
8637 /* for library-internal use */
8638 # 396 "/usr/include/openssl/crypto.h" 3 4
8639 const char *SSLeay_version(int type);
8640 unsigned long SSLeay(void);
8641 
8642 int OPENSSL_issetugid(void);
8643 
8644 /* An opaque type representing an implementation of "ex_data" support */
8645 typedef struct st_CRYPTO_EX_DATA_IMPL CRYPTO_EX_DATA_IMPL;
8646 /* Return an opaque pointer to the current "ex_data" implementation */
8647 const CRYPTO_EX_DATA_IMPL *CRYPTO_get_ex_data_implementation(void);
8648 /* Sets the "ex_data" implementation to be used (if it's not too late) */
8649 int CRYPTO_set_ex_data_implementation(const CRYPTO_EX_DATA_IMPL *i);
8650 /* Get a new "ex_data" class, and return the corresponding "class_index" */
8651 int CRYPTO_ex_data_new_class(void);
8652 /* Within a given class, get/register a new index */
8653 int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
8654                             CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func,
8655                             CRYPTO_EX_free *free_func);
8656 /*
8657  * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a
8658  * given class (invokes whatever per-class callbacks are applicable)
8659  */
8660 int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
8661 int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
8662                        CRYPTO_EX_DATA *from);
8663 void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
8664 /*
8665  * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular
8666  * index (relative to the class type involved)
8667  */
8668 int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
8669 void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
8670 /*
8671  * This function cleans up all "ex_data" state. It mustn't be called under
8672  * potential race-conditions.
8673  */
8674 void CRYPTO_cleanup_all_ex_data(void);
8675 
8676 int CRYPTO_get_new_lockid(char *name);
8677 
8678 int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */
8679 void CRYPTO_lock(int mode, int type, const char *file, int line);
8680 void CRYPTO_set_locking_callback(void (*func) (int mode, int type,
8681                                                const char *file, int line));
8682 void (*CRYPTO_get_locking_callback(void)) (int mode, int type,
8683                                            const char *file, int line);
8684 void CRYPTO_set_add_lock_callback(int (*func)
8685                                    (int *num, int mount, int type,
8686                                     const char *file, int line));
8687 int (*CRYPTO_get_add_lock_callback(void)) (int *num, int mount, int type,
8688                                            const char *file, int line);
8689 
8690 /* Don't use this structure directly. */
8691 typedef struct crypto_threadid_st {
8692     void *ptr;
8693     unsigned long val;
8694 } CRYPTO_THREADID;
8695 /* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
8696 void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val);
8697 void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr);
8698 int CRYPTO_THREADID_set_callback(void (*threadid_func) (CRYPTO_THREADID *));
8699 void (*CRYPTO_THREADID_get_callback(void)) (CRYPTO_THREADID *);
8700 void CRYPTO_THREADID_current(CRYPTO_THREADID *id);
8701 int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b);
8702 void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src);
8703 unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id);
8704 
8705 void CRYPTO_set_id_callback(unsigned long (*func) (void));
8706 unsigned long (*CRYPTO_get_id_callback(void)) (void);
8707 unsigned long CRYPTO_thread_id(void);
8708 
8709 
8710 const char *CRYPTO_get_lock_name(int type);
8711 int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
8712                     int line);
8713 
8714 int CRYPTO_get_new_dynlockid(void);
8715 void CRYPTO_destroy_dynlockid(int i);
8716 struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i);
8717 void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value
8718                                         *(*dyn_create_function) (const char
8719                                                                  *file,
8720                                                                  int line));
8721 void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)
8722                                        (int mode,
8723                                         struct CRYPTO_dynlock_value *l,
8724                                         const char *file, int line));
8725 void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)
8726                                           (struct CRYPTO_dynlock_value *l,
8727                                            const char *file, int line));
8728 struct CRYPTO_dynlock_value
8729 *(*CRYPTO_get_dynlock_create_callback(void)) (const char *file, int line);
8730 void (*CRYPTO_get_dynlock_lock_callback(void)) (int mode,
8731                                                 struct CRYPTO_dynlock_value
8732                                                 *l, const char *file,
8733                                                 int line);
8734 void (*CRYPTO_get_dynlock_destroy_callback(void)) (struct CRYPTO_dynlock_value
8735                                                    *l, const char *file,
8736                                                    int line);
8737 
8738 /*
8739  * CRYPTO_set_mem_functions includes CRYPTO_set_locked_mem_functions -- call
8740  * the latter last if you need different functions
8741  */
8742 int CRYPTO_set_mem_functions(void *(*m) (size_t), void *(*r) (void *, size_t),
8743                              void (*f) (void *));
8744 int CRYPTO_set_locked_mem_functions(void *(*m) (size_t),
8745                                     void (*free_func) (void *));
8746 int CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int),
8747                                 void *(*r) (void *, size_t, const char *,
8748                                             int), void (*f) (void *));
8749 int CRYPTO_set_locked_mem_ex_functions(void *(*m) (size_t, const char *, int),
8750                                        void (*free_func) (void *));
8751 int CRYPTO_set_mem_debug_functions(void (*m)
8752                                     (void *, int, const char *, int, int),
8753                                    void (*r) (void *, void *, int,
8754                                               const char *, int, int),
8755                                    void (*f) (void *, int), void (*so) (long),
8756                                    long (*go) (void));
8757 void CRYPTO_get_mem_functions(void *(**m) (size_t),
8758                               void *(**r) (void *, size_t),
8759                               void (**f) (void *));
8760 void CRYPTO_get_locked_mem_functions(void *(**m) (size_t),
8761                                      void (**f) (void *));
8762 void CRYPTO_get_mem_ex_functions(void *(**m) (size_t, const char *, int),
8763                                  void *(**r) (void *, size_t, const char *,
8764                                               int), void (**f) (void *));
8765 void CRYPTO_get_locked_mem_ex_functions(void
8766                                         *(**m) (size_t, const char *, int),
8767                                         void (**f) (void *));
8768 void CRYPTO_get_mem_debug_functions(void (**m)
8769                                      (void *, int, const char *, int, int),
8770                                     void (**r) (void *, void *, int,
8771                                                 const char *, int, int),
8772                                     void (**f) (void *, int),
8773                                     void (**so) (long), long (**go) (void));
8774 
8775 void *CRYPTO_malloc_locked(int num, const char *file, int line);
8776 void CRYPTO_free_locked(void *ptr);
8777 void *CRYPTO_malloc(int num, const char *file, int line);
8778 char *CRYPTO_strdup(const char *str, const char *file, int line);
8779 void CRYPTO_free(void *ptr);
8780 void *CRYPTO_realloc(void *addr, int num, const char *file, int line);
8781 void *CRYPTO_realloc_clean(void *addr, int old_num, int num, const char *file,
8782                            int line);
8783 void *CRYPTO_remalloc(void *addr, int num, const char *file, int line);
8784 
8785 void OPENSSL_cleanse(void *ptr, size_t len);
8786 
8787 void CRYPTO_set_mem_debug_options(long bits);
8788 long CRYPTO_get_mem_debug_options(void);
8789 
8790 
8791 
8792 int CRYPTO_push_info_(const char *info, const char *file, int line);
8793 int CRYPTO_pop_info(void);
8794 int CRYPTO_remove_all_info(void);
8795 
8796 /*
8797  * Default debugging functions (enabled by CRYPTO_malloc_debug_init() macro;
8798  * used as default in CRYPTO_MDEBUG compilations):
8799  */
8800 /*-
8801  * The last argument has the following significance:
8802  *
8803  * 0:   called before the actual memory allocation has taken place
8804  * 1:   called after the actual memory allocation has taken place
8805  */
8806 void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line,
8807                        int before_p);
8808 void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, const char *file,
8809                         int line, int before_p);
8810 void CRYPTO_dbg_free(void *addr, int before_p);
8811 /*-
8812  * Tell the debugging code about options.  By default, the following values
8813  * apply:
8814  *
8815  * 0:                           Clear all options.
8816  * V_CRYPTO_MDEBUG_TIME (1):    Set the "Show Time" option.
8817  * V_CRYPTO_MDEBUG_THREAD (2):  Set the "Show Thread Number" option.
8818  * V_CRYPTO_MDEBUG_ALL (3):     1 + 2
8819  */
8820 void CRYPTO_dbg_set_options(long bits);
8821 long CRYPTO_dbg_get_options(void);
8822 
8823 
8824 void CRYPTO_mem_leaks_fp(FILE *);
8825 
8826 void CRYPTO_mem_leaks(struct bio_st *bio);
8827 /* unsigned long order, char *file, int line, int num_bytes, char *addr */
8828 typedef void *CRYPTO_MEM_LEAK_CB (unsigned long, const char *, int, int,
8829                                   void *);
8830 void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb);
8831 
8832 /* die if we have to */
8833 void OpenSSLDie(const char *file, int line, const char *assertion);
8834 
8835 
8836 unsigned long *OPENSSL_ia32cap_loc(void);
8837 
8838 int OPENSSL_isservice(void);
8839 
8840 int FIPS_mode(void);
8841 int FIPS_mode_set(int r);
8842 
8843 void OPENSSL_init(void);
8844 # 624 "/usr/include/openssl/crypto.h" 3 4
8845 /*
8846  * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal.
8847  * It takes an amount of time dependent on |len|, but independent of the
8848  * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
8849  * into a defined order as the return value when a != b is undefined, other
8850  * than to be non-zero.
8851  */
8852 int CRYPTO_memcmp(const volatile void *a, const volatile void *b, size_t len);
8853 
8854 /* BEGIN ERROR CODES */
8855 /*
8856  * The following lines are auto generated by the script mkerr.pl. Any changes
8857  * made after this point may be overwritten when the script is next run.
8858  */
8859 void ERR_load_CRYPTO_strings(void);
8860 
8861 /* Error codes for the CRYPTO functions. */
8862 
8863 /* Function codes. */
8864 # 654 "/usr/include/openssl/crypto.h" 3 4
8865 /* Reason codes. */
8866 # 70 "/usr/include/openssl/bio.h" 2 3 4
8867 # 83 "/usr/include/openssl/bio.h" 3 4
8868 /* These are the 'types' of BIOs */
8869 # 116 "/usr/include/openssl/bio.h" 3 4
8870 /*
8871  * BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
8872  * BIO_set_fp(in,stdin,BIO_NOCLOSE);
8873  */
8874 
8875 
8876 
8877 /*
8878  * These are used in the following macros and are passed to BIO_ctrl()
8879  */
8880 # 139 "/usr/include/openssl/bio.h" 3 4
8881 /* callback is int cb(BIO *bio,state,ret); */
8882 
8883 
8884 
8885 
8886 
8887 /* dgram BIO stuff */
8888 # 157 "/usr/include/openssl/bio.h" 3 4
8889 /* #ifdef IP_MTU_DISCOVER */
8890 
8891 /* #endif */
8892 # 196 "/usr/include/openssl/bio.h" 3 4
8893 /* modifiers */
8894 # 208 "/usr/include/openssl/bio.h" 3 4
8895 /*
8896  * "UPLINK" flag denotes file descriptors provided by application. It
8897  * defaults to 0, as most platforms don't require UPLINK interface.
8898  */
8899 
8900 
8901 
8902 /* Used in BIO_gethostbyname() */
8903 
8904 
8905 
8906 
8907 
8908 
8909 /* Mostly used in the SSL BIO */
8910 /*-
8911  * Not used anymore
8912  * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10
8913  * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20
8914  * #define BIO_FLAGS_PROTOCOL_STARTUP   0x40
8915  */
8916 
8917 
8918 
8919 /*
8920  * This is used with memory BIOs: it means we shouldn't free up or change the
8921  * data in any way.
8922  */
8923 
8924 
8925 typedef struct bio_st BIO;
8926 
8927 void BIO_set_flags(BIO *b, int flags);
8928 int BIO_test_flags(const BIO *b, int flags);
8929 void BIO_clear_flags(BIO *b, int flags);
8930 # 252 "/usr/include/openssl/bio.h" 3 4
8931 /* These are normally used internally in BIOs */
8932 
8933 
8934 
8935 
8936 
8937 /* These should be used by the application to tell why we should retry */
8938 
8939 
8940 
8941 
8942 
8943 
8944 /*
8945  * The next three are used in conjunction with the BIO_should_io_special()
8946  * condition.  After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int
8947  * *reason); will walk the BIO stack and return the 'reason' for the special
8948  * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return
8949  * the code.
8950  */
8951 /*
8952  * Returned from the SSL bio when the certificate retrieval code had an error
8953  */
8954 
8955 /* Returned from the connect BIO when a connect would have blocked */
8956 
8957 /* Returned from the accept BIO when an accept would have blocked */
8958 
8959 
8960 /* These are passed by the BIO callback */
8961 
8962 
8963 
8964 
8965 
8966 
8967 
8968 /*
8969  * The callback is called before and after the underling operation, The
8970  * BIO_CB_RETURN flag indicates if it is after the call
8971  */
8972 
8973 
8974 
8975 
8976 
8977 long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *,
8978                                         int, long, long);
8979 void BIO_set_callback(BIO *b,
8980                       long (*callback) (struct bio_st *, int, const char *,
8981                                         int, long, long));
8982 char *BIO_get_callback_arg(const BIO *b);
8983 void BIO_set_callback_arg(BIO *b, char *arg);
8984 
8985 const char *BIO_method_name(const BIO *b);
8986 int BIO_method_type(const BIO *b);
8987 
8988 typedef void bio_info_cb (struct bio_st *, int, const char *, int, long,
8989                           long);
8990 
8991 typedef struct bio_method_st {
8992     int type;
8993     const char *name;
8994     int (*bwrite) (BIO *, const char *, int);
8995     int (*bread) (BIO *, char *, int);
8996     int (*bputs) (BIO *, const char *);
8997     int (*bgets) (BIO *, char *, int);
8998     long (*ctrl) (BIO *, int, long, void *);
8999     int (*create) (BIO *);
9000     int (*destroy) (BIO *);
9001     long (*callback_ctrl) (BIO *, int, bio_info_cb *);
9002 } BIO_METHOD;
9003 
9004 struct bio_st {
9005     BIO_METHOD *method;
9006     /* bio, mode, argp, argi, argl, ret */
9007     long (*callback) (struct bio_st *, int, const char *, int, long, long);
9008     char *cb_arg; /* first argument for the callback */
9009     int init;
9010     int shutdown;
9011     int flags; /* extra storage */
9012     int retry_reason;
9013     int num;
9014     void *ptr;
9015     struct bio_st *next_bio; /* used by filter BIOs */
9016     struct bio_st *prev_bio; /* used by filter BIOs */
9017     int references;
9018     unsigned long num_read;
9019     unsigned long num_write;
9020     CRYPTO_EX_DATA ex_data;
9021 };
9022 
9023 struct stack_st_BIO { _STACK stack; };
9024 
9025 typedef struct bio_f_buffer_ctx_struct {
9026     /*-
9027      * Buffers are setup like this:
9028      *
9029      * <---------------------- size ----------------------->
9030      * +---------------------------------------------------+
9031      * | consumed | remaining          | free space        |
9032      * +---------------------------------------------------+
9033      * <-- off --><------- len ------->
9034      */
9035     /*- BIO *bio; *//*
9036      * this is now in the BIO struct
9037      */
9038     int ibuf_size; /* how big is the input buffer */
9039     int obuf_size; /* how big is the output buffer */
9040     char *ibuf; /* the char array */
9041     int ibuf_len; /* how many bytes are in it */
9042     int ibuf_off; /* write/read offset */
9043     char *obuf; /* the char array */
9044     int obuf_len; /* how many bytes are in it */
9045     int obuf_off; /* write/read offset */
9046 } BIO_F_BUFFER_CTX;
9047 
9048 /* Prefix and suffix callback in ASN1 BIO */
9049 typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen,
9050                           void *parg);
9051 # 398 "/usr/include/openssl/bio.h" 3 4
9052 /* connect BIO stuff */
9053 # 407 "/usr/include/openssl/bio.h" 3 4
9054 /*
9055  * #define BIO_CONN_get_param_hostname BIO_ctrl
9056  */
9057 # 474 "/usr/include/openssl/bio.h" 3 4
9058 /* BIO_s_connect() and BIO_s_socks4a_connect() */
9059 # 486 "/usr/include/openssl/bio.h" 3 4
9060 /* BIO_s_accept() */
9061 
9062 
9063 /* #define BIO_set_nbio(b,n)    BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
9064 # 499 "/usr/include/openssl/bio.h" 3 4
9065 /* BIO_s_accept() and BIO_s_connect() */
9066 
9067 
9068 
9069 
9070 /* BIO_s_proxy_client() */
9071 
9072 
9073 /* BIO_set_nbio(b,n) */
9074 
9075 /* BIO *BIO_get_filter_bio(BIO *bio); */
9076 # 519 "/usr/include/openssl/bio.h" 3 4
9077 /* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */
9078 
9079 
9080 
9081 /* BIO_s_file() */
9082 
9083 
9084 
9085 /* BIO_s_fd() and BIO_s_file() */
9086 
9087 
9088 
9089 /*
9090  * name is cast to lose const, but might be better to route through a
9091  * function so we can do it safely
9092  */
9093 # 552 "/usr/include/openssl/bio.h" 3 4
9094 /*
9095  * WARNING WARNING, this ups the reference count on the read bio of the SSL
9096  * structure.  This is because the ssl read BIO is now pointed to by the
9097  * next_bio field in the bio.  So when you free the BIO, make sure you are
9098  * doing a BIO_free_all() to catch the underlying BIO.
9099  */
9100 # 568 "/usr/include/openssl/bio.h" 3 4
9101 /* defined in evp.h */
9102 /* #define BIO_set_md(b,md)     BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */
9103 
9104 
9105 
9106 
9107 
9108 
9109 
9110 /* For the BIO_f_buffer() type */
9111 
9112 
9113 
9114 
9115 
9116 
9117 /* Don't use the next one unless you know what you are doing :-) */
9118 # 593 "/usr/include/openssl/bio.h" 3 4
9119 /* ...pending macros have inappropriate return type */
9120 size_t BIO_ctrl_pending(BIO *b);
9121 size_t BIO_ctrl_wpending(BIO *b);
9122 
9123 
9124 
9125 
9126 
9127 /* For the BIO_f_buffer() type */
9128 
9129 
9130 /* For BIO_s_bio() */
9131 
9132 
9133 
9134 
9135 
9136 /* macros with inappropriate type -- but ...pending macros use int too: */
9137 
9138 
9139 size_t BIO_ctrl_get_write_guarantee(BIO *b);
9140 size_t BIO_ctrl_get_read_request(BIO *b);
9141 int BIO_ctrl_reset_read_request(BIO *b);
9142 
9143 /* ctrl macros for dgram */
9144 # 633 "/usr/include/openssl/bio.h" 3 4
9145 /* These two aren't currently implemented */
9146 /* int BIO_get_ex_num(BIO *bio); */
9147 /* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */
9148 int BIO_set_ex_data(BIO *bio, int idx, void *data);
9149 void *BIO_get_ex_data(BIO *bio, int idx);
9150 int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
9151                          CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
9152 unsigned long BIO_number_read(BIO *bio);
9153 unsigned long BIO_number_written(BIO *bio);
9154 
9155 /* For BIO_f_asn1() */
9156 int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
9157                         asn1_ps_func *prefix_free);
9158 int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
9159                         asn1_ps_func **pprefix_free);
9160 int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
9161                         asn1_ps_func *suffix_free);
9162 int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
9163                         asn1_ps_func **psuffix_free);
9164 
9165 
9166 BIO_METHOD *BIO_s_file(void);
9167 BIO *BIO_new_file(const char *filename, const char *mode);
9168 BIO *BIO_new_fp(FILE *stream, int close_flag);
9169 
9170 
9171 BIO *BIO_new(BIO_METHOD *type);
9172 int BIO_set(BIO *a, BIO_METHOD *type);
9173 int BIO_free(BIO *a);
9174 void BIO_vfree(BIO *a);
9175 int BIO_read(BIO *b, void *data, int len);
9176 int BIO_gets(BIO *bp, char *buf, int size);
9177 int BIO_write(BIO *b, const void *data, int len);
9178 int BIO_puts(BIO *bp, const char *buf);
9179 int BIO_indent(BIO *b, int indent, int max);
9180 long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
9181 long BIO_callback_ctrl(BIO *b, int cmd,
9182                        void (*fp) (struct bio_st *, int, const char *, int,
9183                                    long, long));
9184 char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
9185 long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
9186 BIO *BIO_push(BIO *b, BIO *append);
9187 BIO *BIO_pop(BIO *b);
9188 void BIO_free_all(BIO *a);
9189 BIO *BIO_find_type(BIO *b, int bio_type);
9190 BIO *BIO_next(BIO *b);
9191 BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
9192 int BIO_get_retry_reason(BIO *bio);
9193 BIO *BIO_dup_chain(BIO *in);
9194 
9195 int BIO_nread0(BIO *bio, char **buf);
9196 int BIO_nread(BIO *bio, char **buf, int num);
9197 int BIO_nwrite0(BIO *bio, char **buf);
9198 int BIO_nwrite(BIO *bio, char **buf, int num);
9199 
9200 long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi,
9201                         long argl, long ret);
9202 
9203 BIO_METHOD *BIO_s_mem(void);
9204 BIO *BIO_new_mem_buf(const void *buf, int len);
9205 BIO_METHOD *BIO_s_socket(void);
9206 BIO_METHOD *BIO_s_connect(void);
9207 BIO_METHOD *BIO_s_accept(void);
9208 BIO_METHOD *BIO_s_fd(void);
9209 
9210 BIO_METHOD *BIO_s_log(void);
9211 
9212 BIO_METHOD *BIO_s_bio(void);
9213 BIO_METHOD *BIO_s_null(void);
9214 BIO_METHOD *BIO_f_null(void);
9215 BIO_METHOD *BIO_f_buffer(void);
9216 
9217 
9218 
9219 BIO_METHOD *BIO_f_nbio_test(void);
9220 
9221 BIO_METHOD *BIO_s_datagram(void);
9222 
9223 
9224 
9225 
9226 
9227 /* BIO_METHOD *BIO_f_ber(void); */
9228 
9229 int BIO_sock_should_retry(int i);
9230 int BIO_sock_non_fatal_error(int error);
9231 int BIO_dgram_non_fatal_error(int error);
9232 
9233 int BIO_fd_should_retry(int i);
9234 int BIO_fd_non_fatal_error(int error);
9235 int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),
9236                 void *u, const char *s, int len);
9237 int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
9238                        void *u, const char *s, int len, int indent);
9239 int BIO_dump(BIO *b, const char *bytes, int len);
9240 int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent);
9241 
9242 int BIO_dump_fp(FILE *fp, const char *s, int len);
9243 int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent);
9244 
9245 int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data,
9246                    int datalen);
9247 
9248 struct hostent *BIO_gethostbyname(const char *name);
9249 /*-
9250  * We might want a thread-safe interface too:
9251  * struct hostent *BIO_gethostbyname_r(const char *name,
9252  *     struct hostent *result, void *buffer, size_t buflen);
9253  * or something similar (caller allocates a struct hostent,
9254  * pointed to by "result", and additional buffer space for the various
9255  * substructures; if the buffer does not suffice, NULL is returned
9256  * and an appropriate error code is set).
9257  */
9258 int BIO_sock_error(int sock);
9259 int BIO_socket_ioctl(int fd, long type, void *arg);
9260 int BIO_socket_nbio(int fd, int mode);
9261 int BIO_get_port(const char *str, unsigned short *port_ptr);
9262 int BIO_get_host_ip(const char *str, unsigned char *ip);
9263 int BIO_get_accept_socket(char *host_port, int mode);
9264 int BIO_accept(int sock, char **ip_port);
9265 int BIO_sock_init(void);
9266 void BIO_sock_cleanup(void);
9267 int BIO_set_tcp_ndelay(int sock, int turn_on);
9268 
9269 BIO *BIO_new_socket(int sock, int close_flag);
9270 BIO *BIO_new_dgram(int fd, int close_flag);
9271 # 771 "/usr/include/openssl/bio.h" 3 4
9272 BIO *BIO_new_fd(int fd, int close_flag);
9273 BIO *BIO_new_connect(const char *host_port);
9274 BIO *BIO_new_accept(const char *host_port);
9275 
9276 int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
9277                      BIO **bio2, size_t writebuf2);
9278 /*
9279  * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
9280  * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default
9281  * value.
9282  */
9283 
9284 void BIO_copy_next_retry(BIO *b);
9285 
9286 /*
9287  * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
9288  */
9289 
9290 
9291 
9292 
9293 
9294 
9295 int BIO_printf(BIO *bio, const char *format, ...)
9296 __attribute__((__format__(__printf__, 2, 3)));
9297 int BIO_vprintf(BIO *bio, const char *format, va_list args)
9298 __attribute__((__format__(__printf__, 2, 0)));
9299 int BIO_snprintf(char *buf, size_t n, const char *format, ...)
9300 __attribute__((__format__(__printf__, 3, 4)));
9301 int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
9302 __attribute__((__format__(__printf__, 3, 0)));
9303 
9304 
9305 /* BEGIN ERROR CODES */
9306 /*
9307  * The following lines are auto generated by the script mkerr.pl. Any changes
9308  * made after this point may be overwritten when the script is next run.
9309  */
9310 void ERR_load_BIO_strings(void);
9311 
9312 /* Error codes for the BIO functions. */
9313 
9314 /* Function codes. */
9315 # 849 "/usr/include/openssl/bio.h" 3 4
9316 /* Reason codes. */
9317 # 44 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
9318 # 1 "/usr/include/openssl/x509.h" 1 3 4
9319 /* crypto/x509/x509.h */
9320 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
9321  * All rights reserved.
9322  *
9323  * This package is an SSL implementation written
9324  * by Eric Young (eay@cryptsoft.com).
9325  * The implementation was written so as to conform with Netscapes SSL.
9326  *
9327  * This library is free for commercial and non-commercial use as long as
9328  * the following conditions are aheared to.  The following conditions
9329  * apply to all code found in this distribution, be it the RC4, RSA,
9330  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
9331  * included with this distribution is covered by the same copyright terms
9332  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
9333  *
9334  * Copyright remains Eric Young's, and as such any Copyright notices in
9335  * the code are not to be removed.
9336  * If this package is used in a product, Eric Young should be given attribution
9337  * as the author of the parts of the library used.
9338  * This can be in the form of a textual message at program startup or
9339  * in documentation (online or textual) provided with the package.
9340  *
9341  * Redistribution and use in source and binary forms, with or without
9342  * modification, are permitted provided that the following conditions
9343  * are met:
9344  * 1. Redistributions of source code must retain the copyright
9345  *    notice, this list of conditions and the following disclaimer.
9346  * 2. Redistributions in binary form must reproduce the above copyright
9347  *    notice, this list of conditions and the following disclaimer in the
9348  *    documentation and/or other materials provided with the distribution.
9349  * 3. All advertising materials mentioning features or use of this software
9350  *    must display the following acknowledgement:
9351  *    "This product includes cryptographic software written by
9352  *     Eric Young (eay@cryptsoft.com)"
9353  *    The word 'cryptographic' can be left out if the rouines from the library
9354  *    being used are not cryptographic related :-).
9355  * 4. If you include any Windows specific code (or a derivative thereof) from
9356  *    the apps directory (application code) you must include an acknowledgement:
9357  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
9358  *
9359  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
9360  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9361  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
9362  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
9363  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9364  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
9365  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9366  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
9367  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
9368  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
9369  * SUCH DAMAGE.
9370  *
9371  * The licence and distribution terms for any publically available version or
9372  * derivative of this code cannot be changed.  i.e. this code cannot simply be
9373  * copied and put under another distribution licence
9374  * [including the GNU Public Licence.]
9375  */
9376 /* ====================================================================
9377  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
9378  * ECDH support in OpenSSL originally developed by
9379  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
9380  */
9381 
9382 
9383 
9384 
9385 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
9386 /* e_os2.h */
9387 /* ====================================================================
9388  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
9389  *
9390  * Redistribution and use in source and binary forms, with or without
9391  * modification, are permitted provided that the following conditions
9392  * are met:
9393  *
9394  * 1. Redistributions of source code must retain the above copyright
9395  *    notice, this list of conditions and the following disclaimer.
9396  *
9397  * 2. Redistributions in binary form must reproduce the above copyright
9398  *    notice, this list of conditions and the following disclaimer in
9399  *    the documentation and/or other materials provided with the
9400  *    distribution.
9401  *
9402  * 3. All advertising materials mentioning features or use of this
9403  *    software must display the following acknowledgment:
9404  *    "This product includes software developed by the OpenSSL Project
9405  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9406  *
9407  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9408  *    endorse or promote products derived from this software without
9409  *    prior written permission. For written permission, please contact
9410  *    openssl-core@openssl.org.
9411  *
9412  * 5. Products derived from this software may not be called "OpenSSL"
9413  *    nor may "OpenSSL" appear in their names without prior written
9414  *    permission of the OpenSSL Project.
9415  *
9416  * 6. Redistributions of any form whatsoever must retain the following
9417  *    acknowledgment:
9418  *    "This product includes software developed by the OpenSSL Project
9419  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
9420  *
9421  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
9422  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9423  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9424  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
9425  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9426  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
9427  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
9428  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9429  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9430  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9431  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
9432  * OF THE POSSIBILITY OF SUCH DAMAGE.
9433  * ====================================================================
9434  *
9435  * This product includes cryptographic software written by Eric Young
9436  * (eay@cryptsoft.com).  This product includes software written by Tim
9437  * Hudson (tjh@cryptsoft.com).
9438  *
9439  */
9440 
9441 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
9442 /* opensslconf.h */
9443 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
9444 
9445 
9446 
9447 
9448 /* OpenSSL was configured with the following options: */
9449 # 108 "/usr/include/openssl/opensslconf.h" 3 4
9450 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
9451    asks for it.  This is a transient feature that is provided for those
9452    who haven't had the time to do the appropriate changes in their
9453    applications.  */
9454 # 204 "/usr/include/openssl/opensslconf.h" 3 4
9455 /* crypto/opensslconf.h.in */
9456 
9457 /* Generate 80386 code? */
9458 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
9459 # 68 "/usr/include/openssl/x509.h" 2 3 4
9460 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
9461 /* ====================================================================
9462  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
9463  *
9464  * Redistribution and use in source and binary forms, with or without
9465  * modification, are permitted provided that the following conditions
9466  * are met:
9467  *
9468  * 1. Redistributions of source code must retain the above copyright
9469  *    notice, this list of conditions and the following disclaimer.
9470  *
9471  * 2. Redistributions in binary form must reproduce the above copyright
9472  *    notice, this list of conditions and the following disclaimer in
9473  *    the documentation and/or other materials provided with the
9474  *    distribution.
9475  *
9476  * 3. All advertising materials mentioning features or use of this
9477  *    software must display the following acknowledgment:
9478  *    "This product includes software developed by the OpenSSL Project
9479  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9480  *
9481  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9482  *    endorse or promote products derived from this software without
9483  *    prior written permission. For written permission, please contact
9484  *    openssl-core@openssl.org.
9485  *
9486  * 5. Products derived from this software may not be called "OpenSSL"
9487  *    nor may "OpenSSL" appear in their names without prior written
9488  *    permission of the OpenSSL Project.
9489  *
9490  * 6. Redistributions of any form whatsoever must retain the following
9491  *    acknowledgment:
9492  *    "This product includes software developed by the OpenSSL Project
9493  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
9494  *
9495  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
9496  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9497  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9498  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
9499  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9500  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
9501  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
9502  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9503  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9504  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9505  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
9506  * OF THE POSSIBILITY OF SUCH DAMAGE.
9507  * ====================================================================
9508  *
9509  * This product includes cryptographic software written by Eric Young
9510  * (eay@cryptsoft.com).  This product includes software written by Tim
9511  * Hudson (tjh@cryptsoft.com).
9512  *
9513  */
9514 # 69 "/usr/include/openssl/x509.h" 2 3 4
9515 
9516 # 1 "/usr/include/openssl/buffer.h" 1 3 4
9517 /* crypto/buffer/buffer.h */
9518 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
9519  * All rights reserved.
9520  *
9521  * This package is an SSL implementation written
9522  * by Eric Young (eay@cryptsoft.com).
9523  * The implementation was written so as to conform with Netscapes SSL.
9524  *
9525  * This library is free for commercial and non-commercial use as long as
9526  * the following conditions are aheared to.  The following conditions
9527  * apply to all code found in this distribution, be it the RC4, RSA,
9528  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
9529  * included with this distribution is covered by the same copyright terms
9530  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
9531  *
9532  * Copyright remains Eric Young's, and as such any Copyright notices in
9533  * the code are not to be removed.
9534  * If this package is used in a product, Eric Young should be given attribution
9535  * as the author of the parts of the library used.
9536  * This can be in the form of a textual message at program startup or
9537  * in documentation (online or textual) provided with the package.
9538  *
9539  * Redistribution and use in source and binary forms, with or without
9540  * modification, are permitted provided that the following conditions
9541  * are met:
9542  * 1. Redistributions of source code must retain the copyright
9543  *    notice, this list of conditions and the following disclaimer.
9544  * 2. Redistributions in binary form must reproduce the above copyright
9545  *    notice, this list of conditions and the following disclaimer in the
9546  *    documentation and/or other materials provided with the distribution.
9547  * 3. All advertising materials mentioning features or use of this software
9548  *    must display the following acknowledgement:
9549  *    "This product includes cryptographic software written by
9550  *     Eric Young (eay@cryptsoft.com)"
9551  *    The word 'cryptographic' can be left out if the rouines from the library
9552  *    being used are not cryptographic related :-).
9553  * 4. If you include any Windows specific code (or a derivative thereof) from
9554  *    the apps directory (application code) you must include an acknowledgement:
9555  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
9556  *
9557  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
9558  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9559  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
9560  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
9561  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9562  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
9563  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9564  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
9565  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
9566  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
9567  * SUCH DAMAGE.
9568  *
9569  * The licence and distribution terms for any publically available version or
9570  * derivative of this code cannot be changed.  i.e. this code cannot simply be
9571  * copied and put under another distribution licence
9572  * [including the GNU Public Licence.]
9573  */
9574 
9575 
9576 
9577 
9578 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
9579 /* ====================================================================
9580  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
9581  *
9582  * Redistribution and use in source and binary forms, with or without
9583  * modification, are permitted provided that the following conditions
9584  * are met:
9585  *
9586  * 1. Redistributions of source code must retain the above copyright
9587  *    notice, this list of conditions and the following disclaimer.
9588  *
9589  * 2. Redistributions in binary form must reproduce the above copyright
9590  *    notice, this list of conditions and the following disclaimer in
9591  *    the documentation and/or other materials provided with the
9592  *    distribution.
9593  *
9594  * 3. All advertising materials mentioning features or use of this
9595  *    software must display the following acknowledgment:
9596  *    "This product includes software developed by the OpenSSL Project
9597  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9598  *
9599  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9600  *    endorse or promote products derived from this software without
9601  *    prior written permission. For written permission, please contact
9602  *    openssl-core@openssl.org.
9603  *
9604  * 5. Products derived from this software may not be called "OpenSSL"
9605  *    nor may "OpenSSL" appear in their names without prior written
9606  *    permission of the OpenSSL Project.
9607  *
9608  * 6. Redistributions of any form whatsoever must retain the following
9609  *    acknowledgment:
9610  *    "This product includes software developed by the OpenSSL Project
9611  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
9612  *
9613  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
9614  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9615  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9616  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
9617  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9618  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
9619  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
9620  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9621  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9622  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9623  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
9624  * OF THE POSSIBILITY OF SUCH DAMAGE.
9625  * ====================================================================
9626  *
9627  * This product includes cryptographic software written by Eric Young
9628  * (eay@cryptsoft.com).  This product includes software written by Tim
9629  * Hudson (tjh@cryptsoft.com).
9630  *
9631  */
9632 # 63 "/usr/include/openssl/buffer.h" 2 3 4
9633 
9634 
9635 
9636 
9637 
9638 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 1 3 4
9639 /*
9640  * CDDL HEADER START
9641  *
9642  * The contents of this file are subject to the terms of the
9643  * Common Development and Distribution License, Version 1.0 only
9644  * (the "License").  You may not use this file except in compliance
9645  * with the License.
9646  *
9647  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9648  * or http://www.opensolaris.org/os/licensing.
9649  * See the License for the specific language governing permissions
9650  * and limitations under the License.
9651  *
9652  * When distributing Covered Code, include this CDDL HEADER in each
9653  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9654  * If applicable, add the following below this CDDL HEADER, with the
9655  * fields enclosed by brackets "[]" replaced with your own identifying
9656  * information: Portions Copyright [yyyy] [name of copyright owner]
9657  *
9658  * CDDL HEADER END
9659  */
9660 /*	Copyright (c) 1988 AT&T	*/
9661 /*	  All Rights Reserved  	*/
9662 
9663 
9664 /*
9665  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
9666  * Use is subject to license terms.
9667  */
9668 
9669 
9670 
9671 
9672 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1 3 4
9673 /*
9674  * CDDL HEADER START
9675  *
9676  * The contents of this file are subject to the terms of the
9677  * Common Development and Distribution License (the "License").
9678  * You may not use this file except in compliance with the License.
9679  *
9680  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9681  * or http://www.opensolaris.org/os/licensing.
9682  * See the License for the specific language governing permissions
9683  * and limitations under the License.
9684  *
9685  *
9686  * When distributing Covered Code, include this CDDL HEADER in each
9687  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9688  * If applicable, add the following below this CDDL HEADER, with the
9689  * fields enclosed by brackets "[]" replaced with your own identifying
9690  * information: Portions Copyright [yyyy] [name of copyright owner]
9691  *
9692  * CDDL HEADER END
9693  */
9694 
9695 /*
9696  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
9697  * Use is subject to license terms.
9698  * Copyright 2016 Joyent, Inc.
9699  */
9700 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 2 3 4
9701 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 1 3 4
9702 /*
9703  * CDDL HEADER START
9704  *
9705  * The contents of this file are subject to the terms of the
9706  * Common Development and Distribution License, Version 1.0 only
9707  * (the "License").  You may not use this file except in compliance
9708  * with the License.
9709  *
9710  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9711  * or http://www.opensolaris.org/os/licensing.
9712  * See the License for the specific language governing permissions
9713  * and limitations under the License.
9714  *
9715  * When distributing Covered Code, include this CDDL HEADER in each
9716  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9717  * If applicable, add the following below this CDDL HEADER, with the
9718  * fields enclosed by brackets "[]" replaced with your own identifying
9719  * information: Portions Copyright [yyyy] [name of copyright owner]
9720  *
9721  * CDDL HEADER END
9722  */
9723 /*	Copyright (c) 1988 AT&T	*/
9724 /*	  All Rights Reserved  	*/
9725 
9726 
9727 /*
9728  * Copyright 1999-2003 Sun Microsystems, Inc.  All rights reserved.
9729  * Use is subject to license terms.
9730  */
9731 
9732 /*
9733  * Copyright 2014 PALO, Richard.
9734  * Copyright 2016 Joyent, Inc.
9735  */
9736 
9737 /*
9738  * An application should not include this header directly.  Instead it
9739  * should be included only through the inclusion of other Sun headers.
9740  *
9741  * The contents of this header is limited to identifiers specified in the
9742  * C Standard.  Any new identifiers specified in future amendments to the
9743  * C Standard must be placed in this header.  If these new identifiers
9744  * are required to also be in the C++ Standard "std" namespace, then for
9745  * anything other than macro definitions, corresponding "using" directives
9746  * must also be added to <stddef.h.h>.
9747  */
9748 
9749 
9750 
9751 
9752 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1 3 4
9753 /*
9754  * CDDL HEADER START
9755  *
9756  * The contents of this file are subject to the terms of the
9757  * Common Development and Distribution License (the "License").
9758  * You may not use this file except in compliance with the License.
9759  *
9760  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9761  * or http://www.opensolaris.org/os/licensing.
9762  * See the License for the specific language governing permissions
9763  * and limitations under the License.
9764  *
9765  *
9766  * When distributing Covered Code, include this CDDL HEADER in each
9767  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9768  * If applicable, add the following below this CDDL HEADER, with the
9769  * fields enclosed by brackets "[]" replaced with your own identifying
9770  * information: Portions Copyright [yyyy] [name of copyright owner]
9771  *
9772  * CDDL HEADER END
9773  */
9774 
9775 /*
9776  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
9777  * Use is subject to license terms.
9778  * Copyright 2016 Joyent, Inc.
9779  */
9780 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 2 3 4
9781 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1 3 4
9782 /*
9783  * CDDL HEADER START
9784  *
9785  * The contents of this file are subject to the terms of the
9786  * Common Development and Distribution License (the "License").
9787  * You may not use this file except in compliance with the License.
9788  *
9789  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9790  * or http://www.opensolaris.org/os/licensing.
9791  * See the License for the specific language governing permissions
9792  * and limitations under the License.
9793  *
9794  * When distributing Covered Code, include this CDDL HEADER in each
9795  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9796  * If applicable, add the following below this CDDL HEADER, with the
9797  * fields enclosed by brackets "[]" replaced with your own identifying
9798  * information: Portions Copyright [yyyy] [name of copyright owner]
9799  *
9800  * CDDL HEADER END
9801  */
9802 
9803 /*
9804  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
9805  * Copyright 2016 Joyent, Inc.
9806  *
9807  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
9808  * Use is subject to license terms.
9809  */
9810 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 2 3 4
9811 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1 3 4
9812 /*
9813  * This file and its contents are supplied under the terms of the
9814  * Common Development and Distribution License ("CDDL"), version 1.0.
9815  * You may only use this file in accordance with the terms of version
9816  * 1.0 of the CDDL.
9817  *
9818  * A full copy of the text of the CDDL should have accompanied this
9819  * source.  A copy of the CDDL is also available via the Internet at
9820  * http://www.illumos.org/license/CDDL.
9821  */
9822 
9823 /*
9824  * Copyright 2014-2016 PALO, Richard.
9825  */
9826 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 2 3 4
9827 # 88 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 3 4
9828 typedef long max_align_t;
9829 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 2 3 4
9830 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stddef.h" 1 3 4
9831 /*
9832  * This file and its contents are supplied under the terms of the
9833  * Common Development and Distribution License ("CDDL"), version 1.0.
9834  * You may only use this file in accordance with the terms of version
9835  * 1.0 of the CDDL.
9836  *
9837  * A full copy of the text of the CDDL should have accompanied this
9838  * source.  A copy of the CDDL is also available via the Internet at
9839  * http://www.illumos.org/license/CDDL.
9840  */
9841 
9842 /*
9843  * Copyright 2017 Toomas Soome <tsoome@me.com>
9844  */
9845 
9846 
9847 
9848 
9849 /*
9850  * Commonly used macros and definitions.
9851  */
9852 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stddef.h" 3 4
9853 /*
9854  * We must not expose container_of() to userland, but we want it
9855  * to be available for early boot and for the kernel.
9856  */
9857 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 2 3 4
9858 
9859 /*
9860  * Allow global visibility for symbols defined in
9861  * C++ "std" namespace in <iso/stddef_iso.h>.
9862  */
9863 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 3 4
9864 /*
9865  * wchar_t is a built-in type in standard C++ and as such is not
9866  * defined here when using standard C++. However, the GNU compiler
9867  * fixincludes utility nonetheless creates its own version of this
9868  * header for use by gcc and g++. In that version it adds a redundant
9869  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
9870  * header we need to include the following magic comment:
9871  *
9872  * we must use the C++ compiler's type
9873  *
9874  * The above comment should not be removed or changed until GNU
9875  * gcc/fixinc/inclhack.def is updated to bypass this header.
9876  */
9877 # 69 "/usr/include/openssl/buffer.h" 2 3 4
9878 
9879 
9880 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1 3 4
9881 /*
9882  * CDDL HEADER START
9883  *
9884  * The contents of this file are subject to the terms of the
9885  * Common Development and Distribution License (the "License").
9886  * You may not use this file except in compliance with the License.
9887  *
9888  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9889  * or http://www.opensolaris.org/os/licensing.
9890  * See the License for the specific language governing permissions
9891  * and limitations under the License.
9892  *
9893  * When distributing Covered Code, include this CDDL HEADER in each
9894  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9895  * If applicable, add the following below this CDDL HEADER, with the
9896  * fields enclosed by brackets "[]" replaced with your own identifying
9897  * information: Portions Copyright [yyyy] [name of copyright owner]
9898  *
9899  * CDDL HEADER END
9900  */
9901 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
9902 /*	  All Rights Reserved  	*/
9903 
9904 
9905 /*
9906  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
9907  * Use is subject to license terms.
9908  *
9909  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
9910  * Copyright 2016 Joyent, Inc.
9911  */
9912 # 72 "/usr/include/openssl/buffer.h" 2 3 4
9913 
9914 
9915 /* Already declared in ossl_typ.h */
9916 /* typedef struct buf_mem_st BUF_MEM; */
9917 
9918 struct buf_mem_st {
9919     size_t length; /* current number of bytes */
9920     char *data;
9921     size_t max; /* size of buffer */
9922 };
9923 
9924 BUF_MEM *BUF_MEM_new(void);
9925 void BUF_MEM_free(BUF_MEM *a);
9926 int BUF_MEM_grow(BUF_MEM *str, size_t len);
9927 int BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
9928 size_t BUF_strnlen(const char *str, size_t maxlen);
9929 char *BUF_strdup(const char *str);
9930 
9931 /*
9932  * Like strndup, but in addition, explicitly guarantees to never read past the
9933  * first |siz| bytes of |str|.
9934  */
9935 char *BUF_strndup(const char *str, size_t siz);
9936 
9937 void *BUF_memdup(const void *data, size_t siz);
9938 void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz);
9939 
9940 /* safe string functions */
9941 size_t BUF_strlcpy(char *dst, const char *src, size_t siz);
9942 size_t BUF_strlcat(char *dst, const char *src, size_t siz);
9943 
9944 /* BEGIN ERROR CODES */
9945 /*
9946  * The following lines are auto generated by the script mkerr.pl. Any changes
9947  * made after this point may be overwritten when the script is next run.
9948  */
9949 void ERR_load_BUF_strings(void);
9950 
9951 /* Error codes for the BUF functions. */
9952 
9953 /* Function codes. */
9954 
9955 
9956 
9957 
9958 
9959 
9960 
9961 /* Reason codes. */
9962 # 71 "/usr/include/openssl/x509.h" 2 3 4
9963 
9964 
9965 # 1 "/usr/include/openssl/evp.h" 1 3 4
9966 /* crypto/evp/evp.h */
9967 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
9968  * All rights reserved.
9969  *
9970  * This package is an SSL implementation written
9971  * by Eric Young (eay@cryptsoft.com).
9972  * The implementation was written so as to conform with Netscapes SSL.
9973  *
9974  * This library is free for commercial and non-commercial use as long as
9975  * the following conditions are aheared to.  The following conditions
9976  * apply to all code found in this distribution, be it the RC4, RSA,
9977  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
9978  * included with this distribution is covered by the same copyright terms
9979  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
9980  *
9981  * Copyright remains Eric Young's, and as such any Copyright notices in
9982  * the code are not to be removed.
9983  * If this package is used in a product, Eric Young should be given attribution
9984  * as the author of the parts of the library used.
9985  * This can be in the form of a textual message at program startup or
9986  * in documentation (online or textual) provided with the package.
9987  *
9988  * Redistribution and use in source and binary forms, with or without
9989  * modification, are permitted provided that the following conditions
9990  * are met:
9991  * 1. Redistributions of source code must retain the copyright
9992  *    notice, this list of conditions and the following disclaimer.
9993  * 2. Redistributions in binary form must reproduce the above copyright
9994  *    notice, this list of conditions and the following disclaimer in the
9995  *    documentation and/or other materials provided with the distribution.
9996  * 3. All advertising materials mentioning features or use of this software
9997  *    must display the following acknowledgement:
9998  *    "This product includes cryptographic software written by
9999  *     Eric Young (eay@cryptsoft.com)"
10000  *    The word 'cryptographic' can be left out if the rouines from the library
10001  *    being used are not cryptographic related :-).
10002  * 4. If you include any Windows specific code (or a derivative thereof) from
10003  *    the apps directory (application code) you must include an acknowledgement:
10004  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10005  *
10006  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10007  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10008  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10009  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10010  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10011  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10012  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10013  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10014  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10015  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10016  * SUCH DAMAGE.
10017  *
10018  * The licence and distribution terms for any publically available version or
10019  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10020  * copied and put under another distribution licence
10021  * [including the GNU Public Licence.]
10022  */
10023 # 66 "/usr/include/openssl/evp.h" 3 4
10024 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
10025 /* opensslconf.h */
10026 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
10027 
10028 
10029 
10030 
10031 /* OpenSSL was configured with the following options: */
10032 # 108 "/usr/include/openssl/opensslconf.h" 3 4
10033 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
10034    asks for it.  This is a transient feature that is provided for those
10035    who haven't had the time to do the appropriate changes in their
10036    applications.  */
10037 # 204 "/usr/include/openssl/opensslconf.h" 3 4
10038 /* crypto/opensslconf.h.in */
10039 
10040 /* Generate 80386 code? */
10041 # 67 "/usr/include/openssl/evp.h" 2 3 4
10042 
10043 
10044 
10045 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
10046 /* ====================================================================
10047  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
10048  *
10049  * Redistribution and use in source and binary forms, with or without
10050  * modification, are permitted provided that the following conditions
10051  * are met:
10052  *
10053  * 1. Redistributions of source code must retain the above copyright
10054  *    notice, this list of conditions and the following disclaimer.
10055  *
10056  * 2. Redistributions in binary form must reproduce the above copyright
10057  *    notice, this list of conditions and the following disclaimer in
10058  *    the documentation and/or other materials provided with the
10059  *    distribution.
10060  *
10061  * 3. All advertising materials mentioning features or use of this
10062  *    software must display the following acknowledgment:
10063  *    "This product includes software developed by the OpenSSL Project
10064  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10065  *
10066  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10067  *    endorse or promote products derived from this software without
10068  *    prior written permission. For written permission, please contact
10069  *    openssl-core@openssl.org.
10070  *
10071  * 5. Products derived from this software may not be called "OpenSSL"
10072  *    nor may "OpenSSL" appear in their names without prior written
10073  *    permission of the OpenSSL Project.
10074  *
10075  * 6. Redistributions of any form whatsoever must retain the following
10076  *    acknowledgment:
10077  *    "This product includes software developed by the OpenSSL Project
10078  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10079  *
10080  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10081  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10082  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10083  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10084  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10085  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10086  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10087  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10088  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10089  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10090  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10091  * OF THE POSSIBILITY OF SUCH DAMAGE.
10092  * ====================================================================
10093  *
10094  * This product includes cryptographic software written by Eric Young
10095  * (eay@cryptsoft.com).  This product includes software written by Tim
10096  * Hudson (tjh@cryptsoft.com).
10097  *
10098  */
10099 # 71 "/usr/include/openssl/evp.h" 2 3 4
10100 
10101 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
10102 /* ====================================================================
10103  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
10104  *
10105  * Redistribution and use in source and binary forms, with or without
10106  * modification, are permitted provided that the following conditions
10107  * are met:
10108  *
10109  * 1. Redistributions of source code must retain the above copyright
10110  *    notice, this list of conditions and the following disclaimer.
10111  *
10112  * 2. Redistributions in binary form must reproduce the above copyright
10113  *    notice, this list of conditions and the following disclaimer in
10114  *    the documentation and/or other materials provided with the
10115  *    distribution.
10116  *
10117  * 3. All advertising materials mentioning features or use of this
10118  *    software must display the following acknowledgment:
10119  *    "This product includes software developed by the OpenSSL Project
10120  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10121  *
10122  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10123  *    endorse or promote products derived from this software without
10124  *    prior written permission. For written permission, please contact
10125  *    openssl-core@openssl.org.
10126  *
10127  * 5. Products derived from this software may not be called "OpenSSL"
10128  *    nor may "OpenSSL" appear in their names without prior written
10129  *    permission of the OpenSSL Project.
10130  *
10131  * 6. Redistributions of any form whatsoever must retain the following
10132  *    acknowledgment:
10133  *    "This product includes software developed by the OpenSSL Project
10134  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10135  *
10136  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10137  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10138  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10139  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10140  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10141  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10142  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10143  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10144  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10145  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10146  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10147  * OF THE POSSIBILITY OF SUCH DAMAGE.
10148  * ====================================================================
10149  *
10150  * This product includes cryptographic software written by Eric Young
10151  * (eay@cryptsoft.com).  This product includes software written by Tim
10152  * Hudson (tjh@cryptsoft.com).
10153  *
10154  */
10155 # 73 "/usr/include/openssl/evp.h" 2 3 4
10156 
10157 
10158 # 1 "/usr/include/openssl/bio.h" 1 3 4
10159 /* crypto/bio/bio.h */
10160 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10161  * All rights reserved.
10162  *
10163  * This package is an SSL implementation written
10164  * by Eric Young (eay@cryptsoft.com).
10165  * The implementation was written so as to conform with Netscapes SSL.
10166  *
10167  * This library is free for commercial and non-commercial use as long as
10168  * the following conditions are aheared to.  The following conditions
10169  * apply to all code found in this distribution, be it the RC4, RSA,
10170  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10171  * included with this distribution is covered by the same copyright terms
10172  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10173  *
10174  * Copyright remains Eric Young's, and as such any Copyright notices in
10175  * the code are not to be removed.
10176  * If this package is used in a product, Eric Young should be given attribution
10177  * as the author of the parts of the library used.
10178  * This can be in the form of a textual message at program startup or
10179  * in documentation (online or textual) provided with the package.
10180  *
10181  * Redistribution and use in source and binary forms, with or without
10182  * modification, are permitted provided that the following conditions
10183  * are met:
10184  * 1. Redistributions of source code must retain the copyright
10185  *    notice, this list of conditions and the following disclaimer.
10186  * 2. Redistributions in binary form must reproduce the above copyright
10187  *    notice, this list of conditions and the following disclaimer in the
10188  *    documentation and/or other materials provided with the distribution.
10189  * 3. All advertising materials mentioning features or use of this software
10190  *    must display the following acknowledgement:
10191  *    "This product includes cryptographic software written by
10192  *     Eric Young (eay@cryptsoft.com)"
10193  *    The word 'cryptographic' can be left out if the rouines from the library
10194  *    being used are not cryptographic related :-).
10195  * 4. If you include any Windows specific code (or a derivative thereof) from
10196  *    the apps directory (application code) you must include an acknowledgement:
10197  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10198  *
10199  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10200  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10201  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10202  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10203  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10204  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10205  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10206  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10207  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10208  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10209  * SUCH DAMAGE.
10210  *
10211  * The licence and distribution terms for any publically available version or
10212  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10213  * copied and put under another distribution licence
10214  * [including the GNU Public Licence.]
10215  */
10216 # 76 "/usr/include/openssl/evp.h" 2 3 4
10217 
10218 
10219 /*-
10220 #define EVP_RC2_KEY_SIZE                16
10221 #define EVP_RC4_KEY_SIZE                16
10222 #define EVP_BLOWFISH_KEY_SIZE           16
10223 #define EVP_CAST5_KEY_SIZE              16
10224 #define EVP_RC5_32_12_16_KEY_SIZE       16
10225 */
10226 
10227 
10228 
10229 
10230 
10231 
10232 /* Default PKCS#5 iteration count */
10233 
10234 
10235 # 1 "/usr/include/openssl/objects.h" 1 3 4
10236 /* crypto/objects/objects.h */
10237 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10238  * All rights reserved.
10239  *
10240  * This package is an SSL implementation written
10241  * by Eric Young (eay@cryptsoft.com).
10242  * The implementation was written so as to conform with Netscapes SSL.
10243  *
10244  * This library is free for commercial and non-commercial use as long as
10245  * the following conditions are aheared to.  The following conditions
10246  * apply to all code found in this distribution, be it the RC4, RSA,
10247  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10248  * included with this distribution is covered by the same copyright terms
10249  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10250  *
10251  * Copyright remains Eric Young's, and as such any Copyright notices in
10252  * the code are not to be removed.
10253  * If this package is used in a product, Eric Young should be given attribution
10254  * as the author of the parts of the library used.
10255  * This can be in the form of a textual message at program startup or
10256  * in documentation (online or textual) provided with the package.
10257  *
10258  * Redistribution and use in source and binary forms, with or without
10259  * modification, are permitted provided that the following conditions
10260  * are met:
10261  * 1. Redistributions of source code must retain the copyright
10262  *    notice, this list of conditions and the following disclaimer.
10263  * 2. Redistributions in binary form must reproduce the above copyright
10264  *    notice, this list of conditions and the following disclaimer in the
10265  *    documentation and/or other materials provided with the distribution.
10266  * 3. All advertising materials mentioning features or use of this software
10267  *    must display the following acknowledgement:
10268  *    "This product includes cryptographic software written by
10269  *     Eric Young (eay@cryptsoft.com)"
10270  *    The word 'cryptographic' can be left out if the rouines from the library
10271  *    being used are not cryptographic related :-).
10272  * 4. If you include any Windows specific code (or a derivative thereof) from
10273  *    the apps directory (application code) you must include an acknowledgement:
10274  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10275  *
10276  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10277  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10278  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10279  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10280  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10281  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10282  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10283  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10284  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10285  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10286  * SUCH DAMAGE.
10287  *
10288  * The licence and distribution terms for any publically available version or
10289  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10290  * copied and put under another distribution licence
10291  * [including the GNU Public Licence.]
10292  */
10293 
10294 
10295 
10296 
10297 
10298 
10299 
10300 # 1 "/usr/include/openssl/obj_mac.h" 1 3 4
10301 /* crypto/objects/obj_mac.h */
10302 
10303 /*
10304  * THIS FILE IS GENERATED FROM objects.txt by objects.pl via the following
10305  * command: perl objects.pl objects.txt obj_mac.num obj_mac.h
10306  */
10307 
10308 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
10309  * All rights reserved.
10310  *
10311  * This package is an SSL implementation written
10312  * by Eric Young (eay@cryptsoft.com).
10313  * The implementation was written so as to conform with Netscapes SSL.
10314  *
10315  * This library is free for commercial and non-commercial use as long as
10316  * the following conditions are aheared to.  The following conditions
10317  * apply to all code found in this distribution, be it the RC4, RSA,
10318  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10319  * included with this distribution is covered by the same copyright terms
10320  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10321  *
10322  * Copyright remains Eric Young's, and as such any Copyright notices in
10323  * the code are not to be removed.
10324  * If this package is used in a product, Eric Young should be given attribution
10325  * as the author of the parts of the library used.
10326  * This can be in the form of a textual message at program startup or
10327  * in documentation (online or textual) provided with the package.
10328  *
10329  * Redistribution and use in source and binary forms, with or without
10330  * modification, are permitted provided that the following conditions
10331  * are met:
10332  * 1. Redistributions of source code must retain the copyright
10333  *    notice, this list of conditions and the following disclaimer.
10334  * 2. Redistributions in binary form must reproduce the above copyright
10335  *    notice, this list of conditions and the following disclaimer in the
10336  *    documentation and/or other materials provided with the distribution.
10337  * 3. All advertising materials mentioning features or use of this software
10338  *    must display the following acknowledgement:
10339  *    "This product includes cryptographic software written by
10340  *     Eric Young (eay@cryptsoft.com)"
10341  *    The word 'cryptographic' can be left out if the rouines from the library
10342  *    being used are not cryptographic related :-).
10343  * 4. If you include any Windows specific code (or a derivative thereof) from
10344  *    the apps directory (application code) you must include an acknowledgement:
10345  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10346  *
10347  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10348  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10349  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10350  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10351  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10352  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10353  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10354  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10355  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10356  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10357  * SUCH DAMAGE.
10358  *
10359  * The licence and distribution terms for any publically available version or
10360  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10361  * copied and put under another distribution licence
10362  * [including the GNU Public Licence.]
10363  */
10364 # 66 "/usr/include/openssl/objects.h" 2 3 4
10365 # 964 "/usr/include/openssl/objects.h" 3 4
10366 # 1 "/usr/include/openssl/bio.h" 1 3 4
10367 /* crypto/bio/bio.h */
10368 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10369  * All rights reserved.
10370  *
10371  * This package is an SSL implementation written
10372  * by Eric Young (eay@cryptsoft.com).
10373  * The implementation was written so as to conform with Netscapes SSL.
10374  *
10375  * This library is free for commercial and non-commercial use as long as
10376  * the following conditions are aheared to.  The following conditions
10377  * apply to all code found in this distribution, be it the RC4, RSA,
10378  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10379  * included with this distribution is covered by the same copyright terms
10380  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10381  *
10382  * Copyright remains Eric Young's, and as such any Copyright notices in
10383  * the code are not to be removed.
10384  * If this package is used in a product, Eric Young should be given attribution
10385  * as the author of the parts of the library used.
10386  * This can be in the form of a textual message at program startup or
10387  * in documentation (online or textual) provided with the package.
10388  *
10389  * Redistribution and use in source and binary forms, with or without
10390  * modification, are permitted provided that the following conditions
10391  * are met:
10392  * 1. Redistributions of source code must retain the copyright
10393  *    notice, this list of conditions and the following disclaimer.
10394  * 2. Redistributions in binary form must reproduce the above copyright
10395  *    notice, this list of conditions and the following disclaimer in the
10396  *    documentation and/or other materials provided with the distribution.
10397  * 3. All advertising materials mentioning features or use of this software
10398  *    must display the following acknowledgement:
10399  *    "This product includes cryptographic software written by
10400  *     Eric Young (eay@cryptsoft.com)"
10401  *    The word 'cryptographic' can be left out if the rouines from the library
10402  *    being used are not cryptographic related :-).
10403  * 4. If you include any Windows specific code (or a derivative thereof) from
10404  *    the apps directory (application code) you must include an acknowledgement:
10405  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10406  *
10407  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10408  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10409  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10410  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10411  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10412  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10413  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10414  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10415  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10416  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10417  * SUCH DAMAGE.
10418  *
10419  * The licence and distribution terms for any publically available version or
10420  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10421  * copied and put under another distribution licence
10422  * [including the GNU Public Licence.]
10423  */
10424 # 965 "/usr/include/openssl/objects.h" 2 3 4
10425 # 1 "/usr/include/openssl/asn1.h" 1 3 4
10426 /* crypto/asn1/asn1.h */
10427 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10428  * All rights reserved.
10429  *
10430  * This package is an SSL implementation written
10431  * by Eric Young (eay@cryptsoft.com).
10432  * The implementation was written so as to conform with Netscapes SSL.
10433  *
10434  * This library is free for commercial and non-commercial use as long as
10435  * the following conditions are aheared to.  The following conditions
10436  * apply to all code found in this distribution, be it the RC4, RSA,
10437  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10438  * included with this distribution is covered by the same copyright terms
10439  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10440  *
10441  * Copyright remains Eric Young's, and as such any Copyright notices in
10442  * the code are not to be removed.
10443  * If this package is used in a product, Eric Young should be given attribution
10444  * as the author of the parts of the library used.
10445  * This can be in the form of a textual message at program startup or
10446  * in documentation (online or textual) provided with the package.
10447  *
10448  * Redistribution and use in source and binary forms, with or without
10449  * modification, are permitted provided that the following conditions
10450  * are met:
10451  * 1. Redistributions of source code must retain the copyright
10452  *    notice, this list of conditions and the following disclaimer.
10453  * 2. Redistributions in binary form must reproduce the above copyright
10454  *    notice, this list of conditions and the following disclaimer in the
10455  *    documentation and/or other materials provided with the distribution.
10456  * 3. All advertising materials mentioning features or use of this software
10457  *    must display the following acknowledgement:
10458  *    "This product includes cryptographic software written by
10459  *     Eric Young (eay@cryptsoft.com)"
10460  *    The word 'cryptographic' can be left out if the rouines from the library
10461  *    being used are not cryptographic related :-).
10462  * 4. If you include any Windows specific code (or a derivative thereof) from
10463  *    the apps directory (application code) you must include an acknowledgement:
10464  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10465  *
10466  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10467  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10468  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10469  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10470  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10471  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10472  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10473  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10474  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10475  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10476  * SUCH DAMAGE.
10477  *
10478  * The licence and distribution terms for any publically available version or
10479  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10480  * copied and put under another distribution licence
10481  * [including the GNU Public Licence.]
10482  */
10483 
10484 
10485 
10486 
10487 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 1 3 4
10488 /*
10489  * CDDL HEADER START
10490  *
10491  * The contents of this file are subject to the terms of the
10492  * Common Development and Distribution License (the "License").
10493  * You may not use this file except in compliance with the License.
10494  *
10495  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10496  * or http://www.opensolaris.org/os/licensing.
10497  * See the License for the specific language governing permissions
10498  * and limitations under the License.
10499  *
10500  * When distributing Covered Code, include this CDDL HEADER in each
10501  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
10502  * If applicable, add the following below this CDDL HEADER, with the
10503  * fields enclosed by brackets "[]" replaced with your own identifying
10504  * information: Portions Copyright [yyyy] [name of copyright owner]
10505  *
10506  * CDDL HEADER END
10507  */
10508 /*	Copyright (c) 1988 AT&T	*/
10509 /*	  All Rights Reserved  	*/
10510 
10511 
10512 /*
10513  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
10514  *
10515  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
10516  * Use is subject to license terms.
10517  */
10518 /*
10519  * Copyright 2010 Nexenta Systems, Inc.  Al rights reserved.
10520  * Copyright 2016 Joyent, Inc.
10521  */
10522 # 63 "/usr/include/openssl/asn1.h" 2 3 4
10523 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
10524 /* e_os2.h */
10525 /* ====================================================================
10526  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
10527  *
10528  * Redistribution and use in source and binary forms, with or without
10529  * modification, are permitted provided that the following conditions
10530  * are met:
10531  *
10532  * 1. Redistributions of source code must retain the above copyright
10533  *    notice, this list of conditions and the following disclaimer.
10534  *
10535  * 2. Redistributions in binary form must reproduce the above copyright
10536  *    notice, this list of conditions and the following disclaimer in
10537  *    the documentation and/or other materials provided with the
10538  *    distribution.
10539  *
10540  * 3. All advertising materials mentioning features or use of this
10541  *    software must display the following acknowledgment:
10542  *    "This product includes software developed by the OpenSSL Project
10543  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10544  *
10545  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10546  *    endorse or promote products derived from this software without
10547  *    prior written permission. For written permission, please contact
10548  *    openssl-core@openssl.org.
10549  *
10550  * 5. Products derived from this software may not be called "OpenSSL"
10551  *    nor may "OpenSSL" appear in their names without prior written
10552  *    permission of the OpenSSL Project.
10553  *
10554  * 6. Redistributions of any form whatsoever must retain the following
10555  *    acknowledgment:
10556  *    "This product includes software developed by the OpenSSL Project
10557  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10558  *
10559  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10560  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10561  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10562  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10563  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10564  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10565  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10566  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10567  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10568  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10569  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10570  * OF THE POSSIBILITY OF SUCH DAMAGE.
10571  * ====================================================================
10572  *
10573  * This product includes cryptographic software written by Eric Young
10574  * (eay@cryptsoft.com).  This product includes software written by Tim
10575  * Hudson (tjh@cryptsoft.com).
10576  *
10577  */
10578 
10579 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
10580 /* opensslconf.h */
10581 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
10582 
10583 
10584 
10585 
10586 /* OpenSSL was configured with the following options: */
10587 # 108 "/usr/include/openssl/opensslconf.h" 3 4
10588 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
10589    asks for it.  This is a transient feature that is provided for those
10590    who haven't had the time to do the appropriate changes in their
10591    applications.  */
10592 # 204 "/usr/include/openssl/opensslconf.h" 3 4
10593 /* crypto/opensslconf.h.in */
10594 
10595 /* Generate 80386 code? */
10596 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
10597 # 64 "/usr/include/openssl/asn1.h" 2 3 4
10598 
10599 # 1 "/usr/include/openssl/bio.h" 1 3 4
10600 /* crypto/bio/bio.h */
10601 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10602  * All rights reserved.
10603  *
10604  * This package is an SSL implementation written
10605  * by Eric Young (eay@cryptsoft.com).
10606  * The implementation was written so as to conform with Netscapes SSL.
10607  *
10608  * This library is free for commercial and non-commercial use as long as
10609  * the following conditions are aheared to.  The following conditions
10610  * apply to all code found in this distribution, be it the RC4, RSA,
10611  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10612  * included with this distribution is covered by the same copyright terms
10613  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10614  *
10615  * Copyright remains Eric Young's, and as such any Copyright notices in
10616  * the code are not to be removed.
10617  * If this package is used in a product, Eric Young should be given attribution
10618  * as the author of the parts of the library used.
10619  * This can be in the form of a textual message at program startup or
10620  * in documentation (online or textual) provided with the package.
10621  *
10622  * Redistribution and use in source and binary forms, with or without
10623  * modification, are permitted provided that the following conditions
10624  * are met:
10625  * 1. Redistributions of source code must retain the copyright
10626  *    notice, this list of conditions and the following disclaimer.
10627  * 2. Redistributions in binary form must reproduce the above copyright
10628  *    notice, this list of conditions and the following disclaimer in the
10629  *    documentation and/or other materials provided with the distribution.
10630  * 3. All advertising materials mentioning features or use of this software
10631  *    must display the following acknowledgement:
10632  *    "This product includes cryptographic software written by
10633  *     Eric Young (eay@cryptsoft.com)"
10634  *    The word 'cryptographic' can be left out if the rouines from the library
10635  *    being used are not cryptographic related :-).
10636  * 4. If you include any Windows specific code (or a derivative thereof) from
10637  *    the apps directory (application code) you must include an acknowledgement:
10638  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10639  *
10640  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10641  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10642  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10643  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10644  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10645  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10646  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10647  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10648  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10649  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10650  * SUCH DAMAGE.
10651  *
10652  * The licence and distribution terms for any publically available version or
10653  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10654  * copied and put under another distribution licence
10655  * [including the GNU Public Licence.]
10656  */
10657 # 66 "/usr/include/openssl/asn1.h" 2 3 4
10658 
10659 # 1 "/usr/include/openssl/stack.h" 1 3 4
10660 /* crypto/stack/stack.h */
10661 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10662  * All rights reserved.
10663  *
10664  * This package is an SSL implementation written
10665  * by Eric Young (eay@cryptsoft.com).
10666  * The implementation was written so as to conform with Netscapes SSL.
10667  *
10668  * This library is free for commercial and non-commercial use as long as
10669  * the following conditions are aheared to.  The following conditions
10670  * apply to all code found in this distribution, be it the RC4, RSA,
10671  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10672  * included with this distribution is covered by the same copyright terms
10673  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10674  *
10675  * Copyright remains Eric Young's, and as such any Copyright notices in
10676  * the code are not to be removed.
10677  * If this package is used in a product, Eric Young should be given attribution
10678  * as the author of the parts of the library used.
10679  * This can be in the form of a textual message at program startup or
10680  * in documentation (online or textual) provided with the package.
10681  *
10682  * Redistribution and use in source and binary forms, with or without
10683  * modification, are permitted provided that the following conditions
10684  * are met:
10685  * 1. Redistributions of source code must retain the copyright
10686  *    notice, this list of conditions and the following disclaimer.
10687  * 2. Redistributions in binary form must reproduce the above copyright
10688  *    notice, this list of conditions and the following disclaimer in the
10689  *    documentation and/or other materials provided with the distribution.
10690  * 3. All advertising materials mentioning features or use of this software
10691  *    must display the following acknowledgement:
10692  *    "This product includes cryptographic software written by
10693  *     Eric Young (eay@cryptsoft.com)"
10694  *    The word 'cryptographic' can be left out if the rouines from the library
10695  *    being used are not cryptographic related :-).
10696  * 4. If you include any Windows specific code (or a derivative thereof) from
10697  *    the apps directory (application code) you must include an acknowledgement:
10698  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10699  *
10700  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10701  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10702  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10703  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10704  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10705  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10706  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10707  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10708  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10709  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10710  * SUCH DAMAGE.
10711  *
10712  * The licence and distribution terms for any publically available version or
10713  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10714  * copied and put under another distribution licence
10715  * [including the GNU Public Licence.]
10716  */
10717 # 68 "/usr/include/openssl/asn1.h" 2 3 4
10718 # 1 "/usr/include/openssl/safestack.h" 1 3 4
10719 /* ====================================================================
10720  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
10721  *
10722  * Redistribution and use in source and binary forms, with or without
10723  * modification, are permitted provided that the following conditions
10724  * are met:
10725  *
10726  * 1. Redistributions of source code must retain the above copyright
10727  *    notice, this list of conditions and the following disclaimer.
10728  *
10729  * 2. Redistributions in binary form must reproduce the above copyright
10730  *    notice, this list of conditions and the following disclaimer in
10731  *    the documentation and/or other materials provided with the
10732  *    distribution.
10733  *
10734  * 3. All advertising materials mentioning features or use of this
10735  *    software must display the following acknowledgment:
10736  *    "This product includes software developed by the OpenSSL Project
10737  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10738  *
10739  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10740  *    endorse or promote products derived from this software without
10741  *    prior written permission. For written permission, please contact
10742  *    openssl-core@openssl.org.
10743  *
10744  * 5. Products derived from this software may not be called "OpenSSL"
10745  *    nor may "OpenSSL" appear in their names without prior written
10746  *    permission of the OpenSSL Project.
10747  *
10748  * 6. Redistributions of any form whatsoever must retain the following
10749  *    acknowledgment:
10750  *    "This product includes software developed by the OpenSSL Project
10751  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10752  *
10753  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10754  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10755  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10756  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10757  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10758  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10759  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10760  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10761  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10762  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10763  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10764  * OF THE POSSIBILITY OF SUCH DAMAGE.
10765  * ====================================================================
10766  *
10767  * This product includes cryptographic software written by Eric Young
10768  * (eay@cryptsoft.com).  This product includes software written by Tim
10769  * Hudson (tjh@cryptsoft.com).
10770  *
10771  */
10772 # 69 "/usr/include/openssl/asn1.h" 2 3 4
10773 
10774 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
10775 /* ====================================================================
10776  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
10777  *
10778  * Redistribution and use in source and binary forms, with or without
10779  * modification, are permitted provided that the following conditions
10780  * are met:
10781  *
10782  * 1. Redistributions of source code must retain the above copyright
10783  *    notice, this list of conditions and the following disclaimer.
10784  *
10785  * 2. Redistributions in binary form must reproduce the above copyright
10786  *    notice, this list of conditions and the following disclaimer in
10787  *    the documentation and/or other materials provided with the
10788  *    distribution.
10789  *
10790  * 3. All advertising materials mentioning features or use of this
10791  *    software must display the following acknowledgment:
10792  *    "This product includes software developed by the OpenSSL Project
10793  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10794  *
10795  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10796  *    endorse or promote products derived from this software without
10797  *    prior written permission. For written permission, please contact
10798  *    openssl-core@openssl.org.
10799  *
10800  * 5. Products derived from this software may not be called "OpenSSL"
10801  *    nor may "OpenSSL" appear in their names without prior written
10802  *    permission of the OpenSSL Project.
10803  *
10804  * 6. Redistributions of any form whatsoever must retain the following
10805  *    acknowledgment:
10806  *    "This product includes software developed by the OpenSSL Project
10807  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10808  *
10809  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10810  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10811  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10812  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10813  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10814  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10815  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10816  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10817  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10818  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10819  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10820  * OF THE POSSIBILITY OF SUCH DAMAGE.
10821  * ====================================================================
10822  *
10823  * This product includes cryptographic software written by Eric Young
10824  * (eay@cryptsoft.com).  This product includes software written by Tim
10825  * Hudson (tjh@cryptsoft.com).
10826  *
10827  */
10828 # 71 "/usr/include/openssl/asn1.h" 2 3 4
10829 
10830 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
10831 /* ====================================================================
10832  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
10833  *
10834  * Redistribution and use in source and binary forms, with or without
10835  * modification, are permitted provided that the following conditions
10836  * are met:
10837  *
10838  * 1. Redistributions of source code must retain the above copyright
10839  *    notice, this list of conditions and the following disclaimer.
10840  *
10841  * 2. Redistributions in binary form must reproduce the above copyright
10842  *    notice, this list of conditions and the following disclaimer in
10843  *    the documentation and/or other materials provided with the
10844  *    distribution.
10845  *
10846  * 3. All advertising materials mentioning features or use of this
10847  *    software must display the following acknowledgment:
10848  *    "This product includes software developed by the OpenSSL Project
10849  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10850  *
10851  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10852  *    endorse or promote products derived from this software without
10853  *    prior written permission. For written permission, please contact
10854  *    openssl-core@openssl.org.
10855  *
10856  * 5. Products derived from this software may not be called "OpenSSL"
10857  *    nor may "OpenSSL" appear in their names without prior written
10858  *    permission of the OpenSSL Project.
10859  *
10860  * 6. Redistributions of any form whatsoever must retain the following
10861  *    acknowledgment:
10862  *    "This product includes software developed by the OpenSSL Project
10863  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10864  *
10865  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10866  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10867  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10868  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10869  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10870  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10871  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10872  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10873  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10874  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10875  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10876  * OF THE POSSIBILITY OF SUCH DAMAGE.
10877  * ====================================================================
10878  *
10879  * This product includes cryptographic software written by Eric Young
10880  * (eay@cryptsoft.com).  This product includes software written by Tim
10881  * Hudson (tjh@cryptsoft.com).
10882  *
10883  */
10884 # 73 "/usr/include/openssl/asn1.h" 2 3 4
10885 
10886 # 1 "/usr/include/openssl/bn.h" 1 3 4
10887 /* crypto/bn/bn.h */
10888 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
10889  * All rights reserved.
10890  *
10891  * This package is an SSL implementation written
10892  * by Eric Young (eay@cryptsoft.com).
10893  * The implementation was written so as to conform with Netscapes SSL.
10894  *
10895  * This library is free for commercial and non-commercial use as long as
10896  * the following conditions are aheared to.  The following conditions
10897  * apply to all code found in this distribution, be it the RC4, RSA,
10898  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10899  * included with this distribution is covered by the same copyright terms
10900  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10901  *
10902  * Copyright remains Eric Young's, and as such any Copyright notices in
10903  * the code are not to be removed.
10904  * If this package is used in a product, Eric Young should be given attribution
10905  * as the author of the parts of the library used.
10906  * This can be in the form of a textual message at program startup or
10907  * in documentation (online or textual) provided with the package.
10908  *
10909  * Redistribution and use in source and binary forms, with or without
10910  * modification, are permitted provided that the following conditions
10911  * are met:
10912  * 1. Redistributions of source code must retain the copyright
10913  *    notice, this list of conditions and the following disclaimer.
10914  * 2. Redistributions in binary form must reproduce the above copyright
10915  *    notice, this list of conditions and the following disclaimer in the
10916  *    documentation and/or other materials provided with the distribution.
10917  * 3. All advertising materials mentioning features or use of this software
10918  *    must display the following acknowledgement:
10919  *    "This product includes cryptographic software written by
10920  *     Eric Young (eay@cryptsoft.com)"
10921  *    The word 'cryptographic' can be left out if the rouines from the library
10922  *    being used are not cryptographic related :-).
10923  * 4. If you include any Windows specific code (or a derivative thereof) from
10924  *    the apps directory (application code) you must include an acknowledgement:
10925  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10926  *
10927  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10928  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10929  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10930  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10931  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10932  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10933  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10934  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10935  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10936  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10937  * SUCH DAMAGE.
10938  *
10939  * The licence and distribution terms for any publically available version or
10940  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10941  * copied and put under another distribution licence
10942  * [including the GNU Public Licence.]
10943  */
10944 /* ====================================================================
10945  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
10946  *
10947  * Redistribution and use in source and binary forms, with or without
10948  * modification, are permitted provided that the following conditions
10949  * are met:
10950  *
10951  * 1. Redistributions of source code must retain the above copyright
10952  *    notice, this list of conditions and the following disclaimer.
10953  *
10954  * 2. Redistributions in binary form must reproduce the above copyright
10955  *    notice, this list of conditions and the following disclaimer in
10956  *    the documentation and/or other materials provided with the
10957  *    distribution.
10958  *
10959  * 3. All advertising materials mentioning features or use of this
10960  *    software must display the following acknowledgment:
10961  *    "This product includes software developed by the OpenSSL Project
10962  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10963  *
10964  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10965  *    endorse or promote products derived from this software without
10966  *    prior written permission. For written permission, please contact
10967  *    openssl-core@openssl.org.
10968  *
10969  * 5. Products derived from this software may not be called "OpenSSL"
10970  *    nor may "OpenSSL" appear in their names without prior written
10971  *    permission of the OpenSSL Project.
10972  *
10973  * 6. Redistributions of any form whatsoever must retain the following
10974  *    acknowledgment:
10975  *    "This product includes software developed by the OpenSSL Project
10976  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10977  *
10978  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10979  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10980  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10981  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10982  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10983  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10984  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10985  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10986  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10987  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10988  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10989  * OF THE POSSIBILITY OF SUCH DAMAGE.
10990  * ====================================================================
10991  *
10992  * This product includes cryptographic software written by Eric Young
10993  * (eay@cryptsoft.com).  This product includes software written by Tim
10994  * Hudson (tjh@cryptsoft.com).
10995  *
10996  */
10997 /* ====================================================================
10998  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
10999  *
11000  * Portions of the attached software ("Contribution") are developed by
11001  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
11002  *
11003  * The Contribution is licensed pursuant to the Eric Young open source
11004  * license provided above.
11005  *
11006  * The binary polynomial arithmetic software is originally written by
11007  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
11008  *
11009  */
11010 
11011 
11012 
11013 
11014 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 1 3 4
11015 /*
11016  * CDDL HEADER START
11017  *
11018  * The contents of this file are subject to the terms of the
11019  * Common Development and Distribution License (the "License").
11020  * You may not use this file except in compliance with the License.
11021  *
11022  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11023  * or http://www.opensolaris.org/os/licensing.
11024  * See the License for the specific language governing permissions
11025  * and limitations under the License.
11026  *
11027  * When distributing Covered Code, include this CDDL HEADER in each
11028  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
11029  * If applicable, add the following below this CDDL HEADER, with the
11030  * fields enclosed by brackets "[]" replaced with your own identifying
11031  * information: Portions Copyright [yyyy] [name of copyright owner]
11032  *
11033  * CDDL HEADER END
11034  */
11035 
11036 /*
11037  * Copyright (c) 2013 Gary Mills
11038  *
11039  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
11040  * Use is subject to license terms.
11041  */
11042 
11043 /*	Copyright (c) 1988 AT&T	*/
11044 /*	  All Rights Reserved  	*/
11045 # 129 "/usr/include/openssl/bn.h" 2 3 4
11046 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
11047 /* e_os2.h */
11048 /* ====================================================================
11049  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
11050  *
11051  * Redistribution and use in source and binary forms, with or without
11052  * modification, are permitted provided that the following conditions
11053  * are met:
11054  *
11055  * 1. Redistributions of source code must retain the above copyright
11056  *    notice, this list of conditions and the following disclaimer.
11057  *
11058  * 2. Redistributions in binary form must reproduce the above copyright
11059  *    notice, this list of conditions and the following disclaimer in
11060  *    the documentation and/or other materials provided with the
11061  *    distribution.
11062  *
11063  * 3. All advertising materials mentioning features or use of this
11064  *    software must display the following acknowledgment:
11065  *    "This product includes software developed by the OpenSSL Project
11066  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
11067  *
11068  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
11069  *    endorse or promote products derived from this software without
11070  *    prior written permission. For written permission, please contact
11071  *    openssl-core@openssl.org.
11072  *
11073  * 5. Products derived from this software may not be called "OpenSSL"
11074  *    nor may "OpenSSL" appear in their names without prior written
11075  *    permission of the OpenSSL Project.
11076  *
11077  * 6. Redistributions of any form whatsoever must retain the following
11078  *    acknowledgment:
11079  *    "This product includes software developed by the OpenSSL Project
11080  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
11081  *
11082  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
11083  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
11084  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
11085  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
11086  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11087  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
11088  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
11089  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11090  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
11091  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
11092  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
11093  * OF THE POSSIBILITY OF SUCH DAMAGE.
11094  * ====================================================================
11095  *
11096  * This product includes cryptographic software written by Eric Young
11097  * (eay@cryptsoft.com).  This product includes software written by Tim
11098  * Hudson (tjh@cryptsoft.com).
11099  *
11100  */
11101 
11102 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
11103 /* opensslconf.h */
11104 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
11105 
11106 
11107 
11108 
11109 /* OpenSSL was configured with the following options: */
11110 # 108 "/usr/include/openssl/opensslconf.h" 3 4
11111 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
11112    asks for it.  This is a transient feature that is provided for those
11113    who haven't had the time to do the appropriate changes in their
11114    applications.  */
11115 # 204 "/usr/include/openssl/opensslconf.h" 3 4
11116 /* crypto/opensslconf.h.in */
11117 
11118 /* Generate 80386 code? */
11119 # 272 "/usr/include/openssl/opensslconf.h" 3 4
11120 /*
11121  * OpenSSL revision 1.521 from 2005-12-15 in OpenSSL_1_0_0-stable branch changed
11122  * 64 bit sparcv9 configuration from SIXTY_FOUR_BIT_LONG to BN_LLONG.
11123  */
11124 
11125 
11126 
11127 
11128 
11129 
11130 /* Should we define BN_DIV2W here? */
11131 
11132 /* Only one for the following should be defined */
11133 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
11134 # 130 "/usr/include/openssl/bn.h" 2 3 4
11135 
11136 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
11137 /*
11138  * CDDL HEADER START
11139  *
11140  * The contents of this file are subject to the terms of the
11141  * Common Development and Distribution License (the "License").
11142  * You may not use this file except in compliance with the License.
11143  *
11144  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11145  * or http://www.opensolaris.org/os/licensing.
11146  * See the License for the specific language governing permissions
11147  * and limitations under the License.
11148  *
11149  * When distributing Covered Code, include this CDDL HEADER in each
11150  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
11151  * If applicable, add the following below this CDDL HEADER, with the
11152  * fields enclosed by brackets "[]" replaced with your own identifying
11153  * information: Portions Copyright [yyyy] [name of copyright owner]
11154  *
11155  * CDDL HEADER END
11156  */
11157 
11158 /*
11159  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
11160  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
11161  */
11162 
11163 /*	Copyright (c) 1988 AT&T	*/
11164 /*	  All Rights Reserved  	*/
11165 
11166 /*
11167  * User-visible pieces of the ANSI C standard I/O package.
11168  */
11169 # 132 "/usr/include/openssl/bn.h" 2 3 4
11170 
11171 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
11172 /* ====================================================================
11173  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
11174  *
11175  * Redistribution and use in source and binary forms, with or without
11176  * modification, are permitted provided that the following conditions
11177  * are met:
11178  *
11179  * 1. Redistributions of source code must retain the above copyright
11180  *    notice, this list of conditions and the following disclaimer.
11181  *
11182  * 2. Redistributions in binary form must reproduce the above copyright
11183  *    notice, this list of conditions and the following disclaimer in
11184  *    the documentation and/or other materials provided with the
11185  *    distribution.
11186  *
11187  * 3. All advertising materials mentioning features or use of this
11188  *    software must display the following acknowledgment:
11189  *    "This product includes software developed by the OpenSSL Project
11190  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
11191  *
11192  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
11193  *    endorse or promote products derived from this software without
11194  *    prior written permission. For written permission, please contact
11195  *    openssl-core@openssl.org.
11196  *
11197  * 5. Products derived from this software may not be called "OpenSSL"
11198  *    nor may "OpenSSL" appear in their names without prior written
11199  *    permission of the OpenSSL Project.
11200  *
11201  * 6. Redistributions of any form whatsoever must retain the following
11202  *    acknowledgment:
11203  *    "This product includes software developed by the OpenSSL Project
11204  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
11205  *
11206  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
11207  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
11208  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
11209  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
11210  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11211  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
11212  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
11213  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11214  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
11215  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
11216  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
11217  * OF THE POSSIBILITY OF SUCH DAMAGE.
11218  * ====================================================================
11219  *
11220  * This product includes cryptographic software written by Eric Young
11221  * (eay@cryptsoft.com).  This product includes software written by Tim
11222  * Hudson (tjh@cryptsoft.com).
11223  *
11224  */
11225 # 134 "/usr/include/openssl/bn.h" 2 3 4
11226 # 1 "/usr/include/openssl/crypto.h" 1 3 4
11227 /* crypto/crypto.h */
11228 /* ====================================================================
11229  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
11230  *
11231  * Redistribution and use in source and binary forms, with or without
11232  * modification, are permitted provided that the following conditions
11233  * are met:
11234  *
11235  * 1. Redistributions of source code must retain the above copyright
11236  *    notice, this list of conditions and the following disclaimer.
11237  *
11238  * 2. Redistributions in binary form must reproduce the above copyright
11239  *    notice, this list of conditions and the following disclaimer in
11240  *    the documentation and/or other materials provided with the
11241  *    distribution.
11242  *
11243  * 3. All advertising materials mentioning features or use of this
11244  *    software must display the following acknowledgment:
11245  *    "This product includes software developed by the OpenSSL Project
11246  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
11247  *
11248  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
11249  *    endorse or promote products derived from this software without
11250  *    prior written permission. For written permission, please contact
11251  *    openssl-core@openssl.org.
11252  *
11253  * 5. Products derived from this software may not be called "OpenSSL"
11254  *    nor may "OpenSSL" appear in their names without prior written
11255  *    permission of the OpenSSL Project.
11256  *
11257  * 6. Redistributions of any form whatsoever must retain the following
11258  *    acknowledgment:
11259  *    "This product includes software developed by the OpenSSL Project
11260  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
11261  *
11262  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
11263  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
11264  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
11265  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
11266  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11267  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
11268  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
11269  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11270  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
11271  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
11272  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
11273  * OF THE POSSIBILITY OF SUCH DAMAGE.
11274  * ====================================================================
11275  *
11276  * This product includes cryptographic software written by Eric Young
11277  * (eay@cryptsoft.com).  This product includes software written by Tim
11278  * Hudson (tjh@cryptsoft.com).
11279  *
11280  */
11281 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
11282  * All rights reserved.
11283  *
11284  * This package is an SSL implementation written
11285  * by Eric Young (eay@cryptsoft.com).
11286  * The implementation was written so as to conform with Netscapes SSL.
11287  *
11288  * This library is free for commercial and non-commercial use as long as
11289  * the following conditions are aheared to.  The following conditions
11290  * apply to all code found in this distribution, be it the RC4, RSA,
11291  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
11292  * included with this distribution is covered by the same copyright terms
11293  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
11294  *
11295  * Copyright remains Eric Young's, and as such any Copyright notices in
11296  * the code are not to be removed.
11297  * If this package is used in a product, Eric Young should be given attribution
11298  * as the author of the parts of the library used.
11299  * This can be in the form of a textual message at program startup or
11300  * in documentation (online or textual) provided with the package.
11301  *
11302  * Redistribution and use in source and binary forms, with or without
11303  * modification, are permitted provided that the following conditions
11304  * are met:
11305  * 1. Redistributions of source code must retain the copyright
11306  *    notice, this list of conditions and the following disclaimer.
11307  * 2. Redistributions in binary form must reproduce the above copyright
11308  *    notice, this list of conditions and the following disclaimer in the
11309  *    documentation and/or other materials provided with the distribution.
11310  * 3. All advertising materials mentioning features or use of this software
11311  *    must display the following acknowledgement:
11312  *    "This product includes cryptographic software written by
11313  *     Eric Young (eay@cryptsoft.com)"
11314  *    The word 'cryptographic' can be left out if the rouines from the library
11315  *    being used are not cryptographic related :-).
11316  * 4. If you include any Windows specific code (or a derivative thereof) from
11317  *    the apps directory (application code) you must include an acknowledgement:
11318  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
11319  *
11320  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
11321  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
11322  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
11323  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
11324  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
11325  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
11326  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11327  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
11328  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
11329  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
11330  * SUCH DAMAGE.
11331  *
11332  * The licence and distribution terms for any publically available version or
11333  * derivative of this code cannot be changed.  i.e. this code cannot simply be
11334  * copied and put under another distribution licence
11335  * [including the GNU Public Licence.]
11336  */
11337 /* ====================================================================
11338  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
11339  * ECDH support in OpenSSL originally developed by
11340  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
11341  */
11342 # 135 "/usr/include/openssl/bn.h" 2 3 4
11343 
11344 
11345 
11346 
11347 
11348 /*
11349  * These preprocessor symbols control various aspects of the bignum headers
11350  * and library code. They're not defined by any "normal" configuration, as
11351  * they are intended for development and testing purposes. NB: defining all
11352  * three can be useful for debugging application code as well as openssl
11353  * itself. BN_DEBUG - turn on various debugging alterations to the bignum
11354  * code BN_DEBUG_RAND - uses random poisoning of unused words to trip up
11355  * mismanagement of bignum internals. You must also define BN_DEBUG.
11356  */
11357 /* #define BN_DEBUG */
11358 /* #define BN_DEBUG_RAND */
11359 
11360 
11361 
11362 
11363 
11364 
11365 
11366 /*
11367  * This next option uses the C libraries (2 word)/(1 word) function. If it is
11368  * not defined, I use my C version (which is slower). The reason for this
11369  * flag is that when the particular C compiler library routine is used, and
11370  * the library is linked with a different compiler, the library is missing.
11371  * This mostly happens when the library is built with gcc and then linked
11372  * using normal cc.  This would be a common occurrence because gcc normally
11373  * produces code that is 2 times faster than system compilers for the big
11374  * number stuff. For machines with only one compiler (or shared libraries),
11375  * this should be on.  Again this in only really a problem on machines using
11376  * "long long's", are 32bit, and are not using my assembler code.
11377  */
11378 
11379 
11380 
11381 
11382 
11383 
11384 
11385 /*
11386  * assuming long is 64bit - this is the DEC Alpha unsigned long long is only
11387  * 64 bits :-(, don't define BN_LLONG for the DEC Alpha
11388  */
11389 # 203 "/usr/include/openssl/bn.h" 3 4
11390 /*
11391  * This is where the long long data type is 64 bits, but long is 32. For
11392  * machines where there are 64bit registers, this is the mode to use. IRIX,
11393  * on R4000 and above should use this mode, along with the relevant assembler
11394  * code :-).  Do NOT define BN_LLONG.
11395  */
11396 # 265 "/usr/include/openssl/bn.h" 3 4
11397 /*
11398  * avoid leaking exponent information through timing,
11399  * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime,
11400  * BN_div() will call BN_div_no_branch,
11401  * BN_mod_inverse() will call BN_mod_inverse_no_branch.
11402  */
11403 # 284 "/usr/include/openssl/bn.h" 3 4
11404                                        /* used for debuging */
11405 
11406 
11407 
11408 
11409 /*
11410  * get a clone of a BIGNUM with changed flags, for *temporary* use only (the
11411  * two BIGNUMs cannot not be used in parallel!)
11412  */
11413 # 302 "/usr/include/openssl/bn.h" 3 4
11414 /* Already declared in ossl_typ.h */
11415 # 313 "/usr/include/openssl/bn.h" 3 4
11416 struct bignum_st {
11417     unsigned int *d; /* Pointer to an array of 'BN_BITS2' bit
11418                                  * chunks. */
11419     int top; /* Index of last used d +1. */
11420     /* The next are internal book keeping for bn_expand. */
11421     int dmax; /* Size of the d array. */
11422     int neg; /* one if the number is negative */
11423     int flags;
11424 };
11425 
11426 /* Used for montgomery multiplication */
11427 struct bn_mont_ctx_st {
11428     int ri; /* number of bits in R */
11429     BIGNUM RR; /* used to convert to montgomery form */
11430     BIGNUM N; /* The modulus */
11431     BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 (Ni is only
11432                                  * stored for bignum algorithm) */
11433     unsigned int n0[2]; /* least significant word(s) of Ni; (type
11434                                  * changed with 0.9.9, was "BN_ULONG n0;"
11435                                  * before) */
11436     int flags;
11437 };
11438 
11439 /*
11440  * Used for reciprocal division/mod functions It cannot be shared between
11441  * threads
11442  */
11443 struct bn_recp_ctx_st {
11444     BIGNUM N; /* the divisor */
11445     BIGNUM Nr; /* the reciprocal */
11446     int num_bits;
11447     int shift;
11448     int flags;
11449 };
11450 
11451 /* Used for slow "generation" functions. */
11452 struct bn_gencb_st {
11453     unsigned int ver; /* To handle binary (in)compatibility */
11454     void *arg; /* callback-specific data */
11455     union {
11456         /* if(ver==1) - handles old style callbacks */
11457         void (*cb_1) (int, int, void *);
11458         /* if(ver==2) - new callback style */
11459         int (*cb_2) (int, int, BN_GENCB *);
11460     } cb;
11461 };
11462 /* Wrapper function to make using BN_GENCB easier,  */
11463 int BN_GENCB_call(BN_GENCB *cb, int a, int b);
11464 /* Macro to populate a BN_GENCB structure with an "old"-style callback */
11465 
11466 
11467 
11468 
11469 
11470 /* Macro to populate a BN_GENCB structure with a "new"-style callback */
11471 # 377 "/usr/include/openssl/bn.h" 3 4
11472 /*
11473  * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations
11474  * that will be done for checking that a random number is probably prime. The
11475  * error rate for accepting a composite number as prime depends on the size of
11476  * the prime |b|. The error rates used are for calculating an RSA key with 2 primes,
11477  * and so the level is what you would expect for a key of double the size of the
11478  * prime.
11479  *
11480  * This table is generated using the algorithm of FIPS PUB 186-4
11481  * Digital Signature Standard (DSS), section F.1, page 117.
11482  * (https://dx.doi.org/10.6028/NIST.FIPS.186-4)
11483  *
11484  * The following magma script was used to generate the output:
11485  * securitybits:=125;
11486  * k:=1024;
11487  * for t:=1 to 65 do
11488  *   for M:=3 to Floor(2*Sqrt(k-1)-1) do
11489  *     S:=0;
11490  *     // Sum over m
11491  *     for m:=3 to M do
11492  *       s:=0;
11493  *       // Sum over j
11494  *       for j:=2 to m do
11495  *         s+:=(RealField(32)!2)^-(j+(k-1)/j);
11496  *       end for;
11497  *       S+:=2^(m-(m-1)*t)*s;
11498  *     end for;
11499  *     A:=2^(k-2-M*t);
11500  *     B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S;
11501  *     pkt:=2.00743*Log(2)*k*2^-k*(A+B);
11502  *     seclevel:=Floor(-Log(2,pkt));
11503  *     if seclevel ge securitybits then
11504  *       printf "k: %5o, security: %o bits  (t: %o, M: %o)\n",k,seclevel,t,M;
11505  *       break;
11506  *     end if;
11507  *   end for;
11508  *   if seclevel ge securitybits then break; end if;
11509  * end for;
11510  *
11511  * It can be run online at:
11512  * http://magma.maths.usyd.edu.au/calc
11513  *
11514  * And will output:
11515  * k:  1024, security: 129 bits  (t: 6, M: 23)
11516  *
11517  * k is the number of bits of the prime, securitybits is the level we want to
11518  * reach.
11519  *
11520  * prime length | RSA key size | # MR tests | security level
11521  * -------------+--------------|------------+---------------
11522  *  (b) >= 6394 |     >= 12788 |          3 |        256 bit
11523  *  (b) >= 3747 |     >=  7494 |          3 |        192 bit
11524  *  (b) >= 1345 |     >=  2690 |          4 |        128 bit
11525  *  (b) >= 1080 |     >=  2160 |          5 |        128 bit
11526  *  (b) >=  852 |     >=  1704 |          5 |        112 bit
11527  *  (b) >=  476 |     >=   952 |          5 |         80 bit
11528  *  (b) >=  400 |     >=   800 |          6 |         80 bit
11529  *  (b) >=  347 |     >=   694 |          7 |         80 bit
11530  *  (b) >=  308 |     >=   616 |          8 |         80 bit
11531  *  (b) >=   55 |     >=   110 |         27 |         64 bit
11532  *  (b) >=    6 |     >=    12 |         34 |         64 bit
11533  */
11534 # 451 "/usr/include/openssl/bn.h" 3 4
11535 /* Note that BN_abs_is_word didn't work reliably for w == 0 until 0.9.8 */
11536 # 472 "/usr/include/openssl/bn.h" 3 4
11537 const BIGNUM *BN_value_one(void);
11538 char *BN_options(void);
11539 BN_CTX *BN_CTX_new(void);
11540 
11541 void BN_CTX_init(BN_CTX *c);
11542 
11543 void BN_CTX_free(BN_CTX *c);
11544 void BN_CTX_start(BN_CTX *ctx);
11545 BIGNUM *BN_CTX_get(BN_CTX *ctx);
11546 void BN_CTX_end(BN_CTX *ctx);
11547 int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
11548 int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
11549 int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
11550 int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
11551 int BN_num_bits(const BIGNUM *a);
11552 int BN_num_bits_word(unsigned int);
11553 BIGNUM *BN_new(void);
11554 void BN_init(BIGNUM *);
11555 void BN_clear_free(BIGNUM *a);
11556 BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
11557 void BN_swap(BIGNUM *a, BIGNUM *b);
11558 BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
11559 int BN_bn2bin(const BIGNUM *a, unsigned char *to);
11560 BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret);
11561 int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
11562 int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11563 int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11564 int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11565 int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11566 int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
11567 int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
11568 /** BN_set_negative sets sign of a BIGNUM
11569  * \param  b  pointer to the BIGNUM object
11570  * \param  n  0 if the BIGNUM b should be positive and a value != 0 otherwise
11571  */
11572 void BN_set_negative(BIGNUM *b, int n);
11573 /** BN_is_negative returns 1 if the BIGNUM is negative
11574  * \param  a  pointer to the BIGNUM object
11575  * \return 1 if a < 0 and 0 otherwise
11576  */
11577 
11578 
11579 int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
11580            BN_CTX *ctx);
11581 
11582 int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx);
11583 int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
11584                BN_CTX *ctx);
11585 int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11586                      const BIGNUM *m);
11587 int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
11588                BN_CTX *ctx);
11589 int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11590                      const BIGNUM *m);
11591 int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
11592                BN_CTX *ctx);
11593 int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
11594 int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
11595 int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m);
11596 int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
11597                   BN_CTX *ctx);
11598 int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m);
11599 
11600 unsigned int BN_mod_word(const BIGNUM *a, unsigned int w);
11601 unsigned int BN_div_word(BIGNUM *a, unsigned int w);
11602 int BN_mul_word(BIGNUM *a, unsigned int w);
11603 int BN_add_word(BIGNUM *a, unsigned int w);
11604 int BN_sub_word(BIGNUM *a, unsigned int w);
11605 int BN_set_word(BIGNUM *a, unsigned int w);
11606 unsigned int BN_get_word(const BIGNUM *a);
11607 
11608 int BN_cmp(const BIGNUM *a, const BIGNUM *b);
11609 void BN_free(BIGNUM *a);
11610 int BN_is_bit_set(const BIGNUM *a, int n);
11611 int BN_lshift(BIGNUM *r, const BIGNUM *a, int n);
11612 int BN_lshift1(BIGNUM *r, const BIGNUM *a);
11613 int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11614 
11615 int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11616                const BIGNUM *m, BN_CTX *ctx);
11617 int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11618                     const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
11619 int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
11620                               const BIGNUM *m, BN_CTX *ctx,
11621                               BN_MONT_CTX *in_mont);
11622 int BN_mod_exp_mont_word(BIGNUM *r, unsigned int a, const BIGNUM *p,
11623                          const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
11624 int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
11625                      const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
11626                      BN_CTX *ctx, BN_MONT_CTX *m_ctx);
11627 int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11628                       const BIGNUM *m, BN_CTX *ctx);
11629 
11630 int BN_mask_bits(BIGNUM *a, int n);
11631 
11632 int BN_print_fp(FILE *fp, const BIGNUM *a);
11633 
11634 
11635 int BN_print(BIO *fp, const BIGNUM *a);
11636 
11637 
11638 
11639 int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx);
11640 int BN_rshift(BIGNUM *r, const BIGNUM *a, int n);
11641 int BN_rshift1(BIGNUM *r, const BIGNUM *a);
11642 void BN_clear(BIGNUM *a);
11643 BIGNUM *BN_dup(const BIGNUM *a);
11644 int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
11645 int BN_set_bit(BIGNUM *a, int n);
11646 int BN_clear_bit(BIGNUM *a, int n);
11647 char *BN_bn2hex(const BIGNUM *a);
11648 char *BN_bn2dec(const BIGNUM *a);
11649 int BN_hex2bn(BIGNUM **a, const char *str);
11650 int BN_dec2bn(BIGNUM **a, const char *str);
11651 int BN_asc2bn(BIGNUM **a, const char *str);
11652 int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
11653 int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns
11654                                                                   * -2 for
11655                                                                   * error */
11656 BIGNUM *BN_mod_inverse(BIGNUM *ret,
11657                        const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
11658 BIGNUM *BN_mod_sqrt(BIGNUM *ret,
11659                     const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
11660 
11661 void BN_consttime_swap(unsigned int swap, BIGNUM *a, BIGNUM *b, int nwords);
11662 
11663 /* Deprecated versions */
11664 
11665 BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe,
11666                           const BIGNUM *add, const BIGNUM *rem,
11667                           void (*callback) (int, int, void *), void *cb_arg);
11668 int BN_is_prime(const BIGNUM *p, int nchecks,
11669                 void (*callback) (int, int, void *),
11670                 BN_CTX *ctx, void *cb_arg);
11671 int BN_is_prime_fasttest(const BIGNUM *p, int nchecks,
11672                          void (*callback) (int, int, void *), BN_CTX *ctx,
11673                          void *cb_arg, int do_trial_division);
11674 
11675 
11676 /* Newer versions */
11677 int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,
11678                          const BIGNUM *rem, BN_GENCB *cb);
11679 int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb);
11680 int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx,
11681                             int do_trial_division, BN_GENCB *cb);
11682 
11683 int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
11684 
11685 int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
11686                             const BIGNUM *Xp, const BIGNUM *Xp1,
11687                             const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx,
11688                             BN_GENCB *cb);
11689 int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1,
11690                               BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e,
11691                               BN_CTX *ctx, BN_GENCB *cb);
11692 
11693 BN_MONT_CTX *BN_MONT_CTX_new(void);
11694 void BN_MONT_CTX_init(BN_MONT_CTX *ctx);
11695 int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11696                           BN_MONT_CTX *mont, BN_CTX *ctx);
11697 
11698 
11699 int BN_from_montgomery(BIGNUM *r, const BIGNUM *a,
11700                        BN_MONT_CTX *mont, BN_CTX *ctx);
11701 void BN_MONT_CTX_free(BN_MONT_CTX *mont);
11702 int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx);
11703 BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);
11704 BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
11705                                     const BIGNUM *mod, BN_CTX *ctx);
11706 
11707 /* BN_BLINDING flags */
11708 
11709 
11710 
11711 BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
11712 void BN_BLINDING_free(BN_BLINDING *b);
11713 int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
11714 int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
11715 int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
11716 int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
11717 int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
11718                           BN_CTX *);
11719 
11720 unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *);
11721 void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long);
11722 
11723 CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *);
11724 unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
11725 void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
11726 BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
11727                                       const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
11728                                       int (*bn_mod_exp) (BIGNUM *r,
11729                                                          const BIGNUM *a,
11730                                                          const BIGNUM *p,
11731                                                          const BIGNUM *m,
11732                                                          BN_CTX *ctx,
11733                                                          BN_MONT_CTX *m_ctx),
11734                                       BN_MONT_CTX *m_ctx);
11735 
11736 
11737 void BN_set_params(int mul, int high, int low, int mont);
11738 int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */
11739 
11740 
11741 void BN_RECP_CTX_init(BN_RECP_CTX *recp);
11742 BN_RECP_CTX *BN_RECP_CTX_new(void);
11743 void BN_RECP_CTX_free(BN_RECP_CTX *recp);
11744 int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx);
11745 int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y,
11746                           BN_RECP_CTX *recp, BN_CTX *ctx);
11747 int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11748                     const BIGNUM *m, BN_CTX *ctx);
11749 int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
11750                 BN_RECP_CTX *recp, BN_CTX *ctx);
11751 
11752 
11753 
11754 /*
11755  * Functions for arithmetic over binary polynomials represented by BIGNUMs.
11756  * The BIGNUM::neg property of BIGNUMs representing binary polynomials is
11757  * ignored. Note that input arguments are not const so that their bit arrays
11758  * can be expanded to the appropriate size if needed.
11759  */
11760 
11761 /*
11762  * r = a + b
11763  */
11764 int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11765 
11766 /*
11767  * r=a mod p
11768  */
11769 int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p);
11770 /* r = (a * b) mod p */
11771 int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11772                     const BIGNUM *p, BN_CTX *ctx);
11773 /* r = (a * a) mod p */
11774 int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11775 /* r = (1 / b) mod p */
11776 int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx);
11777 /* r = (a / b) mod p */
11778 int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11779                     const BIGNUM *p, BN_CTX *ctx);
11780 /* r = (a ^ b) mod p */
11781 int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11782                     const BIGNUM *p, BN_CTX *ctx);
11783 /* r = sqrt(a) mod p */
11784 int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11785                      BN_CTX *ctx);
11786 /* r^2 + r = a mod p */
11787 int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11788                            BN_CTX *ctx);
11789 
11790 /*-
11791  * Some functions allow for representation of the irreducible polynomials
11792  * as an unsigned int[], say p.  The irreducible f(t) is then of the form:
11793  *     t^p[0] + t^p[1] + ... + t^p[k]
11794  * where m = p[0] > p[1] > ... > p[k] = 0.
11795  */
11796 /* r = a mod p */
11797 int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]);
11798 /* r = (a * b) mod p */
11799 int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11800                         const int p[], BN_CTX *ctx);
11801 /* r = (a * a) mod p */
11802 int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[],
11803                         BN_CTX *ctx);
11804 /* r = (1 / b) mod p */
11805 int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[],
11806                         BN_CTX *ctx);
11807 /* r = (a / b) mod p */
11808 int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11809                         const int p[], BN_CTX *ctx);
11810 /* r = (a ^ b) mod p */
11811 int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11812                         const int p[], BN_CTX *ctx);
11813 /* r = sqrt(a) mod p */
11814 int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a,
11815                          const int p[], BN_CTX *ctx);
11816 /* r^2 + r = a mod p */
11817 int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a,
11818                                const int p[], BN_CTX *ctx);
11819 int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max);
11820 int BN_GF2m_arr2poly(const int p[], BIGNUM *a);
11821 
11822 
11823 
11824 /*
11825  * faster mod functions for the 'NIST primes' 0 <= a < p^2
11826  */
11827 int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11828 int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11829 int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11830 int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11831 int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11832 
11833 const BIGNUM *BN_get0_nist_prime_192(void);
11834 const BIGNUM *BN_get0_nist_prime_224(void);
11835 const BIGNUM *BN_get0_nist_prime_256(void);
11836 const BIGNUM *BN_get0_nist_prime_384(void);
11837 const BIGNUM *BN_get0_nist_prime_521(void);
11838 
11839 /* library internal functions */
11840 # 788 "/usr/include/openssl/bn.h" 3 4
11841 BIGNUM *bn_expand2(BIGNUM *a, int words);
11842 
11843 BIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */
11844 
11845 
11846 /*-
11847  * Bignum consistency macros
11848  * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from
11849  * bignum data after direct manipulations on the data. There is also an
11850  * "internal" macro, bn_check_top(), for verifying that there are no leading
11851  * zeroes. Unfortunately, some auditing is required due to the fact that
11852  * bn_fix_top() has become an overabused duct-tape because bignum data is
11853  * occasionally passed around in an inconsistent state. So the following
11854  * changes have been made to sort this out;
11855  * - bn_fix_top()s implementation has been moved to bn_correct_top()
11856  * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and
11857  *   bn_check_top() is as before.
11858  * - if BN_DEBUG *is* defined;
11859  *   - bn_check_top() tries to pollute unused words even if the bignum 'top' is
11860  *     consistent. (ed: only if BN_DEBUG_RAND is defined)
11861  *   - bn_fix_top() maps to bn_check_top() rather than "fixing" anything.
11862  * The idea is to have debug builds flag up inconsistent bignums when they
11863  * occur. If that occurs in a bn_fix_top(), we examine the code in question; if
11864  * the use of bn_fix_top() was appropriate (ie. it follows directly after code
11865  * that manipulates the bignum) it is converted to bn_correct_top(), and if it
11866  * was not appropriate, we convert it permanently to bn_check_top() and track
11867  * down the cause of the bug. Eventually, no internal code should be using the
11868  * bn_fix_top() macro. External applications and libraries should try this with
11869  * their own code too, both in terms of building against the openssl headers
11870  * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it
11871  * defined. This not only improves external code, it provides more test
11872  * coverage for openssl's own code.
11873  */
11874 # 914 "/usr/include/openssl/bn.h" 3 4
11875 unsigned int bn_mul_add_words(unsigned int *rp, const unsigned int *ap, int num,
11876                           unsigned int w);
11877 unsigned int bn_mul_words(unsigned int *rp, const unsigned int *ap, int num, unsigned int w);
11878 void bn_sqr_words(unsigned int *rp, const unsigned int *ap, int num);
11879 unsigned int bn_div_words(unsigned int h, unsigned int l, unsigned int d);
11880 unsigned int bn_add_words(unsigned int *rp, const unsigned int *ap, const unsigned int *bp,
11881                       int num);
11882 unsigned int bn_sub_words(unsigned int *rp, const unsigned int *ap, const unsigned int *bp,
11883                       int num);
11884 
11885 /* Primes from RFC 2409 */
11886 BIGNUM *get_rfc2409_prime_768(BIGNUM *bn);
11887 BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn);
11888 
11889 /* Primes from RFC 3526 */
11890 BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn);
11891 BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn);
11892 BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn);
11893 BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn);
11894 BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn);
11895 BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn);
11896 
11897 int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom);
11898 
11899 /* BEGIN ERROR CODES */
11900 /*
11901  * The following lines are auto generated by the script mkerr.pl. Any changes
11902  * made after this point may be overwritten when the script is next run.
11903  */
11904 void ERR_load_BN_strings(void);
11905 
11906 /* Error codes for the BN functions. */
11907 
11908 /* Function codes. */
11909 # 991 "/usr/include/openssl/bn.h" 3 4
11910 /* Reason codes. */
11911 # 75 "/usr/include/openssl/asn1.h" 2 3 4
11912 # 132 "/usr/include/openssl/asn1.h" 3 4
11913 /* For use with d2i_ASN1_type_bytes() */
11914 # 152 "/usr/include/openssl/asn1.h" 3 4
11915 /* For use with ASN1_mbstring_copy() */
11916 # 161 "/usr/include/openssl/asn1.h" 3 4
11917     struct X509_algor_st;
11918 struct stack_st_X509_ALGOR { _STACK stack; };
11919 
11920 
11921 
11922 
11923 /*
11924  * We MUST make sure that, except for constness, asn1_ctx_st and
11925  * asn1_const_ctx are exactly the same.  Fortunately, as soon as the old ASN1
11926  * parsing macros are gone, we can throw this away as well...
11927  */
11928 typedef struct asn1_ctx_st {
11929     unsigned char *p; /* work char pointer */
11930     int eos; /* end of sequence read for indefinite
11931                                  * encoding */
11932     int error; /* error code to use when returning an error */
11933     int inf; /* constructed if 0x20, indefinite is 0x21 */
11934     int tag; /* tag from last 'get object' */
11935     int xclass; /* class from last 'get object' */
11936     long slen; /* length of last 'get object' */
11937     unsigned char *max; /* largest value of p allowed */
11938     unsigned char *q; /* temporary variable */
11939     unsigned char **pp; /* variable */
11940     int line; /* used in error processing */
11941 } ASN1_CTX;
11942 
11943 typedef struct asn1_const_ctx_st {
11944     const unsigned char *p; /* work char pointer */
11945     int eos; /* end of sequence read for indefinite
11946                                  * encoding */
11947     int error; /* error code to use when returning an error */
11948     int inf; /* constructed if 0x20, indefinite is 0x21 */
11949     int tag; /* tag from last 'get object' */
11950     int xclass; /* class from last 'get object' */
11951     long slen; /* length of last 'get object' */
11952     const unsigned char *max; /* largest value of p allowed */
11953     const unsigned char *q; /* temporary variable */
11954     const unsigned char **pp; /* variable */
11955     int line; /* used in error processing */
11956 } ASN1_const_CTX;
11957 
11958 /*
11959  * These are used internally in the ASN1_OBJECT to keep track of whether the
11960  * names and data need to be free()ed
11961  */
11962 
11963 
11964 
11965 
11966 struct asn1_object_st {
11967     const char *sn, *ln;
11968     int nid;
11969     int length;
11970     const unsigned char *data; /* data remains const after init */
11971     int flags; /* Should we free this one */
11972 };
11973 
11974 
11975 /*
11976  * This indicates that the ASN1_STRING is not a real value but just a place
11977  * holder for the location where indefinite length constructed data should be
11978  * inserted in the memory buffer
11979  */
11980 
11981 
11982 /*
11983  * This flag is used by the CMS code to indicate that a string is not
11984  * complete and is a place holder for content when it had all been accessed.
11985  * The flag will be reset when content has been written to it.
11986  */
11987 
11988 
11989 /*
11990  * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING
11991  * type.
11992  */
11993 
11994 /* This is the base type that holds just about everything :-) */
11995 struct asn1_string_st {
11996     int length;
11997     int type;
11998     unsigned char *data;
11999     /*
12000      * The value of the following field depends on the type being held.  It
12001      * is mostly being used for BIT_STRING so if the input data has a
12002      * non-zero 'unused bits' value, it will be handled correctly
12003      */
12004     long flags;
12005 };
12006 
12007 /*
12008  * ASN1_ENCODING structure: this is used to save the received encoding of an
12009  * ASN1 type. This is useful to get round problems with invalid encodings
12010  * which can break signatures.
12011  */
12012 
12013 typedef struct ASN1_ENCODING_st {
12014     unsigned char *enc; /* DER encoding */
12015     long len; /* Length of encoding */
12016     int modified; /* set to 1 if 'enc' is invalid */
12017 } ASN1_ENCODING;
12018 
12019 /* Used with ASN1 LONG type: if a long is set to this it is omitted */
12020 # 272 "/usr/include/openssl/asn1.h" 3 4
12021 typedef struct asn1_string_table_st {
12022     int nid;
12023     long minsize;
12024     long maxsize;
12025     unsigned long mask;
12026     unsigned long flags;
12027 } ASN1_STRING_TABLE;
12028 
12029 struct stack_st_ASN1_STRING_TABLE { _STACK stack; };
12030 
12031 /* size limits: this stuff is taken straight from RFC2459 */
12032 # 293 "/usr/include/openssl/asn1.h" 3 4
12033 /*
12034  * Declarations for template structures: for full definitions see asn1t.h
12035  */
12036 typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
12037 typedef struct ASN1_TLC_st ASN1_TLC;
12038 /* This is just an opaque pointer */
12039 typedef struct ASN1_VALUE_st ASN1_VALUE;
12040 
12041 /* Declare ASN1 functions: the implement macro in in asn1t.h */
12042 # 363 "/usr/include/openssl/asn1.h" 3 4
12043 typedef void *d2i_of_void(void **,const unsigned char **,long); typedef int i2d_of_void(void *,unsigned char **);
12044 
12045 /*-
12046  * The following macros and typedefs allow an ASN1_ITEM
12047  * to be embedded in a structure and referenced. Since
12048  * the ASN1_ITEM pointers need to be globally accessible
12049  * (possibly from shared libraries) they may exist in
12050  * different forms. On platforms that support it the
12051  * ASN1_ITEM structure itself will be globally exported.
12052  * Other platforms will export a function that returns
12053  * an ASN1_ITEM pointer.
12054  *
12055  * To handle both cases transparently the macros below
12056  * should be used instead of hard coding an ASN1_ITEM
12057  * pointer in a structure.
12058  *
12059  * The structure will look like this:
12060  *
12061  * typedef struct SOMETHING_st {
12062  *      ...
12063  *      ASN1_ITEM_EXP *iptr;
12064  *      ...
12065  * } SOMETHING;
12066  *
12067  * It would be initialised as e.g.:
12068  *
12069  * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...};
12070  *
12071  * and the actual pointer extracted with:
12072  *
12073  * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr);
12074  *
12075  * Finally an ASN1_ITEM pointer can be extracted from an
12076  * appropriate reference with: ASN1_ITEM_rptr(X509). This
12077  * would be used when a function takes an ASN1_ITEM * argument.
12078  *
12079  */
12080 
12081 
12082 
12083 /* ASN1_ITEM pointer exported type */
12084 typedef const ASN1_ITEM ASN1_ITEM_EXP;
12085 
12086 /* Macro to obtain ASN1_ITEM pointer from exported type */
12087 
12088 
12089 /* Macro to include ASN1_ITEM pointer from base type */
12090 # 440 "/usr/include/openssl/asn1.h" 3 4
12091 /* Parameters used by ASN1_STRING_print_ex() */
12092 
12093 /*
12094  * These determine which characters to escape: RFC2253 special characters,
12095  * control characters and MSB set characters
12096  */
12097 
12098 
12099 
12100 
12101 
12102 /*
12103  * This flag determines how we do escaping: normally RC2253 backslash only,
12104  * set this to use backslash and quote.
12105  */
12106 
12107 
12108 
12109 /* These three flags are internal use only. */
12110 
12111 /* Character is a valid PrintableString character */
12112 
12113 /* Character needs escaping if it is the first character */
12114 
12115 /* Character needs escaping if it is the last character */
12116 
12117 
12118 /*
12119  * NB the internal flags are safely reused below by flags handled at the top
12120  * level.
12121  */
12122 
12123 /*
12124  * If this is set we convert all character strings to UTF8 first
12125  */
12126 
12127 
12128 
12129 /*
12130  * If this is set we don't attempt to interpret content: just assume all
12131  * strings are 1 byte per character. This will produce some pretty odd
12132  * looking output!
12133  */
12134 
12135 
12136 
12137 /* If this is set we include the string type in the output */
12138 
12139 
12140 /*
12141  * This determines which strings to display and which to 'dump' (hex dump of
12142  * content octets or DER encoding). We can only dump non character strings or
12143  * everything. If we don't dump 'unknown' they are interpreted as character
12144  * strings with 1 octet per character and are subject to the usual escaping
12145  * options.
12146  */
12147 
12148 
12149 
12150 
12151 /*
12152  * These determine what 'dumping' does, we can dump the content octets or the
12153  * DER encoding: both use the RFC2253 #XXXXX notation.
12154  */
12155 
12156 
12157 
12158 /*
12159  * All the string flags consistent with RFC2253, escaping control characters
12160  * isn't essential in RFC2253 but it is advisable anyway.
12161  */
12162 # 519 "/usr/include/openssl/asn1.h" 3 4
12163 struct stack_st_ASN1_INTEGER { _STACK stack; };
12164 
12165 
12166 struct stack_st_ASN1_GENERALSTRING { _STACK stack; };
12167 
12168 typedef struct asn1_type_st {
12169     int type;
12170     union {
12171         char *ptr;
12172         ASN1_BOOLEAN boolean;
12173         ASN1_STRING *asn1_string;
12174         ASN1_OBJECT *object;
12175         ASN1_INTEGER *integer;
12176         ASN1_ENUMERATED *enumerated;
12177         ASN1_BIT_STRING *bit_string;
12178         ASN1_OCTET_STRING *octet_string;
12179         ASN1_PRINTABLESTRING *printablestring;
12180         ASN1_T61STRING *t61string;
12181         ASN1_IA5STRING *ia5string;
12182         ASN1_GENERALSTRING *generalstring;
12183         ASN1_BMPSTRING *bmpstring;
12184         ASN1_UNIVERSALSTRING *universalstring;
12185         ASN1_UTCTIME *utctime;
12186         ASN1_GENERALIZEDTIME *generalizedtime;
12187         ASN1_VISIBLESTRING *visiblestring;
12188         ASN1_UTF8STRING *utf8string;
12189         /*
12190          * set and sequence are left complete and still contain the set or
12191          * sequence bytes
12192          */
12193         ASN1_STRING *set;
12194         ASN1_STRING *sequence;
12195         ASN1_VALUE *asn1_value;
12196     } value;
12197 } ASN1_TYPE;
12198 
12199 struct stack_st_ASN1_TYPE { _STACK stack; };
12200 
12201 
12202 typedef struct stack_st_ASN1_TYPE ASN1_SEQUENCE_ANY;
12203 
12204 ASN1_SEQUENCE_ANY *d2i_ASN1_SEQUENCE_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len); int i2d_ASN1_SEQUENCE_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out); extern const ASN1_ITEM ASN1_SEQUENCE_ANY_it;
12205 ASN1_SEQUENCE_ANY *d2i_ASN1_SET_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len); int i2d_ASN1_SET_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out); extern const ASN1_ITEM ASN1_SET_ANY_it;
12206 
12207 typedef struct NETSCAPE_X509_st {
12208     ASN1_OCTET_STRING *header;
12209     X509 *cert;
12210 } NETSCAPE_X509;
12211 
12212 /* This is used to contain a list of bit names */
12213 typedef struct BIT_STRING_BITNAME_st {
12214     int bitnum;
12215     const char *lname;
12216     const char *sname;
12217 } BIT_STRING_BITNAME;
12218 
12219 
12220 
12221 
12222 
12223 
12224 /* Macros for string operations */
12225 # 772 "/usr/include/openssl/asn1.h" 3 4
12226   /* for the is_set parameter to i2d_ASN1_SET */
12227 
12228 
12229 
12230 ASN1_TYPE *ASN1_TYPE_new(void); void ASN1_TYPE_free(ASN1_TYPE *a); ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **a, const unsigned char **in, long len); int i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **out); extern const ASN1_ITEM ASN1_ANY_it;
12231 
12232 int ASN1_TYPE_get(ASN1_TYPE *a);
12233 void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
12234 int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
12235 int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);
12236 
12237 ASN1_OBJECT *ASN1_OBJECT_new(void);
12238 void ASN1_OBJECT_free(ASN1_OBJECT *a);
12239 int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp);
12240 ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
12241                              long length);
12242 ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
12243                              long length);
12244 
12245 extern const ASN1_ITEM ASN1_OBJECT_it;
12246 
12247 struct stack_st_ASN1_OBJECT { _STACK stack; };
12248 
12249 
12250 ASN1_STRING *ASN1_STRING_new(void);
12251 void ASN1_STRING_free(ASN1_STRING *a);
12252 void ASN1_STRING_clear_free(ASN1_STRING *a);
12253 int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
12254 ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a);
12255 ASN1_STRING *ASN1_STRING_type_new(int type);
12256 int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
12257   /*
12258    * Since this is used to store all sorts of things, via macros, for now,
12259    * make its data void *
12260    */
12261 int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
12262 void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
12263 int ASN1_STRING_length(const ASN1_STRING *x);
12264 void ASN1_STRING_length_set(ASN1_STRING *x, int n);
12265 int ASN1_STRING_type(ASN1_STRING *x);
12266 unsigned char *ASN1_STRING_data(ASN1_STRING *x);
12267 
12268 ASN1_BIT_STRING *ASN1_BIT_STRING_new(void); void ASN1_BIT_STRING_free(ASN1_BIT_STRING *a); ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len); int i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_BIT_STRING_it;
12269 int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp);
12270 ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
12271                                      const unsigned char **pp, long length);
12272 int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length);
12273 int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value);
12274 int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n);
12275 int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a,
12276                           unsigned char *flags, int flags_len);
12277 
12278 
12279 int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
12280                                BIT_STRING_BITNAME *tbl, int indent);
12281 
12282 int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl);
12283 int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value,
12284                             BIT_STRING_BITNAME *tbl);
12285 
12286 int i2d_ASN1_BOOLEAN(int a, unsigned char **pp);
12287 int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length);
12288 
12289 ASN1_INTEGER *ASN1_INTEGER_new(void); void ASN1_INTEGER_free(ASN1_INTEGER *a); ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len); int i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out); extern const ASN1_ITEM ASN1_INTEGER_it;
12290 int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp);
12291 ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp,
12292                                long length);
12293 ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
12294                                 long length);
12295 ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x);
12296 int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);
12297 
12298 ASN1_ENUMERATED *ASN1_ENUMERATED_new(void); void ASN1_ENUMERATED_free(ASN1_ENUMERATED *a); ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len); int i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **out); extern const ASN1_ITEM ASN1_ENUMERATED_it;
12299 
12300 int ASN1_UTCTIME_check(const ASN1_UTCTIME *a);
12301 ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t);
12302 ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
12303                                int offset_day, long offset_sec);
12304 int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str);
12305 int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t);
12306 
12307 
12308 
12309 
12310 int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a);
12311 ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
12312                                                time_t t);
12313 ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
12314                                                time_t t, int offset_day,
12315                                                long offset_sec);
12316 int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str);
12317 int ASN1_TIME_diff(int *pday, int *psec,
12318                    const ASN1_TIME *from, const ASN1_TIME *to);
12319 
12320 ASN1_OCTET_STRING *ASN1_OCTET_STRING_new(void); void ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a); ASN1_OCTET_STRING *d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len); int i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_OCTET_STRING_it;
12321 ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a);
12322 int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
12323                           const ASN1_OCTET_STRING *b);
12324 int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data,
12325                           int len);
12326 
12327 ASN1_VISIBLESTRING *ASN1_VISIBLESTRING_new(void); void ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a); ASN1_VISIBLESTRING *d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len); int i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_VISIBLESTRING_it;
12328 ASN1_UNIVERSALSTRING *ASN1_UNIVERSALSTRING_new(void); void ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a); ASN1_UNIVERSALSTRING *d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len); int i2d_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_UNIVERSALSTRING_it;
12329 ASN1_UTF8STRING *ASN1_UTF8STRING_new(void); void ASN1_UTF8STRING_free(ASN1_UTF8STRING *a); ASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len); int i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_UTF8STRING_it;
12330 ASN1_NULL *ASN1_NULL_new(void); void ASN1_NULL_free(ASN1_NULL *a); ASN1_NULL *d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len); int i2d_ASN1_NULL(ASN1_NULL *a, unsigned char **out); extern const ASN1_ITEM ASN1_NULL_it;
12331 ASN1_BMPSTRING *ASN1_BMPSTRING_new(void); void ASN1_BMPSTRING_free(ASN1_BMPSTRING *a); ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len); int i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_BMPSTRING_it;
12332 
12333 int UTF8_getc(const unsigned char *str, int len, unsigned long *val);
12334 int UTF8_putc(unsigned char *str, int len, unsigned long value);
12335 
12336 ASN1_STRING *ASN1_PRINTABLE_new(void); void ASN1_PRINTABLE_free(ASN1_STRING *a); ASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a, const unsigned char **in, long len); int i2d_ASN1_PRINTABLE(ASN1_STRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_PRINTABLE_it;
12337 
12338 ASN1_STRING *DIRECTORYSTRING_new(void); void DIRECTORYSTRING_free(ASN1_STRING *a); ASN1_STRING *d2i_DIRECTORYSTRING(ASN1_STRING **a, const unsigned char **in, long len); int i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **out); extern const ASN1_ITEM DIRECTORYSTRING_it;
12339 ASN1_STRING *DISPLAYTEXT_new(void); void DISPLAYTEXT_free(ASN1_STRING *a); ASN1_STRING *d2i_DISPLAYTEXT(ASN1_STRING **a, const unsigned char **in, long len); int i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **out); extern const ASN1_ITEM DISPLAYTEXT_it;
12340 ASN1_PRINTABLESTRING *ASN1_PRINTABLESTRING_new(void); void ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a); ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len); int i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_PRINTABLESTRING_it;
12341 ASN1_T61STRING *ASN1_T61STRING_new(void); void ASN1_T61STRING_free(ASN1_T61STRING *a); ASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len); int i2d_ASN1_T61STRING(ASN1_T61STRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_T61STRING_it;
12342 ASN1_IA5STRING *ASN1_IA5STRING_new(void); void ASN1_IA5STRING_free(ASN1_IA5STRING *a); ASN1_IA5STRING *d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len); int i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_IA5STRING_it;
12343 ASN1_GENERALSTRING *ASN1_GENERALSTRING_new(void); void ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a); ASN1_GENERALSTRING *d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len); int i2d_ASN1_GENERALSTRING(ASN1_GENERALSTRING *a, unsigned char **out); extern const ASN1_ITEM ASN1_GENERALSTRING_it;
12344 ASN1_UTCTIME *ASN1_UTCTIME_new(void); void ASN1_UTCTIME_free(ASN1_UTCTIME *a); ASN1_UTCTIME *d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len); int i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **out); extern const ASN1_ITEM ASN1_UTCTIME_it;
12345 ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_new(void); void ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a); ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len); int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **out); extern const ASN1_ITEM ASN1_GENERALIZEDTIME_it;
12346 ASN1_TIME *ASN1_TIME_new(void); void ASN1_TIME_free(ASN1_TIME *a); ASN1_TIME *d2i_ASN1_TIME(ASN1_TIME **a, const unsigned char **in, long len); int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **out); extern const ASN1_ITEM ASN1_TIME_it;
12347 
12348 extern const ASN1_ITEM ASN1_OCTET_STRING_NDEF_it;
12349 
12350 ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t);
12351 ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
12352                          int offset_day, long offset_sec);
12353 int ASN1_TIME_check(ASN1_TIME *t);
12354 ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME
12355                                                    **out);
12356 int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
12357 
12358 int i2d_ASN1_SET(struct stack_st_OPENSSL_BLOCK *a, unsigned char **pp,
12359                  i2d_of_void *i2d, int ex_tag, int ex_class, int is_set);
12360 struct stack_st_OPENSSL_BLOCK *d2i_ASN1_SET(struct stack_st_OPENSSL_BLOCK **a,
12361                                       const unsigned char **pp,
12362                                       long length, d2i_of_void *d2i,
12363                                       void (*free_func) (OPENSSL_BLOCK),
12364                                       int ex_tag, int ex_class);
12365 
12366 
12367 int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a);
12368 int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size);
12369 int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a);
12370 int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size);
12371 int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a);
12372 int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size);
12373 int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type);
12374 
12375 int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a);
12376 
12377 int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num);
12378 ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len,
12379                                 const char *sn, const char *ln);
12380 
12381 int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
12382 long ASN1_INTEGER_get(const ASN1_INTEGER *a);
12383 ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai);
12384 BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn);
12385 
12386 int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
12387 long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a);
12388 ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai);
12389 BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn);
12390 
12391 /* General */
12392 /* given a string, return the correct type, max is the maximum length */
12393 int ASN1_PRINTABLE_type(const unsigned char *s, int max);
12394 
12395 int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass);
12396 ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp,
12397                             long length, int Ptag, int Pclass);
12398 unsigned long ASN1_tag2bit(int tag);
12399 /* type is one or more of the B_ASN1_ values. */
12400 ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp,
12401                                  long length, int type);
12402 
12403 /* PARSING */
12404 int asn1_Finish(ASN1_CTX *c);
12405 int asn1_const_Finish(ASN1_const_CTX *c);
12406 
12407 /* SPECIALS */
12408 int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
12409                     int *pclass, long omax);
12410 int ASN1_check_infinite_end(unsigned char **p, long len);
12411 int ASN1_const_check_infinite_end(const unsigned char **p, long len);
12412 void ASN1_put_object(unsigned char **pp, int constructed, int length,
12413                      int tag, int xclass);
12414 int ASN1_put_eoc(unsigned char **pp);
12415 int ASN1_object_size(int constructed, int length, int tag);
12416 
12417 /* Used to implement other functions */
12418 void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x);
12419 # 976 "/usr/include/openssl/asn1.h" 3 4
12420 void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
12421 
12422 /* ASN1 alloc/free macros for when a type is only used internally */
12423 
12424 
12425 
12426 
12427 
12428 
12429 void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x);
12430 
12431 
12432 
12433 
12434 
12435 
12436 
12437 void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
12438 int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x);
12439 # 1006 "/usr/include/openssl/asn1.h" 3 4
12440 int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x);
12441 int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
12442 
12443 
12444 int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
12445 
12446 
12447 void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x);
12448 
12449 
12450 
12451 
12452 
12453 
12454 
12455 void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
12456 int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x);
12457 # 1034 "/usr/include/openssl/asn1.h" 3 4
12458 int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
12459 int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a);
12460 int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
12461 int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a);
12462 int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
12463 int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags);
12464 int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
12465                   unsigned char *buf, int off);
12466 int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent);
12467 int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent,
12468                     int dump);
12469 
12470 const char *ASN1_tag2str(int tag);
12471 
12472 /* Used to load and write netscape format cert */
12473 
12474 NETSCAPE_X509 *NETSCAPE_X509_new(void); void NETSCAPE_X509_free(NETSCAPE_X509 *a); NETSCAPE_X509 *d2i_NETSCAPE_X509(NETSCAPE_X509 **a, const unsigned char **in, long len); int i2d_NETSCAPE_X509(NETSCAPE_X509 *a, unsigned char **out); extern const ASN1_ITEM NETSCAPE_X509_it;
12475 
12476 int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s);
12477 
12478 int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len);
12479 int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len);
12480 int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
12481                                   unsigned char *data, int len);
12482 int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num,
12483                                   unsigned char *data, int max_len);
12484 
12485 struct stack_st_OPENSSL_BLOCK *ASN1_seq_unpack(const unsigned char *buf, int len,
12486                                          d2i_of_void *d2i,
12487                                          void (*free_func) (OPENSSL_BLOCK));
12488 unsigned char *ASN1_seq_pack(struct stack_st_OPENSSL_BLOCK *safes, i2d_of_void *i2d,
12489                              unsigned char **buf, int *len);
12490 void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
12491 void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
12492 ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
12493                               ASN1_OCTET_STRING **oct);
12494 
12495 
12496 
12497 
12498 
12499 
12500 ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
12501                             ASN1_OCTET_STRING **oct);
12502 
12503 void ASN1_STRING_set_default_mask(unsigned long mask);
12504 int ASN1_STRING_set_default_mask_asc(const char *p);
12505 unsigned long ASN1_STRING_get_default_mask(void);
12506 int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
12507                        int inform, unsigned long mask);
12508 int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
12509                         int inform, unsigned long mask,
12510                         long minsize, long maxsize);
12511 
12512 ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
12513                                     const unsigned char *in, int inlen,
12514                                     int inform, int nid);
12515 ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid);
12516 int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long);
12517 void ASN1_STRING_TABLE_cleanup(void);
12518 
12519 /* ASN1 template functions */
12520 
12521 /* Old API compatible functions */
12522 ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
12523 void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
12524 ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in,
12525                           long len, const ASN1_ITEM *it);
12526 int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
12527 int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out,
12528                        const ASN1_ITEM *it);
12529 
12530 void ASN1_add_oid_module(void);
12531 
12532 ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
12533 ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
12534 
12535 /* ASN1 Print flags */
12536 
12537 /* Indicate missing OPTIONAL fields */
12538 
12539 /* Mark start and end of SEQUENCE */
12540 
12541 /* Mark start and end of SEQUENCE/SET OF */
12542 
12543 /* Show the ASN1 type of primitives */
12544 
12545 /* Don't show ASN1 type of ANY */
12546 
12547 /* Don't show ASN1 type of MSTRINGs */
12548 
12549 /* Don't show field names in SEQUENCE */
12550 
12551 /* Show structure names of each SEQUENCE field */
12552 
12553 /* Don't show structure name even at top level */
12554 
12555 
12556 int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent,
12557                     const ASN1_ITEM *it, const ASN1_PCTX *pctx);
12558 ASN1_PCTX *ASN1_PCTX_new(void);
12559 void ASN1_PCTX_free(ASN1_PCTX *p);
12560 unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p);
12561 void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags);
12562 unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p);
12563 void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags);
12564 unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p);
12565 void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags);
12566 unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p);
12567 void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags);
12568 unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p);
12569 void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags);
12570 
12571 BIO_METHOD *BIO_f_asn1(void);
12572 
12573 BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);
12574 
12575 int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
12576                         const ASN1_ITEM *it);
12577 int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
12578                               const char *hdr, const ASN1_ITEM *it);
12579 int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
12580                      int ctype_nid, int econt_nid,
12581                      struct stack_st_X509_ALGOR *mdalgs, const ASN1_ITEM *it);
12582 ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
12583 int SMIME_crlf_copy(BIO *in, BIO *out, int flags);
12584 int SMIME_text(BIO *in, BIO *out);
12585 
12586 /* BEGIN ERROR CODES */
12587 /*
12588  * The following lines are auto generated by the script mkerr.pl. Any changes
12589  * made after this point may be overwritten when the script is next run.
12590  */
12591 
12592 void ERR_load_ASN1_strings(void);
12593 
12594 /* Error codes for the ASN1 functions. */
12595 
12596 /* Function codes. */
12597 # 1298 "/usr/include/openssl/asn1.h" 3 4
12598 /* Reason codes. */
12599 # 966 "/usr/include/openssl/objects.h" 2 3 4
12600 # 984 "/usr/include/openssl/objects.h" 3 4
12601 typedef struct obj_name_st {
12602     int type;
12603     int alias;
12604     const char *name;
12605     const char *data;
12606 } OBJ_NAME;
12607 
12608 
12609 
12610 int OBJ_NAME_init(void);
12611 int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *),
12612                        int (*cmp_func) (const char *, const char *),
12613                        void (*free_func) (const char *, int, const char *));
12614 const char *OBJ_NAME_get(const char *name, int type);
12615 int OBJ_NAME_add(const char *name, int type, const char *data);
12616 int OBJ_NAME_remove(const char *name, int type);
12617 void OBJ_NAME_cleanup(int type); /* -1 for everything */
12618 void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg),
12619                      void *arg);
12620 void OBJ_NAME_do_all_sorted(int type,
12621                             void (*fn) (const OBJ_NAME *, void *arg),
12622                             void *arg);
12623 
12624 ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o);
12625 ASN1_OBJECT *OBJ_nid2obj(int n);
12626 const char *OBJ_nid2ln(int n);
12627 const char *OBJ_nid2sn(int n);
12628 int OBJ_obj2nid(const ASN1_OBJECT *o);
12629 ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name);
12630 int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name);
12631 int OBJ_txt2nid(const char *s);
12632 int OBJ_ln2nid(const char *s);
12633 int OBJ_sn2nid(const char *s);
12634 int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b);
12635 const void *OBJ_bsearch_(const void *key, const void *base, int num, int size,
12636                          int (*cmp) (const void *, const void *));
12637 const void *OBJ_bsearch_ex_(const void *key, const void *base, int num,
12638                             int size,
12639                             int (*cmp) (const void *, const void *),
12640                             int flags);
12641 # 1035 "/usr/include/openssl/objects.h" 3 4
12642 /*-
12643  * Unsolved problem: if a type is actually a pointer type, like
12644  * nid_triple is, then its impossible to get a const where you need
12645  * it. Consider:
12646  *
12647  * typedef int nid_triple[3];
12648  * const void *a_;
12649  * const nid_triple const *a = a_;
12650  *
12651  * The assignement discards a const because what you really want is:
12652  *
12653  * const int const * const *a = a_;
12654  *
12655  * But if you do that, you lose the fact that a is an array of 3 ints,
12656  * which breaks comparison functions.
12657  *
12658  * Thus we end up having to cast, sadly, or unpack the
12659  * declarations. Or, as I finally did in this case, delcare nid_triple
12660  * to be a struct, which it should have been in the first place.
12661  *
12662  * Ben, August 2008.
12663  *
12664  * Also, strictly speaking not all types need be const, but handling
12665  * the non-constness means a lot of complication, and in practice
12666  * comparison routines do always not touch their arguments.
12667  */
12668 # 1104 "/usr/include/openssl/objects.h" 3 4
12669 int OBJ_new_nid(int num);
12670 int OBJ_add_object(const ASN1_OBJECT *obj);
12671 int OBJ_create(const char *oid, const char *sn, const char *ln);
12672 void OBJ_cleanup(void);
12673 int OBJ_create_objects(BIO *in);
12674 
12675 int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid);
12676 int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid);
12677 int OBJ_add_sigid(int signid, int dig_id, int pkey_id);
12678 void OBJ_sigid_free(void);
12679 
12680 extern int obj_cleanup_defer;
12681 void check_defer(int nid);
12682 
12683 /* BEGIN ERROR CODES */
12684 /*
12685  * The following lines are auto generated by the script mkerr.pl. Any changes
12686  * made after this point may be overwritten when the script is next run.
12687  */
12688 void ERR_load_OBJ_strings(void);
12689 
12690 /* Error codes for the OBJ functions. */
12691 
12692 /* Function codes. */
12693 # 1136 "/usr/include/openssl/objects.h" 3 4
12694 /* Reason codes. */
12695 # 95 "/usr/include/openssl/evp.h" 2 3 4
12696 # 125 "/usr/include/openssl/evp.h" 3 4
12697 /*
12698  * Type needs to be a bit field Sub-type needs to be for variations on the
12699  * method, as in, can it do arbitrary encryption....
12700  */
12701 struct evp_pkey_st {
12702     int type;
12703     int save_type;
12704     int references;
12705     const EVP_PKEY_ASN1_METHOD *ameth;
12706     ENGINE *engine;
12707     union {
12708         char *ptr;
12709 
12710         struct rsa_st *rsa; /* RSA */
12711 
12712 
12713         struct dsa_st *dsa; /* DSA */
12714 
12715 
12716         struct dh_st *dh; /* DH */
12717 
12718 
12719         struct ec_key_st *ec; /* ECC */
12720 
12721     } pkey;
12722     int save_parameters;
12723     struct stack_st_X509_ATTRIBUTE *attributes; /* [ 0 ] */
12724 } /* EVP_PKEY */ ;
12725 
12726 
12727 
12728 
12729 
12730 
12731 
12732 struct env_md_st {
12733     int type;
12734     int pkey_type;
12735     int md_size;
12736     unsigned long flags;
12737     int (*init) (EVP_MD_CTX *ctx);
12738     int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count);
12739     int (*final) (EVP_MD_CTX *ctx, unsigned char *md);
12740     int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from);
12741     int (*cleanup) (EVP_MD_CTX *ctx);
12742     /* FIXME: prototype these some day */
12743     int (*sign) (int type, const unsigned char *m, unsigned int m_length,
12744                  unsigned char *sigret, unsigned int *siglen, void *key);
12745     int (*verify) (int type, const unsigned char *m, unsigned int m_length,
12746                    const unsigned char *sigbuf, unsigned int siglen,
12747                    void *key);
12748     int required_pkey_type[5]; /* EVP_PKEY_xxx */
12749     int block_size;
12750     int ctx_size; /* how big does the ctx->md_data need to be */
12751     /* control function */
12752     int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
12753 } /* EVP_MD */ ;
12754 
12755 typedef int evp_sign_method(int type, const unsigned char *m,
12756                             unsigned int m_length, unsigned char *sigret,
12757                             unsigned int *siglen, void *key);
12758 typedef int evp_verify_method(int type, const unsigned char *m,
12759                               unsigned int m_length,
12760                               const unsigned char *sigbuf,
12761                               unsigned int siglen, void *key);
12762 
12763 /* digest can only handle a single block */
12764 
12765 
12766 /*
12767  * digest is a "clone" digest used
12768  * which is a copy of an existing
12769  * one for a specific public key type.
12770  * EVP_dss1() etc
12771  */
12772 
12773 
12774 /* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */
12775 
12776 
12777 
12778 /* DigestAlgorithmIdentifier flags... */
12779 
12780 
12781 
12782 /* NULL or absent parameter accepted. Use NULL */
12783 
12784 
12785 
12786 /* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */
12787 
12788 
12789 
12790 /* Custom handling via ctrl */
12791 
12792 
12793 
12794 /* Note if suitable for use in FIPS mode */
12795 
12796 
12797 /* Digest ctrls */
12798 
12799 
12800 
12801 
12802 /* Minimum Algorithm specific ctrl value */
12803 # 268 "/usr/include/openssl/evp.h" 3 4
12804 struct env_md_ctx_st {
12805     const EVP_MD *digest;
12806     ENGINE *engine; /* functional reference if 'digest' is
12807                                  * ENGINE-provided */
12808     unsigned long flags;
12809     void *md_data;
12810     /* Public key context for sign/verify */
12811     EVP_PKEY_CTX *pctx;
12812     /* Update function: usually copied from EVP_MD */
12813     int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count);
12814 } /* EVP_MD_CTX */ ;
12815 
12816 /* values for EVP_MD_CTX flags */
12817 
12818 
12819 
12820 
12821 
12822 
12823 
12824 /*
12825  * FIPS and pad options are ignored in 1.0.0, definitions are here so we
12826  * don't accidentally reuse the values for other purposes.
12827  */
12828 
12829 
12830 
12831 
12832 /*
12833  * The following PAD options are also currently ignored in 1.0.0, digest
12834  * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*()
12835  * instead.
12836  */
12837 
12838 
12839 
12840 
12841 
12842 
12843 
12844 struct evp_cipher_st {
12845     int nid;
12846     int block_size;
12847     /* Default value for variable length ciphers */
12848     int key_len;
12849     int iv_len;
12850     /* Various flags */
12851     unsigned long flags;
12852     /* init key */
12853     int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key,
12854                  const unsigned char *iv, int enc);
12855     /* encrypt/decrypt data */
12856     int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out,
12857                       const unsigned char *in, size_t inl);
12858     /* cleanup ctx */
12859     int (*cleanup) (EVP_CIPHER_CTX *);
12860     /* how big ctx->cipher_data needs to be */
12861     int ctx_size;
12862     /* Populate a ASN1_TYPE with parameters */
12863     int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *);
12864     /* Get parameters from a ASN1_TYPE */
12865     int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *);
12866     /* Miscellaneous operations */
12867     int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr);
12868     /* Application data */
12869     void *app_data;
12870 } /* EVP_CIPHER */ ;
12871 
12872 /* Values for cipher flags */
12873 
12874 /* Modes for ciphers */
12875 # 351 "/usr/include/openssl/evp.h" 3 4
12876 /* Set if variable length cipher */
12877 
12878 /* Set if the iv handling should be done by the cipher itself */
12879 
12880 /* Set if the cipher's init() function should be called if key is NULL */
12881 
12882 /* Call ctrl() to init cipher parameters */
12883 
12884 /* Don't use standard key length function */
12885 
12886 /* Don't use standard block padding */
12887 
12888 /* cipher handles random key generation */
12889 
12890 /* cipher has its own additional copying logic */
12891 
12892 /* Allow use default ASN1 get/set iv */
12893 
12894 /* Buffer length in bits not bytes: CFB1 mode only */
12895 
12896 /* Note if suitable for use in FIPS mode */
12897 
12898 /* Allow non FIPS cipher in FIPS mode */
12899 
12900 /*
12901  * Cipher handles any and all padding logic as well as finalisation.
12902  */
12903 
12904 
12905 
12906 
12907 /*
12908  * Cipher context flag to indicate we can handle wrap mode: if allowed in
12909  * older applications it could overflow buffers.
12910  */
12911 
12912 
12913 
12914 /* ctrl() values */
12915 # 410 "/usr/include/openssl/evp.h" 3 4
12916 /*
12917  * AEAD cipher deduces payload length and returns number of bytes required to
12918  * store MAC and eventual padding. Subsequent call to EVP_Cipher even
12919  * appends/verifies MAC.
12920  */
12921 
12922 /* Used by composite AEAD ciphers, no-op in GCM, CCM... */
12923 
12924 /* Set the GCM invocation field, decrypt only */
12925 
12926 
12927 
12928 
12929 
12930 
12931 
12932 /* RFC 5246 defines additional data to be 13 bytes in length */
12933 
12934 
12935 typedef struct {
12936     unsigned char *out;
12937     const unsigned char *inp;
12938     size_t len;
12939     unsigned int interleave;
12940 } EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM;
12941 
12942 /* GCM TLS constants */
12943 /* Length of fixed part of IV derived from PRF */
12944 
12945 /* Length of explicit part of IV part of TLS records */
12946 
12947 /* Length of tag for TLS */
12948 
12949 
12950 typedef struct evp_cipher_info_st {
12951     const EVP_CIPHER *cipher;
12952     unsigned char iv[16];
12953 } EVP_CIPHER_INFO;
12954 
12955 struct evp_cipher_ctx_st {
12956     const EVP_CIPHER *cipher;
12957     ENGINE *engine; /* functional reference if 'cipher' is
12958                                  * ENGINE-provided */
12959     int encrypt; /* encrypt or decrypt */
12960     int buf_len; /* number we have left */
12961     unsigned char oiv[16]; /* original iv */
12962     unsigned char iv[16]; /* working iv */
12963     unsigned char buf[32]; /* saved partial block */
12964     int num; /* used by cfb/ofb/ctr mode */
12965     void *app_data; /* application stuff */
12966     int key_len; /* May change for variable length cipher */
12967     unsigned long flags; /* Various flags */
12968     void *cipher_data; /* per EVP data */
12969     int final_used;
12970     int block_mask;
12971     unsigned char final[32]; /* possible final block */
12972 } /* EVP_CIPHER_CTX */ ;
12973 
12974 typedef struct evp_Encode_Ctx_st {
12975     /* number saved in a partial encode/decode */
12976     int num;
12977     /*
12978      * The length is either the output line length (in input bytes) or the
12979      * shortest input line length that is ok.  Once decoding begins, the
12980      * length is adjusted up each time a longer line is decoded
12981      */
12982     int length;
12983     /* data to encode */
12984     unsigned char enc_data[80];
12985     /* number read on current line */
12986     int line_num;
12987     int expect_nl;
12988 } EVP_ENCODE_CTX;
12989 
12990 /* Password based encryption function */
12991 typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass,
12992                               int passlen, ASN1_TYPE *param,
12993                               const EVP_CIPHER *cipher, const EVP_MD *md,
12994                               int en_de);
12995 # 510 "/usr/include/openssl/evp.h" 3 4
12996 /* Add some extra combinations */
12997 
12998 
12999 
13000 
13001 
13002 int EVP_MD_type(const EVP_MD *md);
13003 
13004 
13005 int EVP_MD_pkey_type(const EVP_MD *md);
13006 int EVP_MD_size(const EVP_MD *md);
13007 int EVP_MD_block_size(const EVP_MD *md);
13008 unsigned long EVP_MD_flags(const EVP_MD *md);
13009 
13010 const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx);
13011 
13012 
13013 
13014 
13015 int EVP_CIPHER_nid(const EVP_CIPHER *cipher);
13016 
13017 int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
13018 int EVP_CIPHER_key_length(const EVP_CIPHER *cipher);
13019 int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher);
13020 unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher);
13021 
13022 
13023 const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx);
13024 int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx);
13025 int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx);
13026 int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx);
13027 int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx);
13028 int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in);
13029 void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
13030 void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
13031 
13032 unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx);
13033 # 574 "/usr/include/openssl/evp.h" 3 4
13034 int EVP_Cipher(EVP_CIPHER_CTX *c,
13035                unsigned char *out, const unsigned char *in, unsigned int inl);
13036 # 586 "/usr/include/openssl/evp.h" 3 4
13037 void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
13038 int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
13039 EVP_MD_CTX *EVP_MD_CTX_create(void);
13040 void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
13041 int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in);
13042 void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
13043 void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags);
13044 int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags);
13045 int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
13046 int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
13047 int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
13048 int EVP_Digest(const void *data, size_t count,
13049                unsigned char *md, unsigned int *size, const EVP_MD *type,
13050                ENGINE *impl);
13051 
13052 int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in);
13053 int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
13054 int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
13055 
13056 int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify);
13057 int EVP_read_pw_string_min(char *buf, int minlen, int maxlen,
13058                            const char *prompt, int verify);
13059 void EVP_set_pw_prompt(const char *prompt);
13060 char *EVP_get_pw_prompt(void);
13061 
13062 int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
13063                    const unsigned char *salt, const unsigned char *data,
13064                    int datal, int count, unsigned char *key,
13065                    unsigned char *iv);
13066 
13067 void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags);
13068 void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags);
13069 int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags);
13070 
13071 int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
13072                     const unsigned char *key, const unsigned char *iv);
13073 int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
13074                        ENGINE *impl, const unsigned char *key,
13075                        const unsigned char *iv);
13076 int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
13077                       const unsigned char *in, int inl);
13078 int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
13079 int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
13080 
13081 int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
13082                     const unsigned char *key, const unsigned char *iv);
13083 int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
13084                        ENGINE *impl, const unsigned char *key,
13085                        const unsigned char *iv);
13086 int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
13087                       const unsigned char *in, int inl);
13088 int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
13089 int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
13090 
13091 int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
13092                    const unsigned char *key, const unsigned char *iv,
13093                    int enc);
13094 int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
13095                       ENGINE *impl, const unsigned char *key,
13096                       const unsigned char *iv, int enc);
13097 int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
13098                      const unsigned char *in, int inl);
13099 int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
13100 int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
13101 
13102 int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s,
13103                   EVP_PKEY *pkey);
13104 
13105 int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
13106                     unsigned int siglen, EVP_PKEY *pkey);
13107 
13108 int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
13109                        const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
13110 int EVP_DigestSignFinal(EVP_MD_CTX *ctx,
13111                         unsigned char *sigret, size_t *siglen);
13112 
13113 int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
13114                          const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
13115 int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx,
13116                           const unsigned char *sig, size_t siglen);
13117 
13118 int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
13119                  const unsigned char *ek, int ekl, const unsigned char *iv,
13120                  EVP_PKEY *priv);
13121 int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
13122 
13123 int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
13124                  unsigned char **ek, int *ekl, unsigned char *iv,
13125                  EVP_PKEY **pubk, int npubk);
13126 int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
13127 
13128 void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
13129 void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
13130                       const unsigned char *in, int inl);
13131 void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);
13132 int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
13133 
13134 void EVP_DecodeInit(EVP_ENCODE_CTX *ctx);
13135 int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
13136                      const unsigned char *in, int inl);
13137 int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned
13138                     char *out, int *outl);
13139 int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
13140 
13141 void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
13142 int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
13143 EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
13144 void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a);
13145 int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
13146 int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);
13147 int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
13148 int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key);
13149 
13150 
13151 BIO_METHOD *BIO_f_md(void);
13152 BIO_METHOD *BIO_f_base64(void);
13153 BIO_METHOD *BIO_f_cipher(void);
13154 BIO_METHOD *BIO_f_reliable(void);
13155 void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k,
13156                     const unsigned char *i, int enc);
13157 
13158 
13159 const EVP_MD *EVP_md_null(void);
13160 
13161 const EVP_MD *EVP_md2(void);
13162 
13163 
13164 const EVP_MD *EVP_md4(void);
13165 
13166 
13167 const EVP_MD *EVP_md5(void);
13168 
13169 
13170 const EVP_MD *EVP_sha(void);
13171 const EVP_MD *EVP_sha1(void);
13172 const EVP_MD *EVP_dss(void);
13173 const EVP_MD *EVP_dss1(void);
13174 const EVP_MD *EVP_ecdsa(void);
13175 
13176 
13177 const EVP_MD *EVP_sha224(void);
13178 const EVP_MD *EVP_sha256(void);
13179 
13180 
13181 const EVP_MD *EVP_sha384(void);
13182 const EVP_MD *EVP_sha512(void);
13183 
13184 
13185 
13186 
13187 
13188 const EVP_MD *EVP_ripemd160(void);
13189 
13190 
13191 
13192 
13193 const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */
13194 
13195 const EVP_CIPHER *EVP_des_ecb(void);
13196 const EVP_CIPHER *EVP_des_ede(void);
13197 const EVP_CIPHER *EVP_des_ede3(void);
13198 const EVP_CIPHER *EVP_des_ede_ecb(void);
13199 const EVP_CIPHER *EVP_des_ede3_ecb(void);
13200 const EVP_CIPHER *EVP_des_cfb64(void);
13201 
13202 const EVP_CIPHER *EVP_des_cfb1(void);
13203 const EVP_CIPHER *EVP_des_cfb8(void);
13204 const EVP_CIPHER *EVP_des_ede_cfb64(void);
13205 
13206 
13207 
13208 
13209 
13210 const EVP_CIPHER *EVP_des_ede3_cfb64(void);
13211 
13212 const EVP_CIPHER *EVP_des_ede3_cfb1(void);
13213 const EVP_CIPHER *EVP_des_ede3_cfb8(void);
13214 const EVP_CIPHER *EVP_des_ofb(void);
13215 const EVP_CIPHER *EVP_des_ede_ofb(void);
13216 const EVP_CIPHER *EVP_des_ede3_ofb(void);
13217 const EVP_CIPHER *EVP_des_cbc(void);
13218 const EVP_CIPHER *EVP_des_ede_cbc(void);
13219 const EVP_CIPHER *EVP_des_ede3_cbc(void);
13220 const EVP_CIPHER *EVP_desx_cbc(void);
13221 const EVP_CIPHER *EVP_des_ede3_wrap(void);
13222 /*
13223  * This should now be supported through the dev_crypto ENGINE. But also, why
13224  * are rc4 and md5 declarations made here inside a "NO_DES" precompiler
13225  * branch?
13226  */
13227 # 785 "/usr/include/openssl/evp.h" 3 4
13228 const EVP_CIPHER *EVP_rc4(void);
13229 const EVP_CIPHER *EVP_rc4_40(void);
13230 
13231 const EVP_CIPHER *EVP_rc4_hmac_md5(void);
13232 # 799 "/usr/include/openssl/evp.h" 3 4
13233 const EVP_CIPHER *EVP_rc2_ecb(void);
13234 const EVP_CIPHER *EVP_rc2_cbc(void);
13235 const EVP_CIPHER *EVP_rc2_40_cbc(void);
13236 const EVP_CIPHER *EVP_rc2_64_cbc(void);
13237 const EVP_CIPHER *EVP_rc2_cfb64(void);
13238 
13239 const EVP_CIPHER *EVP_rc2_ofb(void);
13240 
13241 
13242 const EVP_CIPHER *EVP_bf_ecb(void);
13243 const EVP_CIPHER *EVP_bf_cbc(void);
13244 const EVP_CIPHER *EVP_bf_cfb64(void);
13245 
13246 const EVP_CIPHER *EVP_bf_ofb(void);
13247 
13248 
13249 const EVP_CIPHER *EVP_cast5_ecb(void);
13250 const EVP_CIPHER *EVP_cast5_cbc(void);
13251 const EVP_CIPHER *EVP_cast5_cfb64(void);
13252 
13253 const EVP_CIPHER *EVP_cast5_ofb(void);
13254 # 829 "/usr/include/openssl/evp.h" 3 4
13255 const EVP_CIPHER *EVP_aes_128_ecb(void);
13256 const EVP_CIPHER *EVP_aes_128_cbc(void);
13257 const EVP_CIPHER *EVP_aes_128_cfb1(void);
13258 const EVP_CIPHER *EVP_aes_128_cfb8(void);
13259 const EVP_CIPHER *EVP_aes_128_cfb128(void);
13260 
13261 const EVP_CIPHER *EVP_aes_128_ofb(void);
13262 const EVP_CIPHER *EVP_aes_128_ctr(void);
13263 const EVP_CIPHER *EVP_aes_128_ccm(void);
13264 const EVP_CIPHER *EVP_aes_128_gcm(void);
13265 const EVP_CIPHER *EVP_aes_128_xts(void);
13266 const EVP_CIPHER *EVP_aes_128_wrap(void);
13267 const EVP_CIPHER *EVP_aes_192_ecb(void);
13268 const EVP_CIPHER *EVP_aes_192_cbc(void);
13269 const EVP_CIPHER *EVP_aes_192_cfb1(void);
13270 const EVP_CIPHER *EVP_aes_192_cfb8(void);
13271 const EVP_CIPHER *EVP_aes_192_cfb128(void);
13272 
13273 const EVP_CIPHER *EVP_aes_192_ofb(void);
13274 const EVP_CIPHER *EVP_aes_192_ctr(void);
13275 const EVP_CIPHER *EVP_aes_192_ccm(void);
13276 const EVP_CIPHER *EVP_aes_192_gcm(void);
13277 const EVP_CIPHER *EVP_aes_192_wrap(void);
13278 const EVP_CIPHER *EVP_aes_256_ecb(void);
13279 const EVP_CIPHER *EVP_aes_256_cbc(void);
13280 const EVP_CIPHER *EVP_aes_256_cfb1(void);
13281 const EVP_CIPHER *EVP_aes_256_cfb8(void);
13282 const EVP_CIPHER *EVP_aes_256_cfb128(void);
13283 
13284 const EVP_CIPHER *EVP_aes_256_ofb(void);
13285 const EVP_CIPHER *EVP_aes_256_ctr(void);
13286 const EVP_CIPHER *EVP_aes_256_ccm(void);
13287 const EVP_CIPHER *EVP_aes_256_gcm(void);
13288 const EVP_CIPHER *EVP_aes_256_xts(void);
13289 const EVP_CIPHER *EVP_aes_256_wrap(void);
13290 
13291 const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void);
13292 const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void);
13293 
13294 
13295 const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void);
13296 const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void);
13297 
13298 
13299 
13300 const EVP_CIPHER *EVP_camellia_128_ecb(void);
13301 const EVP_CIPHER *EVP_camellia_128_cbc(void);
13302 const EVP_CIPHER *EVP_camellia_128_cfb1(void);
13303 const EVP_CIPHER *EVP_camellia_128_cfb8(void);
13304 const EVP_CIPHER *EVP_camellia_128_cfb128(void);
13305 
13306 const EVP_CIPHER *EVP_camellia_128_ofb(void);
13307 const EVP_CIPHER *EVP_camellia_192_ecb(void);
13308 const EVP_CIPHER *EVP_camellia_192_cbc(void);
13309 const EVP_CIPHER *EVP_camellia_192_cfb1(void);
13310 const EVP_CIPHER *EVP_camellia_192_cfb8(void);
13311 const EVP_CIPHER *EVP_camellia_192_cfb128(void);
13312 
13313 const EVP_CIPHER *EVP_camellia_192_ofb(void);
13314 const EVP_CIPHER *EVP_camellia_256_ecb(void);
13315 const EVP_CIPHER *EVP_camellia_256_cbc(void);
13316 const EVP_CIPHER *EVP_camellia_256_cfb1(void);
13317 const EVP_CIPHER *EVP_camellia_256_cfb8(void);
13318 const EVP_CIPHER *EVP_camellia_256_cfb128(void);
13319 
13320 const EVP_CIPHER *EVP_camellia_256_ofb(void);
13321 # 905 "/usr/include/openssl/evp.h" 3 4
13322 void OPENSSL_add_all_algorithms_noconf(void);
13323 void OPENSSL_add_all_algorithms_conf(void);
13324 # 916 "/usr/include/openssl/evp.h" 3 4
13325 void OpenSSL_add_all_ciphers(void);
13326 void OpenSSL_add_all_digests(void);
13327 
13328 
13329 
13330 
13331 int EVP_add_cipher(const EVP_CIPHER *cipher);
13332 int EVP_add_digest(const EVP_MD *digest);
13333 
13334 const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
13335 const EVP_MD *EVP_get_digestbyname(const char *name);
13336 void EVP_cleanup(void);
13337 
13338 void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph,
13339                                    const char *from, const char *to, void *x),
13340                        void *arg);
13341 void EVP_CIPHER_do_all_sorted(void (*fn)
13342                                (const EVP_CIPHER *ciph, const char *from,
13343                                 const char *to, void *x), void *arg);
13344 
13345 void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph,
13346                                const char *from, const char *to, void *x),
13347                    void *arg);
13348 void EVP_MD_do_all_sorted(void (*fn)
13349                            (const EVP_MD *ciph, const char *from,
13350                             const char *to, void *x), void *arg);
13351 
13352 int EVP_PKEY_decrypt_old(unsigned char *dec_key,
13353                          const unsigned char *enc_key, int enc_key_len,
13354                          EVP_PKEY *private_key);
13355 int EVP_PKEY_encrypt_old(unsigned char *enc_key,
13356                          const unsigned char *key, int key_len,
13357                          EVP_PKEY *pub_key);
13358 int EVP_PKEY_type(int type);
13359 int EVP_PKEY_id(const EVP_PKEY *pkey);
13360 int EVP_PKEY_base_id(const EVP_PKEY *pkey);
13361 int EVP_PKEY_bits(EVP_PKEY *pkey);
13362 int EVP_PKEY_size(EVP_PKEY *pkey);
13363 int EVP_PKEY_set_type(EVP_PKEY *pkey, int type);
13364 int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
13365 int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
13366 void *EVP_PKEY_get0(EVP_PKEY *pkey);
13367 
13368 
13369 struct rsa_st;
13370 int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key);
13371 struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
13372 
13373 
13374 struct dsa_st;
13375 int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key);
13376 struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
13377 
13378 
13379 struct dh_st;
13380 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key);
13381 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
13382 
13383 
13384 struct ec_key_st;
13385 int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key);
13386 struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
13387 
13388 
13389 EVP_PKEY *EVP_PKEY_new(void);
13390 void EVP_PKEY_free(EVP_PKEY *pkey);
13391 
13392 EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
13393                         long length);
13394 int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
13395 
13396 EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
13397                          long length);
13398 EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
13399                              long length);
13400 int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp);
13401 
13402 int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
13403 int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
13404 int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode);
13405 int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b);
13406 
13407 int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
13408 
13409 int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
13410                           int indent, ASN1_PCTX *pctx);
13411 int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
13412                            int indent, ASN1_PCTX *pctx);
13413 int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
13414                           int indent, ASN1_PCTX *pctx);
13415 
13416 int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
13417 
13418 int EVP_CIPHER_type(const EVP_CIPHER *ctx);
13419 
13420 /* calls methods */
13421 int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13422 int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13423 
13424 /* These are used by EVP_CIPHER methods */
13425 int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13426 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13427 
13428 /* PKCS5 password based encryption */
13429 int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
13430                        ASN1_TYPE *param, const EVP_CIPHER *cipher,
13431                        const EVP_MD *md, int en_de);
13432 int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
13433                            const unsigned char *salt, int saltlen, int iter,
13434                            int keylen, unsigned char *out);
13435 int PKCS5_PBKDF2_HMAC(const char *pass, int passlen,
13436                       const unsigned char *salt, int saltlen, int iter,
13437                       const EVP_MD *digest, int keylen, unsigned char *out);
13438 int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
13439                           ASN1_TYPE *param, const EVP_CIPHER *cipher,
13440                           const EVP_MD *md, int en_de);
13441 
13442 void PKCS5_PBE_add(void);
13443 
13444 int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
13445                        ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de);
13446 
13447 /* PBE type */
13448 
13449 /* Can appear as the outermost AlgorithmIdentifier */
13450 
13451 /* Is an PRF type OID */
13452 
13453 
13454 int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid,
13455                          int md_nid, EVP_PBE_KEYGEN *keygen);
13456 int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,
13457                     EVP_PBE_KEYGEN *keygen);
13458 int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid,
13459                  EVP_PBE_KEYGEN **pkeygen);
13460 void EVP_PBE_cleanup(void);
13461 # 1064 "/usr/include/openssl/evp.h" 3 4
13462 int EVP_PKEY_asn1_get_count(void);
13463 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx);
13464 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type);
13465 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe,
13466                                                    const char *str, int len);
13467 int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth);
13468 int EVP_PKEY_asn1_add_alias(int to, int from);
13469 int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id,
13470                             int *ppkey_flags, const char **pinfo,
13471                             const char **ppem_str,
13472                             const EVP_PKEY_ASN1_METHOD *ameth);
13473 
13474 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey);
13475 EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags,
13476                                         const char *pem_str,
13477                                         const char *info);
13478 void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst,
13479                         const EVP_PKEY_ASN1_METHOD *src);
13480 void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth);
13481 void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth,
13482                               int (*pub_decode) (EVP_PKEY *pk,
13483                                                  X509_PUBKEY *pub),
13484                               int (*pub_encode) (X509_PUBKEY *pub,
13485                                                  const EVP_PKEY *pk),
13486                               int (*pub_cmp) (const EVP_PKEY *a,
13487                                               const EVP_PKEY *b),
13488                               int (*pub_print) (BIO *out,
13489                                                 const EVP_PKEY *pkey,
13490                                                 int indent, ASN1_PCTX *pctx),
13491                               int (*pkey_size) (const EVP_PKEY *pk),
13492                               int (*pkey_bits) (const EVP_PKEY *pk));
13493 void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth,
13494                                int (*priv_decode) (EVP_PKEY *pk,
13495                                                    PKCS8_PRIV_KEY_INFO
13496                                                    *p8inf),
13497                                int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8,
13498                                                    const EVP_PKEY *pk),
13499                                int (*priv_print) (BIO *out,
13500                                                   const EVP_PKEY *pkey,
13501                                                   int indent,
13502                                                   ASN1_PCTX *pctx));
13503 void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth,
13504                              int (*param_decode) (EVP_PKEY *pkey,
13505                                                   const unsigned char **pder,
13506                                                   int derlen),
13507                              int (*param_encode) (const EVP_PKEY *pkey,
13508                                                   unsigned char **pder),
13509                              int (*param_missing) (const EVP_PKEY *pk),
13510                              int (*param_copy) (EVP_PKEY *to,
13511                                                 const EVP_PKEY *from),
13512                              int (*param_cmp) (const EVP_PKEY *a,
13513                                                const EVP_PKEY *b),
13514                              int (*param_print) (BIO *out,
13515                                                  const EVP_PKEY *pkey,
13516                                                  int indent,
13517                                                  ASN1_PCTX *pctx));
13518 
13519 void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth,
13520                             void (*pkey_free) (EVP_PKEY *pkey));
13521 void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
13522                             int (*pkey_ctrl) (EVP_PKEY *pkey, int op,
13523                                               long arg1, void *arg2));
13524 void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth,
13525                             int (*item_verify) (EVP_MD_CTX *ctx,
13526                                                 const ASN1_ITEM *it,
13527                                                 void *asn,
13528                                                 X509_ALGOR *a,
13529                                                 ASN1_BIT_STRING *sig,
13530                                                 EVP_PKEY *pkey),
13531                             int (*item_sign) (EVP_MD_CTX *ctx,
13532                                               const ASN1_ITEM *it,
13533                                               void *asn,
13534                                               X509_ALGOR *alg1,
13535                                               X509_ALGOR *alg2,
13536                                               ASN1_BIT_STRING *sig));
13537 # 1185 "/usr/include/openssl/evp.h" 3 4
13538 /* Used by GOST key encryption in TLS */
13539 # 1199 "/usr/include/openssl/evp.h" 3 4
13540 /*
13541  * Method handles all operations: don't assume any digest related defaults.
13542  */
13543 
13544 
13545 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type);
13546 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags);
13547 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags,
13548                              const EVP_PKEY_METHOD *meth);
13549 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src);
13550 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth);
13551 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth);
13552 
13553 EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
13554 EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
13555 EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx);
13556 void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
13557 
13558 int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
13559                       int cmd, int p1, void *p2);
13560 int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
13561                           const char *value);
13562 
13563 int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx);
13564 void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen);
13565 
13566 EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e,
13567                                const unsigned char *key, int keylen);
13568 
13569 void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data);
13570 void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx);
13571 EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx);
13572 
13573 EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx);
13574 
13575 void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data);
13576 void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx);
13577 
13578 int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
13579 int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
13580                   unsigned char *sig, size_t *siglen,
13581                   const unsigned char *tbs, size_t tbslen);
13582 int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
13583 int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
13584                     const unsigned char *sig, size_t siglen,
13585                     const unsigned char *tbs, size_t tbslen);
13586 int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
13587 int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
13588                             unsigned char *rout, size_t *routlen,
13589                             const unsigned char *sig, size_t siglen);
13590 int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
13591 int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
13592                      unsigned char *out, size_t *outlen,
13593                      const unsigned char *in, size_t inlen);
13594 int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
13595 int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
13596                      unsigned char *out, size_t *outlen,
13597                      const unsigned char *in, size_t inlen);
13598 
13599 int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx);
13600 int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer);
13601 int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
13602 
13603 typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx);
13604 
13605 int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
13606 int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
13607 int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
13608 int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
13609 
13610 void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
13611 EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
13612 
13613 int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx);
13614 
13615 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
13616                             int (*init) (EVP_PKEY_CTX *ctx));
13617 
13618 void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth,
13619                             int (*copy) (EVP_PKEY_CTX *dst,
13620                                          EVP_PKEY_CTX *src));
13621 
13622 void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,
13623                                void (*cleanup) (EVP_PKEY_CTX *ctx));
13624 
13625 void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth,
13626                                 int (*paramgen_init) (EVP_PKEY_CTX *ctx),
13627                                 int (*paramgen) (EVP_PKEY_CTX *ctx,
13628                                                  EVP_PKEY *pkey));
13629 
13630 void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth,
13631                               int (*keygen_init) (EVP_PKEY_CTX *ctx),
13632                               int (*keygen) (EVP_PKEY_CTX *ctx,
13633                                              EVP_PKEY *pkey));
13634 
13635 void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth,
13636                             int (*sign_init) (EVP_PKEY_CTX *ctx),
13637                             int (*sign) (EVP_PKEY_CTX *ctx,
13638                                          unsigned char *sig, size_t *siglen,
13639                                          const unsigned char *tbs,
13640                                          size_t tbslen));
13641 
13642 void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth,
13643                               int (*verify_init) (EVP_PKEY_CTX *ctx),
13644                               int (*verify) (EVP_PKEY_CTX *ctx,
13645                                              const unsigned char *sig,
13646                                              size_t siglen,
13647                                              const unsigned char *tbs,
13648                                              size_t tbslen));
13649 
13650 void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth,
13651                                       int (*verify_recover_init) (EVP_PKEY_CTX
13652                                                                   *ctx),
13653                                       int (*verify_recover) (EVP_PKEY_CTX
13654                                                              *ctx,
13655                                                              unsigned char
13656                                                              *sig,
13657                                                              size_t *siglen,
13658                                                              const unsigned
13659                                                              char *tbs,
13660                                                              size_t tbslen));
13661 
13662 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
13663                                int (*signctx_init) (EVP_PKEY_CTX *ctx,
13664                                                     EVP_MD_CTX *mctx),
13665                                int (*signctx) (EVP_PKEY_CTX *ctx,
13666                                                unsigned char *sig,
13667                                                size_t *siglen,
13668                                                EVP_MD_CTX *mctx));
13669 
13670 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
13671                                  int (*verifyctx_init) (EVP_PKEY_CTX *ctx,
13672                                                         EVP_MD_CTX *mctx),
13673                                  int (*verifyctx) (EVP_PKEY_CTX *ctx,
13674                                                    const unsigned char *sig,
13675                                                    int siglen,
13676                                                    EVP_MD_CTX *mctx));
13677 
13678 void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth,
13679                                int (*encrypt_init) (EVP_PKEY_CTX *ctx),
13680                                int (*encryptfn) (EVP_PKEY_CTX *ctx,
13681                                                  unsigned char *out,
13682                                                  size_t *outlen,
13683                                                  const unsigned char *in,
13684                                                  size_t inlen));
13685 
13686 void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth,
13687                                int (*decrypt_init) (EVP_PKEY_CTX *ctx),
13688                                int (*decrypt) (EVP_PKEY_CTX *ctx,
13689                                                unsigned char *out,
13690                                                size_t *outlen,
13691                                                const unsigned char *in,
13692                                                size_t inlen));
13693 
13694 void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth,
13695                               int (*derive_init) (EVP_PKEY_CTX *ctx),
13696                               int (*derive) (EVP_PKEY_CTX *ctx,
13697                                              unsigned char *key,
13698                                              size_t *keylen));
13699 
13700 void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
13701                             int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
13702                                          void *p2),
13703                             int (*ctrl_str) (EVP_PKEY_CTX *ctx,
13704                                              const char *type,
13705                                              const char *value));
13706 
13707 void EVP_PKEY_meth_get_init(EVP_PKEY_METHOD *pmeth,
13708                             int (**pinit) (EVP_PKEY_CTX *ctx));
13709 
13710 void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth,
13711                             int (**pcopy) (EVP_PKEY_CTX *dst,
13712                                            EVP_PKEY_CTX *src));
13713 
13714 void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth,
13715                                void (**pcleanup) (EVP_PKEY_CTX *ctx));
13716 
13717 void EVP_PKEY_meth_get_paramgen(EVP_PKEY_METHOD *pmeth,
13718                                 int (**pparamgen_init) (EVP_PKEY_CTX *ctx),
13719                                 int (**pparamgen) (EVP_PKEY_CTX *ctx,
13720                                                    EVP_PKEY *pkey));
13721 
13722 void EVP_PKEY_meth_get_keygen(EVP_PKEY_METHOD *pmeth,
13723                               int (**pkeygen_init) (EVP_PKEY_CTX *ctx),
13724                               int (**pkeygen) (EVP_PKEY_CTX *ctx,
13725                                                EVP_PKEY *pkey));
13726 
13727 void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth,
13728                             int (**psign_init) (EVP_PKEY_CTX *ctx),
13729                             int (**psign) (EVP_PKEY_CTX *ctx,
13730                                            unsigned char *sig, size_t *siglen,
13731                                            const unsigned char *tbs,
13732                                            size_t tbslen));
13733 
13734 void EVP_PKEY_meth_get_verify(EVP_PKEY_METHOD *pmeth,
13735                               int (**pverify_init) (EVP_PKEY_CTX *ctx),
13736                               int (**pverify) (EVP_PKEY_CTX *ctx,
13737                                                const unsigned char *sig,
13738                                                size_t siglen,
13739                                                const unsigned char *tbs,
13740                                                size_t tbslen));
13741 
13742 void EVP_PKEY_meth_get_verify_recover(EVP_PKEY_METHOD *pmeth,
13743                                       int (**pverify_recover_init) (EVP_PKEY_CTX
13744                                                                     *ctx),
13745                                       int (**pverify_recover) (EVP_PKEY_CTX
13746                                                                *ctx,
13747                                                                unsigned char
13748                                                                *sig,
13749                                                                size_t *siglen,
13750                                                                const unsigned
13751                                                                char *tbs,
13752                                                                size_t tbslen));
13753 
13754 void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth,
13755                                int (**psignctx_init) (EVP_PKEY_CTX *ctx,
13756                                                       EVP_MD_CTX *mctx),
13757                                int (**psignctx) (EVP_PKEY_CTX *ctx,
13758                                                  unsigned char *sig,
13759                                                  size_t *siglen,
13760                                                  EVP_MD_CTX *mctx));
13761 
13762 void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth,
13763                                  int (**pverifyctx_init) (EVP_PKEY_CTX *ctx,
13764                                                           EVP_MD_CTX *mctx),
13765                                  int (**pverifyctx) (EVP_PKEY_CTX *ctx,
13766                                                      const unsigned char *sig,
13767                                                      int siglen,
13768                                                      EVP_MD_CTX *mctx));
13769 
13770 void EVP_PKEY_meth_get_encrypt(EVP_PKEY_METHOD *pmeth,
13771                                int (**pencrypt_init) (EVP_PKEY_CTX *ctx),
13772                                int (**pencryptfn) (EVP_PKEY_CTX *ctx,
13773                                                    unsigned char *out,
13774                                                    size_t *outlen,
13775                                                    const unsigned char *in,
13776                                                    size_t inlen));
13777 
13778 void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth,
13779                                int (**pdecrypt_init) (EVP_PKEY_CTX *ctx),
13780                                int (**pdecrypt) (EVP_PKEY_CTX *ctx,
13781                                                  unsigned char *out,
13782                                                  size_t *outlen,
13783                                                  const unsigned char *in,
13784                                                  size_t inlen));
13785 
13786 void EVP_PKEY_meth_get_derive(EVP_PKEY_METHOD *pmeth,
13787                               int (**pderive_init) (EVP_PKEY_CTX *ctx),
13788                               int (**pderive) (EVP_PKEY_CTX *ctx,
13789                                                unsigned char *key,
13790                                                size_t *keylen));
13791 
13792 void EVP_PKEY_meth_get_ctrl(EVP_PKEY_METHOD *pmeth,
13793                             int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
13794                                            void *p2),
13795                             int (**pctrl_str) (EVP_PKEY_CTX *ctx,
13796                                                const char *type,
13797                                                const char *value));
13798 
13799 void EVP_add_alg_module(void);
13800 
13801 /* BEGIN ERROR CODES */
13802 /*
13803  * The following lines are auto generated by the script mkerr.pl. Any changes
13804  * made after this point may be overwritten when the script is next run.
13805  */
13806 
13807 void ERR_load_EVP_strings(void);
13808 
13809 /* Error codes for the EVP functions. */
13810 
13811 /* Function codes. */
13812 # 1554 "/usr/include/openssl/evp.h" 3 4
13813 /* Reason codes. */
13814 # 74 "/usr/include/openssl/x509.h" 2 3 4
13815 
13816 
13817 # 1 "/usr/include/openssl/bio.h" 1 3 4
13818 /* crypto/bio/bio.h */
13819 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
13820  * All rights reserved.
13821  *
13822  * This package is an SSL implementation written
13823  * by Eric Young (eay@cryptsoft.com).
13824  * The implementation was written so as to conform with Netscapes SSL.
13825  *
13826  * This library is free for commercial and non-commercial use as long as
13827  * the following conditions are aheared to.  The following conditions
13828  * apply to all code found in this distribution, be it the RC4, RSA,
13829  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13830  * included with this distribution is covered by the same copyright terms
13831  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
13832  *
13833  * Copyright remains Eric Young's, and as such any Copyright notices in
13834  * the code are not to be removed.
13835  * If this package is used in a product, Eric Young should be given attribution
13836  * as the author of the parts of the library used.
13837  * This can be in the form of a textual message at program startup or
13838  * in documentation (online or textual) provided with the package.
13839  *
13840  * Redistribution and use in source and binary forms, with or without
13841  * modification, are permitted provided that the following conditions
13842  * are met:
13843  * 1. Redistributions of source code must retain the copyright
13844  *    notice, this list of conditions and the following disclaimer.
13845  * 2. Redistributions in binary form must reproduce the above copyright
13846  *    notice, this list of conditions and the following disclaimer in the
13847  *    documentation and/or other materials provided with the distribution.
13848  * 3. All advertising materials mentioning features or use of this software
13849  *    must display the following acknowledgement:
13850  *    "This product includes cryptographic software written by
13851  *     Eric Young (eay@cryptsoft.com)"
13852  *    The word 'cryptographic' can be left out if the rouines from the library
13853  *    being used are not cryptographic related :-).
13854  * 4. If you include any Windows specific code (or a derivative thereof) from
13855  *    the apps directory (application code) you must include an acknowledgement:
13856  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
13857  *
13858  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
13859  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13860  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
13861  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
13862  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
13863  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
13864  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13865  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
13866  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
13867  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
13868  * SUCH DAMAGE.
13869  *
13870  * The licence and distribution terms for any publically available version or
13871  * derivative of this code cannot be changed.  i.e. this code cannot simply be
13872  * copied and put under another distribution licence
13873  * [including the GNU Public Licence.]
13874  */
13875 # 77 "/usr/include/openssl/x509.h" 2 3 4
13876 
13877 # 1 "/usr/include/openssl/stack.h" 1 3 4
13878 /* crypto/stack/stack.h */
13879 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
13880  * All rights reserved.
13881  *
13882  * This package is an SSL implementation written
13883  * by Eric Young (eay@cryptsoft.com).
13884  * The implementation was written so as to conform with Netscapes SSL.
13885  *
13886  * This library is free for commercial and non-commercial use as long as
13887  * the following conditions are aheared to.  The following conditions
13888  * apply to all code found in this distribution, be it the RC4, RSA,
13889  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13890  * included with this distribution is covered by the same copyright terms
13891  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
13892  *
13893  * Copyright remains Eric Young's, and as such any Copyright notices in
13894  * the code are not to be removed.
13895  * If this package is used in a product, Eric Young should be given attribution
13896  * as the author of the parts of the library used.
13897  * This can be in the form of a textual message at program startup or
13898  * in documentation (online or textual) provided with the package.
13899  *
13900  * Redistribution and use in source and binary forms, with or without
13901  * modification, are permitted provided that the following conditions
13902  * are met:
13903  * 1. Redistributions of source code must retain the copyright
13904  *    notice, this list of conditions and the following disclaimer.
13905  * 2. Redistributions in binary form must reproduce the above copyright
13906  *    notice, this list of conditions and the following disclaimer in the
13907  *    documentation and/or other materials provided with the distribution.
13908  * 3. All advertising materials mentioning features or use of this software
13909  *    must display the following acknowledgement:
13910  *    "This product includes cryptographic software written by
13911  *     Eric Young (eay@cryptsoft.com)"
13912  *    The word 'cryptographic' can be left out if the rouines from the library
13913  *    being used are not cryptographic related :-).
13914  * 4. If you include any Windows specific code (or a derivative thereof) from
13915  *    the apps directory (application code) you must include an acknowledgement:
13916  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
13917  *
13918  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
13919  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13920  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
13921  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
13922  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
13923  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
13924  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13925  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
13926  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
13927  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
13928  * SUCH DAMAGE.
13929  *
13930  * The licence and distribution terms for any publically available version or
13931  * derivative of this code cannot be changed.  i.e. this code cannot simply be
13932  * copied and put under another distribution licence
13933  * [including the GNU Public Licence.]
13934  */
13935 # 79 "/usr/include/openssl/x509.h" 2 3 4
13936 # 1 "/usr/include/openssl/asn1.h" 1 3 4
13937 /* crypto/asn1/asn1.h */
13938 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
13939  * All rights reserved.
13940  *
13941  * This package is an SSL implementation written
13942  * by Eric Young (eay@cryptsoft.com).
13943  * The implementation was written so as to conform with Netscapes SSL.
13944  *
13945  * This library is free for commercial and non-commercial use as long as
13946  * the following conditions are aheared to.  The following conditions
13947  * apply to all code found in this distribution, be it the RC4, RSA,
13948  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13949  * included with this distribution is covered by the same copyright terms
13950  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
13951  *
13952  * Copyright remains Eric Young's, and as such any Copyright notices in
13953  * the code are not to be removed.
13954  * If this package is used in a product, Eric Young should be given attribution
13955  * as the author of the parts of the library used.
13956  * This can be in the form of a textual message at program startup or
13957  * in documentation (online or textual) provided with the package.
13958  *
13959  * Redistribution and use in source and binary forms, with or without
13960  * modification, are permitted provided that the following conditions
13961  * are met:
13962  * 1. Redistributions of source code must retain the copyright
13963  *    notice, this list of conditions and the following disclaimer.
13964  * 2. Redistributions in binary form must reproduce the above copyright
13965  *    notice, this list of conditions and the following disclaimer in the
13966  *    documentation and/or other materials provided with the distribution.
13967  * 3. All advertising materials mentioning features or use of this software
13968  *    must display the following acknowledgement:
13969  *    "This product includes cryptographic software written by
13970  *     Eric Young (eay@cryptsoft.com)"
13971  *    The word 'cryptographic' can be left out if the rouines from the library
13972  *    being used are not cryptographic related :-).
13973  * 4. If you include any Windows specific code (or a derivative thereof) from
13974  *    the apps directory (application code) you must include an acknowledgement:
13975  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
13976  *
13977  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
13978  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13979  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
13980  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
13981  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
13982  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
13983  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13984  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
13985  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
13986  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
13987  * SUCH DAMAGE.
13988  *
13989  * The licence and distribution terms for any publically available version or
13990  * derivative of this code cannot be changed.  i.e. this code cannot simply be
13991  * copied and put under another distribution licence
13992  * [including the GNU Public Licence.]
13993  */
13994 # 80 "/usr/include/openssl/x509.h" 2 3 4
13995 # 1 "/usr/include/openssl/safestack.h" 1 3 4
13996 /* ====================================================================
13997  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
13998  *
13999  * Redistribution and use in source and binary forms, with or without
14000  * modification, are permitted provided that the following conditions
14001  * are met:
14002  *
14003  * 1. Redistributions of source code must retain the above copyright
14004  *    notice, this list of conditions and the following disclaimer.
14005  *
14006  * 2. Redistributions in binary form must reproduce the above copyright
14007  *    notice, this list of conditions and the following disclaimer in
14008  *    the documentation and/or other materials provided with the
14009  *    distribution.
14010  *
14011  * 3. All advertising materials mentioning features or use of this
14012  *    software must display the following acknowledgment:
14013  *    "This product includes software developed by the OpenSSL Project
14014  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
14015  *
14016  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
14017  *    endorse or promote products derived from this software without
14018  *    prior written permission. For written permission, please contact
14019  *    openssl-core@openssl.org.
14020  *
14021  * 5. Products derived from this software may not be called "OpenSSL"
14022  *    nor may "OpenSSL" appear in their names without prior written
14023  *    permission of the OpenSSL Project.
14024  *
14025  * 6. Redistributions of any form whatsoever must retain the following
14026  *    acknowledgment:
14027  *    "This product includes software developed by the OpenSSL Project
14028  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
14029  *
14030  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
14031  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14032  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14033  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
14034  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14035  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14036  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
14037  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14038  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14039  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
14040  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
14041  * OF THE POSSIBILITY OF SUCH DAMAGE.
14042  * ====================================================================
14043  *
14044  * This product includes cryptographic software written by Eric Young
14045  * (eay@cryptsoft.com).  This product includes software written by Tim
14046  * Hudson (tjh@cryptsoft.com).
14047  *
14048  */
14049 # 81 "/usr/include/openssl/x509.h" 2 3 4
14050 
14051 
14052 # 1 "/usr/include/openssl/ec.h" 1 3 4
14053 /* crypto/ec/ec.h */
14054 /*
14055  * Originally written by Bodo Moeller for the OpenSSL project.
14056  */
14057 /**
14058  * \file crypto/ec/ec.h Include file for the OpenSSL EC functions
14059  * \author Originally written by Bodo Moeller for the OpenSSL project
14060  */
14061 /* ====================================================================
14062  * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
14063  *
14064  * Redistribution and use in source and binary forms, with or without
14065  * modification, are permitted provided that the following conditions
14066  * are met:
14067  *
14068  * 1. Redistributions of source code must retain the above copyright
14069  *    notice, this list of conditions and the following disclaimer.
14070  *
14071  * 2. Redistributions in binary form must reproduce the above copyright
14072  *    notice, this list of conditions and the following disclaimer in
14073  *    the documentation and/or other materials provided with the
14074  *    distribution.
14075  *
14076  * 3. All advertising materials mentioning features or use of this
14077  *    software must display the following acknowledgment:
14078  *    "This product includes software developed by the OpenSSL Project
14079  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
14080  *
14081  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
14082  *    endorse or promote products derived from this software without
14083  *    prior written permission. For written permission, please contact
14084  *    openssl-core@openssl.org.
14085  *
14086  * 5. Products derived from this software may not be called "OpenSSL"
14087  *    nor may "OpenSSL" appear in their names without prior written
14088  *    permission of the OpenSSL Project.
14089  *
14090  * 6. Redistributions of any form whatsoever must retain the following
14091  *    acknowledgment:
14092  *    "This product includes software developed by the OpenSSL Project
14093  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
14094  *
14095  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
14096  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14097  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14098  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
14099  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14100  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14101  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
14102  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14103  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14104  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
14105  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
14106  * OF THE POSSIBILITY OF SUCH DAMAGE.
14107  * ====================================================================
14108  *
14109  * This product includes cryptographic software written by Eric Young
14110  * (eay@cryptsoft.com).  This product includes software written by Tim
14111  * Hudson (tjh@cryptsoft.com).
14112  *
14113  */
14114 /* ====================================================================
14115  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
14116  *
14117  * Portions of the attached software ("Contribution") are developed by
14118  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
14119  *
14120  * The Contribution is licensed pursuant to the OpenSSL open source
14121  * license provided above.
14122  *
14123  * The elliptic curve binary polynomial software is originally written by
14124  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
14125  *
14126  */
14127 
14128 
14129 
14130 
14131 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
14132 /* opensslconf.h */
14133 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
14134 
14135 
14136 
14137 
14138 /* OpenSSL was configured with the following options: */
14139 # 108 "/usr/include/openssl/opensslconf.h" 3 4
14140 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
14141    asks for it.  This is a transient feature that is provided for those
14142    who haven't had the time to do the appropriate changes in their
14143    applications.  */
14144 # 204 "/usr/include/openssl/opensslconf.h" 3 4
14145 /* crypto/opensslconf.h.in */
14146 
14147 /* Generate 80386 code? */
14148 # 80 "/usr/include/openssl/ec.h" 2 3 4
14149 
14150 
14151 
14152 
14153 
14154 # 1 "/usr/include/openssl/asn1.h" 1 3 4
14155 /* crypto/asn1/asn1.h */
14156 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
14157  * All rights reserved.
14158  *
14159  * This package is an SSL implementation written
14160  * by Eric Young (eay@cryptsoft.com).
14161  * The implementation was written so as to conform with Netscapes SSL.
14162  *
14163  * This library is free for commercial and non-commercial use as long as
14164  * the following conditions are aheared to.  The following conditions
14165  * apply to all code found in this distribution, be it the RC4, RSA,
14166  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
14167  * included with this distribution is covered by the same copyright terms
14168  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14169  *
14170  * Copyright remains Eric Young's, and as such any Copyright notices in
14171  * the code are not to be removed.
14172  * If this package is used in a product, Eric Young should be given attribution
14173  * as the author of the parts of the library used.
14174  * This can be in the form of a textual message at program startup or
14175  * in documentation (online or textual) provided with the package.
14176  *
14177  * Redistribution and use in source and binary forms, with or without
14178  * modification, are permitted provided that the following conditions
14179  * are met:
14180  * 1. Redistributions of source code must retain the copyright
14181  *    notice, this list of conditions and the following disclaimer.
14182  * 2. Redistributions in binary form must reproduce the above copyright
14183  *    notice, this list of conditions and the following disclaimer in the
14184  *    documentation and/or other materials provided with the distribution.
14185  * 3. All advertising materials mentioning features or use of this software
14186  *    must display the following acknowledgement:
14187  *    "This product includes cryptographic software written by
14188  *     Eric Young (eay@cryptsoft.com)"
14189  *    The word 'cryptographic' can be left out if the rouines from the library
14190  *    being used are not cryptographic related :-).
14191  * 4. If you include any Windows specific code (or a derivative thereof) from
14192  *    the apps directory (application code) you must include an acknowledgement:
14193  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
14194  *
14195  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
14196  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14197  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
14198  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
14199  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
14200  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
14201  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14202  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
14203  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
14204  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
14205  * SUCH DAMAGE.
14206  *
14207  * The licence and distribution terms for any publically available version or
14208  * derivative of this code cannot be changed.  i.e. this code cannot simply be
14209  * copied and put under another distribution licence
14210  * [including the GNU Public Licence.]
14211  */
14212 # 86 "/usr/include/openssl/ec.h" 2 3 4
14213 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
14214 /* ====================================================================
14215  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
14216  *
14217  * Redistribution and use in source and binary forms, with or without
14218  * modification, are permitted provided that the following conditions
14219  * are met:
14220  *
14221  * 1. Redistributions of source code must retain the above copyright
14222  *    notice, this list of conditions and the following disclaimer.
14223  *
14224  * 2. Redistributions in binary form must reproduce the above copyright
14225  *    notice, this list of conditions and the following disclaimer in
14226  *    the documentation and/or other materials provided with the
14227  *    distribution.
14228  *
14229  * 3. All advertising materials mentioning features or use of this
14230  *    software must display the following acknowledgment:
14231  *    "This product includes software developed by the OpenSSL Project
14232  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
14233  *
14234  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
14235  *    endorse or promote products derived from this software without
14236  *    prior written permission. For written permission, please contact
14237  *    openssl-core@openssl.org.
14238  *
14239  * 5. Products derived from this software may not be called "OpenSSL"
14240  *    nor may "OpenSSL" appear in their names without prior written
14241  *    permission of the OpenSSL Project.
14242  *
14243  * 6. Redistributions of any form whatsoever must retain the following
14244  *    acknowledgment:
14245  *    "This product includes software developed by the OpenSSL Project
14246  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
14247  *
14248  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
14249  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14250  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14251  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
14252  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14253  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14254  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
14255  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14256  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14257  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
14258  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
14259  * OF THE POSSIBILITY OF SUCH DAMAGE.
14260  * ====================================================================
14261  *
14262  * This product includes cryptographic software written by Eric Young
14263  * (eay@cryptsoft.com).  This product includes software written by Tim
14264  * Hudson (tjh@cryptsoft.com).
14265  *
14266  */
14267 # 87 "/usr/include/openssl/ec.h" 2 3 4
14268 
14269 # 1 "/usr/include/openssl/bn.h" 1 3 4
14270 /* crypto/bn/bn.h */
14271 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
14272  * All rights reserved.
14273  *
14274  * This package is an SSL implementation written
14275  * by Eric Young (eay@cryptsoft.com).
14276  * The implementation was written so as to conform with Netscapes SSL.
14277  *
14278  * This library is free for commercial and non-commercial use as long as
14279  * the following conditions are aheared to.  The following conditions
14280  * apply to all code found in this distribution, be it the RC4, RSA,
14281  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
14282  * included with this distribution is covered by the same copyright terms
14283  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14284  *
14285  * Copyright remains Eric Young's, and as such any Copyright notices in
14286  * the code are not to be removed.
14287  * If this package is used in a product, Eric Young should be given attribution
14288  * as the author of the parts of the library used.
14289  * This can be in the form of a textual message at program startup or
14290  * in documentation (online or textual) provided with the package.
14291  *
14292  * Redistribution and use in source and binary forms, with or without
14293  * modification, are permitted provided that the following conditions
14294  * are met:
14295  * 1. Redistributions of source code must retain the copyright
14296  *    notice, this list of conditions and the following disclaimer.
14297  * 2. Redistributions in binary form must reproduce the above copyright
14298  *    notice, this list of conditions and the following disclaimer in the
14299  *    documentation and/or other materials provided with the distribution.
14300  * 3. All advertising materials mentioning features or use of this software
14301  *    must display the following acknowledgement:
14302  *    "This product includes cryptographic software written by
14303  *     Eric Young (eay@cryptsoft.com)"
14304  *    The word 'cryptographic' can be left out if the rouines from the library
14305  *    being used are not cryptographic related :-).
14306  * 4. If you include any Windows specific code (or a derivative thereof) from
14307  *    the apps directory (application code) you must include an acknowledgement:
14308  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
14309  *
14310  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
14311  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14312  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
14313  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
14314  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
14315  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
14316  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14317  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
14318  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
14319  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
14320  * SUCH DAMAGE.
14321  *
14322  * The licence and distribution terms for any publically available version or
14323  * derivative of this code cannot be changed.  i.e. this code cannot simply be
14324  * copied and put under another distribution licence
14325  * [including the GNU Public Licence.]
14326  */
14327 /* ====================================================================
14328  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
14329  *
14330  * Redistribution and use in source and binary forms, with or without
14331  * modification, are permitted provided that the following conditions
14332  * are met:
14333  *
14334  * 1. Redistributions of source code must retain the above copyright
14335  *    notice, this list of conditions and the following disclaimer.
14336  *
14337  * 2. Redistributions in binary form must reproduce the above copyright
14338  *    notice, this list of conditions and the following disclaimer in
14339  *    the documentation and/or other materials provided with the
14340  *    distribution.
14341  *
14342  * 3. All advertising materials mentioning features or use of this
14343  *    software must display the following acknowledgment:
14344  *    "This product includes software developed by the OpenSSL Project
14345  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
14346  *
14347  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
14348  *    endorse or promote products derived from this software without
14349  *    prior written permission. For written permission, please contact
14350  *    openssl-core@openssl.org.
14351  *
14352  * 5. Products derived from this software may not be called "OpenSSL"
14353  *    nor may "OpenSSL" appear in their names without prior written
14354  *    permission of the OpenSSL Project.
14355  *
14356  * 6. Redistributions of any form whatsoever must retain the following
14357  *    acknowledgment:
14358  *    "This product includes software developed by the OpenSSL Project
14359  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
14360  *
14361  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
14362  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14363  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14364  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
14365  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14366  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14367  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
14368  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14369  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14370  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
14371  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
14372  * OF THE POSSIBILITY OF SUCH DAMAGE.
14373  * ====================================================================
14374  *
14375  * This product includes cryptographic software written by Eric Young
14376  * (eay@cryptsoft.com).  This product includes software written by Tim
14377  * Hudson (tjh@cryptsoft.com).
14378  *
14379  */
14380 /* ====================================================================
14381  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
14382  *
14383  * Portions of the attached software ("Contribution") are developed by
14384  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
14385  *
14386  * The Contribution is licensed pursuant to the Eric Young open source
14387  * license provided above.
14388  *
14389  * The binary polynomial arithmetic software is originally written by
14390  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
14391  *
14392  */
14393 # 89 "/usr/include/openssl/ec.h" 2 3 4
14394 # 103 "/usr/include/openssl/ec.h" 3 4
14395 /** Enum for the point conversion form as defined in X9.62 (ECDSA)
14396  *  for the encoding of a elliptic curve point (x,y) */
14397 typedef enum {
14398         /** the point is encoded as z||x, where the octet z specifies
14399          *  which solution of the quadratic equation y is  */
14400     POINT_CONVERSION_COMPRESSED = 2,
14401         /** the point is encoded as z||x||y, where z is the octet 0x04  */
14402     POINT_CONVERSION_UNCOMPRESSED = 4,
14403         /** the point is encoded as z||x||y, where the octet z specifies
14404          *  which solution of the quadratic equation y is  */
14405     POINT_CONVERSION_HYBRID = 6
14406 } point_conversion_form_t;
14407 
14408 typedef struct ec_method_st EC_METHOD;
14409 
14410 typedef struct ec_group_st
14411     /*-
14412      EC_METHOD *meth;
14413      -- field definition
14414      -- curve coefficients
14415      -- optional generator with associated information (order, cofactor)
14416      -- optional extra data (precomputed table for fast computation of multiples of generator)
14417      -- ASN1 stuff
14418     */
14419     EC_GROUP;
14420 
14421 typedef struct ec_point_st EC_POINT;
14422 
14423 /********************************************************************/
14424 /*               EC_METHODs for curves over GF(p)                   */
14425 /********************************************************************/
14426 
14427 /** Returns the basic GFp ec methods which provides the basis for the
14428  *  optimized methods.
14429  *  \return  EC_METHOD object
14430  */
14431 const EC_METHOD *EC_GFp_simple_method(void);
14432 
14433 /** Returns GFp methods using montgomery multiplication.
14434  *  \return  EC_METHOD object
14435  */
14436 const EC_METHOD *EC_GFp_mont_method(void);
14437 
14438 /** Returns GFp methods using optimized methods for NIST recommended curves
14439  *  \return  EC_METHOD object
14440  */
14441 const EC_METHOD *EC_GFp_nist_method(void);
14442 # 169 "/usr/include/openssl/ec.h" 3 4
14443 /********************************************************************/
14444 /*           EC_METHOD for curves over GF(2^m)                      */
14445 /********************************************************************/
14446 
14447 /** Returns the basic GF2m ec method
14448  *  \return  EC_METHOD object
14449  */
14450 const EC_METHOD *EC_GF2m_simple_method(void);
14451 
14452 
14453 
14454 /********************************************************************/
14455 /*                   EC_GROUP functions                             */
14456 /********************************************************************/
14457 
14458 /** Creates a new EC_GROUP object
14459  *  \param   meth  EC_METHOD to use
14460  *  \return  newly created EC_GROUP object or NULL in case of an error.
14461  */
14462 EC_GROUP *EC_GROUP_new(const EC_METHOD *meth);
14463 
14464 /** Frees a EC_GROUP object
14465  *  \param  group  EC_GROUP object to be freed.
14466  */
14467 void EC_GROUP_free(EC_GROUP *group);
14468 
14469 /** Clears and frees a EC_GROUP object
14470  *  \param  group  EC_GROUP object to be cleared and freed.
14471  */
14472 void EC_GROUP_clear_free(EC_GROUP *group);
14473 
14474 /** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD.
14475  *  \param  dst  destination EC_GROUP object
14476  *  \param  src  source EC_GROUP object
14477  *  \return 1 on success and 0 if an error occurred.
14478  */
14479 int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src);
14480 
14481 /** Creates a new EC_GROUP object and copies the copies the content
14482  *  form src to the newly created EC_KEY object
14483  *  \param  src  source EC_GROUP object
14484  *  \return newly created EC_GROUP object or NULL in case of an error.
14485  */
14486 EC_GROUP *EC_GROUP_dup(const EC_GROUP *src);
14487 
14488 /** Returns the EC_METHOD of the EC_GROUP object.
14489  *  \param  group  EC_GROUP object
14490  *  \return EC_METHOD used in this EC_GROUP object.
14491  */
14492 const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group);
14493 
14494 /** Returns the field type of the EC_METHOD.
14495  *  \param  meth  EC_METHOD object
14496  *  \return NID of the underlying field type OID.
14497  */
14498 int EC_METHOD_get_field_type(const EC_METHOD *meth);
14499 
14500 /** Sets the generator and it's order/cofactor of a EC_GROUP object.
14501  *  \param  group      EC_GROUP object
14502  *  \param  generator  EC_POINT object with the generator.
14503  *  \param  order      the order of the group generated by the generator.
14504  *  \param  cofactor   the index of the sub-group generated by the generator
14505  *                     in the group of all points on the elliptic curve.
14506  *  \return 1 on success and 0 if an error occured
14507  */
14508 int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator,
14509                            const BIGNUM *order, const BIGNUM *cofactor);
14510 
14511 /** Returns the generator of a EC_GROUP object.
14512  *  \param  group  EC_GROUP object
14513  *  \return the currently used generator (possibly NULL).
14514  */
14515 const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group);
14516 
14517 /** Returns the montgomery data for order(Generator)
14518  *  \param  group  EC_GROUP object
14519  *  \return the currently used generator (possibly NULL).
14520 */
14521 BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group);
14522 
14523 /** Gets the order of a EC_GROUP
14524  *  \param  group  EC_GROUP object
14525  *  \param  order  BIGNUM to which the order is copied
14526  *  \param  ctx    BN_CTX object (optional)
14527  *  \return 1 on success and 0 if an error occured
14528  */
14529 int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx);
14530 
14531 /** Gets the cofactor of a EC_GROUP
14532  *  \param  group     EC_GROUP object
14533  *  \param  cofactor  BIGNUM to which the cofactor is copied
14534  *  \param  ctx       BN_CTX object (optional)
14535  *  \return 1 on success and 0 if an error occured
14536  */
14537 int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor,
14538                           BN_CTX *ctx);
14539 
14540 /** Sets the name of a EC_GROUP object
14541  *  \param  group  EC_GROUP object
14542  *  \param  nid    NID of the curve name OID
14543  */
14544 void EC_GROUP_set_curve_name(EC_GROUP *group, int nid);
14545 
14546 /** Returns the curve name of a EC_GROUP object
14547  *  \param  group  EC_GROUP object
14548  *  \return NID of the curve name OID or 0 if not set.
14549  */
14550 int EC_GROUP_get_curve_name(const EC_GROUP *group);
14551 
14552 void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag);
14553 int EC_GROUP_get_asn1_flag(const EC_GROUP *group);
14554 
14555 void EC_GROUP_set_point_conversion_form(EC_GROUP *group,
14556                                         point_conversion_form_t form);
14557 point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *);
14558 
14559 unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x);
14560 size_t EC_GROUP_get_seed_len(const EC_GROUP *);
14561 size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len);
14562 
14563 /** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b
14564  *  \param  group  EC_GROUP object
14565  *  \param  p      BIGNUM with the prime number
14566  *  \param  a      BIGNUM with parameter a of the equation
14567  *  \param  b      BIGNUM with parameter b of the equation
14568  *  \param  ctx    BN_CTX object (optional)
14569  *  \return 1 on success and 0 if an error occured
14570  */
14571 int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
14572                            const BIGNUM *b, BN_CTX *ctx);
14573 
14574 /** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b
14575  *  \param  group  EC_GROUP object
14576  *  \param  p      BIGNUM for the prime number
14577  *  \param  a      BIGNUM for parameter a of the equation
14578  *  \param  b      BIGNUM for parameter b of the equation
14579  *  \param  ctx    BN_CTX object (optional)
14580  *  \return 1 on success and 0 if an error occured
14581  */
14582 int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
14583                            BIGNUM *b, BN_CTX *ctx);
14584 
14585 
14586 /** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b
14587  *  \param  group  EC_GROUP object
14588  *  \param  p      BIGNUM with the polynomial defining the underlying field
14589  *  \param  a      BIGNUM with parameter a of the equation
14590  *  \param  b      BIGNUM with parameter b of the equation
14591  *  \param  ctx    BN_CTX object (optional)
14592  *  \return 1 on success and 0 if an error occured
14593  */
14594 int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
14595                             const BIGNUM *b, BN_CTX *ctx);
14596 
14597 /** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b
14598  *  \param  group  EC_GROUP object
14599  *  \param  p      BIGNUM for the polynomial defining the underlying field
14600  *  \param  a      BIGNUM for parameter a of the equation
14601  *  \param  b      BIGNUM for parameter b of the equation
14602  *  \param  ctx    BN_CTX object (optional)
14603  *  \return 1 on success and 0 if an error occured
14604  */
14605 int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
14606                             BIGNUM *b, BN_CTX *ctx);
14607 
14608 /** Returns the number of bits needed to represent a field element
14609  *  \param  group  EC_GROUP object
14610  *  \return number of bits needed to represent a field element
14611  */
14612 int EC_GROUP_get_degree(const EC_GROUP *group);
14613 
14614 /** Checks whether the parameter in the EC_GROUP define a valid ec group
14615  *  \param  group  EC_GROUP object
14616  *  \param  ctx    BN_CTX object (optional)
14617  *  \return 1 if group is a valid ec group and 0 otherwise
14618  */
14619 int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx);
14620 
14621 /** Checks whether the discriminant of the elliptic curve is zero or not
14622  *  \param  group  EC_GROUP object
14623  *  \param  ctx    BN_CTX object (optional)
14624  *  \return 1 if the discriminant is not zero and 0 otherwise
14625  */
14626 int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx);
14627 
14628 /** Compares two EC_GROUP objects
14629  *  \param  a    first EC_GROUP object
14630  *  \param  b    second EC_GROUP object
14631  *  \param  ctx  BN_CTX object (optional)
14632  *  \return 0 if both groups are equal and 1 otherwise
14633  */
14634 int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx);
14635 
14636 /*
14637  * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after
14638  * choosing an appropriate EC_METHOD
14639  */
14640 
14641 /** Creates a new EC_GROUP object with the specified parameters defined
14642  *  over GFp (defined by the equation y^2 = x^3 + a*x + b)
14643  *  \param  p    BIGNUM with the prime number
14644  *  \param  a    BIGNUM with the parameter a of the equation
14645  *  \param  b    BIGNUM with the parameter b of the equation
14646  *  \param  ctx  BN_CTX object (optional)
14647  *  \return newly created EC_GROUP object with the specified parameters
14648  */
14649 EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a,
14650                                  const BIGNUM *b, BN_CTX *ctx);
14651 
14652 /** Creates a new EC_GROUP object with the specified parameters defined
14653  *  over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b)
14654  *  \param  p    BIGNUM with the polynomial defining the underlying field
14655  *  \param  a    BIGNUM with the parameter a of the equation
14656  *  \param  b    BIGNUM with the parameter b of the equation
14657  *  \param  ctx  BN_CTX object (optional)
14658  *  \return newly created EC_GROUP object with the specified parameters
14659  */
14660 EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a,
14661                                   const BIGNUM *b, BN_CTX *ctx);
14662 
14663 /** Creates a EC_GROUP object with a curve specified by a NID
14664  *  \param  nid  NID of the OID of the curve name
14665  *  \return newly created EC_GROUP object with specified curve or NULL
14666  *          if an error occurred
14667  */
14668 EC_GROUP *EC_GROUP_new_by_curve_name(int nid);
14669 
14670 /********************************************************************/
14671 /*               handling of internal curves                        */
14672 /********************************************************************/
14673 
14674 typedef struct {
14675     int nid;
14676     const char *comment;
14677 } EC_builtin_curve;
14678 
14679 /*
14680  * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all
14681  * available curves or zero if a error occurred. In case r ist not zero
14682  * nitems EC_builtin_curve structures are filled with the data of the first
14683  * nitems internal groups
14684  */
14685 size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);
14686 
14687 const char *EC_curve_nid2nist(int nid);
14688 int EC_curve_nist2nid(const char *name);
14689 
14690 /********************************************************************/
14691 /*                    EC_POINT functions                            */
14692 /********************************************************************/
14693 
14694 /** Creates a new EC_POINT object for the specified EC_GROUP
14695  *  \param  group  EC_GROUP the underlying EC_GROUP object
14696  *  \return newly created EC_POINT object or NULL if an error occurred
14697  */
14698 EC_POINT *EC_POINT_new(const EC_GROUP *group);
14699 
14700 /** Frees a EC_POINT object
14701  *  \param  point  EC_POINT object to be freed
14702  */
14703 void EC_POINT_free(EC_POINT *point);
14704 
14705 /** Clears and frees a EC_POINT object
14706  *  \param  point  EC_POINT object to be cleared and freed
14707  */
14708 void EC_POINT_clear_free(EC_POINT *point);
14709 
14710 /** Copies EC_POINT object
14711  *  \param  dst  destination EC_POINT object
14712  *  \param  src  source EC_POINT object
14713  *  \return 1 on success and 0 if an error occured
14714  */
14715 int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src);
14716 
14717 /** Creates a new EC_POINT object and copies the content of the supplied
14718  *  EC_POINT
14719  *  \param  src    source EC_POINT object
14720  *  \param  group  underlying the EC_GROUP object
14721  *  \return newly created EC_POINT object or NULL if an error occurred
14722  */
14723 EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group);
14724 
14725 /** Returns the EC_METHOD used in EC_POINT object
14726  *  \param  point  EC_POINT object
14727  *  \return the EC_METHOD used
14728  */
14729 const EC_METHOD *EC_POINT_method_of(const EC_POINT *point);
14730 
14731 /** Sets a point to infinity (neutral element)
14732  *  \param  group  underlying EC_GROUP object
14733  *  \param  point  EC_POINT to set to infinity
14734  *  \return 1 on success and 0 if an error occured
14735  */
14736 int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point);
14737 
14738 /** Sets the jacobian projective coordinates of a EC_POINT over GFp
14739  *  \param  group  underlying EC_GROUP object
14740  *  \param  p      EC_POINT object
14741  *  \param  x      BIGNUM with the x-coordinate
14742  *  \param  y      BIGNUM with the y-coordinate
14743  *  \param  z      BIGNUM with the z-coordinate
14744  *  \param  ctx    BN_CTX object (optional)
14745  *  \return 1 on success and 0 if an error occured
14746  */
14747 int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group,
14748                                              EC_POINT *p, const BIGNUM *x,
14749                                              const BIGNUM *y, const BIGNUM *z,
14750                                              BN_CTX *ctx);
14751 
14752 /** Gets the jacobian projective coordinates of a EC_POINT over GFp
14753  *  \param  group  underlying EC_GROUP object
14754  *  \param  p      EC_POINT object
14755  *  \param  x      BIGNUM for the x-coordinate
14756  *  \param  y      BIGNUM for the y-coordinate
14757  *  \param  z      BIGNUM for the z-coordinate
14758  *  \param  ctx    BN_CTX object (optional)
14759  *  \return 1 on success and 0 if an error occured
14760  */
14761 int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
14762                                              const EC_POINT *p, BIGNUM *x,
14763                                              BIGNUM *y, BIGNUM *z,
14764                                              BN_CTX *ctx);
14765 
14766 /** Sets the affine coordinates of a EC_POINT over GFp
14767  *  \param  group  underlying EC_GROUP object
14768  *  \param  p      EC_POINT object
14769  *  \param  x      BIGNUM with the x-coordinate
14770  *  \param  y      BIGNUM with the y-coordinate
14771  *  \param  ctx    BN_CTX object (optional)
14772  *  \return 1 on success and 0 if an error occured
14773  */
14774 int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p,
14775                                         const BIGNUM *x, const BIGNUM *y,
14776                                         BN_CTX *ctx);
14777 
14778 /** Gets the affine coordinates of a EC_POINT over GFp
14779  *  \param  group  underlying EC_GROUP object
14780  *  \param  p      EC_POINT object
14781  *  \param  x      BIGNUM for the x-coordinate
14782  *  \param  y      BIGNUM for the y-coordinate
14783  *  \param  ctx    BN_CTX object (optional)
14784  *  \return 1 on success and 0 if an error occured
14785  */
14786 int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
14787                                         const EC_POINT *p, BIGNUM *x,
14788                                         BIGNUM *y, BN_CTX *ctx);
14789 
14790 /** Sets the x9.62 compressed coordinates of a EC_POINT over GFp
14791  *  \param  group  underlying EC_GROUP object
14792  *  \param  p      EC_POINT object
14793  *  \param  x      BIGNUM with x-coordinate
14794  *  \param  y_bit  integer with the y-Bit (either 0 or 1)
14795  *  \param  ctx    BN_CTX object (optional)
14796  *  \return 1 on success and 0 if an error occured
14797  */
14798 int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group,
14799                                             EC_POINT *p, const BIGNUM *x,
14800                                             int y_bit, BN_CTX *ctx);
14801 
14802 /** Sets the affine coordinates of a EC_POINT over GF2m
14803  *  \param  group  underlying EC_GROUP object
14804  *  \param  p      EC_POINT object
14805  *  \param  x      BIGNUM with the x-coordinate
14806  *  \param  y      BIGNUM with the y-coordinate
14807  *  \param  ctx    BN_CTX object (optional)
14808  *  \return 1 on success and 0 if an error occured
14809  */
14810 int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p,
14811                                          const BIGNUM *x, const BIGNUM *y,
14812                                          BN_CTX *ctx);
14813 
14814 /** Gets the affine coordinates of a EC_POINT over GF2m
14815  *  \param  group  underlying EC_GROUP object
14816  *  \param  p      EC_POINT object
14817  *  \param  x      BIGNUM for the x-coordinate
14818  *  \param  y      BIGNUM for the y-coordinate
14819  *  \param  ctx    BN_CTX object (optional)
14820  *  \return 1 on success and 0 if an error occured
14821  */
14822 int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group,
14823                                          const EC_POINT *p, BIGNUM *x,
14824                                          BIGNUM *y, BN_CTX *ctx);
14825 
14826 /** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m
14827  *  \param  group  underlying EC_GROUP object
14828  *  \param  p      EC_POINT object
14829  *  \param  x      BIGNUM with x-coordinate
14830  *  \param  y_bit  integer with the y-Bit (either 0 or 1)
14831  *  \param  ctx    BN_CTX object (optional)
14832  *  \return 1 on success and 0 if an error occured
14833  */
14834 int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group,
14835                                              EC_POINT *p, const BIGNUM *x,
14836                                              int y_bit, BN_CTX *ctx);
14837 
14838 /** Encodes a EC_POINT object to a octet string
14839  *  \param  group  underlying EC_GROUP object
14840  *  \param  p      EC_POINT object
14841  *  \param  form   point conversion form
14842  *  \param  buf    memory buffer for the result. If NULL the function returns
14843  *                 required buffer size.
14844  *  \param  len    length of the memory buffer
14845  *  \param  ctx    BN_CTX object (optional)
14846  *  \return the length of the encoded octet string or 0 if an error occurred
14847  */
14848 size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p,
14849                           point_conversion_form_t form,
14850                           unsigned char *buf, size_t len, BN_CTX *ctx);
14851 
14852 /** Decodes a EC_POINT from a octet string
14853  *  \param  group  underlying EC_GROUP object
14854  *  \param  p      EC_POINT object
14855  *  \param  buf    memory buffer with the encoded ec point
14856  *  \param  len    length of the encoded ec point
14857  *  \param  ctx    BN_CTX object (optional)
14858  *  \return 1 on success and 0 if an error occured
14859  */
14860 int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p,
14861                        const unsigned char *buf, size_t len, BN_CTX *ctx);
14862 
14863 /* other interfaces to point2oct/oct2point: */
14864 BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *,
14865                           point_conversion_form_t form, BIGNUM *, BN_CTX *);
14866 EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *,
14867                             EC_POINT *, BN_CTX *);
14868 char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *,
14869                          point_conversion_form_t form, BN_CTX *);
14870 EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *,
14871                              EC_POINT *, BN_CTX *);
14872 
14873 /********************************************************************/
14874 /*         functions for doing EC_POINT arithmetic                  */
14875 /********************************************************************/
14876 
14877 /** Computes the sum of two EC_POINT
14878  *  \param  group  underlying EC_GROUP object
14879  *  \param  r      EC_POINT object for the result (r = a + b)
14880  *  \param  a      EC_POINT object with the first summand
14881  *  \param  b      EC_POINT object with the second summand
14882  *  \param  ctx    BN_CTX object (optional)
14883  *  \return 1 on success and 0 if an error occured
14884  */
14885 int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
14886                  const EC_POINT *b, BN_CTX *ctx);
14887 
14888 /** Computes the double of a EC_POINT
14889  *  \param  group  underlying EC_GROUP object
14890  *  \param  r      EC_POINT object for the result (r = 2 * a)
14891  *  \param  a      EC_POINT object
14892  *  \param  ctx    BN_CTX object (optional)
14893  *  \return 1 on success and 0 if an error occured
14894  */
14895 int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
14896                  BN_CTX *ctx);
14897 
14898 /** Computes the inverse of a EC_POINT
14899  *  \param  group  underlying EC_GROUP object
14900  *  \param  a      EC_POINT object to be inverted (it's used for the result as well)
14901  *  \param  ctx    BN_CTX object (optional)
14902  *  \return 1 on success and 0 if an error occured
14903  */
14904 int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx);
14905 
14906 /** Checks whether the point is the neutral element of the group
14907  *  \param  group  the underlying EC_GROUP object
14908  *  \param  p      EC_POINT object
14909  *  \return 1 if the point is the neutral element and 0 otherwise
14910  */
14911 int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p);
14912 
14913 /** Checks whether the point is on the curve
14914  *  \param  group  underlying EC_GROUP object
14915  *  \param  point  EC_POINT object to check
14916  *  \param  ctx    BN_CTX object (optional)
14917  *  \return 1 if point if on the curve and 0 otherwise
14918  */
14919 int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
14920                          BN_CTX *ctx);
14921 
14922 /** Compares two EC_POINTs
14923  *  \param  group  underlying EC_GROUP object
14924  *  \param  a      first EC_POINT object
14925  *  \param  b      second EC_POINT object
14926  *  \param  ctx    BN_CTX object (optional)
14927  *  \return 0 if both points are equal and a value != 0 otherwise
14928  */
14929 int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b,
14930                  BN_CTX *ctx);
14931 
14932 int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx);
14933 int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
14934                           EC_POINT *points[], BN_CTX *ctx);
14935 
14936 /** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i]
14937  *  \param  group  underlying EC_GROUP object
14938  *  \param  r      EC_POINT object for the result
14939  *  \param  n      BIGNUM with the multiplier for the group generator (optional)
14940  *  \param  num    number futher summands
14941  *  \param  p      array of size num of EC_POINT objects
14942  *  \param  m      array of size num of BIGNUM objects
14943  *  \param  ctx    BN_CTX object (optional)
14944  *  \return 1 on success and 0 if an error occured
14945  */
14946 int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n,
14947                   size_t num, const EC_POINT *p[], const BIGNUM *m[],
14948                   BN_CTX *ctx);
14949 
14950 /** Computes r = generator * n + q * m
14951  *  \param  group  underlying EC_GROUP object
14952  *  \param  r      EC_POINT object for the result
14953  *  \param  n      BIGNUM with the multiplier for the group generator (optional)
14954  *  \param  q      EC_POINT object with the first factor of the second summand
14955  *  \param  m      BIGNUM with the second factor of the second summand
14956  *  \param  ctx    BN_CTX object (optional)
14957  *  \return 1 on success and 0 if an error occured
14958  */
14959 int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n,
14960                  const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx);
14961 
14962 /** Stores multiples of generator for faster point multiplication
14963  *  \param  group  EC_GROUP object
14964  *  \param  ctx    BN_CTX object (optional)
14965  *  \return 1 on success and 0 if an error occured
14966  */
14967 int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
14968 
14969 /** Reports whether a precomputation has been done
14970  *  \param  group  EC_GROUP object
14971  *  \return 1 if a pre-computation has been done and 0 otherwise
14972  */
14973 int EC_GROUP_have_precompute_mult(const EC_GROUP *group);
14974 
14975 /********************************************************************/
14976 /*                       ASN1 stuff                                 */
14977 /********************************************************************/
14978 
14979 /*
14980  * EC_GROUP_get_basis_type() returns the NID of the basis type used to
14981  * represent the field elements
14982  */
14983 int EC_GROUP_get_basis_type(const EC_GROUP *);
14984 
14985 int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k);
14986 int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1,
14987                                    unsigned int *k2, unsigned int *k3);
14988 
14989 
14990 
14991 
14992 typedef struct ecpk_parameters_st ECPKPARAMETERS;
14993 
14994 EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len);
14995 int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out);
14996 # 731 "/usr/include/openssl/ec.h" 3 4
14997 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off);
14998 
14999 
15000 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off);
15001 
15002 
15003 /********************************************************************/
15004 /*                      EC_KEY functions                            */
15005 /********************************************************************/
15006 
15007 typedef struct ec_key_st EC_KEY;
15008 
15009 /* some values for the encoding_flag */
15010 
15011 
15012 
15013 /* some values for the flags field */
15014 
15015 
15016 
15017 /** Creates a new EC_KEY object.
15018  *  \return EC_KEY object or NULL if an error occurred.
15019  */
15020 EC_KEY *EC_KEY_new(void);
15021 
15022 int EC_KEY_get_flags(const EC_KEY *key);
15023 
15024 void EC_KEY_set_flags(EC_KEY *key, int flags);
15025 
15026 void EC_KEY_clear_flags(EC_KEY *key, int flags);
15027 
15028 /** Creates a new EC_KEY object using a named curve as underlying
15029  *  EC_GROUP object.
15030  *  \param  nid  NID of the named curve.
15031  *  \return EC_KEY object or NULL if an error occurred.
15032  */
15033 EC_KEY *EC_KEY_new_by_curve_name(int nid);
15034 
15035 /** Frees a EC_KEY object.
15036  *  \param  key  EC_KEY object to be freed.
15037  */
15038 void EC_KEY_free(EC_KEY *key);
15039 
15040 /** Copies a EC_KEY object.
15041  *  \param  dst  destination EC_KEY object
15042  *  \param  src  src EC_KEY object
15043  *  \return dst or NULL if an error occurred.
15044  */
15045 EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src);
15046 
15047 /** Creates a new EC_KEY object and copies the content from src to it.
15048  *  \param  src  the source EC_KEY object
15049  *  \return newly created EC_KEY object or NULL if an error occurred.
15050  */
15051 EC_KEY *EC_KEY_dup(const EC_KEY *src);
15052 
15053 /** Increases the internal reference count of a EC_KEY object.
15054  *  \param  key  EC_KEY object
15055  *  \return 1 on success and 0 if an error occurred.
15056  */
15057 int EC_KEY_up_ref(EC_KEY *key);
15058 
15059 /** Returns the EC_GROUP object of a EC_KEY object
15060  *  \param  key  EC_KEY object
15061  *  \return the EC_GROUP object (possibly NULL).
15062  */
15063 const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key);
15064 
15065 /** Sets the EC_GROUP of a EC_KEY object.
15066  *  \param  key    EC_KEY object
15067  *  \param  group  EC_GROUP to use in the EC_KEY object (note: the EC_KEY
15068  *                 object will use an own copy of the EC_GROUP).
15069  *  \return 1 on success and 0 if an error occurred.
15070  */
15071 int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group);
15072 
15073 /** Returns the private key of a EC_KEY object.
15074  *  \param  key  EC_KEY object
15075  *  \return a BIGNUM with the private key (possibly NULL).
15076  */
15077 const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key);
15078 
15079 /** Sets the private key of a EC_KEY object.
15080  *  \param  key  EC_KEY object
15081  *  \param  prv  BIGNUM with the private key (note: the EC_KEY object
15082  *               will use an own copy of the BIGNUM).
15083  *  \return 1 on success and 0 if an error occurred.
15084  */
15085 int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv);
15086 
15087 /** Returns the public key of a EC_KEY object.
15088  *  \param  key  the EC_KEY object
15089  *  \return a EC_POINT object with the public key (possibly NULL)
15090  */
15091 const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key);
15092 
15093 /** Sets the public key of a EC_KEY object.
15094  *  \param  key  EC_KEY object
15095  *  \param  pub  EC_POINT object with the public key (note: the EC_KEY object
15096  *               will use an own copy of the EC_POINT object).
15097  *  \return 1 on success and 0 if an error occurred.
15098  */
15099 int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub);
15100 
15101 unsigned EC_KEY_get_enc_flags(const EC_KEY *key);
15102 void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags);
15103 point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key);
15104 void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform);
15105 /* functions to set/get method specific data  */
15106 void *EC_KEY_get_key_method_data(EC_KEY *key,
15107                                  void *(*dup_func) (void *),
15108                                  void (*free_func) (void *),
15109                                  void (*clear_free_func) (void *));
15110 /** Sets the key method data of an EC_KEY object, if none has yet been set.
15111  *  \param  key              EC_KEY object
15112  *  \param  data             opaque data to install.
15113  *  \param  dup_func         a function that duplicates |data|.
15114  *  \param  free_func        a function that frees |data|.
15115  *  \param  clear_free_func  a function that wipes and frees |data|.
15116  *  \return the previously set data pointer, or NULL if |data| was inserted.
15117  */
15118 void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data,
15119                                     void *(*dup_func) (void *),
15120                                     void (*free_func) (void *),
15121                                     void (*clear_free_func) (void *));
15122 /* wrapper functions for the underlying EC_GROUP object */
15123 void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag);
15124 
15125 /** Creates a table of pre-computed multiples of the generator to
15126  *  accelerate further EC_KEY operations.
15127  *  \param  key  EC_KEY object
15128  *  \param  ctx  BN_CTX object (optional)
15129  *  \return 1 on success and 0 if an error occurred.
15130  */
15131 int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx);
15132 
15133 /** Creates a new ec private (and optional a new public) key.
15134  *  \param  key  EC_KEY object
15135  *  \return 1 on success and 0 if an error occurred.
15136  */
15137 int EC_KEY_generate_key(EC_KEY *key);
15138 
15139 /** Verifies that a private and/or public key is valid.
15140  *  \param  key  the EC_KEY object
15141  *  \return 1 on success and 0 otherwise.
15142  */
15143 int EC_KEY_check_key(const EC_KEY *key);
15144 
15145 /** Sets a public key from affine coordindates performing
15146  *  neccessary NIST PKV tests.
15147  *  \param  key  the EC_KEY object
15148  *  \param  x    public key x coordinate
15149  *  \param  y    public key y coordinate
15150  *  \return 1 on success and 0 otherwise.
15151  */
15152 int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x,
15153                                              BIGNUM *y);
15154 
15155 /********************************************************************/
15156 /*        de- and encoding functions for SEC1 ECPrivateKey          */
15157 /********************************************************************/
15158 
15159 /** Decodes a private key from a memory buffer.
15160  *  \param  key  a pointer to a EC_KEY object which should be used (or NULL)
15161  *  \param  in   pointer to memory with the DER encoded private key
15162  *  \param  len  length of the DER encoded private key
15163  *  \return the decoded private key or NULL if an error occurred.
15164  */
15165 EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len);
15166 
15167 /** Encodes a private key object and stores the result in a buffer.
15168  *  \param  key  the EC_KEY object to encode
15169  *  \param  out  the buffer for the result (if NULL the function returns number
15170  *               of bytes needed).
15171  *  \return 1 on success and 0 if an error occurred.
15172  */
15173 int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out);
15174 
15175 /********************************************************************/
15176 /*        de- and encoding functions for EC parameters              */
15177 /********************************************************************/
15178 
15179 /** Decodes ec parameter from a memory buffer.
15180  *  \param  key  a pointer to a EC_KEY object which should be used (or NULL)
15181  *  \param  in   pointer to memory with the DER encoded ec parameters
15182  *  \param  len  length of the DER encoded ec parameters
15183  *  \return a EC_KEY object with the decoded parameters or NULL if an error
15184  *          occurred.
15185  */
15186 EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len);
15187 
15188 /** Encodes ec parameter and stores the result in a buffer.
15189  *  \param  key  the EC_KEY object with ec paramters to encode
15190  *  \param  out  the buffer for the result (if NULL the function returns number
15191  *               of bytes needed).
15192  *  \return 1 on success and 0 if an error occurred.
15193  */
15194 int i2d_ECParameters(EC_KEY *key, unsigned char **out);
15195 
15196 /********************************************************************/
15197 /*         de- and encoding functions for EC public key             */
15198 /*         (octet string, not DER -- hence 'o2i' and 'i2o')         */
15199 /********************************************************************/
15200 
15201 /** Decodes a ec public key from a octet string.
15202  *  \param  key  a pointer to a EC_KEY object which should be used
15203  *  \param  in   memory buffer with the encoded public key
15204  *  \param  len  length of the encoded public key
15205  *  \return EC_KEY object with decoded public key or NULL if an error
15206  *          occurred.
15207  */
15208 EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len);
15209 
15210 /** Encodes a ec public key in an octet string.
15211  *  \param  key  the EC_KEY object with the public key
15212  *  \param  out  the buffer for the result (if NULL the function returns number
15213  *               of bytes needed).
15214  *  \return 1 on success and 0 if an error occurred
15215  */
15216 int i2o_ECPublicKey(EC_KEY *key, unsigned char **out);
15217 
15218 
15219 /** Prints out the ec parameters on human readable form.
15220  *  \param  bp   BIO object to which the information is printed
15221  *  \param  key  EC_KEY object
15222  *  \return 1 on success and 0 if an error occurred
15223  */
15224 int ECParameters_print(BIO *bp, const EC_KEY *key);
15225 
15226 /** Prints out the contents of a EC_KEY object
15227  *  \param  bp   BIO object to which the information is printed
15228  *  \param  key  EC_KEY object
15229  *  \param  off  line offset
15230  *  \return 1 on success and 0 if an error occurred
15231  */
15232 int EC_KEY_print(BIO *bp, const EC_KEY *key, int off);
15233 
15234 
15235 
15236 /** Prints out the ec parameters on human readable form.
15237  *  \param  fp   file descriptor to which the information is printed
15238  *  \param  key  EC_KEY object
15239  *  \return 1 on success and 0 if an error occurred
15240  */
15241 int ECParameters_print_fp(FILE *fp, const EC_KEY *key);
15242 
15243 /** Prints out the contents of a EC_KEY object
15244  *  \param  fp   file descriptor to which the information is printed
15245  *  \param  key  EC_KEY object
15246  *  \param  off  line offset
15247  *  \return 1 on success and 0 if an error occurred
15248  */
15249 int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off);
15250 # 1067 "/usr/include/openssl/ec.h" 3 4
15251 /* KDF types */
15252 
15253 
15254 
15255 /* BEGIN ERROR CODES */
15256 /*
15257  * The following lines are auto generated by the script mkerr.pl. Any changes
15258  * made after this point may be overwritten when the script is next run.
15259  */
15260 
15261 void ERR_load_EC_strings(void);
15262 
15263 /* Error codes for the EC functions. */
15264 
15265 /* Function codes. */
15266 # 1227 "/usr/include/openssl/ec.h" 3 4
15267 /* Reason codes. */
15268 # 84 "/usr/include/openssl/x509.h" 2 3 4
15269 
15270 
15271 
15272 # 1 "/usr/include/openssl/ecdsa.h" 1 3 4
15273 /* crypto/ecdsa/ecdsa.h */
15274 /**
15275  * \file   crypto/ecdsa/ecdsa.h Include file for the OpenSSL ECDSA functions
15276  * \author Written by Nils Larsch for the OpenSSL project
15277  */
15278 /* ====================================================================
15279  * Copyright (c) 2000-2005 The OpenSSL Project.  All rights reserved.
15280  *
15281  * Redistribution and use in source and binary forms, with or without
15282  * modification, are permitted provided that the following conditions
15283  * are met:
15284  *
15285  * 1. Redistributions of source code must retain the above copyright
15286  *    notice, this list of conditions and the following disclaimer.
15287  *
15288  * 2. Redistributions in binary form must reproduce the above copyright
15289  *    notice, this list of conditions and the following disclaimer in
15290  *    the documentation and/or other materials provided with the
15291  *    distribution.
15292  *
15293  * 3. All advertising materials mentioning features or use of this
15294  *    software must display the following acknowledgment:
15295  *    "This product includes software developed by the OpenSSL Project
15296  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
15297  *
15298  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15299  *    endorse or promote products derived from this software without
15300  *    prior written permission. For written permission, please contact
15301  *    licensing@OpenSSL.org.
15302  *
15303  * 5. Products derived from this software may not be called "OpenSSL"
15304  *    nor may "OpenSSL" appear in their names without prior written
15305  *    permission of the OpenSSL Project.
15306  *
15307  * 6. Redistributions of any form whatsoever must retain the following
15308  *    acknowledgment:
15309  *    "This product includes software developed by the OpenSSL Project
15310  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
15311  *
15312  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15313  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15314  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15315  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15316  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15317  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15318  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15319  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15320  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15321  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15322  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15323  * OF THE POSSIBILITY OF SUCH DAMAGE.
15324  * ====================================================================
15325  *
15326  * This product includes cryptographic software written by Eric Young
15327  * (eay@cryptsoft.com).  This product includes software written by Tim
15328  * Hudson (tjh@cryptsoft.com).
15329  *
15330  */
15331 
15332 
15333 
15334 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
15335 /* opensslconf.h */
15336 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
15337 
15338 
15339 
15340 
15341 /* OpenSSL was configured with the following options: */
15342 # 108 "/usr/include/openssl/opensslconf.h" 3 4
15343 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
15344    asks for it.  This is a transient feature that is provided for those
15345    who haven't had the time to do the appropriate changes in their
15346    applications.  */
15347 # 204 "/usr/include/openssl/opensslconf.h" 3 4
15348 /* crypto/opensslconf.h.in */
15349 
15350 /* Generate 80386 code? */
15351 # 63 "/usr/include/openssl/ecdsa.h" 2 3 4
15352 
15353 
15354 
15355 
15356 
15357 # 1 "/usr/include/openssl/ec.h" 1 3 4
15358 /* crypto/ec/ec.h */
15359 /*
15360  * Originally written by Bodo Moeller for the OpenSSL project.
15361  */
15362 /**
15363  * \file crypto/ec/ec.h Include file for the OpenSSL EC functions
15364  * \author Originally written by Bodo Moeller for the OpenSSL project
15365  */
15366 /* ====================================================================
15367  * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
15368  *
15369  * Redistribution and use in source and binary forms, with or without
15370  * modification, are permitted provided that the following conditions
15371  * are met:
15372  *
15373  * 1. Redistributions of source code must retain the above copyright
15374  *    notice, this list of conditions and the following disclaimer.
15375  *
15376  * 2. Redistributions in binary form must reproduce the above copyright
15377  *    notice, this list of conditions and the following disclaimer in
15378  *    the documentation and/or other materials provided with the
15379  *    distribution.
15380  *
15381  * 3. All advertising materials mentioning features or use of this
15382  *    software must display the following acknowledgment:
15383  *    "This product includes software developed by the OpenSSL Project
15384  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15385  *
15386  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15387  *    endorse or promote products derived from this software without
15388  *    prior written permission. For written permission, please contact
15389  *    openssl-core@openssl.org.
15390  *
15391  * 5. Products derived from this software may not be called "OpenSSL"
15392  *    nor may "OpenSSL" appear in their names without prior written
15393  *    permission of the OpenSSL Project.
15394  *
15395  * 6. Redistributions of any form whatsoever must retain the following
15396  *    acknowledgment:
15397  *    "This product includes software developed by the OpenSSL Project
15398  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15399  *
15400  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15401  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15402  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15403  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15404  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15405  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15406  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15407  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15408  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15409  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15410  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15411  * OF THE POSSIBILITY OF SUCH DAMAGE.
15412  * ====================================================================
15413  *
15414  * This product includes cryptographic software written by Eric Young
15415  * (eay@cryptsoft.com).  This product includes software written by Tim
15416  * Hudson (tjh@cryptsoft.com).
15417  *
15418  */
15419 /* ====================================================================
15420  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
15421  *
15422  * Portions of the attached software ("Contribution") are developed by
15423  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
15424  *
15425  * The Contribution is licensed pursuant to the OpenSSL open source
15426  * license provided above.
15427  *
15428  * The elliptic curve binary polynomial software is originally written by
15429  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
15430  *
15431  */
15432 # 69 "/usr/include/openssl/ecdsa.h" 2 3 4
15433 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
15434 /* ====================================================================
15435  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
15436  *
15437  * Redistribution and use in source and binary forms, with or without
15438  * modification, are permitted provided that the following conditions
15439  * are met:
15440  *
15441  * 1. Redistributions of source code must retain the above copyright
15442  *    notice, this list of conditions and the following disclaimer.
15443  *
15444  * 2. Redistributions in binary form must reproduce the above copyright
15445  *    notice, this list of conditions and the following disclaimer in
15446  *    the documentation and/or other materials provided with the
15447  *    distribution.
15448  *
15449  * 3. All advertising materials mentioning features or use of this
15450  *    software must display the following acknowledgment:
15451  *    "This product includes software developed by the OpenSSL Project
15452  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15453  *
15454  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15455  *    endorse or promote products derived from this software without
15456  *    prior written permission. For written permission, please contact
15457  *    openssl-core@openssl.org.
15458  *
15459  * 5. Products derived from this software may not be called "OpenSSL"
15460  *    nor may "OpenSSL" appear in their names without prior written
15461  *    permission of the OpenSSL Project.
15462  *
15463  * 6. Redistributions of any form whatsoever must retain the following
15464  *    acknowledgment:
15465  *    "This product includes software developed by the OpenSSL Project
15466  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15467  *
15468  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15469  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15470  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15471  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15472  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15473  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15474  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15475  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15476  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15477  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15478  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15479  * OF THE POSSIBILITY OF SUCH DAMAGE.
15480  * ====================================================================
15481  *
15482  * This product includes cryptographic software written by Eric Young
15483  * (eay@cryptsoft.com).  This product includes software written by Tim
15484  * Hudson (tjh@cryptsoft.com).
15485  *
15486  */
15487 # 70 "/usr/include/openssl/ecdsa.h" 2 3 4
15488 
15489 # 1 "/usr/include/openssl/bn.h" 1 3 4
15490 /* crypto/bn/bn.h */
15491 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
15492  * All rights reserved.
15493  *
15494  * This package is an SSL implementation written
15495  * by Eric Young (eay@cryptsoft.com).
15496  * The implementation was written so as to conform with Netscapes SSL.
15497  *
15498  * This library is free for commercial and non-commercial use as long as
15499  * the following conditions are aheared to.  The following conditions
15500  * apply to all code found in this distribution, be it the RC4, RSA,
15501  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
15502  * included with this distribution is covered by the same copyright terms
15503  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15504  *
15505  * Copyright remains Eric Young's, and as such any Copyright notices in
15506  * the code are not to be removed.
15507  * If this package is used in a product, Eric Young should be given attribution
15508  * as the author of the parts of the library used.
15509  * This can be in the form of a textual message at program startup or
15510  * in documentation (online or textual) provided with the package.
15511  *
15512  * Redistribution and use in source and binary forms, with or without
15513  * modification, are permitted provided that the following conditions
15514  * are met:
15515  * 1. Redistributions of source code must retain the copyright
15516  *    notice, this list of conditions and the following disclaimer.
15517  * 2. Redistributions in binary form must reproduce the above copyright
15518  *    notice, this list of conditions and the following disclaimer in the
15519  *    documentation and/or other materials provided with the distribution.
15520  * 3. All advertising materials mentioning features or use of this software
15521  *    must display the following acknowledgement:
15522  *    "This product includes cryptographic software written by
15523  *     Eric Young (eay@cryptsoft.com)"
15524  *    The word 'cryptographic' can be left out if the rouines from the library
15525  *    being used are not cryptographic related :-).
15526  * 4. If you include any Windows specific code (or a derivative thereof) from
15527  *    the apps directory (application code) you must include an acknowledgement:
15528  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
15529  *
15530  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
15531  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15532  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15533  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15534  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
15535  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
15536  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15537  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
15538  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
15539  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
15540  * SUCH DAMAGE.
15541  *
15542  * The licence and distribution terms for any publically available version or
15543  * derivative of this code cannot be changed.  i.e. this code cannot simply be
15544  * copied and put under another distribution licence
15545  * [including the GNU Public Licence.]
15546  */
15547 /* ====================================================================
15548  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
15549  *
15550  * Redistribution and use in source and binary forms, with or without
15551  * modification, are permitted provided that the following conditions
15552  * are met:
15553  *
15554  * 1. Redistributions of source code must retain the above copyright
15555  *    notice, this list of conditions and the following disclaimer.
15556  *
15557  * 2. Redistributions in binary form must reproduce the above copyright
15558  *    notice, this list of conditions and the following disclaimer in
15559  *    the documentation and/or other materials provided with the
15560  *    distribution.
15561  *
15562  * 3. All advertising materials mentioning features or use of this
15563  *    software must display the following acknowledgment:
15564  *    "This product includes software developed by the OpenSSL Project
15565  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15566  *
15567  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15568  *    endorse or promote products derived from this software without
15569  *    prior written permission. For written permission, please contact
15570  *    openssl-core@openssl.org.
15571  *
15572  * 5. Products derived from this software may not be called "OpenSSL"
15573  *    nor may "OpenSSL" appear in their names without prior written
15574  *    permission of the OpenSSL Project.
15575  *
15576  * 6. Redistributions of any form whatsoever must retain the following
15577  *    acknowledgment:
15578  *    "This product includes software developed by the OpenSSL Project
15579  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15580  *
15581  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15582  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15583  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15584  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15585  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15586  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15587  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15588  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15589  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15590  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15591  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15592  * OF THE POSSIBILITY OF SUCH DAMAGE.
15593  * ====================================================================
15594  *
15595  * This product includes cryptographic software written by Eric Young
15596  * (eay@cryptsoft.com).  This product includes software written by Tim
15597  * Hudson (tjh@cryptsoft.com).
15598  *
15599  */
15600 /* ====================================================================
15601  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
15602  *
15603  * Portions of the attached software ("Contribution") are developed by
15604  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
15605  *
15606  * The Contribution is licensed pursuant to the Eric Young open source
15607  * license provided above.
15608  *
15609  * The binary polynomial arithmetic software is originally written by
15610  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
15611  *
15612  */
15613 # 72 "/usr/include/openssl/ecdsa.h" 2 3 4
15614 
15615 
15616 
15617 
15618 
15619 
15620 typedef struct ECDSA_SIG_st {
15621     BIGNUM *r;
15622     BIGNUM *s;
15623 } ECDSA_SIG;
15624 
15625 /** Allocates and initialize a ECDSA_SIG structure
15626  *  \return pointer to a ECDSA_SIG structure or NULL if an error occurred
15627  */
15628 ECDSA_SIG *ECDSA_SIG_new(void);
15629 
15630 /** frees a ECDSA_SIG structure
15631  *  \param  sig  pointer to the ECDSA_SIG structure
15632  */
15633 void ECDSA_SIG_free(ECDSA_SIG *sig);
15634 
15635 /** DER encode content of ECDSA_SIG object (note: this function modifies *pp
15636  *  (*pp += length of the DER encoded signature)).
15637  *  \param  sig  pointer to the ECDSA_SIG object
15638  *  \param  pp   pointer to a unsigned char pointer for the output or NULL
15639  *  \return the length of the DER encoded ECDSA_SIG object or 0
15640  */
15641 int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp);
15642 
15643 /** Decodes a DER encoded ECDSA signature (note: this function changes *pp
15644  *  (*pp += len)).
15645  *  \param  sig  pointer to ECDSA_SIG pointer (may be NULL)
15646  *  \param  pp   memory buffer with the DER encoded signature
15647  *  \param  len  length of the buffer
15648  *  \return pointer to the decoded ECDSA_SIG structure (or NULL)
15649  */
15650 ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
15651 
15652 /** Computes the ECDSA signature of the given hash value using
15653  *  the supplied private key and returns the created signature.
15654  *  \param  dgst      pointer to the hash value
15655  *  \param  dgst_len  length of the hash value
15656  *  \param  eckey     EC_KEY object containing a private EC key
15657  *  \return pointer to a ECDSA_SIG structure or NULL if an error occurred
15658  */
15659 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
15660                          EC_KEY *eckey);
15661 
15662 /** Computes ECDSA signature of a given hash value using the supplied
15663  *  private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
15664  *  \param  dgst     pointer to the hash value to sign
15665  *  \param  dgstlen  length of the hash value
15666  *  \param  kinv     BIGNUM with a pre-computed inverse k (optional)
15667  *  \param  rp       BIGNUM with a pre-computed rp value (optioanl),
15668  *                   see ECDSA_sign_setup
15669  *  \param  eckey    EC_KEY object containing a private EC key
15670  *  \return pointer to a ECDSA_SIG structure or NULL if an error occurred
15671  */
15672 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen,
15673                             const BIGNUM *kinv, const BIGNUM *rp,
15674                             EC_KEY *eckey);
15675 
15676 /** Verifies that the supplied signature is a valid ECDSA
15677  *  signature of the supplied hash value using the supplied public key.
15678  *  \param  dgst      pointer to the hash value
15679  *  \param  dgst_len  length of the hash value
15680  *  \param  sig       ECDSA_SIG structure
15681  *  \param  eckey     EC_KEY object containing a public EC key
15682  *  \return 1 if the signature is valid, 0 if the signature is invalid
15683  *          and -1 on error
15684  */
15685 int ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
15686                     const ECDSA_SIG *sig, EC_KEY *eckey);
15687 
15688 const ECDSA_METHOD *ECDSA_OpenSSL(void);
15689 
15690 /** Sets the default ECDSA method
15691  *  \param  meth  new default ECDSA_METHOD
15692  */
15693 void ECDSA_set_default_method(const ECDSA_METHOD *meth);
15694 
15695 /** Returns the default ECDSA method
15696  *  \return pointer to ECDSA_METHOD structure containing the default method
15697  */
15698 const ECDSA_METHOD *ECDSA_get_default_method(void);
15699 
15700 /** Sets method to be used for the ECDSA operations
15701  *  \param  eckey  EC_KEY object
15702  *  \param  meth   new method
15703  *  \return 1 on success and 0 otherwise
15704  */
15705 int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth);
15706 
15707 /** Returns the maximum length of the DER encoded signature
15708  *  \param  eckey  EC_KEY object
15709  *  \return numbers of bytes required for the DER encoded signature
15710  */
15711 int ECDSA_size(const EC_KEY *eckey);
15712 
15713 /** Precompute parts of the signing operation
15714  *  \param  eckey  EC_KEY object containing a private EC key
15715  *  \param  ctx    BN_CTX object (optional)
15716  *  \param  kinv   BIGNUM pointer for the inverse of k
15717  *  \param  rp     BIGNUM pointer for x coordinate of k * generator
15718  *  \return 1 on success and 0 otherwise
15719  */
15720 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp);
15721 
15722 /** Computes ECDSA signature of a given hash value using the supplied
15723  *  private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
15724  *  \param  type     this parameter is ignored
15725  *  \param  dgst     pointer to the hash value to sign
15726  *  \param  dgstlen  length of the hash value
15727  *  \param  sig      memory for the DER encoded created signature
15728  *  \param  siglen   pointer to the length of the returned signature
15729  *  \param  eckey    EC_KEY object containing a private EC key
15730  *  \return 1 on success and 0 otherwise
15731  */
15732 int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
15733                unsigned char *sig, unsigned int *siglen, EC_KEY *eckey);
15734 
15735 /** Computes ECDSA signature of a given hash value using the supplied
15736  *  private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
15737  *  \param  type     this parameter is ignored
15738  *  \param  dgst     pointer to the hash value to sign
15739  *  \param  dgstlen  length of the hash value
15740  *  \param  sig      buffer to hold the DER encoded signature
15741  *  \param  siglen   pointer to the length of the returned signature
15742  *  \param  kinv     BIGNUM with a pre-computed inverse k (optional)
15743  *  \param  rp       BIGNUM with a pre-computed rp value (optioanl),
15744  *                   see ECDSA_sign_setup
15745  *  \param  eckey    EC_KEY object containing a private EC key
15746  *  \return 1 on success and 0 otherwise
15747  */
15748 int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen,
15749                   unsigned char *sig, unsigned int *siglen,
15750                   const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey);
15751 
15752 /** Verifies that the given signature is valid ECDSA signature
15753  *  of the supplied hash value using the specified public key.
15754  *  \param  type     this parameter is ignored
15755  *  \param  dgst     pointer to the hash value
15756  *  \param  dgstlen  length of the hash value
15757  *  \param  sig      pointer to the DER encoded signature
15758  *  \param  siglen   length of the DER encoded signature
15759  *  \param  eckey    EC_KEY object containing a public EC key
15760  *  \return 1 if the signature is valid, 0 if the signature is invalid
15761  *          and -1 on error
15762  */
15763 int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
15764                  const unsigned char *sig, int siglen, EC_KEY *eckey);
15765 
15766 /* the standard ex_data functions */
15767 int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
15768                            *new_func, CRYPTO_EX_dup *dup_func,
15769                            CRYPTO_EX_free *free_func);
15770 int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg);
15771 void *ECDSA_get_ex_data(EC_KEY *d, int idx);
15772 
15773 /** Allocates and initialize a ECDSA_METHOD structure
15774  *  \param ecdsa_method pointer to ECDSA_METHOD to copy.  (May be NULL)
15775  *  \return pointer to a ECDSA_METHOD structure or NULL if an error occurred
15776  */
15777 
15778 ECDSA_METHOD *ECDSA_METHOD_new(const ECDSA_METHOD *ecdsa_method);
15779 
15780 /** frees a ECDSA_METHOD structure
15781  *  \param  ecdsa_method  pointer to the ECDSA_METHOD structure
15782  */
15783 void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method);
15784 
15785 /**  Sets application specific data in the ECDSA_METHOD
15786  *   \param  ecdsa_method pointer to existing ECDSA_METHOD
15787  *   \param  app application specific data to set
15788  */
15789 
15790 void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app);
15791 
15792 /** Returns application specific data from a ECDSA_METHOD structure
15793  *  \param ecdsa_method pointer to ECDSA_METHOD structure
15794  *  \return pointer to application specific data.
15795  */
15796 
15797 void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method);
15798 
15799 /**  Set the ECDSA_do_sign function in the ECDSA_METHOD
15800  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15801  *   \param  ecdsa_do_sign a funtion of type ECDSA_do_sign
15802  */
15803 
15804 void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method,
15805                            ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char
15806                                                         *dgst, int dgst_len,
15807                                                         const BIGNUM *inv,
15808                                                         const BIGNUM *rp,
15809                                                         EC_KEY *eckey));
15810 
15811 /**  Set the  ECDSA_sign_setup function in the ECDSA_METHOD
15812  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15813  *   \param  ecdsa_sign_setup a funtion of type ECDSA_sign_setup
15814  */
15815 
15816 void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method,
15817                                  int (*ecdsa_sign_setup) (EC_KEY *eckey,
15818                                                           BN_CTX *ctx,
15819                                                           BIGNUM **kinv,
15820                                                           BIGNUM **r));
15821 
15822 /**  Set the ECDSA_do_verify function in the ECDSA_METHOD
15823  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15824  *   \param  ecdsa_do_verify a funtion of type ECDSA_do_verify
15825  */
15826 
15827 void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method,
15828                              int (*ecdsa_do_verify) (const unsigned char
15829                                                      *dgst, int dgst_len,
15830                                                      const ECDSA_SIG *sig,
15831                                                      EC_KEY *eckey));
15832 
15833 void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags);
15834 
15835 /**  Set the flags field in the ECDSA_METHOD
15836  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15837  *   \param  flags flags value to set
15838  */
15839 
15840 void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name);
15841 
15842 /**  Set the name field in the ECDSA_METHOD
15843  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15844  *   \param  name name to set
15845  */
15846 
15847 /* BEGIN ERROR CODES */
15848 /*
15849  * The following lines are auto generated by the script mkerr.pl. Any changes
15850  * made after this point may be overwritten when the script is next run.
15851  */
15852 void ERR_load_ECDSA_strings(void);
15853 
15854 /* Error codes for the ECDSA functions. */
15855 
15856 /* Function codes. */
15857 
15858 
15859 
15860 
15861 
15862 
15863 
15864 /* Reason codes. */
15865 # 88 "/usr/include/openssl/x509.h" 2 3 4
15866 
15867 
15868 
15869 # 1 "/usr/include/openssl/ecdh.h" 1 3 4
15870 /* crypto/ecdh/ecdh.h */
15871 /* ====================================================================
15872  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
15873  *
15874  * The Elliptic Curve Public-Key Crypto Library (ECC Code) included
15875  * herein is developed by SUN MICROSYSTEMS, INC., and is contributed
15876  * to the OpenSSL project.
15877  *
15878  * The ECC Code is licensed pursuant to the OpenSSL open source
15879  * license provided below.
15880  *
15881  * The ECDH software is originally written by Douglas Stebila of
15882  * Sun Microsystems Laboratories.
15883  *
15884  */
15885 /* ====================================================================
15886  * Copyright (c) 2000-2002 The OpenSSL Project.  All rights reserved.
15887  *
15888  * Redistribution and use in source and binary forms, with or without
15889  * modification, are permitted provided that the following conditions
15890  * are met:
15891  *
15892  * 1. Redistributions of source code must retain the above copyright
15893  *    notice, this list of conditions and the following disclaimer.
15894  *
15895  * 2. Redistributions in binary form must reproduce the above copyright
15896  *    notice, this list of conditions and the following disclaimer in
15897  *    the documentation and/or other materials provided with the
15898  *    distribution.
15899  *
15900  * 3. All advertising materials mentioning features or use of this
15901  *    software must display the following acknowledgment:
15902  *    "This product includes software developed by the OpenSSL Project
15903  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
15904  *
15905  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15906  *    endorse or promote products derived from this software without
15907  *    prior written permission. For written permission, please contact
15908  *    licensing@OpenSSL.org.
15909  *
15910  * 5. Products derived from this software may not be called "OpenSSL"
15911  *    nor may "OpenSSL" appear in their names without prior written
15912  *    permission of the OpenSSL Project.
15913  *
15914  * 6. Redistributions of any form whatsoever must retain the following
15915  *    acknowledgment:
15916  *    "This product includes software developed by the OpenSSL Project
15917  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
15918  *
15919  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15920  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15921  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15922  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15923  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15924  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15925  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15926  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15927  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15928  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15929  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15930  * OF THE POSSIBILITY OF SUCH DAMAGE.
15931  * ====================================================================
15932  *
15933  * This product includes cryptographic software written by Eric Young
15934  * (eay@cryptsoft.com).  This product includes software written by Tim
15935  * Hudson (tjh@cryptsoft.com).
15936  *
15937  */
15938 
15939 
15940 
15941 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
15942 /* opensslconf.h */
15943 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
15944 
15945 
15946 
15947 
15948 /* OpenSSL was configured with the following options: */
15949 # 108 "/usr/include/openssl/opensslconf.h" 3 4
15950 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
15951    asks for it.  This is a transient feature that is provided for those
15952    who haven't had the time to do the appropriate changes in their
15953    applications.  */
15954 # 204 "/usr/include/openssl/opensslconf.h" 3 4
15955 /* crypto/opensslconf.h.in */
15956 
15957 /* Generate 80386 code? */
15958 # 73 "/usr/include/openssl/ecdh.h" 2 3 4
15959 
15960 
15961 
15962 
15963 
15964 # 1 "/usr/include/openssl/ec.h" 1 3 4
15965 /* crypto/ec/ec.h */
15966 /*
15967  * Originally written by Bodo Moeller for the OpenSSL project.
15968  */
15969 /**
15970  * \file crypto/ec/ec.h Include file for the OpenSSL EC functions
15971  * \author Originally written by Bodo Moeller for the OpenSSL project
15972  */
15973 /* ====================================================================
15974  * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
15975  *
15976  * Redistribution and use in source and binary forms, with or without
15977  * modification, are permitted provided that the following conditions
15978  * are met:
15979  *
15980  * 1. Redistributions of source code must retain the above copyright
15981  *    notice, this list of conditions and the following disclaimer.
15982  *
15983  * 2. Redistributions in binary form must reproduce the above copyright
15984  *    notice, this list of conditions and the following disclaimer in
15985  *    the documentation and/or other materials provided with the
15986  *    distribution.
15987  *
15988  * 3. All advertising materials mentioning features or use of this
15989  *    software must display the following acknowledgment:
15990  *    "This product includes software developed by the OpenSSL Project
15991  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15992  *
15993  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15994  *    endorse or promote products derived from this software without
15995  *    prior written permission. For written permission, please contact
15996  *    openssl-core@openssl.org.
15997  *
15998  * 5. Products derived from this software may not be called "OpenSSL"
15999  *    nor may "OpenSSL" appear in their names without prior written
16000  *    permission of the OpenSSL Project.
16001  *
16002  * 6. Redistributions of any form whatsoever must retain the following
16003  *    acknowledgment:
16004  *    "This product includes software developed by the OpenSSL Project
16005  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16006  *
16007  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16008  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16009  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16010  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16011  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16012  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16013  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16014  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16015  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16016  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16017  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16018  * OF THE POSSIBILITY OF SUCH DAMAGE.
16019  * ====================================================================
16020  *
16021  * This product includes cryptographic software written by Eric Young
16022  * (eay@cryptsoft.com).  This product includes software written by Tim
16023  * Hudson (tjh@cryptsoft.com).
16024  *
16025  */
16026 /* ====================================================================
16027  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
16028  *
16029  * Portions of the attached software ("Contribution") are developed by
16030  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
16031  *
16032  * The Contribution is licensed pursuant to the OpenSSL open source
16033  * license provided above.
16034  *
16035  * The elliptic curve binary polynomial software is originally written by
16036  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
16037  *
16038  */
16039 # 79 "/usr/include/openssl/ecdh.h" 2 3 4
16040 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
16041 /* ====================================================================
16042  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
16043  *
16044  * Redistribution and use in source and binary forms, with or without
16045  * modification, are permitted provided that the following conditions
16046  * are met:
16047  *
16048  * 1. Redistributions of source code must retain the above copyright
16049  *    notice, this list of conditions and the following disclaimer.
16050  *
16051  * 2. Redistributions in binary form must reproduce the above copyright
16052  *    notice, this list of conditions and the following disclaimer in
16053  *    the documentation and/or other materials provided with the
16054  *    distribution.
16055  *
16056  * 3. All advertising materials mentioning features or use of this
16057  *    software must display the following acknowledgment:
16058  *    "This product includes software developed by the OpenSSL Project
16059  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16060  *
16061  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16062  *    endorse or promote products derived from this software without
16063  *    prior written permission. For written permission, please contact
16064  *    openssl-core@openssl.org.
16065  *
16066  * 5. Products derived from this software may not be called "OpenSSL"
16067  *    nor may "OpenSSL" appear in their names without prior written
16068  *    permission of the OpenSSL Project.
16069  *
16070  * 6. Redistributions of any form whatsoever must retain the following
16071  *    acknowledgment:
16072  *    "This product includes software developed by the OpenSSL Project
16073  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16074  *
16075  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16076  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16077  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16078  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16079  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16080  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16081  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16082  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16083  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16084  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16085  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16086  * OF THE POSSIBILITY OF SUCH DAMAGE.
16087  * ====================================================================
16088  *
16089  * This product includes cryptographic software written by Eric Young
16090  * (eay@cryptsoft.com).  This product includes software written by Tim
16091  * Hudson (tjh@cryptsoft.com).
16092  *
16093  */
16094 # 80 "/usr/include/openssl/ecdh.h" 2 3 4
16095 
16096 # 1 "/usr/include/openssl/bn.h" 1 3 4
16097 /* crypto/bn/bn.h */
16098 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
16099  * All rights reserved.
16100  *
16101  * This package is an SSL implementation written
16102  * by Eric Young (eay@cryptsoft.com).
16103  * The implementation was written so as to conform with Netscapes SSL.
16104  *
16105  * This library is free for commercial and non-commercial use as long as
16106  * the following conditions are aheared to.  The following conditions
16107  * apply to all code found in this distribution, be it the RC4, RSA,
16108  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16109  * included with this distribution is covered by the same copyright terms
16110  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16111  *
16112  * Copyright remains Eric Young's, and as such any Copyright notices in
16113  * the code are not to be removed.
16114  * If this package is used in a product, Eric Young should be given attribution
16115  * as the author of the parts of the library used.
16116  * This can be in the form of a textual message at program startup or
16117  * in documentation (online or textual) provided with the package.
16118  *
16119  * Redistribution and use in source and binary forms, with or without
16120  * modification, are permitted provided that the following conditions
16121  * are met:
16122  * 1. Redistributions of source code must retain the copyright
16123  *    notice, this list of conditions and the following disclaimer.
16124  * 2. Redistributions in binary form must reproduce the above copyright
16125  *    notice, this list of conditions and the following disclaimer in the
16126  *    documentation and/or other materials provided with the distribution.
16127  * 3. All advertising materials mentioning features or use of this software
16128  *    must display the following acknowledgement:
16129  *    "This product includes cryptographic software written by
16130  *     Eric Young (eay@cryptsoft.com)"
16131  *    The word 'cryptographic' can be left out if the rouines from the library
16132  *    being used are not cryptographic related :-).
16133  * 4. If you include any Windows specific code (or a derivative thereof) from
16134  *    the apps directory (application code) you must include an acknowledgement:
16135  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16136  *
16137  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16138  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16139  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16140  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16141  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16142  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16143  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16144  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16145  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16146  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16147  * SUCH DAMAGE.
16148  *
16149  * The licence and distribution terms for any publically available version or
16150  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16151  * copied and put under another distribution licence
16152  * [including the GNU Public Licence.]
16153  */
16154 /* ====================================================================
16155  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
16156  *
16157  * Redistribution and use in source and binary forms, with or without
16158  * modification, are permitted provided that the following conditions
16159  * are met:
16160  *
16161  * 1. Redistributions of source code must retain the above copyright
16162  *    notice, this list of conditions and the following disclaimer.
16163  *
16164  * 2. Redistributions in binary form must reproduce the above copyright
16165  *    notice, this list of conditions and the following disclaimer in
16166  *    the documentation and/or other materials provided with the
16167  *    distribution.
16168  *
16169  * 3. All advertising materials mentioning features or use of this
16170  *    software must display the following acknowledgment:
16171  *    "This product includes software developed by the OpenSSL Project
16172  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16173  *
16174  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16175  *    endorse or promote products derived from this software without
16176  *    prior written permission. For written permission, please contact
16177  *    openssl-core@openssl.org.
16178  *
16179  * 5. Products derived from this software may not be called "OpenSSL"
16180  *    nor may "OpenSSL" appear in their names without prior written
16181  *    permission of the OpenSSL Project.
16182  *
16183  * 6. Redistributions of any form whatsoever must retain the following
16184  *    acknowledgment:
16185  *    "This product includes software developed by the OpenSSL Project
16186  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16187  *
16188  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16189  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16190  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16191  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16192  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16193  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16194  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16195  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16196  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16197  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16198  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16199  * OF THE POSSIBILITY OF SUCH DAMAGE.
16200  * ====================================================================
16201  *
16202  * This product includes cryptographic software written by Eric Young
16203  * (eay@cryptsoft.com).  This product includes software written by Tim
16204  * Hudson (tjh@cryptsoft.com).
16205  *
16206  */
16207 /* ====================================================================
16208  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
16209  *
16210  * Portions of the attached software ("Contribution") are developed by
16211  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
16212  *
16213  * The Contribution is licensed pursuant to the Eric Young open source
16214  * license provided above.
16215  *
16216  * The binary polynomial arithmetic software is originally written by
16217  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
16218  *
16219  */
16220 # 82 "/usr/include/openssl/ecdh.h" 2 3 4
16221 # 90 "/usr/include/openssl/ecdh.h" 3 4
16222 const ECDH_METHOD *ECDH_OpenSSL(void);
16223 
16224 void ECDH_set_default_method(const ECDH_METHOD *);
16225 const ECDH_METHOD *ECDH_get_default_method(void);
16226 int ECDH_set_method(EC_KEY *, const ECDH_METHOD *);
16227 
16228 int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
16229                      EC_KEY *ecdh, void *(*KDF) (const void *in, size_t inlen,
16230                                                  void *out, size_t *outlen));
16231 
16232 int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
16233                           *new_func, CRYPTO_EX_dup *dup_func,
16234                           CRYPTO_EX_free *free_func);
16235 int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);
16236 void *ECDH_get_ex_data(EC_KEY *d, int idx);
16237 
16238 int ECDH_KDF_X9_62(unsigned char *out, size_t outlen,
16239                    const unsigned char *Z, size_t Zlen,
16240                    const unsigned char *sinfo, size_t sinfolen,
16241                    const EVP_MD *md);
16242 
16243 /* BEGIN ERROR CODES */
16244 /*
16245  * The following lines are auto generated by the script mkerr.pl. Any changes
16246  * made after this point may be overwritten when the script is next run.
16247  */
16248 void ERR_load_ECDH_strings(void);
16249 
16250 /* Error codes for the ECDH functions. */
16251 
16252 /* Function codes. */
16253 
16254 
16255 
16256 
16257 /* Reason codes. */
16258 # 92 "/usr/include/openssl/x509.h" 2 3 4
16259 
16260 
16261 
16262 
16263 # 1 "/usr/include/openssl/rsa.h" 1 3 4
16264 /* crypto/rsa/rsa.h */
16265 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16266  * All rights reserved.
16267  *
16268  * This package is an SSL implementation written
16269  * by Eric Young (eay@cryptsoft.com).
16270  * The implementation was written so as to conform with Netscapes SSL.
16271  *
16272  * This library is free for commercial and non-commercial use as long as
16273  * the following conditions are aheared to.  The following conditions
16274  * apply to all code found in this distribution, be it the RC4, RSA,
16275  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16276  * included with this distribution is covered by the same copyright terms
16277  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16278  *
16279  * Copyright remains Eric Young's, and as such any Copyright notices in
16280  * the code are not to be removed.
16281  * If this package is used in a product, Eric Young should be given attribution
16282  * as the author of the parts of the library used.
16283  * This can be in the form of a textual message at program startup or
16284  * in documentation (online or textual) provided with the package.
16285  *
16286  * Redistribution and use in source and binary forms, with or without
16287  * modification, are permitted provided that the following conditions
16288  * are met:
16289  * 1. Redistributions of source code must retain the copyright
16290  *    notice, this list of conditions and the following disclaimer.
16291  * 2. Redistributions in binary form must reproduce the above copyright
16292  *    notice, this list of conditions and the following disclaimer in the
16293  *    documentation and/or other materials provided with the distribution.
16294  * 3. All advertising materials mentioning features or use of this software
16295  *    must display the following acknowledgement:
16296  *    "This product includes cryptographic software written by
16297  *     Eric Young (eay@cryptsoft.com)"
16298  *    The word 'cryptographic' can be left out if the rouines from the library
16299  *    being used are not cryptographic related :-).
16300  * 4. If you include any Windows specific code (or a derivative thereof) from
16301  *    the apps directory (application code) you must include an acknowledgement:
16302  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16303  *
16304  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16305  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16306  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16307  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16308  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16309  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16310  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16311  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16312  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16313  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16314  * SUCH DAMAGE.
16315  *
16316  * The licence and distribution terms for any publically available version or
16317  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16318  * copied and put under another distribution licence
16319  * [including the GNU Public Licence.]
16320  */
16321 
16322 
16323 
16324 
16325 # 1 "/usr/include/openssl/asn1.h" 1 3 4
16326 /* crypto/asn1/asn1.h */
16327 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16328  * All rights reserved.
16329  *
16330  * This package is an SSL implementation written
16331  * by Eric Young (eay@cryptsoft.com).
16332  * The implementation was written so as to conform with Netscapes SSL.
16333  *
16334  * This library is free for commercial and non-commercial use as long as
16335  * the following conditions are aheared to.  The following conditions
16336  * apply to all code found in this distribution, be it the RC4, RSA,
16337  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16338  * included with this distribution is covered by the same copyright terms
16339  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16340  *
16341  * Copyright remains Eric Young's, and as such any Copyright notices in
16342  * the code are not to be removed.
16343  * If this package is used in a product, Eric Young should be given attribution
16344  * as the author of the parts of the library used.
16345  * This can be in the form of a textual message at program startup or
16346  * in documentation (online or textual) provided with the package.
16347  *
16348  * Redistribution and use in source and binary forms, with or without
16349  * modification, are permitted provided that the following conditions
16350  * are met:
16351  * 1. Redistributions of source code must retain the copyright
16352  *    notice, this list of conditions and the following disclaimer.
16353  * 2. Redistributions in binary form must reproduce the above copyright
16354  *    notice, this list of conditions and the following disclaimer in the
16355  *    documentation and/or other materials provided with the distribution.
16356  * 3. All advertising materials mentioning features or use of this software
16357  *    must display the following acknowledgement:
16358  *    "This product includes cryptographic software written by
16359  *     Eric Young (eay@cryptsoft.com)"
16360  *    The word 'cryptographic' can be left out if the rouines from the library
16361  *    being used are not cryptographic related :-).
16362  * 4. If you include any Windows specific code (or a derivative thereof) from
16363  *    the apps directory (application code) you must include an acknowledgement:
16364  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16365  *
16366  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16367  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16368  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16369  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16370  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16371  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16372  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16373  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16374  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16375  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16376  * SUCH DAMAGE.
16377  *
16378  * The licence and distribution terms for any publically available version or
16379  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16380  * copied and put under another distribution licence
16381  * [including the GNU Public Licence.]
16382  */
16383 # 63 "/usr/include/openssl/rsa.h" 2 3 4
16384 
16385 
16386 # 1 "/usr/include/openssl/bio.h" 1 3 4
16387 /* crypto/bio/bio.h */
16388 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16389  * All rights reserved.
16390  *
16391  * This package is an SSL implementation written
16392  * by Eric Young (eay@cryptsoft.com).
16393  * The implementation was written so as to conform with Netscapes SSL.
16394  *
16395  * This library is free for commercial and non-commercial use as long as
16396  * the following conditions are aheared to.  The following conditions
16397  * apply to all code found in this distribution, be it the RC4, RSA,
16398  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16399  * included with this distribution is covered by the same copyright terms
16400  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16401  *
16402  * Copyright remains Eric Young's, and as such any Copyright notices in
16403  * the code are not to be removed.
16404  * If this package is used in a product, Eric Young should be given attribution
16405  * as the author of the parts of the library used.
16406  * This can be in the form of a textual message at program startup or
16407  * in documentation (online or textual) provided with the package.
16408  *
16409  * Redistribution and use in source and binary forms, with or without
16410  * modification, are permitted provided that the following conditions
16411  * are met:
16412  * 1. Redistributions of source code must retain the copyright
16413  *    notice, this list of conditions and the following disclaimer.
16414  * 2. Redistributions in binary form must reproduce the above copyright
16415  *    notice, this list of conditions and the following disclaimer in the
16416  *    documentation and/or other materials provided with the distribution.
16417  * 3. All advertising materials mentioning features or use of this software
16418  *    must display the following acknowledgement:
16419  *    "This product includes cryptographic software written by
16420  *     Eric Young (eay@cryptsoft.com)"
16421  *    The word 'cryptographic' can be left out if the rouines from the library
16422  *    being used are not cryptographic related :-).
16423  * 4. If you include any Windows specific code (or a derivative thereof) from
16424  *    the apps directory (application code) you must include an acknowledgement:
16425  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16426  *
16427  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16428  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16429  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16430  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16431  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16432  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16433  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16434  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16435  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16436  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16437  * SUCH DAMAGE.
16438  *
16439  * The licence and distribution terms for any publically available version or
16440  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16441  * copied and put under another distribution licence
16442  * [including the GNU Public Licence.]
16443  */
16444 # 66 "/usr/include/openssl/rsa.h" 2 3 4
16445 
16446 # 1 "/usr/include/openssl/crypto.h" 1 3 4
16447 /* crypto/crypto.h */
16448 /* ====================================================================
16449  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
16450  *
16451  * Redistribution and use in source and binary forms, with or without
16452  * modification, are permitted provided that the following conditions
16453  * are met:
16454  *
16455  * 1. Redistributions of source code must retain the above copyright
16456  *    notice, this list of conditions and the following disclaimer.
16457  *
16458  * 2. Redistributions in binary form must reproduce the above copyright
16459  *    notice, this list of conditions and the following disclaimer in
16460  *    the documentation and/or other materials provided with the
16461  *    distribution.
16462  *
16463  * 3. All advertising materials mentioning features or use of this
16464  *    software must display the following acknowledgment:
16465  *    "This product includes software developed by the OpenSSL Project
16466  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16467  *
16468  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16469  *    endorse or promote products derived from this software without
16470  *    prior written permission. For written permission, please contact
16471  *    openssl-core@openssl.org.
16472  *
16473  * 5. Products derived from this software may not be called "OpenSSL"
16474  *    nor may "OpenSSL" appear in their names without prior written
16475  *    permission of the OpenSSL Project.
16476  *
16477  * 6. Redistributions of any form whatsoever must retain the following
16478  *    acknowledgment:
16479  *    "This product includes software developed by the OpenSSL Project
16480  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16481  *
16482  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16483  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16484  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16485  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16486  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16487  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16488  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16489  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16490  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16491  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16492  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16493  * OF THE POSSIBILITY OF SUCH DAMAGE.
16494  * ====================================================================
16495  *
16496  * This product includes cryptographic software written by Eric Young
16497  * (eay@cryptsoft.com).  This product includes software written by Tim
16498  * Hudson (tjh@cryptsoft.com).
16499  *
16500  */
16501 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16502  * All rights reserved.
16503  *
16504  * This package is an SSL implementation written
16505  * by Eric Young (eay@cryptsoft.com).
16506  * The implementation was written so as to conform with Netscapes SSL.
16507  *
16508  * This library is free for commercial and non-commercial use as long as
16509  * the following conditions are aheared to.  The following conditions
16510  * apply to all code found in this distribution, be it the RC4, RSA,
16511  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16512  * included with this distribution is covered by the same copyright terms
16513  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16514  *
16515  * Copyright remains Eric Young's, and as such any Copyright notices in
16516  * the code are not to be removed.
16517  * If this package is used in a product, Eric Young should be given attribution
16518  * as the author of the parts of the library used.
16519  * This can be in the form of a textual message at program startup or
16520  * in documentation (online or textual) provided with the package.
16521  *
16522  * Redistribution and use in source and binary forms, with or without
16523  * modification, are permitted provided that the following conditions
16524  * are met:
16525  * 1. Redistributions of source code must retain the copyright
16526  *    notice, this list of conditions and the following disclaimer.
16527  * 2. Redistributions in binary form must reproduce the above copyright
16528  *    notice, this list of conditions and the following disclaimer in the
16529  *    documentation and/or other materials provided with the distribution.
16530  * 3. All advertising materials mentioning features or use of this software
16531  *    must display the following acknowledgement:
16532  *    "This product includes cryptographic software written by
16533  *     Eric Young (eay@cryptsoft.com)"
16534  *    The word 'cryptographic' can be left out if the rouines from the library
16535  *    being used are not cryptographic related :-).
16536  * 4. If you include any Windows specific code (or a derivative thereof) from
16537  *    the apps directory (application code) you must include an acknowledgement:
16538  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16539  *
16540  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16541  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16542  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16543  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16544  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16545  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16546  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16547  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16548  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16549  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16550  * SUCH DAMAGE.
16551  *
16552  * The licence and distribution terms for any publically available version or
16553  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16554  * copied and put under another distribution licence
16555  * [including the GNU Public Licence.]
16556  */
16557 /* ====================================================================
16558  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
16559  * ECDH support in OpenSSL originally developed by
16560  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
16561  */
16562 # 68 "/usr/include/openssl/rsa.h" 2 3 4
16563 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
16564 /* ====================================================================
16565  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
16566  *
16567  * Redistribution and use in source and binary forms, with or without
16568  * modification, are permitted provided that the following conditions
16569  * are met:
16570  *
16571  * 1. Redistributions of source code must retain the above copyright
16572  *    notice, this list of conditions and the following disclaimer.
16573  *
16574  * 2. Redistributions in binary form must reproduce the above copyright
16575  *    notice, this list of conditions and the following disclaimer in
16576  *    the documentation and/or other materials provided with the
16577  *    distribution.
16578  *
16579  * 3. All advertising materials mentioning features or use of this
16580  *    software must display the following acknowledgment:
16581  *    "This product includes software developed by the OpenSSL Project
16582  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16583  *
16584  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16585  *    endorse or promote products derived from this software without
16586  *    prior written permission. For written permission, please contact
16587  *    openssl-core@openssl.org.
16588  *
16589  * 5. Products derived from this software may not be called "OpenSSL"
16590  *    nor may "OpenSSL" appear in their names without prior written
16591  *    permission of the OpenSSL Project.
16592  *
16593  * 6. Redistributions of any form whatsoever must retain the following
16594  *    acknowledgment:
16595  *    "This product includes software developed by the OpenSSL Project
16596  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16597  *
16598  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16599  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16600  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16601  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16602  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16603  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16604  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16605  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16606  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16607  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16608  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16609  * OF THE POSSIBILITY OF SUCH DAMAGE.
16610  * ====================================================================
16611  *
16612  * This product includes cryptographic software written by Eric Young
16613  * (eay@cryptsoft.com).  This product includes software written by Tim
16614  * Hudson (tjh@cryptsoft.com).
16615  *
16616  */
16617 # 69 "/usr/include/openssl/rsa.h" 2 3 4
16618 
16619 # 1 "/usr/include/openssl/bn.h" 1 3 4
16620 /* crypto/bn/bn.h */
16621 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
16622  * All rights reserved.
16623  *
16624  * This package is an SSL implementation written
16625  * by Eric Young (eay@cryptsoft.com).
16626  * The implementation was written so as to conform with Netscapes SSL.
16627  *
16628  * This library is free for commercial and non-commercial use as long as
16629  * the following conditions are aheared to.  The following conditions
16630  * apply to all code found in this distribution, be it the RC4, RSA,
16631  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16632  * included with this distribution is covered by the same copyright terms
16633  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16634  *
16635  * Copyright remains Eric Young's, and as such any Copyright notices in
16636  * the code are not to be removed.
16637  * If this package is used in a product, Eric Young should be given attribution
16638  * as the author of the parts of the library used.
16639  * This can be in the form of a textual message at program startup or
16640  * in documentation (online or textual) provided with the package.
16641  *
16642  * Redistribution and use in source and binary forms, with or without
16643  * modification, are permitted provided that the following conditions
16644  * are met:
16645  * 1. Redistributions of source code must retain the copyright
16646  *    notice, this list of conditions and the following disclaimer.
16647  * 2. Redistributions in binary form must reproduce the above copyright
16648  *    notice, this list of conditions and the following disclaimer in the
16649  *    documentation and/or other materials provided with the distribution.
16650  * 3. All advertising materials mentioning features or use of this software
16651  *    must display the following acknowledgement:
16652  *    "This product includes cryptographic software written by
16653  *     Eric Young (eay@cryptsoft.com)"
16654  *    The word 'cryptographic' can be left out if the rouines from the library
16655  *    being used are not cryptographic related :-).
16656  * 4. If you include any Windows specific code (or a derivative thereof) from
16657  *    the apps directory (application code) you must include an acknowledgement:
16658  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16659  *
16660  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16661  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16662  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16663  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16664  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16665  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16666  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16667  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16668  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16669  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16670  * SUCH DAMAGE.
16671  *
16672  * The licence and distribution terms for any publically available version or
16673  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16674  * copied and put under another distribution licence
16675  * [including the GNU Public Licence.]
16676  */
16677 /* ====================================================================
16678  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
16679  *
16680  * Redistribution and use in source and binary forms, with or without
16681  * modification, are permitted provided that the following conditions
16682  * are met:
16683  *
16684  * 1. Redistributions of source code must retain the above copyright
16685  *    notice, this list of conditions and the following disclaimer.
16686  *
16687  * 2. Redistributions in binary form must reproduce the above copyright
16688  *    notice, this list of conditions and the following disclaimer in
16689  *    the documentation and/or other materials provided with the
16690  *    distribution.
16691  *
16692  * 3. All advertising materials mentioning features or use of this
16693  *    software must display the following acknowledgment:
16694  *    "This product includes software developed by the OpenSSL Project
16695  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16696  *
16697  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16698  *    endorse or promote products derived from this software without
16699  *    prior written permission. For written permission, please contact
16700  *    openssl-core@openssl.org.
16701  *
16702  * 5. Products derived from this software may not be called "OpenSSL"
16703  *    nor may "OpenSSL" appear in their names without prior written
16704  *    permission of the OpenSSL Project.
16705  *
16706  * 6. Redistributions of any form whatsoever must retain the following
16707  *    acknowledgment:
16708  *    "This product includes software developed by the OpenSSL Project
16709  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16710  *
16711  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16712  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16713  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16714  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16715  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16716  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16717  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16718  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16719  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16720  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16721  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16722  * OF THE POSSIBILITY OF SUCH DAMAGE.
16723  * ====================================================================
16724  *
16725  * This product includes cryptographic software written by Eric Young
16726  * (eay@cryptsoft.com).  This product includes software written by Tim
16727  * Hudson (tjh@cryptsoft.com).
16728  *
16729  */
16730 /* ====================================================================
16731  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
16732  *
16733  * Portions of the attached software ("Contribution") are developed by
16734  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
16735  *
16736  * The Contribution is licensed pursuant to the Eric Young open source
16737  * license provided above.
16738  *
16739  * The binary polynomial arithmetic software is originally written by
16740  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
16741  *
16742  */
16743 # 71 "/usr/include/openssl/rsa.h" 2 3 4
16744 # 81 "/usr/include/openssl/rsa.h" 3 4
16745 /* Declared already in ossl_typ.h */
16746 /* typedef struct rsa_st RSA; */
16747 /* typedef struct rsa_meth_st RSA_METHOD; */
16748 
16749 struct rsa_meth_st {
16750     const char *name;
16751     int (*rsa_pub_enc) (int flen, const unsigned char *from,
16752                         unsigned char *to, RSA *rsa, int padding);
16753     int (*rsa_pub_dec) (int flen, const unsigned char *from,
16754                         unsigned char *to, RSA *rsa, int padding);
16755     int (*rsa_priv_enc) (int flen, const unsigned char *from,
16756                          unsigned char *to, RSA *rsa, int padding);
16757     int (*rsa_priv_dec) (int flen, const unsigned char *from,
16758                          unsigned char *to, RSA *rsa, int padding);
16759     /* Can be null */
16760     int (*rsa_mod_exp) (BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx);
16761     /* Can be null */
16762     int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
16763                        const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
16764     /* called at new */
16765     int (*init) (RSA *rsa);
16766     /* called at free */
16767     int (*finish) (RSA *rsa);
16768     /* RSA_METHOD_FLAG_* things */
16769     int flags;
16770     /* may be needed! */
16771     char *app_data;
16772     /*
16773      * New sign and verify functions: some libraries don't allow arbitrary
16774      * data to be signed/verified: this allows them to be used. Note: for
16775      * this to work the RSA_public_decrypt() and RSA_private_encrypt() should
16776      * *NOT* be used RSA_sign(), RSA_verify() should be used instead. Note:
16777      * for backwards compatibility this functionality is only enabled if the
16778      * RSA_FLAG_SIGN_VER option is set in 'flags'.
16779      */
16780     int (*rsa_sign) (int type,
16781                      const unsigned char *m, unsigned int m_length,
16782                      unsigned char *sigret, unsigned int *siglen,
16783                      const RSA *rsa);
16784     int (*rsa_verify) (int dtype, const unsigned char *m,
16785                        unsigned int m_length, const unsigned char *sigbuf,
16786                        unsigned int siglen, const RSA *rsa);
16787     /*
16788      * If this callback is NULL, the builtin software RSA key-gen will be
16789      * used. This is for behavioural compatibility whilst the code gets
16790      * rewired, but one day it would be nice to assume there are no such
16791      * things as "builtin software" implementations.
16792      */
16793     int (*rsa_keygen) (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
16794 };
16795 
16796 struct rsa_st {
16797     /*
16798      * The first parameter is used to pickup errors where this is passed
16799      * instead of aEVP_PKEY, it is set to 0
16800      */
16801     int pad;
16802     long version;
16803     const RSA_METHOD *meth;
16804     /* functional reference if 'meth' is ENGINE-provided */
16805     ENGINE *engine;
16806     BIGNUM *n;
16807     BIGNUM *e;
16808     BIGNUM *d;
16809     BIGNUM *p;
16810     BIGNUM *q;
16811     BIGNUM *dmp1;
16812     BIGNUM *dmq1;
16813     BIGNUM *iqmp;
16814     /* be careful using this if the RSA structure is shared */
16815     CRYPTO_EX_DATA ex_data;
16816     int references;
16817     int flags;
16818     /* Used to cache montgomery values */
16819     BN_MONT_CTX *_method_mod_n;
16820     BN_MONT_CTX *_method_mod_p;
16821     BN_MONT_CTX *_method_mod_q;
16822     /*
16823      * all BIGNUM values are actually in the following data, if it is not
16824      * NULL
16825      */
16826     char *bignum_data;
16827     BN_BLINDING *blinding;
16828     BN_BLINDING *mt_blinding;
16829 };
16830 # 176 "/usr/include/openssl/rsa.h" 3 4
16831 /* exponent limit enforced for "large" modulus only */
16832 # 190 "/usr/include/openssl/rsa.h" 3 4
16833 /*
16834  * This flag means the private key operations will be handled by rsa_mod_exp
16835  * and that they do not depend on the private key components being present:
16836  * for example a key stored in external hardware. Without this flag
16837  * bn_mod_exp gets called when private key components are absent.
16838  */
16839 
16840 
16841 /*
16842  * This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify
16843  * functions.
16844  */
16845 
16846 
16847 /*
16848  * new with 0.9.6j and 0.9.7b; the built-in
16849  * RSA implementation now uses blinding by
16850  * default (ignoring RSA_FLAG_BLINDING),
16851  * but other engines might not need it
16852  */
16853 
16854 /*
16855  * new with 0.9.8f; the built-in RSA
16856  * implementation now uses constant time
16857  * operations by default in private key operations,
16858  * e.g., constant time modular exponentiation,
16859  * modular inverse without leaking branches,
16860  * division without leaking branches. This
16861  * flag disables these constant time
16862  * operations and results in faster RSA
16863  * private key operations.
16864  */
16865 # 312 "/usr/include/openssl/rsa.h" 3 4
16866 /* EVP_PKEY_ only */
16867 
16868 
16869 
16870 
16871 
16872 
16873 
16874 RSA *RSA_new(void);
16875 RSA *RSA_new_method(ENGINE *engine);
16876 int RSA_size(const RSA *rsa);
16877 
16878 /* Deprecated version */
16879 
16880 RSA *RSA_generate_key(int bits, unsigned long e, void
16881                        (*callback) (int, int, void *), void *cb_arg);
16882 
16883 
16884 /* New version */
16885 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
16886 
16887 int RSA_check_key(const RSA *);
16888         /* next 4 return -1 on error */
16889 int RSA_public_encrypt(int flen, const unsigned char *from,
16890                        unsigned char *to, RSA *rsa, int padding);
16891 int RSA_private_encrypt(int flen, const unsigned char *from,
16892                         unsigned char *to, RSA *rsa, int padding);
16893 int RSA_public_decrypt(int flen, const unsigned char *from,
16894                        unsigned char *to, RSA *rsa, int padding);
16895 int RSA_private_decrypt(int flen, const unsigned char *from,
16896                         unsigned char *to, RSA *rsa, int padding);
16897 void RSA_free(RSA *r);
16898 /* "up" the RSA object's reference count */
16899 int RSA_up_ref(RSA *r);
16900 
16901 int RSA_flags(const RSA *r);
16902 
16903 void RSA_set_default_method(const RSA_METHOD *meth);
16904 const RSA_METHOD *RSA_get_default_method(void);
16905 const RSA_METHOD *RSA_get_method(const RSA *rsa);
16906 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
16907 
16908 /* This function needs the memory locking malloc callbacks to be installed */
16909 int RSA_memory_lock(RSA *r);
16910 
16911 /* these are the actual SSLeay RSA functions */
16912 const RSA_METHOD *RSA_PKCS1_SSLeay(void);
16913 
16914 const RSA_METHOD *RSA_null_method(void);
16915 
16916 RSA *d2i_RSAPublicKey(RSA **a, const unsigned char **in, long len); int i2d_RSAPublicKey(const RSA *a, unsigned char **out); extern const ASN1_ITEM RSAPublicKey_it;
16917 RSA *d2i_RSAPrivateKey(RSA **a, const unsigned char **in, long len); int i2d_RSAPrivateKey(const RSA *a, unsigned char **out); extern const ASN1_ITEM RSAPrivateKey_it;
16918 
16919 typedef struct rsa_pss_params_st {
16920     X509_ALGOR *hashAlgorithm;
16921     X509_ALGOR *maskGenAlgorithm;
16922     ASN1_INTEGER *saltLength;
16923     ASN1_INTEGER *trailerField;
16924 } RSA_PSS_PARAMS;
16925 
16926 RSA_PSS_PARAMS *RSA_PSS_PARAMS_new(void); void RSA_PSS_PARAMS_free(RSA_PSS_PARAMS *a); RSA_PSS_PARAMS *d2i_RSA_PSS_PARAMS(RSA_PSS_PARAMS **a, const unsigned char **in, long len); int i2d_RSA_PSS_PARAMS(RSA_PSS_PARAMS *a, unsigned char **out); extern const ASN1_ITEM RSA_PSS_PARAMS_it;
16927 
16928 typedef struct rsa_oaep_params_st {
16929     X509_ALGOR *hashFunc;
16930     X509_ALGOR *maskGenFunc;
16931     X509_ALGOR *pSourceFunc;
16932 } RSA_OAEP_PARAMS;
16933 
16934 RSA_OAEP_PARAMS *RSA_OAEP_PARAMS_new(void); void RSA_OAEP_PARAMS_free(RSA_OAEP_PARAMS *a); RSA_OAEP_PARAMS *d2i_RSA_OAEP_PARAMS(RSA_OAEP_PARAMS **a, const unsigned char **in, long len); int i2d_RSA_OAEP_PARAMS(RSA_OAEP_PARAMS *a, unsigned char **out); extern const ASN1_ITEM RSA_OAEP_PARAMS_it;
16935 
16936 
16937 int RSA_print_fp(FILE *fp, const RSA *r, int offset);
16938 
16939 
16940 
16941 int RSA_print(BIO *bp, const RSA *r, int offset);
16942 
16943 
16944 
16945 int i2d_RSA_NET(const RSA *a, unsigned char **pp,
16946                 int (*cb) (char *buf, int len, const char *prompt,
16947                            int verify), int sgckey);
16948 RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
16949                  int (*cb) (char *buf, int len, const char *prompt,
16950                             int verify), int sgckey);
16951 
16952 int i2d_Netscape_RSA(const RSA *a, unsigned char **pp,
16953                      int (*cb) (char *buf, int len, const char *prompt,
16954                                 int verify));
16955 RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length,
16956                       int (*cb) (char *buf, int len, const char *prompt,
16957                                  int verify));
16958 
16959 
16960 /*
16961  * The following 2 functions sign and verify a X509_SIG ASN1 object inside
16962  * PKCS#1 padded RSA encryption
16963  */
16964 int RSA_sign(int type, const unsigned char *m, unsigned int m_length,
16965              unsigned char *sigret, unsigned int *siglen, RSA *rsa);
16966 int RSA_verify(int type, const unsigned char *m, unsigned int m_length,
16967                const unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
16968 
16969 /*
16970  * The following 2 function sign and verify a ASN1_OCTET_STRING object inside
16971  * PKCS#1 padded RSA encryption
16972  */
16973 int RSA_sign_ASN1_OCTET_STRING(int type,
16974                                const unsigned char *m, unsigned int m_length,
16975                                unsigned char *sigret, unsigned int *siglen,
16976                                RSA *rsa);
16977 int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m,
16978                                  unsigned int m_length, unsigned char *sigbuf,
16979                                  unsigned int siglen, RSA *rsa);
16980 
16981 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
16982 void RSA_blinding_off(RSA *rsa);
16983 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx);
16984 
16985 int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
16986                                  const unsigned char *f, int fl);
16987 int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen,
16988                                    const unsigned char *f, int fl,
16989                                    int rsa_len);
16990 int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen,
16991                                  const unsigned char *f, int fl);
16992 int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
16993                                    const unsigned char *f, int fl,
16994                                    int rsa_len);
16995 int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed,
16996                long seedlen, const EVP_MD *dgst);
16997 int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
16998                                const unsigned char *f, int fl,
16999                                const unsigned char *p, int pl);
17000 int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
17001                                  const unsigned char *f, int fl, int rsa_len,
17002                                  const unsigned char *p, int pl);
17003 int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
17004                                     const unsigned char *from, int flen,
17005                                     const unsigned char *param, int plen,
17006                                     const EVP_MD *md, const EVP_MD *mgf1md);
17007 int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
17008                                       const unsigned char *from, int flen,
17009                                       int num, const unsigned char *param,
17010                                       int plen, const EVP_MD *md,
17011                                       const EVP_MD *mgf1md);
17012 int RSA_padding_add_SSLv23(unsigned char *to, int tlen,
17013                            const unsigned char *f, int fl);
17014 int RSA_padding_check_SSLv23(unsigned char *to, int tlen,
17015                              const unsigned char *f, int fl, int rsa_len);
17016 int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f,
17017                          int fl);
17018 int RSA_padding_check_none(unsigned char *to, int tlen,
17019                            const unsigned char *f, int fl, int rsa_len);
17020 int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f,
17021                          int fl);
17022 int RSA_padding_check_X931(unsigned char *to, int tlen,
17023                            const unsigned char *f, int fl, int rsa_len);
17024 int RSA_X931_hash_id(int nid);
17025 
17026 int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
17027                          const EVP_MD *Hash, const unsigned char *EM,
17028                          int sLen);
17029 int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
17030                               const unsigned char *mHash, const EVP_MD *Hash,
17031                               int sLen);
17032 
17033 int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash,
17034                               const EVP_MD *Hash, const EVP_MD *mgf1Hash,
17035                               const unsigned char *EM, int sLen);
17036 
17037 int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
17038                                    const unsigned char *mHash,
17039                                    const EVP_MD *Hash, const EVP_MD *mgf1Hash,
17040                                    int sLen);
17041 
17042 int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
17043                          CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
17044 int RSA_set_ex_data(RSA *r, int idx, void *arg);
17045 void *RSA_get_ex_data(const RSA *r, int idx);
17046 
17047 RSA *RSAPublicKey_dup(RSA *rsa);
17048 RSA *RSAPrivateKey_dup(RSA *rsa);
17049 
17050 /*
17051  * If this flag is set the RSA method is FIPS compliant and can be used in
17052  * FIPS mode. This is set in the validated module method. If an application
17053  * sets this flag in its own methods it is its responsibility to ensure the
17054  * result is compliant.
17055  */
17056 
17057 
17058 
17059 /*
17060  * If this flag is set the operations normally disabled in FIPS mode are
17061  * permitted it is then the applications responsibility to ensure that the
17062  * usage is compliant.
17063  */
17064 
17065 
17066 /*
17067  * Application has decided PRNG is good enough to generate a key: don't
17068  * check.
17069  */
17070 
17071 
17072 /* BEGIN ERROR CODES */
17073 /*
17074  * The following lines are auto generated by the script mkerr.pl. Any changes
17075  * made after this point may be overwritten when the script is next run.
17076  */
17077 void ERR_load_RSA_strings(void);
17078 
17079 /* Error codes for the RSA functions. */
17080 
17081 /* Function codes. */
17082 # 592 "/usr/include/openssl/rsa.h" 3 4
17083 /* Reason codes. */
17084 # 97 "/usr/include/openssl/x509.h" 2 3 4
17085 
17086 
17087 # 1 "/usr/include/openssl/dsa.h" 1 3 4
17088 /* crypto/dsa/dsa.h */
17089 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17090  * All rights reserved.
17091  *
17092  * This package is an SSL implementation written
17093  * by Eric Young (eay@cryptsoft.com).
17094  * The implementation was written so as to conform with Netscapes SSL.
17095  *
17096  * This library is free for commercial and non-commercial use as long as
17097  * the following conditions are aheared to.  The following conditions
17098  * apply to all code found in this distribution, be it the RC4, RSA,
17099  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17100  * included with this distribution is covered by the same copyright terms
17101  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17102  *
17103  * Copyright remains Eric Young's, and as such any Copyright notices in
17104  * the code are not to be removed.
17105  * If this package is used in a product, Eric Young should be given attribution
17106  * as the author of the parts of the library used.
17107  * This can be in the form of a textual message at program startup or
17108  * in documentation (online or textual) provided with the package.
17109  *
17110  * Redistribution and use in source and binary forms, with or without
17111  * modification, are permitted provided that the following conditions
17112  * are met:
17113  * 1. Redistributions of source code must retain the copyright
17114  *    notice, this list of conditions and the following disclaimer.
17115  * 2. Redistributions in binary form must reproduce the above copyright
17116  *    notice, this list of conditions and the following disclaimer in the
17117  *    documentation and/or other materials provided with the distribution.
17118  * 3. All advertising materials mentioning features or use of this software
17119  *    must display the following acknowledgement:
17120  *    "This product includes cryptographic software written by
17121  *     Eric Young (eay@cryptsoft.com)"
17122  *    The word 'cryptographic' can be left out if the rouines from the library
17123  *    being used are not cryptographic related :-).
17124  * 4. If you include any Windows specific code (or a derivative thereof) from
17125  *    the apps directory (application code) you must include an acknowledgement:
17126  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17127  *
17128  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17129  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17130  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17131  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17132  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17133  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17134  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17135  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17136  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17137  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17138  * SUCH DAMAGE.
17139  *
17140  * The licence and distribution terms for any publically available version or
17141  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17142  * copied and put under another distribution licence
17143  * [including the GNU Public Licence.]
17144  */
17145 
17146 /*
17147  * The DSS routines are based on patches supplied by
17148  * Steven Schoch <schoch@sheba.arc.nasa.gov>.  He basically did the
17149  * work and I have just tweaked them a little to fit into my
17150  * stylistic vision for SSLeay :-) */
17151 
17152 
17153 
17154 
17155 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
17156 /* e_os2.h */
17157 /* ====================================================================
17158  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
17159  *
17160  * Redistribution and use in source and binary forms, with or without
17161  * modification, are permitted provided that the following conditions
17162  * are met:
17163  *
17164  * 1. Redistributions of source code must retain the above copyright
17165  *    notice, this list of conditions and the following disclaimer.
17166  *
17167  * 2. Redistributions in binary form must reproduce the above copyright
17168  *    notice, this list of conditions and the following disclaimer in
17169  *    the documentation and/or other materials provided with the
17170  *    distribution.
17171  *
17172  * 3. All advertising materials mentioning features or use of this
17173  *    software must display the following acknowledgment:
17174  *    "This product includes software developed by the OpenSSL Project
17175  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17176  *
17177  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17178  *    endorse or promote products derived from this software without
17179  *    prior written permission. For written permission, please contact
17180  *    openssl-core@openssl.org.
17181  *
17182  * 5. Products derived from this software may not be called "OpenSSL"
17183  *    nor may "OpenSSL" appear in their names without prior written
17184  *    permission of the OpenSSL Project.
17185  *
17186  * 6. Redistributions of any form whatsoever must retain the following
17187  *    acknowledgment:
17188  *    "This product includes software developed by the OpenSSL Project
17189  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17190  *
17191  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17192  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17193  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17194  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17195  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17196  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17197  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17198  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17199  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17200  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17201  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17202  * OF THE POSSIBILITY OF SUCH DAMAGE.
17203  * ====================================================================
17204  *
17205  * This product includes cryptographic software written by Eric Young
17206  * (eay@cryptsoft.com).  This product includes software written by Tim
17207  * Hudson (tjh@cryptsoft.com).
17208  *
17209  */
17210 
17211 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
17212 /* opensslconf.h */
17213 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
17214 
17215 
17216 
17217 
17218 /* OpenSSL was configured with the following options: */
17219 # 108 "/usr/include/openssl/opensslconf.h" 3 4
17220 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
17221    asks for it.  This is a transient feature that is provided for those
17222    who haven't had the time to do the appropriate changes in their
17223    applications.  */
17224 # 204 "/usr/include/openssl/opensslconf.h" 3 4
17225 /* crypto/opensslconf.h.in */
17226 
17227 /* Generate 80386 code? */
17228 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
17229 # 69 "/usr/include/openssl/dsa.h" 2 3 4
17230 
17231 
17232 
17233 
17234 
17235 
17236 # 1 "/usr/include/openssl/bio.h" 1 3 4
17237 /* crypto/bio/bio.h */
17238 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17239  * All rights reserved.
17240  *
17241  * This package is an SSL implementation written
17242  * by Eric Young (eay@cryptsoft.com).
17243  * The implementation was written so as to conform with Netscapes SSL.
17244  *
17245  * This library is free for commercial and non-commercial use as long as
17246  * the following conditions are aheared to.  The following conditions
17247  * apply to all code found in this distribution, be it the RC4, RSA,
17248  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17249  * included with this distribution is covered by the same copyright terms
17250  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17251  *
17252  * Copyright remains Eric Young's, and as such any Copyright notices in
17253  * the code are not to be removed.
17254  * If this package is used in a product, Eric Young should be given attribution
17255  * as the author of the parts of the library used.
17256  * This can be in the form of a textual message at program startup or
17257  * in documentation (online or textual) provided with the package.
17258  *
17259  * Redistribution and use in source and binary forms, with or without
17260  * modification, are permitted provided that the following conditions
17261  * are met:
17262  * 1. Redistributions of source code must retain the copyright
17263  *    notice, this list of conditions and the following disclaimer.
17264  * 2. Redistributions in binary form must reproduce the above copyright
17265  *    notice, this list of conditions and the following disclaimer in the
17266  *    documentation and/or other materials provided with the distribution.
17267  * 3. All advertising materials mentioning features or use of this software
17268  *    must display the following acknowledgement:
17269  *    "This product includes cryptographic software written by
17270  *     Eric Young (eay@cryptsoft.com)"
17271  *    The word 'cryptographic' can be left out if the rouines from the library
17272  *    being used are not cryptographic related :-).
17273  * 4. If you include any Windows specific code (or a derivative thereof) from
17274  *    the apps directory (application code) you must include an acknowledgement:
17275  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17276  *
17277  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17278  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17279  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17280  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17281  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17282  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17283  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17284  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17285  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17286  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17287  * SUCH DAMAGE.
17288  *
17289  * The licence and distribution terms for any publically available version or
17290  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17291  * copied and put under another distribution licence
17292  * [including the GNU Public Licence.]
17293  */
17294 # 76 "/usr/include/openssl/dsa.h" 2 3 4
17295 
17296 # 1 "/usr/include/openssl/crypto.h" 1 3 4
17297 /* crypto/crypto.h */
17298 /* ====================================================================
17299  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
17300  *
17301  * Redistribution and use in source and binary forms, with or without
17302  * modification, are permitted provided that the following conditions
17303  * are met:
17304  *
17305  * 1. Redistributions of source code must retain the above copyright
17306  *    notice, this list of conditions and the following disclaimer.
17307  *
17308  * 2. Redistributions in binary form must reproduce the above copyright
17309  *    notice, this list of conditions and the following disclaimer in
17310  *    the documentation and/or other materials provided with the
17311  *    distribution.
17312  *
17313  * 3. All advertising materials mentioning features or use of this
17314  *    software must display the following acknowledgment:
17315  *    "This product includes software developed by the OpenSSL Project
17316  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17317  *
17318  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17319  *    endorse or promote products derived from this software without
17320  *    prior written permission. For written permission, please contact
17321  *    openssl-core@openssl.org.
17322  *
17323  * 5. Products derived from this software may not be called "OpenSSL"
17324  *    nor may "OpenSSL" appear in their names without prior written
17325  *    permission of the OpenSSL Project.
17326  *
17327  * 6. Redistributions of any form whatsoever must retain the following
17328  *    acknowledgment:
17329  *    "This product includes software developed by the OpenSSL Project
17330  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17331  *
17332  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17333  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17334  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17335  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17336  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17337  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17338  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17339  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17340  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17341  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17342  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17343  * OF THE POSSIBILITY OF SUCH DAMAGE.
17344  * ====================================================================
17345  *
17346  * This product includes cryptographic software written by Eric Young
17347  * (eay@cryptsoft.com).  This product includes software written by Tim
17348  * Hudson (tjh@cryptsoft.com).
17349  *
17350  */
17351 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17352  * All rights reserved.
17353  *
17354  * This package is an SSL implementation written
17355  * by Eric Young (eay@cryptsoft.com).
17356  * The implementation was written so as to conform with Netscapes SSL.
17357  *
17358  * This library is free for commercial and non-commercial use as long as
17359  * the following conditions are aheared to.  The following conditions
17360  * apply to all code found in this distribution, be it the RC4, RSA,
17361  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17362  * included with this distribution is covered by the same copyright terms
17363  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17364  *
17365  * Copyright remains Eric Young's, and as such any Copyright notices in
17366  * the code are not to be removed.
17367  * If this package is used in a product, Eric Young should be given attribution
17368  * as the author of the parts of the library used.
17369  * This can be in the form of a textual message at program startup or
17370  * in documentation (online or textual) provided with the package.
17371  *
17372  * Redistribution and use in source and binary forms, with or without
17373  * modification, are permitted provided that the following conditions
17374  * are met:
17375  * 1. Redistributions of source code must retain the copyright
17376  *    notice, this list of conditions and the following disclaimer.
17377  * 2. Redistributions in binary form must reproduce the above copyright
17378  *    notice, this list of conditions and the following disclaimer in the
17379  *    documentation and/or other materials provided with the distribution.
17380  * 3. All advertising materials mentioning features or use of this software
17381  *    must display the following acknowledgement:
17382  *    "This product includes cryptographic software written by
17383  *     Eric Young (eay@cryptsoft.com)"
17384  *    The word 'cryptographic' can be left out if the rouines from the library
17385  *    being used are not cryptographic related :-).
17386  * 4. If you include any Windows specific code (or a derivative thereof) from
17387  *    the apps directory (application code) you must include an acknowledgement:
17388  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17389  *
17390  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17391  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17392  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17393  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17394  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17395  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17396  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17397  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17398  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17399  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17400  * SUCH DAMAGE.
17401  *
17402  * The licence and distribution terms for any publically available version or
17403  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17404  * copied and put under another distribution licence
17405  * [including the GNU Public Licence.]
17406  */
17407 /* ====================================================================
17408  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
17409  * ECDH support in OpenSSL originally developed by
17410  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
17411  */
17412 # 78 "/usr/include/openssl/dsa.h" 2 3 4
17413 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
17414 /* ====================================================================
17415  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
17416  *
17417  * Redistribution and use in source and binary forms, with or without
17418  * modification, are permitted provided that the following conditions
17419  * are met:
17420  *
17421  * 1. Redistributions of source code must retain the above copyright
17422  *    notice, this list of conditions and the following disclaimer.
17423  *
17424  * 2. Redistributions in binary form must reproduce the above copyright
17425  *    notice, this list of conditions and the following disclaimer in
17426  *    the documentation and/or other materials provided with the
17427  *    distribution.
17428  *
17429  * 3. All advertising materials mentioning features or use of this
17430  *    software must display the following acknowledgment:
17431  *    "This product includes software developed by the OpenSSL Project
17432  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17433  *
17434  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17435  *    endorse or promote products derived from this software without
17436  *    prior written permission. For written permission, please contact
17437  *    openssl-core@openssl.org.
17438  *
17439  * 5. Products derived from this software may not be called "OpenSSL"
17440  *    nor may "OpenSSL" appear in their names without prior written
17441  *    permission of the OpenSSL Project.
17442  *
17443  * 6. Redistributions of any form whatsoever must retain the following
17444  *    acknowledgment:
17445  *    "This product includes software developed by the OpenSSL Project
17446  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17447  *
17448  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17449  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17450  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17451  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17452  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17453  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17454  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17455  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17456  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17457  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17458  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17459  * OF THE POSSIBILITY OF SUCH DAMAGE.
17460  * ====================================================================
17461  *
17462  * This product includes cryptographic software written by Eric Young
17463  * (eay@cryptsoft.com).  This product includes software written by Tim
17464  * Hudson (tjh@cryptsoft.com).
17465  *
17466  */
17467 # 79 "/usr/include/openssl/dsa.h" 2 3 4
17468 
17469 
17470 # 1 "/usr/include/openssl/bn.h" 1 3 4
17471 /* crypto/bn/bn.h */
17472 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
17473  * All rights reserved.
17474  *
17475  * This package is an SSL implementation written
17476  * by Eric Young (eay@cryptsoft.com).
17477  * The implementation was written so as to conform with Netscapes SSL.
17478  *
17479  * This library is free for commercial and non-commercial use as long as
17480  * the following conditions are aheared to.  The following conditions
17481  * apply to all code found in this distribution, be it the RC4, RSA,
17482  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17483  * included with this distribution is covered by the same copyright terms
17484  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17485  *
17486  * Copyright remains Eric Young's, and as such any Copyright notices in
17487  * the code are not to be removed.
17488  * If this package is used in a product, Eric Young should be given attribution
17489  * as the author of the parts of the library used.
17490  * This can be in the form of a textual message at program startup or
17491  * in documentation (online or textual) provided with the package.
17492  *
17493  * Redistribution and use in source and binary forms, with or without
17494  * modification, are permitted provided that the following conditions
17495  * are met:
17496  * 1. Redistributions of source code must retain the copyright
17497  *    notice, this list of conditions and the following disclaimer.
17498  * 2. Redistributions in binary form must reproduce the above copyright
17499  *    notice, this list of conditions and the following disclaimer in the
17500  *    documentation and/or other materials provided with the distribution.
17501  * 3. All advertising materials mentioning features or use of this software
17502  *    must display the following acknowledgement:
17503  *    "This product includes cryptographic software written by
17504  *     Eric Young (eay@cryptsoft.com)"
17505  *    The word 'cryptographic' can be left out if the rouines from the library
17506  *    being used are not cryptographic related :-).
17507  * 4. If you include any Windows specific code (or a derivative thereof) from
17508  *    the apps directory (application code) you must include an acknowledgement:
17509  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17510  *
17511  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17512  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17513  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17514  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17515  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17516  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17517  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17518  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17519  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17520  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17521  * SUCH DAMAGE.
17522  *
17523  * The licence and distribution terms for any publically available version or
17524  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17525  * copied and put under another distribution licence
17526  * [including the GNU Public Licence.]
17527  */
17528 /* ====================================================================
17529  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
17530  *
17531  * Redistribution and use in source and binary forms, with or without
17532  * modification, are permitted provided that the following conditions
17533  * are met:
17534  *
17535  * 1. Redistributions of source code must retain the above copyright
17536  *    notice, this list of conditions and the following disclaimer.
17537  *
17538  * 2. Redistributions in binary form must reproduce the above copyright
17539  *    notice, this list of conditions and the following disclaimer in
17540  *    the documentation and/or other materials provided with the
17541  *    distribution.
17542  *
17543  * 3. All advertising materials mentioning features or use of this
17544  *    software must display the following acknowledgment:
17545  *    "This product includes software developed by the OpenSSL Project
17546  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17547  *
17548  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17549  *    endorse or promote products derived from this software without
17550  *    prior written permission. For written permission, please contact
17551  *    openssl-core@openssl.org.
17552  *
17553  * 5. Products derived from this software may not be called "OpenSSL"
17554  *    nor may "OpenSSL" appear in their names without prior written
17555  *    permission of the OpenSSL Project.
17556  *
17557  * 6. Redistributions of any form whatsoever must retain the following
17558  *    acknowledgment:
17559  *    "This product includes software developed by the OpenSSL Project
17560  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17561  *
17562  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17563  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17564  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17565  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17566  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17567  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17568  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17569  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17570  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17571  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17572  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17573  * OF THE POSSIBILITY OF SUCH DAMAGE.
17574  * ====================================================================
17575  *
17576  * This product includes cryptographic software written by Eric Young
17577  * (eay@cryptsoft.com).  This product includes software written by Tim
17578  * Hudson (tjh@cryptsoft.com).
17579  *
17580  */
17581 /* ====================================================================
17582  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
17583  *
17584  * Portions of the attached software ("Contribution") are developed by
17585  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
17586  *
17587  * The Contribution is licensed pursuant to the Eric Young open source
17588  * license provided above.
17589  *
17590  * The binary polynomial arithmetic software is originally written by
17591  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
17592  *
17593  */
17594 # 82 "/usr/include/openssl/dsa.h" 2 3 4
17595 
17596 # 1 "/usr/include/openssl/dh.h" 1 3 4
17597 /* crypto/dh/dh.h */
17598 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17599  * All rights reserved.
17600  *
17601  * This package is an SSL implementation written
17602  * by Eric Young (eay@cryptsoft.com).
17603  * The implementation was written so as to conform with Netscapes SSL.
17604  *
17605  * This library is free for commercial and non-commercial use as long as
17606  * the following conditions are aheared to.  The following conditions
17607  * apply to all code found in this distribution, be it the RC4, RSA,
17608  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17609  * included with this distribution is covered by the same copyright terms
17610  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17611  *
17612  * Copyright remains Eric Young's, and as such any Copyright notices in
17613  * the code are not to be removed.
17614  * If this package is used in a product, Eric Young should be given attribution
17615  * as the author of the parts of the library used.
17616  * This can be in the form of a textual message at program startup or
17617  * in documentation (online or textual) provided with the package.
17618  *
17619  * Redistribution and use in source and binary forms, with or without
17620  * modification, are permitted provided that the following conditions
17621  * are met:
17622  * 1. Redistributions of source code must retain the copyright
17623  *    notice, this list of conditions and the following disclaimer.
17624  * 2. Redistributions in binary form must reproduce the above copyright
17625  *    notice, this list of conditions and the following disclaimer in the
17626  *    documentation and/or other materials provided with the distribution.
17627  * 3. All advertising materials mentioning features or use of this software
17628  *    must display the following acknowledgement:
17629  *    "This product includes cryptographic software written by
17630  *     Eric Young (eay@cryptsoft.com)"
17631  *    The word 'cryptographic' can be left out if the rouines from the library
17632  *    being used are not cryptographic related :-).
17633  * 4. If you include any Windows specific code (or a derivative thereof) from
17634  *    the apps directory (application code) you must include an acknowledgement:
17635  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17636  *
17637  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17638  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17639  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17640  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17641  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17642  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17643  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17644  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17645  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17646  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17647  * SUCH DAMAGE.
17648  *
17649  * The licence and distribution terms for any publically available version or
17650  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17651  * copied and put under another distribution licence
17652  * [including the GNU Public Licence.]
17653  */
17654 
17655 
17656 
17657 
17658 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
17659 /* e_os2.h */
17660 /* ====================================================================
17661  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
17662  *
17663  * Redistribution and use in source and binary forms, with or without
17664  * modification, are permitted provided that the following conditions
17665  * are met:
17666  *
17667  * 1. Redistributions of source code must retain the above copyright
17668  *    notice, this list of conditions and the following disclaimer.
17669  *
17670  * 2. Redistributions in binary form must reproduce the above copyright
17671  *    notice, this list of conditions and the following disclaimer in
17672  *    the documentation and/or other materials provided with the
17673  *    distribution.
17674  *
17675  * 3. All advertising materials mentioning features or use of this
17676  *    software must display the following acknowledgment:
17677  *    "This product includes software developed by the OpenSSL Project
17678  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17679  *
17680  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17681  *    endorse or promote products derived from this software without
17682  *    prior written permission. For written permission, please contact
17683  *    openssl-core@openssl.org.
17684  *
17685  * 5. Products derived from this software may not be called "OpenSSL"
17686  *    nor may "OpenSSL" appear in their names without prior written
17687  *    permission of the OpenSSL Project.
17688  *
17689  * 6. Redistributions of any form whatsoever must retain the following
17690  *    acknowledgment:
17691  *    "This product includes software developed by the OpenSSL Project
17692  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17693  *
17694  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17695  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17696  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17697  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17698  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17699  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17700  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17701  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17702  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17703  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17704  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17705  * OF THE POSSIBILITY OF SUCH DAMAGE.
17706  * ====================================================================
17707  *
17708  * This product includes cryptographic software written by Eric Young
17709  * (eay@cryptsoft.com).  This product includes software written by Tim
17710  * Hudson (tjh@cryptsoft.com).
17711  *
17712  */
17713 
17714 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
17715 /* opensslconf.h */
17716 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
17717 
17718 
17719 
17720 
17721 /* OpenSSL was configured with the following options: */
17722 # 108 "/usr/include/openssl/opensslconf.h" 3 4
17723 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
17724    asks for it.  This is a transient feature that is provided for those
17725    who haven't had the time to do the appropriate changes in their
17726    applications.  */
17727 # 204 "/usr/include/openssl/opensslconf.h" 3 4
17728 /* crypto/opensslconf.h.in */
17729 
17730 /* Generate 80386 code? */
17731 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
17732 # 63 "/usr/include/openssl/dh.h" 2 3 4
17733 
17734 
17735 
17736 
17737 
17738 
17739 # 1 "/usr/include/openssl/bio.h" 1 3 4
17740 /* crypto/bio/bio.h */
17741 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17742  * All rights reserved.
17743  *
17744  * This package is an SSL implementation written
17745  * by Eric Young (eay@cryptsoft.com).
17746  * The implementation was written so as to conform with Netscapes SSL.
17747  *
17748  * This library is free for commercial and non-commercial use as long as
17749  * the following conditions are aheared to.  The following conditions
17750  * apply to all code found in this distribution, be it the RC4, RSA,
17751  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17752  * included with this distribution is covered by the same copyright terms
17753  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17754  *
17755  * Copyright remains Eric Young's, and as such any Copyright notices in
17756  * the code are not to be removed.
17757  * If this package is used in a product, Eric Young should be given attribution
17758  * as the author of the parts of the library used.
17759  * This can be in the form of a textual message at program startup or
17760  * in documentation (online or textual) provided with the package.
17761  *
17762  * Redistribution and use in source and binary forms, with or without
17763  * modification, are permitted provided that the following conditions
17764  * are met:
17765  * 1. Redistributions of source code must retain the copyright
17766  *    notice, this list of conditions and the following disclaimer.
17767  * 2. Redistributions in binary form must reproduce the above copyright
17768  *    notice, this list of conditions and the following disclaimer in the
17769  *    documentation and/or other materials provided with the distribution.
17770  * 3. All advertising materials mentioning features or use of this software
17771  *    must display the following acknowledgement:
17772  *    "This product includes cryptographic software written by
17773  *     Eric Young (eay@cryptsoft.com)"
17774  *    The word 'cryptographic' can be left out if the rouines from the library
17775  *    being used are not cryptographic related :-).
17776  * 4. If you include any Windows specific code (or a derivative thereof) from
17777  *    the apps directory (application code) you must include an acknowledgement:
17778  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17779  *
17780  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17781  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17782  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17783  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17784  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17785  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17786  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17787  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17788  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17789  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17790  * SUCH DAMAGE.
17791  *
17792  * The licence and distribution terms for any publically available version or
17793  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17794  * copied and put under another distribution licence
17795  * [including the GNU Public Licence.]
17796  */
17797 # 70 "/usr/include/openssl/dh.h" 2 3 4
17798 
17799 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
17800 /* ====================================================================
17801  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
17802  *
17803  * Redistribution and use in source and binary forms, with or without
17804  * modification, are permitted provided that the following conditions
17805  * are met:
17806  *
17807  * 1. Redistributions of source code must retain the above copyright
17808  *    notice, this list of conditions and the following disclaimer.
17809  *
17810  * 2. Redistributions in binary form must reproduce the above copyright
17811  *    notice, this list of conditions and the following disclaimer in
17812  *    the documentation and/or other materials provided with the
17813  *    distribution.
17814  *
17815  * 3. All advertising materials mentioning features or use of this
17816  *    software must display the following acknowledgment:
17817  *    "This product includes software developed by the OpenSSL Project
17818  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17819  *
17820  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17821  *    endorse or promote products derived from this software without
17822  *    prior written permission. For written permission, please contact
17823  *    openssl-core@openssl.org.
17824  *
17825  * 5. Products derived from this software may not be called "OpenSSL"
17826  *    nor may "OpenSSL" appear in their names without prior written
17827  *    permission of the OpenSSL Project.
17828  *
17829  * 6. Redistributions of any form whatsoever must retain the following
17830  *    acknowledgment:
17831  *    "This product includes software developed by the OpenSSL Project
17832  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17833  *
17834  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17835  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17836  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17837  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17838  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17839  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17840  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17841  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17842  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17843  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17844  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17845  * OF THE POSSIBILITY OF SUCH DAMAGE.
17846  * ====================================================================
17847  *
17848  * This product includes cryptographic software written by Eric Young
17849  * (eay@cryptsoft.com).  This product includes software written by Tim
17850  * Hudson (tjh@cryptsoft.com).
17851  *
17852  */
17853 # 72 "/usr/include/openssl/dh.h" 2 3 4
17854 
17855 # 1 "/usr/include/openssl/bn.h" 1 3 4
17856 /* crypto/bn/bn.h */
17857 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
17858  * All rights reserved.
17859  *
17860  * This package is an SSL implementation written
17861  * by Eric Young (eay@cryptsoft.com).
17862  * The implementation was written so as to conform with Netscapes SSL.
17863  *
17864  * This library is free for commercial and non-commercial use as long as
17865  * the following conditions are aheared to.  The following conditions
17866  * apply to all code found in this distribution, be it the RC4, RSA,
17867  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17868  * included with this distribution is covered by the same copyright terms
17869  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17870  *
17871  * Copyright remains Eric Young's, and as such any Copyright notices in
17872  * the code are not to be removed.
17873  * If this package is used in a product, Eric Young should be given attribution
17874  * as the author of the parts of the library used.
17875  * This can be in the form of a textual message at program startup or
17876  * in documentation (online or textual) provided with the package.
17877  *
17878  * Redistribution and use in source and binary forms, with or without
17879  * modification, are permitted provided that the following conditions
17880  * are met:
17881  * 1. Redistributions of source code must retain the copyright
17882  *    notice, this list of conditions and the following disclaimer.
17883  * 2. Redistributions in binary form must reproduce the above copyright
17884  *    notice, this list of conditions and the following disclaimer in the
17885  *    documentation and/or other materials provided with the distribution.
17886  * 3. All advertising materials mentioning features or use of this software
17887  *    must display the following acknowledgement:
17888  *    "This product includes cryptographic software written by
17889  *     Eric Young (eay@cryptsoft.com)"
17890  *    The word 'cryptographic' can be left out if the rouines from the library
17891  *    being used are not cryptographic related :-).
17892  * 4. If you include any Windows specific code (or a derivative thereof) from
17893  *    the apps directory (application code) you must include an acknowledgement:
17894  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17895  *
17896  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17897  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17898  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17899  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17900  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17901  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17902  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17903  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17904  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17905  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17906  * SUCH DAMAGE.
17907  *
17908  * The licence and distribution terms for any publically available version or
17909  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17910  * copied and put under another distribution licence
17911  * [including the GNU Public Licence.]
17912  */
17913 /* ====================================================================
17914  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
17915  *
17916  * Redistribution and use in source and binary forms, with or without
17917  * modification, are permitted provided that the following conditions
17918  * are met:
17919  *
17920  * 1. Redistributions of source code must retain the above copyright
17921  *    notice, this list of conditions and the following disclaimer.
17922  *
17923  * 2. Redistributions in binary form must reproduce the above copyright
17924  *    notice, this list of conditions and the following disclaimer in
17925  *    the documentation and/or other materials provided with the
17926  *    distribution.
17927  *
17928  * 3. All advertising materials mentioning features or use of this
17929  *    software must display the following acknowledgment:
17930  *    "This product includes software developed by the OpenSSL Project
17931  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17932  *
17933  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17934  *    endorse or promote products derived from this software without
17935  *    prior written permission. For written permission, please contact
17936  *    openssl-core@openssl.org.
17937  *
17938  * 5. Products derived from this software may not be called "OpenSSL"
17939  *    nor may "OpenSSL" appear in their names without prior written
17940  *    permission of the OpenSSL Project.
17941  *
17942  * 6. Redistributions of any form whatsoever must retain the following
17943  *    acknowledgment:
17944  *    "This product includes software developed by the OpenSSL Project
17945  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17946  *
17947  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17948  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17949  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17950  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17951  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17952  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17953  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17954  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17955  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17956  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17957  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17958  * OF THE POSSIBILITY OF SUCH DAMAGE.
17959  * ====================================================================
17960  *
17961  * This product includes cryptographic software written by Eric Young
17962  * (eay@cryptsoft.com).  This product includes software written by Tim
17963  * Hudson (tjh@cryptsoft.com).
17964  *
17965  */
17966 /* ====================================================================
17967  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
17968  *
17969  * Portions of the attached software ("Contribution") are developed by
17970  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
17971  *
17972  * The Contribution is licensed pursuant to the Eric Young open source
17973  * license provided above.
17974  *
17975  * The binary polynomial arithmetic software is originally written by
17976  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
17977  *
17978  */
17979 # 74 "/usr/include/openssl/dh.h" 2 3 4
17980 # 82 "/usr/include/openssl/dh.h" 3 4
17981 /*
17982  * new with 0.9.7h; the built-in DH
17983  * implementation now uses constant time
17984  * modular exponentiation for secret exponents
17985  * by default. This flag causes the
17986  * faster variable sliding window method to
17987  * be used for all exponents.
17988  */
17989 
17990 
17991 /*
17992  * If this flag is set the DH method is FIPS compliant and can be used in
17993  * FIPS mode. This is set in the validated module method. If an application
17994  * sets this flag in its own methods it is its reposibility to ensure the
17995  * result is compliant.
17996  */
17997 
17998 
17999 
18000 /*
18001  * If this flag is set the operations normally disabled in FIPS mode are
18002  * permitted it is then the applications responsibility to ensure that the
18003  * usage is compliant.
18004  */
18005 
18006 
18007 
18008 
18009 
18010 
18011 
18012 /* Already defined in ossl_typ.h */
18013 /* typedef struct dh_st DH; */
18014 /* typedef struct dh_method DH_METHOD; */
18015 
18016 struct dh_method {
18017     const char *name;
18018     /* Methods here */
18019     int (*generate_key) (DH *dh);
18020     int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh);
18021     /* Can be null */
18022     int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a,
18023                        const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx,
18024                        BN_MONT_CTX *m_ctx);
18025     int (*init) (DH *dh);
18026     int (*finish) (DH *dh);
18027     int flags;
18028     char *app_data;
18029     /* If this is non-NULL, it will be used to generate parameters */
18030     int (*generate_params) (DH *dh, int prime_len, int generator,
18031                             BN_GENCB *cb);
18032 };
18033 
18034 struct dh_st {
18035     /*
18036      * This first argument is used to pick up errors when a DH is passed
18037      * instead of a EVP_PKEY
18038      */
18039     int pad;
18040     int version;
18041     BIGNUM *p;
18042     BIGNUM *g;
18043     long length; /* optional */
18044     BIGNUM *pub_key; /* g^x % p */
18045     BIGNUM *priv_key; /* x */
18046     int flags;
18047     BN_MONT_CTX *method_mont_p;
18048     /* Place holders if we want to do X9.42 DH */
18049     BIGNUM *q;
18050     BIGNUM *j;
18051     unsigned char *seed;
18052     int seedlen;
18053     BIGNUM *counter;
18054     int references;
18055     CRYPTO_EX_DATA ex_data;
18056     const DH_METHOD *meth;
18057     ENGINE *engine;
18058 };
18059 
18060 
18061 /* #define DH_GENERATOR_3       3 */
18062 
18063 
18064 /* DH_check error codes */
18065 # 174 "/usr/include/openssl/dh.h" 3 4
18066 /* DH_check_pub_key error codes */
18067 
18068 
18069 
18070 
18071 /*
18072  * primes p where (p-1)/2 is prime too are called "safe"; we define this for
18073  * backward compatibility:
18074  */
18075 # 209 "/usr/include/openssl/dh.h" 3 4
18076 DH *DHparams_dup(DH *);
18077 
18078 const DH_METHOD *DH_OpenSSL(void);
18079 
18080 void DH_set_default_method(const DH_METHOD *meth);
18081 const DH_METHOD *DH_get_default_method(void);
18082 int DH_set_method(DH *dh, const DH_METHOD *meth);
18083 DH *DH_new_method(ENGINE *engine);
18084 
18085 DH *DH_new(void);
18086 void DH_free(DH *dh);
18087 int DH_up_ref(DH *dh);
18088 int DH_size(const DH *dh);
18089 int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
18090                         CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
18091 int DH_set_ex_data(DH *d, int idx, void *arg);
18092 void *DH_get_ex_data(DH *d, int idx);
18093 
18094 /* Deprecated version */
18095 
18096 DH *DH_generate_parameters(int prime_len, int generator,
18097                            void (*callback) (int, int, void *), void *cb_arg);
18098 
18099 
18100 /* New version */
18101 int DH_generate_parameters_ex(DH *dh, int prime_len, int generator,
18102                               BN_GENCB *cb);
18103 
18104 int DH_check(const DH *dh, int *codes);
18105 int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes);
18106 int DH_generate_key(DH *dh);
18107 int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh);
18108 int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh);
18109 DH *d2i_DHparams(DH **a, const unsigned char **pp, long length);
18110 int i2d_DHparams(const DH *a, unsigned char **pp);
18111 DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length);
18112 int i2d_DHxparams(const DH *a, unsigned char **pp);
18113 
18114 int DHparams_print_fp(FILE *fp, const DH *x);
18115 
18116 
18117 int DHparams_print(BIO *bp, const DH *x);
18118 
18119 
18120 
18121 
18122 /* RFC 5114 parameters */
18123 DH *DH_get_1024_160(void);
18124 DH *DH_get_2048_224(void);
18125 DH *DH_get_2048_256(void);
18126 
18127 
18128 /* RFC2631 KDF */
18129 int DH_KDF_X9_42(unsigned char *out, size_t outlen,
18130                  const unsigned char *Z, size_t Zlen,
18131                  ASN1_OBJECT *key_oid,
18132                  const unsigned char *ukm, size_t ukmlen, const EVP_MD *md);
18133 # 357 "/usr/include/openssl/dh.h" 3 4
18134 /* KDF types */
18135 
18136 
18137 
18138 /* BEGIN ERROR CODES */
18139 /*
18140  * The following lines are auto generated by the script mkerr.pl. Any changes
18141  * made after this point may be overwritten when the script is next run.
18142  */
18143 void ERR_load_DH_strings(void);
18144 
18145 /* Error codes for the DH functions. */
18146 
18147 /* Function codes. */
18148 # 392 "/usr/include/openssl/dh.h" 3 4
18149 /* Reason codes. */
18150 # 84 "/usr/include/openssl/dsa.h" 2 3 4
18151 # 92 "/usr/include/openssl/dsa.h" 3 4
18152 /*
18153  * new with 0.9.7h; the built-in DSA implementation now uses constant time
18154  * modular exponentiation for secret exponents by default. This flag causes
18155  * the faster variable sliding window method to be used for all exponents.
18156  */
18157 
18158 
18159 /*
18160  * If this flag is set the DSA method is FIPS compliant and can be used in
18161  * FIPS mode. This is set in the validated module method. If an application
18162  * sets this flag in its own methods it is its reposibility to ensure the
18163  * result is compliant.
18164  */
18165 
18166 
18167 
18168 /*
18169  * If this flag is set the operations normally disabled in FIPS mode are
18170  * permitted it is then the applications responsibility to ensure that the
18171  * usage is compliant.
18172  */
18173 
18174 
18175 
18176 
18177 
18178 
18179 
18180 /* Already defined in ossl_typ.h */
18181 /* typedef struct dsa_st DSA; */
18182 /* typedef struct dsa_method DSA_METHOD; */
18183 
18184 typedef struct DSA_SIG_st {
18185     BIGNUM *r;
18186     BIGNUM *s;
18187 } DSA_SIG;
18188 
18189 struct dsa_method {
18190     const char *name;
18191     DSA_SIG *(*dsa_do_sign) (const unsigned char *dgst, int dlen, DSA *dsa);
18192     int (*dsa_sign_setup) (DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
18193                            BIGNUM **rp);
18194     int (*dsa_do_verify) (const unsigned char *dgst, int dgst_len,
18195                           DSA_SIG *sig, DSA *dsa);
18196     int (*dsa_mod_exp) (DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1,
18197                         BIGNUM *a2, BIGNUM *p2, BIGNUM *m, BN_CTX *ctx,
18198                         BN_MONT_CTX *in_mont);
18199     /* Can be null */
18200     int (*bn_mod_exp) (DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p,
18201                        const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
18202     int (*init) (DSA *dsa);
18203     int (*finish) (DSA *dsa);
18204     int flags;
18205     char *app_data;
18206     /* If this is non-NULL, it is used to generate DSA parameters */
18207     int (*dsa_paramgen) (DSA *dsa, int bits,
18208                          const unsigned char *seed, int seed_len,
18209                          int *counter_ret, unsigned long *h_ret,
18210                          BN_GENCB *cb);
18211     /* If this is non-NULL, it is used to generate DSA keys */
18212     int (*dsa_keygen) (DSA *dsa);
18213 };
18214 
18215 struct dsa_st {
18216     /*
18217      * This first variable is used to pick up errors where a DSA is passed
18218      * instead of of a EVP_PKEY
18219      */
18220     int pad;
18221     long version;
18222     int write_params;
18223     BIGNUM *p;
18224     BIGNUM *q; /* == 20 */
18225     BIGNUM *g;
18226     BIGNUM *pub_key; /* y public key */
18227     BIGNUM *priv_key; /* x private key */
18228     BIGNUM *kinv; /* Signing pre-calc */
18229     BIGNUM *r; /* Signing pre-calc */
18230     int flags;
18231     /* Normally used to cache montgomery values */
18232     BN_MONT_CTX *method_mont_p;
18233     int references;
18234     CRYPTO_EX_DATA ex_data;
18235     const DSA_METHOD *meth;
18236     /* functional reference if 'meth' is ENGINE-provided */
18237     ENGINE *engine;
18238 };
18239 # 187 "/usr/include/openssl/dsa.h" 3 4
18240 DSA *DSAparams_dup(DSA *x);
18241 DSA_SIG *DSA_SIG_new(void);
18242 void DSA_SIG_free(DSA_SIG *a);
18243 int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);
18244 DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length);
18245 
18246 DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
18247 int DSA_do_verify(const unsigned char *dgst, int dgst_len,
18248                   DSA_SIG *sig, DSA *dsa);
18249 
18250 const DSA_METHOD *DSA_OpenSSL(void);
18251 
18252 void DSA_set_default_method(const DSA_METHOD *);
18253 const DSA_METHOD *DSA_get_default_method(void);
18254 int DSA_set_method(DSA *dsa, const DSA_METHOD *);
18255 
18256 DSA *DSA_new(void);
18257 DSA *DSA_new_method(ENGINE *engine);
18258 void DSA_free(DSA *r);
18259 /* "up" the DSA object's reference count */
18260 int DSA_up_ref(DSA *r);
18261 int DSA_size(const DSA *);
18262         /* next 4 return -1 on error */
18263 int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp);
18264 int DSA_sign(int type, const unsigned char *dgst, int dlen,
18265              unsigned char *sig, unsigned int *siglen, DSA *dsa);
18266 int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
18267                const unsigned char *sigbuf, int siglen, DSA *dsa);
18268 int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
18269                          CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
18270 int DSA_set_ex_data(DSA *d, int idx, void *arg);
18271 void *DSA_get_ex_data(DSA *d, int idx);
18272 
18273 DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length);
18274 DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length);
18275 DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length);
18276 
18277 /* Deprecated version */
18278 
18279 DSA *DSA_generate_parameters(int bits,
18280                              unsigned char *seed, int seed_len,
18281                              int *counter_ret, unsigned long *h_ret, void
18282                               (*callback) (int, int, void *), void *cb_arg);
18283 
18284 
18285 /* New version */
18286 int DSA_generate_parameters_ex(DSA *dsa, int bits,
18287                                const unsigned char *seed, int seed_len,
18288                                int *counter_ret, unsigned long *h_ret,
18289                                BN_GENCB *cb);
18290 
18291 int DSA_generate_key(DSA *a);
18292 int i2d_DSAPublicKey(const DSA *a, unsigned char **pp);
18293 int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
18294 int i2d_DSAparams(const DSA *a, unsigned char **pp);
18295 
18296 
18297 int DSAparams_print(BIO *bp, const DSA *x);
18298 int DSA_print(BIO *bp, const DSA *x, int off);
18299 
18300 
18301 int DSAparams_print_fp(FILE *fp, const DSA *x);
18302 int DSA_print_fp(FILE *bp, const DSA *x, int off);
18303 
18304 
18305 
18306 /*
18307  * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only
18308  * have one value here we set the number of checks to 64 which is the 128 bit
18309  * security level that is the highest level and valid for creating a 3072 bit
18310  * DSA key.
18311  */
18312 
18313 
18314 
18315 
18316 /*
18317  * Convert DSA structure (key or just parameters) into DH structure (be
18318  * careful to avoid small subgroup attacks when using this!)
18319  */
18320 DH *DSA_dup_DH(const DSA *r);
18321 # 278 "/usr/include/openssl/dsa.h" 3 4
18322 /* BEGIN ERROR CODES */
18323 /*
18324  * The following lines are auto generated by the script mkerr.pl. Any changes
18325  * made after this point may be overwritten when the script is next run.
18326  */
18327 void ERR_load_DSA_strings(void);
18328 
18329 /* Error codes for the DSA functions. */
18330 
18331 /* Function codes. */
18332 # 316 "/usr/include/openssl/dsa.h" 3 4
18333 /* Reason codes. */
18334 # 100 "/usr/include/openssl/x509.h" 2 3 4
18335 
18336 
18337 # 1 "/usr/include/openssl/dh.h" 1 3 4
18338 /* crypto/dh/dh.h */
18339 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
18340  * All rights reserved.
18341  *
18342  * This package is an SSL implementation written
18343  * by Eric Young (eay@cryptsoft.com).
18344  * The implementation was written so as to conform with Netscapes SSL.
18345  *
18346  * This library is free for commercial and non-commercial use as long as
18347  * the following conditions are aheared to.  The following conditions
18348  * apply to all code found in this distribution, be it the RC4, RSA,
18349  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
18350  * included with this distribution is covered by the same copyright terms
18351  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
18352  *
18353  * Copyright remains Eric Young's, and as such any Copyright notices in
18354  * the code are not to be removed.
18355  * If this package is used in a product, Eric Young should be given attribution
18356  * as the author of the parts of the library used.
18357  * This can be in the form of a textual message at program startup or
18358  * in documentation (online or textual) provided with the package.
18359  *
18360  * Redistribution and use in source and binary forms, with or without
18361  * modification, are permitted provided that the following conditions
18362  * are met:
18363  * 1. Redistributions of source code must retain the copyright
18364  *    notice, this list of conditions and the following disclaimer.
18365  * 2. Redistributions in binary form must reproduce the above copyright
18366  *    notice, this list of conditions and the following disclaimer in the
18367  *    documentation and/or other materials provided with the distribution.
18368  * 3. All advertising materials mentioning features or use of this software
18369  *    must display the following acknowledgement:
18370  *    "This product includes cryptographic software written by
18371  *     Eric Young (eay@cryptsoft.com)"
18372  *    The word 'cryptographic' can be left out if the rouines from the library
18373  *    being used are not cryptographic related :-).
18374  * 4. If you include any Windows specific code (or a derivative thereof) from
18375  *    the apps directory (application code) you must include an acknowledgement:
18376  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
18377  *
18378  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
18379  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18380  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18381  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18382  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18383  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18384  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18385  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18386  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
18387  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
18388  * SUCH DAMAGE.
18389  *
18390  * The licence and distribution terms for any publically available version or
18391  * derivative of this code cannot be changed.  i.e. this code cannot simply be
18392  * copied and put under another distribution licence
18393  * [including the GNU Public Licence.]
18394  */
18395 # 103 "/usr/include/openssl/x509.h" 2 3 4
18396 
18397 
18398 
18399 
18400 # 1 "/usr/include/openssl/sha.h" 1 3 4
18401 /* crypto/sha/sha.h */
18402 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
18403  * All rights reserved.
18404  *
18405  * This package is an SSL implementation written
18406  * by Eric Young (eay@cryptsoft.com).
18407  * The implementation was written so as to conform with Netscapes SSL.
18408  *
18409  * This library is free for commercial and non-commercial use as long as
18410  * the following conditions are aheared to.  The following conditions
18411  * apply to all code found in this distribution, be it the RC4, RSA,
18412  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
18413  * included with this distribution is covered by the same copyright terms
18414  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
18415  *
18416  * Copyright remains Eric Young's, and as such any Copyright notices in
18417  * the code are not to be removed.
18418  * If this package is used in a product, Eric Young should be given attribution
18419  * as the author of the parts of the library used.
18420  * This can be in the form of a textual message at program startup or
18421  * in documentation (online or textual) provided with the package.
18422  *
18423  * Redistribution and use in source and binary forms, with or without
18424  * modification, are permitted provided that the following conditions
18425  * are met:
18426  * 1. Redistributions of source code must retain the copyright
18427  *    notice, this list of conditions and the following disclaimer.
18428  * 2. Redistributions in binary form must reproduce the above copyright
18429  *    notice, this list of conditions and the following disclaimer in the
18430  *    documentation and/or other materials provided with the distribution.
18431  * 3. All advertising materials mentioning features or use of this software
18432  *    must display the following acknowledgement:
18433  *    "This product includes cryptographic software written by
18434  *     Eric Young (eay@cryptsoft.com)"
18435  *    The word 'cryptographic' can be left out if the rouines from the library
18436  *    being used are not cryptographic related :-).
18437  * 4. If you include any Windows specific code (or a derivative thereof) from
18438  *    the apps directory (application code) you must include an acknowledgement:
18439  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
18440  *
18441  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
18442  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18443  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18444  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18445  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18446  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18447  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18448  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18449  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
18450  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
18451  * SUCH DAMAGE.
18452  *
18453  * The licence and distribution terms for any publically available version or
18454  * derivative of this code cannot be changed.  i.e. this code cannot simply be
18455  * copied and put under another distribution licence
18456  * [including the GNU Public Licence.]
18457  */
18458 
18459 
18460 
18461 
18462 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
18463 /* e_os2.h */
18464 /* ====================================================================
18465  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
18466  *
18467  * Redistribution and use in source and binary forms, with or without
18468  * modification, are permitted provided that the following conditions
18469  * are met:
18470  *
18471  * 1. Redistributions of source code must retain the above copyright
18472  *    notice, this list of conditions and the following disclaimer.
18473  *
18474  * 2. Redistributions in binary form must reproduce the above copyright
18475  *    notice, this list of conditions and the following disclaimer in
18476  *    the documentation and/or other materials provided with the
18477  *    distribution.
18478  *
18479  * 3. All advertising materials mentioning features or use of this
18480  *    software must display the following acknowledgment:
18481  *    "This product includes software developed by the OpenSSL Project
18482  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
18483  *
18484  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
18485  *    endorse or promote products derived from this software without
18486  *    prior written permission. For written permission, please contact
18487  *    openssl-core@openssl.org.
18488  *
18489  * 5. Products derived from this software may not be called "OpenSSL"
18490  *    nor may "OpenSSL" appear in their names without prior written
18491  *    permission of the OpenSSL Project.
18492  *
18493  * 6. Redistributions of any form whatsoever must retain the following
18494  *    acknowledgment:
18495  *    "This product includes software developed by the OpenSSL Project
18496  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
18497  *
18498  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
18499  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18500  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18501  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
18502  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18503  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18504  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18505  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18506  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18507  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
18508  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
18509  * OF THE POSSIBILITY OF SUCH DAMAGE.
18510  * ====================================================================
18511  *
18512  * This product includes cryptographic software written by Eric Young
18513  * (eay@cryptsoft.com).  This product includes software written by Tim
18514  * Hudson (tjh@cryptsoft.com).
18515  *
18516  */
18517 
18518 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
18519 /* opensslconf.h */
18520 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
18521 
18522 
18523 
18524 
18525 /* OpenSSL was configured with the following options: */
18526 # 108 "/usr/include/openssl/opensslconf.h" 3 4
18527 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
18528    asks for it.  This is a transient feature that is provided for those
18529    who haven't had the time to do the appropriate changes in their
18530    applications.  */
18531 # 204 "/usr/include/openssl/opensslconf.h" 3 4
18532 /* crypto/opensslconf.h.in */
18533 
18534 /* Generate 80386 code? */
18535 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
18536 # 63 "/usr/include/openssl/sha.h" 2 3 4
18537 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 1 3 4
18538 /*
18539  * CDDL HEADER START
18540  *
18541  * The contents of this file are subject to the terms of the
18542  * Common Development and Distribution License, Version 1.0 only
18543  * (the "License").  You may not use this file except in compliance
18544  * with the License.
18545  *
18546  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
18547  * or http://www.opensolaris.org/os/licensing.
18548  * See the License for the specific language governing permissions
18549  * and limitations under the License.
18550  *
18551  * When distributing Covered Code, include this CDDL HEADER in each
18552  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
18553  * If applicable, add the following below this CDDL HEADER, with the
18554  * fields enclosed by brackets "[]" replaced with your own identifying
18555  * information: Portions Copyright [yyyy] [name of copyright owner]
18556  *
18557  * CDDL HEADER END
18558  */
18559 /*	Copyright (c) 1988 AT&T	*/
18560 /*	  All Rights Reserved  	*/
18561 
18562 
18563 /*
18564  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
18565  * Use is subject to license terms.
18566  */
18567 # 64 "/usr/include/openssl/sha.h" 2 3 4
18568 # 77 "/usr/include/openssl/sha.h" 3 4
18569 /*-
18570  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18571  * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then !
18572  * ! SHA_LONG_LOG2 has to be defined along.                        !
18573  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18574  */
18575 # 100 "/usr/include/openssl/sha.h" 3 4
18576 typedef struct SHAstate_st {
18577     unsigned int h0, h1, h2, h3, h4;
18578     unsigned int Nl, Nh;
18579     unsigned int data[16];
18580     unsigned int num;
18581 } SHA_CTX;
18582 
18583 
18584 
18585 
18586 
18587 int SHA_Init(SHA_CTX *c);
18588 int SHA_Update(SHA_CTX *c, const void *data, size_t len);
18589 int SHA_Final(unsigned char *md, SHA_CTX *c);
18590 unsigned char *SHA(const unsigned char *d, size_t n, unsigned char *md);
18591 void SHA_Transform(SHA_CTX *c, const unsigned char *data);
18592 
18593 
18594 
18595 
18596 
18597 int SHA1_Init(SHA_CTX *c);
18598 int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
18599 int SHA1_Final(unsigned char *md, SHA_CTX *c);
18600 unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md);
18601 void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
18602 # 134 "/usr/include/openssl/sha.h" 3 4
18603 typedef struct SHA256state_st {
18604     unsigned int h[8];
18605     unsigned int Nl, Nh;
18606     unsigned int data[16];
18607     unsigned int num, md_len;
18608 } SHA256_CTX;
18609 
18610 
18611 
18612 
18613 
18614 
18615 int SHA224_Init(SHA256_CTX *c);
18616 int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
18617 int SHA224_Final(unsigned char *md, SHA256_CTX *c);
18618 unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md);
18619 int SHA256_Init(SHA256_CTX *c);
18620 int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
18621 int SHA256_Final(unsigned char *md, SHA256_CTX *c);
18622 unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md);
18623 void SHA256_Transform(SHA256_CTX *c, const unsigned char *data);
18624 
18625 
18626 
18627 
18628 
18629 
18630 /*
18631  * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64
18632  * being exactly 64-bit wide. See Implementation Notes in sha512.c
18633  * for further details.
18634  */
18635 /*
18636  * SHA-512 treats input data as a
18637  * contiguous array of 64 bit
18638  * wide big-endian values.
18639  */
18640 # 183 "/usr/include/openssl/sha.h" 3 4
18641 typedef struct SHA512state_st {
18642     unsigned long long h[8];
18643     unsigned long long Nl, Nh;
18644     union {
18645         unsigned long long d[16];
18646         unsigned char p[(16*8)];
18647     } u;
18648     unsigned int num, md_len;
18649 } SHA512_CTX;
18650 
18651 
18652 
18653 
18654 
18655 
18656 
18657 int SHA384_Init(SHA512_CTX *c);
18658 int SHA384_Update(SHA512_CTX *c, const void *data, size_t len);
18659 int SHA384_Final(unsigned char *md, SHA512_CTX *c);
18660 unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md);
18661 int SHA512_Init(SHA512_CTX *c);
18662 int SHA512_Update(SHA512_CTX *c, const void *data, size_t len);
18663 int SHA512_Final(unsigned char *md, SHA512_CTX *c);
18664 unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md);
18665 void SHA512_Transform(SHA512_CTX *c, const unsigned char *data);
18666 # 108 "/usr/include/openssl/x509.h" 2 3 4
18667 
18668 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
18669 /* ====================================================================
18670  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
18671  *
18672  * Redistribution and use in source and binary forms, with or without
18673  * modification, are permitted provided that the following conditions
18674  * are met:
18675  *
18676  * 1. Redistributions of source code must retain the above copyright
18677  *    notice, this list of conditions and the following disclaimer.
18678  *
18679  * 2. Redistributions in binary form must reproduce the above copyright
18680  *    notice, this list of conditions and the following disclaimer in
18681  *    the documentation and/or other materials provided with the
18682  *    distribution.
18683  *
18684  * 3. All advertising materials mentioning features or use of this
18685  *    software must display the following acknowledgment:
18686  *    "This product includes software developed by the OpenSSL Project
18687  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
18688  *
18689  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
18690  *    endorse or promote products derived from this software without
18691  *    prior written permission. For written permission, please contact
18692  *    openssl-core@openssl.org.
18693  *
18694  * 5. Products derived from this software may not be called "OpenSSL"
18695  *    nor may "OpenSSL" appear in their names without prior written
18696  *    permission of the OpenSSL Project.
18697  *
18698  * 6. Redistributions of any form whatsoever must retain the following
18699  *    acknowledgment:
18700  *    "This product includes software developed by the OpenSSL Project
18701  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
18702  *
18703  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
18704  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18705  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18706  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
18707  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18708  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18709  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18710  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18711  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18712  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
18713  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
18714  * OF THE POSSIBILITY OF SUCH DAMAGE.
18715  * ====================================================================
18716  *
18717  * This product includes cryptographic software written by Eric Young
18718  * (eay@cryptsoft.com).  This product includes software written by Tim
18719  * Hudson (tjh@cryptsoft.com).
18720  *
18721  */
18722 # 110 "/usr/include/openssl/x509.h" 2 3 4
18723 # 137 "/usr/include/openssl/x509.h" 3 4
18724 typedef struct X509_objects_st {
18725     int nid;
18726     int (*a2i) (void);
18727     int (*i2a) (void);
18728 } X509_OBJECTS;
18729 
18730 struct X509_algor_st {
18731     ASN1_OBJECT *algorithm;
18732     ASN1_TYPE *parameter;
18733 } /* X509_ALGOR */ ;
18734 
18735 
18736 
18737 typedef struct stack_st_X509_ALGOR X509_ALGORS;
18738 
18739 typedef struct X509_val_st {
18740     ASN1_TIME *notBefore;
18741     ASN1_TIME *notAfter;
18742 } X509_VAL;
18743 
18744 struct X509_pubkey_st {
18745     X509_ALGOR *algor;
18746     ASN1_BIT_STRING *public_key;
18747     EVP_PKEY *pkey;
18748 };
18749 
18750 typedef struct X509_sig_st {
18751     X509_ALGOR *algor;
18752     ASN1_OCTET_STRING *digest;
18753 } X509_SIG;
18754 
18755 typedef struct X509_name_entry_st {
18756     ASN1_OBJECT *object;
18757     ASN1_STRING *value;
18758     int set;
18759     int size; /* temp variable */
18760 } X509_NAME_ENTRY;
18761 
18762 struct stack_st_X509_NAME_ENTRY { _STACK stack; };
18763 
18764 
18765 /* we always keep X509_NAMEs in 2 forms. */
18766 struct X509_name_st {
18767     struct stack_st_X509_NAME_ENTRY *entries;
18768     int modified; /* true if 'bytes' needs to be built */
18769 
18770     BUF_MEM *bytes;
18771 
18772 
18773 
18774 /*      unsigned long hash; Keep the hash around for lookups */
18775     unsigned char *canon_enc;
18776     int canon_enclen;
18777 } /* X509_NAME */ ;
18778 
18779 struct stack_st_X509_NAME { _STACK stack; };
18780 
18781 
18782 
18783 typedef struct X509_extension_st {
18784     ASN1_OBJECT *object;
18785     ASN1_BOOLEAN critical;
18786     ASN1_OCTET_STRING *value;
18787 } X509_EXTENSION;
18788 
18789 typedef struct stack_st_X509_EXTENSION X509_EXTENSIONS;
18790 
18791 struct stack_st_X509_EXTENSION { _STACK stack; };
18792 
18793 
18794 /* a sequence of these are used */
18795 typedef struct x509_attributes_st {
18796     ASN1_OBJECT *object;
18797     int single; /* 0 for a set, 1 for a single item (which is
18798                                  * wrong) */
18799     union {
18800         char *ptr;
18801         /*
18802          * 0
18803          */ struct stack_st_ASN1_TYPE *set;
18804         /*
18805          * 1
18806          */ ASN1_TYPE *single;
18807     } value;
18808 } X509_ATTRIBUTE;
18809 
18810 struct stack_st_X509_ATTRIBUTE { _STACK stack; };
18811 
18812 
18813 typedef struct X509_req_info_st {
18814     ASN1_ENCODING enc;
18815     ASN1_INTEGER *version;
18816     X509_NAME *subject;
18817     X509_PUBKEY *pubkey;
18818     /*  d=2 hl=2 l=  0 cons: cont: 00 */
18819     struct stack_st_X509_ATTRIBUTE *attributes; /* [ 0 ] */
18820 } X509_REQ_INFO;
18821 
18822 typedef struct X509_req_st {
18823     X509_REQ_INFO *req_info;
18824     X509_ALGOR *sig_alg;
18825     ASN1_BIT_STRING *signature;
18826     int references;
18827 } X509_REQ;
18828 
18829 typedef struct x509_cinf_st {
18830     ASN1_INTEGER *version; /* [ 0 ] default of v1 */
18831     ASN1_INTEGER *serialNumber;
18832     X509_ALGOR *signature;
18833     X509_NAME *issuer;
18834     X509_VAL *validity;
18835     X509_NAME *subject;
18836     X509_PUBKEY *key;
18837     ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */
18838     ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */
18839     struct stack_st_X509_EXTENSION *extensions; /* [ 3 ] optional in v3 */
18840     ASN1_ENCODING enc;
18841 } X509_CINF;
18842 
18843 /*
18844  * This stuff is certificate "auxiliary info" it contains details which are
18845  * useful in certificate stores and databases. When used this is tagged onto
18846  * the end of the certificate itself
18847  */
18848 
18849 typedef struct x509_cert_aux_st {
18850     struct stack_st_ASN1_OBJECT *trust; /* trusted uses */
18851     struct stack_st_ASN1_OBJECT *reject; /* rejected uses */
18852     ASN1_UTF8STRING *alias; /* "friendly name" */
18853     ASN1_OCTET_STRING *keyid; /* key id of private key */
18854     struct stack_st_X509_ALGOR *other; /* other unspecified info */
18855 } X509_CERT_AUX;
18856 
18857 struct x509_st {
18858     X509_CINF *cert_info;
18859     X509_ALGOR *sig_alg;
18860     ASN1_BIT_STRING *signature;
18861     int valid;
18862     int references;
18863     char *name;
18864     CRYPTO_EX_DATA ex_data;
18865     /* These contain copies of various extension values */
18866     long ex_pathlen;
18867     long ex_pcpathlen;
18868     unsigned long ex_flags;
18869     unsigned long ex_kusage;
18870     unsigned long ex_xkusage;
18871     unsigned long ex_nscert;
18872     ASN1_OCTET_STRING *skid;
18873     AUTHORITY_KEYID *akid;
18874     X509_POLICY_CACHE *policy_cache;
18875     struct stack_st_DIST_POINT *crldp;
18876     struct stack_st_GENERAL_NAME *altname;
18877     NAME_CONSTRAINTS *nc;
18878 
18879 
18880 
18881 
18882 
18883     unsigned char sha1_hash[20];
18884 
18885     X509_CERT_AUX *aux;
18886 } /* X509 */ ;
18887 
18888 struct stack_st_X509 { _STACK stack; };
18889 
18890 
18891 /* This is used for a table of trust checking functions */
18892 
18893 typedef struct x509_trust_st {
18894     int trust;
18895     int flags;
18896     int (*check_trust) (struct x509_trust_st *, X509 *, int);
18897     char *name;
18898     int arg1;
18899     void *arg2;
18900 } X509_TRUST;
18901 
18902 struct stack_st_X509_TRUST { _STACK stack; };
18903 
18904 typedef struct x509_cert_pair_st {
18905     X509 *forward;
18906     X509 *reverse;
18907 } X509_CERT_PAIR;
18908 
18909 /* standard trust ids */
18910 # 335 "/usr/include/openssl/x509.h" 3 4
18911 /* Keep these up to date! */
18912 
18913 
18914 
18915 /* trust_flags values */
18916 
18917 
18918 
18919 /* check_trust return codes */
18920 
18921 
18922 
18923 
18924 
18925 /* Flags for X509_print_ex() */
18926 # 366 "/usr/include/openssl/x509.h" 3 4
18927 /* Flags specific to X509_NAME_print_ex() */
18928 
18929 /* The field separator information */
18930 # 381 "/usr/include/openssl/x509.h" 3 4
18931 /* How the field name is shown */
18932 # 392 "/usr/include/openssl/x509.h" 3 4
18933 /*
18934  * This determines if we dump fields we don't recognise: RFC2253 requires
18935  * this.
18936  */
18937 
18938 
18939 
18940 
18941 
18942 
18943 /* Complete set of RFC2253 flags */
18944 
18945 
18946 
18947 
18948 
18949 
18950 
18951 /* readable oneline form */
18952 
18953 
18954 
18955 
18956 
18957 
18958 
18959 /* readable multiline form */
18960 # 427 "/usr/include/openssl/x509.h" 3 4
18961 struct x509_revoked_st {
18962     ASN1_INTEGER *serialNumber;
18963     ASN1_TIME *revocationDate;
18964     struct stack_st_X509_EXTENSION /* optional */ *extensions;
18965     /* Set up if indirect CRL */
18966     struct stack_st_GENERAL_NAME *issuer;
18967     /* Revocation reason */
18968     int reason;
18969     int sequence; /* load sequence */
18970 };
18971 
18972 struct stack_st_X509_REVOKED { _STACK stack; };
18973 
18974 
18975 typedef struct X509_crl_info_st {
18976     ASN1_INTEGER *version;
18977     X509_ALGOR *sig_alg;
18978     X509_NAME *issuer;
18979     ASN1_TIME *lastUpdate;
18980     ASN1_TIME *nextUpdate;
18981     struct stack_st_X509_REVOKED *revoked;
18982     struct stack_st_X509_EXTENSION /* [0] */ *extensions;
18983     ASN1_ENCODING enc;
18984 } X509_CRL_INFO;
18985 
18986 struct X509_crl_st {
18987     /* actual signature */
18988     X509_CRL_INFO *crl;
18989     X509_ALGOR *sig_alg;
18990     ASN1_BIT_STRING *signature;
18991     int references;
18992     int flags;
18993     /* Copies of various extensions */
18994     AUTHORITY_KEYID *akid;
18995     ISSUING_DIST_POINT *idp;
18996     /* Convenient breakdown of IDP */
18997     int idp_flags;
18998     int idp_reasons;
18999     /* CRL and base CRL numbers for delta processing */
19000     ASN1_INTEGER *crl_number;
19001     ASN1_INTEGER *base_crl_number;
19002 
19003     unsigned char sha1_hash[20];
19004 
19005     struct stack_st_GENERAL_NAMES *issuers;
19006     const X509_CRL_METHOD *meth;
19007     void *meth_data;
19008 } /* X509_CRL */ ;
19009 
19010 struct stack_st_X509_CRL { _STACK stack; };
19011 
19012 
19013 typedef struct private_key_st {
19014     int version;
19015     /* The PKCS#8 data types */
19016     X509_ALGOR *enc_algor;
19017     ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */
19018     /* When decrypted, the following will not be NULL */
19019     EVP_PKEY *dec_pkey;
19020     /* used to encrypt and decrypt */
19021     int key_length;
19022     char *key_data;
19023     int key_free; /* true if we should auto free key_data */
19024     /* expanded version of 'enc_algor' */
19025     EVP_CIPHER_INFO cipher;
19026     int references;
19027 } X509_PKEY;
19028 
19029 
19030 typedef struct X509_info_st {
19031     X509 *x509;
19032     X509_CRL *crl;
19033     X509_PKEY *x_pkey;
19034     EVP_CIPHER_INFO enc_cipher;
19035     int enc_len;
19036     char *enc_data;
19037     int references;
19038 } X509_INFO;
19039 
19040 struct stack_st_X509_INFO { _STACK stack; };
19041 
19042 
19043 /*
19044  * The next 2 structures and their 8 routines were sent to me by Pat Richard
19045  * <patr@x509.com> and are used to manipulate Netscapes spki structures -
19046  * useful if you are writing a CA web page
19047  */
19048 typedef struct Netscape_spkac_st {
19049     X509_PUBKEY *pubkey;
19050     ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */
19051 } NETSCAPE_SPKAC;
19052 
19053 typedef struct Netscape_spki_st {
19054     NETSCAPE_SPKAC *spkac; /* signed public key and challenge */
19055     X509_ALGOR *sig_algor;
19056     ASN1_BIT_STRING *signature;
19057 } NETSCAPE_SPKI;
19058 
19059 /* Netscape certificate sequence structure */
19060 typedef struct Netscape_certificate_sequence {
19061     ASN1_OBJECT *type;
19062     struct stack_st_X509 *certs;
19063 } NETSCAPE_CERT_SEQUENCE;
19064 
19065 /*- Unused (and iv length is wrong)
19066 typedef struct CBCParameter_st
19067         {
19068         unsigned char iv[8];
19069         } CBC_PARAM;
19070 */
19071 
19072 /* Password based encryption structure */
19073 
19074 typedef struct PBEPARAM_st {
19075     ASN1_OCTET_STRING *salt;
19076     ASN1_INTEGER *iter;
19077 } PBEPARAM;
19078 
19079 /* Password based encryption V2 structures */
19080 
19081 typedef struct PBE2PARAM_st {
19082     X509_ALGOR *keyfunc;
19083     X509_ALGOR *encryption;
19084 } PBE2PARAM;
19085 
19086 typedef struct PBKDF2PARAM_st {
19087 /* Usually OCTET STRING but could be anything */
19088     ASN1_TYPE *salt;
19089     ASN1_INTEGER *iter;
19090     ASN1_INTEGER *keylength;
19091     X509_ALGOR *prf;
19092 } PBKDF2PARAM;
19093 
19094 /* PKCS#8 private key info structure */
19095 
19096 struct pkcs8_priv_key_info_st {
19097     /* Flag for various broken formats */
19098     int broken;
19099 
19100 
19101 
19102 
19103 
19104     ASN1_INTEGER *version;
19105     X509_ALGOR *pkeyalg;
19106     /* Should be OCTET STRING but some are broken */
19107     ASN1_TYPE *pkey;
19108     struct stack_st_X509_ATTRIBUTE *attributes;
19109 };
19110 
19111 
19112 
19113 
19114 
19115 # 1 "/usr/include/openssl/x509_vfy.h" 1 3 4
19116 /* crypto/x509/x509_vfy.h */
19117 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19118  * All rights reserved.
19119  *
19120  * This package is an SSL implementation written
19121  * by Eric Young (eay@cryptsoft.com).
19122  * The implementation was written so as to conform with Netscapes SSL.
19123  *
19124  * This library is free for commercial and non-commercial use as long as
19125  * the following conditions are aheared to.  The following conditions
19126  * apply to all code found in this distribution, be it the RC4, RSA,
19127  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19128  * included with this distribution is covered by the same copyright terms
19129  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19130  *
19131  * Copyright remains Eric Young's, and as such any Copyright notices in
19132  * the code are not to be removed.
19133  * If this package is used in a product, Eric Young should be given attribution
19134  * as the author of the parts of the library used.
19135  * This can be in the form of a textual message at program startup or
19136  * in documentation (online or textual) provided with the package.
19137  *
19138  * Redistribution and use in source and binary forms, with or without
19139  * modification, are permitted provided that the following conditions
19140  * are met:
19141  * 1. Redistributions of source code must retain the copyright
19142  *    notice, this list of conditions and the following disclaimer.
19143  * 2. Redistributions in binary form must reproduce the above copyright
19144  *    notice, this list of conditions and the following disclaimer in the
19145  *    documentation and/or other materials provided with the distribution.
19146  * 3. All advertising materials mentioning features or use of this software
19147  *    must display the following acknowledgement:
19148  *    "This product includes cryptographic software written by
19149  *     Eric Young (eay@cryptsoft.com)"
19150  *    The word 'cryptographic' can be left out if the rouines from the library
19151  *    being used are not cryptographic related :-).
19152  * 4. If you include any Windows specific code (or a derivative thereof) from
19153  *    the apps directory (application code) you must include an acknowledgement:
19154  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19155  *
19156  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19157  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19158  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19159  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19160  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19161  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19162  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19163  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19164  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19165  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19166  * SUCH DAMAGE.
19167  *
19168  * The licence and distribution terms for any publically available version or
19169  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19170  * copied and put under another distribution licence
19171  * [including the GNU Public Licence.]
19172  */
19173 # 70 "/usr/include/openssl/x509_vfy.h" 3 4
19174 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
19175 /* opensslconf.h */
19176 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
19177 
19178 
19179 
19180 
19181 /* OpenSSL was configured with the following options: */
19182 # 108 "/usr/include/openssl/opensslconf.h" 3 4
19183 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
19184    asks for it.  This is a transient feature that is provided for those
19185    who haven't had the time to do the appropriate changes in their
19186    applications.  */
19187 # 204 "/usr/include/openssl/opensslconf.h" 3 4
19188 /* crypto/opensslconf.h.in */
19189 
19190 /* Generate 80386 code? */
19191 # 71 "/usr/include/openssl/x509_vfy.h" 2 3 4
19192 
19193 # 1 "/usr/include/openssl/lhash.h" 1 3 4
19194 /* crypto/lhash/lhash.h */
19195 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19196  * All rights reserved.
19197  *
19198  * This package is an SSL implementation written
19199  * by Eric Young (eay@cryptsoft.com).
19200  * The implementation was written so as to conform with Netscapes SSL.
19201  *
19202  * This library is free for commercial and non-commercial use as long as
19203  * the following conditions are aheared to.  The following conditions
19204  * apply to all code found in this distribution, be it the RC4, RSA,
19205  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19206  * included with this distribution is covered by the same copyright terms
19207  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19208  *
19209  * Copyright remains Eric Young's, and as such any Copyright notices in
19210  * the code are not to be removed.
19211  * If this package is used in a product, Eric Young should be given attribution
19212  * as the author of the parts of the library used.
19213  * This can be in the form of a textual message at program startup or
19214  * in documentation (online or textual) provided with the package.
19215  *
19216  * Redistribution and use in source and binary forms, with or without
19217  * modification, are permitted provided that the following conditions
19218  * are met:
19219  * 1. Redistributions of source code must retain the copyright
19220  *    notice, this list of conditions and the following disclaimer.
19221  * 2. Redistributions in binary form must reproduce the above copyright
19222  *    notice, this list of conditions and the following disclaimer in the
19223  *    documentation and/or other materials provided with the distribution.
19224  * 3. All advertising materials mentioning features or use of this software
19225  *    must display the following acknowledgement:
19226  *    "This product includes cryptographic software written by
19227  *     Eric Young (eay@cryptsoft.com)"
19228  *    The word 'cryptographic' can be left out if the rouines from the library
19229  *    being used are not cryptographic related :-).
19230  * 4. If you include any Windows specific code (or a derivative thereof) from
19231  *    the apps directory (application code) you must include an acknowledgement:
19232  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19233  *
19234  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19235  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19236  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19237  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19238  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19239  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19240  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19241  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19242  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19243  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19244  * SUCH DAMAGE.
19245  *
19246  * The licence and distribution terms for any publically available version or
19247  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19248  * copied and put under another distribution licence
19249  * [including the GNU Public Licence.]
19250  */
19251 
19252 /*
19253  * Header for dynamic hash table routines Author - Eric Young
19254  */
19255 
19256 
19257 
19258 
19259 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
19260 /* e_os2.h */
19261 /* ====================================================================
19262  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
19263  *
19264  * Redistribution and use in source and binary forms, with or without
19265  * modification, are permitted provided that the following conditions
19266  * are met:
19267  *
19268  * 1. Redistributions of source code must retain the above copyright
19269  *    notice, this list of conditions and the following disclaimer.
19270  *
19271  * 2. Redistributions in binary form must reproduce the above copyright
19272  *    notice, this list of conditions and the following disclaimer in
19273  *    the documentation and/or other materials provided with the
19274  *    distribution.
19275  *
19276  * 3. All advertising materials mentioning features or use of this
19277  *    software must display the following acknowledgment:
19278  *    "This product includes software developed by the OpenSSL Project
19279  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
19280  *
19281  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
19282  *    endorse or promote products derived from this software without
19283  *    prior written permission. For written permission, please contact
19284  *    openssl-core@openssl.org.
19285  *
19286  * 5. Products derived from this software may not be called "OpenSSL"
19287  *    nor may "OpenSSL" appear in their names without prior written
19288  *    permission of the OpenSSL Project.
19289  *
19290  * 6. Redistributions of any form whatsoever must retain the following
19291  *    acknowledgment:
19292  *    "This product includes software developed by the OpenSSL Project
19293  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
19294  *
19295  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
19296  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19297  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19298  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
19299  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19300  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19301  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19302  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19303  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19304  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19305  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
19306  * OF THE POSSIBILITY OF SUCH DAMAGE.
19307  * ====================================================================
19308  *
19309  * This product includes cryptographic software written by Eric Young
19310  * (eay@cryptsoft.com).  This product includes software written by Tim
19311  * Hudson (tjh@cryptsoft.com).
19312  *
19313  */
19314 
19315 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
19316 /* opensslconf.h */
19317 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
19318 
19319 
19320 
19321 
19322 /* OpenSSL was configured with the following options: */
19323 # 108 "/usr/include/openssl/opensslconf.h" 3 4
19324 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
19325    asks for it.  This is a transient feature that is provided for those
19326    who haven't had the time to do the appropriate changes in their
19327    applications.  */
19328 # 204 "/usr/include/openssl/opensslconf.h" 3 4
19329 /* crypto/opensslconf.h.in */
19330 
19331 /* Generate 80386 code? */
19332 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
19333 # 67 "/usr/include/openssl/lhash.h" 2 3 4
19334 
19335 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
19336 /*
19337  * CDDL HEADER START
19338  *
19339  * The contents of this file are subject to the terms of the
19340  * Common Development and Distribution License (the "License").
19341  * You may not use this file except in compliance with the License.
19342  *
19343  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
19344  * or http://www.opensolaris.org/os/licensing.
19345  * See the License for the specific language governing permissions
19346  * and limitations under the License.
19347  *
19348  * When distributing Covered Code, include this CDDL HEADER in each
19349  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19350  * If applicable, add the following below this CDDL HEADER, with the
19351  * fields enclosed by brackets "[]" replaced with your own identifying
19352  * information: Portions Copyright [yyyy] [name of copyright owner]
19353  *
19354  * CDDL HEADER END
19355  */
19356 
19357 /*
19358  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
19359  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
19360  */
19361 
19362 /*	Copyright (c) 1988 AT&T	*/
19363 /*	  All Rights Reserved  	*/
19364 
19365 /*
19366  * User-visible pieces of the ANSI C standard I/O package.
19367  */
19368 # 69 "/usr/include/openssl/lhash.h" 2 3 4
19369 
19370 
19371 
19372 # 1 "/usr/include/openssl/bio.h" 1 3 4
19373 /* crypto/bio/bio.h */
19374 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19375  * All rights reserved.
19376  *
19377  * This package is an SSL implementation written
19378  * by Eric Young (eay@cryptsoft.com).
19379  * The implementation was written so as to conform with Netscapes SSL.
19380  *
19381  * This library is free for commercial and non-commercial use as long as
19382  * the following conditions are aheared to.  The following conditions
19383  * apply to all code found in this distribution, be it the RC4, RSA,
19384  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19385  * included with this distribution is covered by the same copyright terms
19386  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19387  *
19388  * Copyright remains Eric Young's, and as such any Copyright notices in
19389  * the code are not to be removed.
19390  * If this package is used in a product, Eric Young should be given attribution
19391  * as the author of the parts of the library used.
19392  * This can be in the form of a textual message at program startup or
19393  * in documentation (online or textual) provided with the package.
19394  *
19395  * Redistribution and use in source and binary forms, with or without
19396  * modification, are permitted provided that the following conditions
19397  * are met:
19398  * 1. Redistributions of source code must retain the copyright
19399  *    notice, this list of conditions and the following disclaimer.
19400  * 2. Redistributions in binary form must reproduce the above copyright
19401  *    notice, this list of conditions and the following disclaimer in the
19402  *    documentation and/or other materials provided with the distribution.
19403  * 3. All advertising materials mentioning features or use of this software
19404  *    must display the following acknowledgement:
19405  *    "This product includes cryptographic software written by
19406  *     Eric Young (eay@cryptsoft.com)"
19407  *    The word 'cryptographic' can be left out if the rouines from the library
19408  *    being used are not cryptographic related :-).
19409  * 4. If you include any Windows specific code (or a derivative thereof) from
19410  *    the apps directory (application code) you must include an acknowledgement:
19411  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19412  *
19413  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19414  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19415  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19416  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19417  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19418  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19419  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19420  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19421  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19422  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19423  * SUCH DAMAGE.
19424  *
19425  * The licence and distribution terms for any publically available version or
19426  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19427  * copied and put under another distribution licence
19428  * [including the GNU Public Licence.]
19429  */
19430 # 73 "/usr/include/openssl/lhash.h" 2 3 4
19431 
19432 
19433 
19434 
19435 
19436 
19437 typedef struct lhash_node_st {
19438     void *data;
19439     struct lhash_node_st *next;
19440 
19441     unsigned long hash;
19442 
19443 } LHASH_NODE;
19444 
19445 typedef int (*LHASH_COMP_FN_TYPE) (const void *, const void *);
19446 typedef unsigned long (*LHASH_HASH_FN_TYPE) (const void *);
19447 typedef void (*LHASH_DOALL_FN_TYPE) (void *);
19448 typedef void (*LHASH_DOALL_ARG_FN_TYPE) (void *, void *);
19449 
19450 /*
19451  * Macros for declaring and implementing type-safe wrappers for LHASH
19452  * callbacks. This way, callbacks can be provided to LHASH structures without
19453  * function pointer casting and the macro-defined callbacks provide
19454  * per-variable casting before deferring to the underlying type-specific
19455  * callbacks. NB: It is possible to place a "static" in front of both the
19456  * DECLARE and IMPLEMENT macros if the functions are strictly internal.
19457  */
19458 
19459 /* First: "hash" functions */
19460 # 110 "/usr/include/openssl/lhash.h" 3 4
19461 /* Second: "compare" functions */
19462 # 120 "/usr/include/openssl/lhash.h" 3 4
19463 /* Third: "doall" functions */
19464 # 129 "/usr/include/openssl/lhash.h" 3 4
19465 /* Fourth: "doall_arg" functions */
19466 # 139 "/usr/include/openssl/lhash.h" 3 4
19467 typedef struct lhash_st {
19468     LHASH_NODE **b;
19469     LHASH_COMP_FN_TYPE comp;
19470     LHASH_HASH_FN_TYPE hash;
19471     unsigned int num_nodes;
19472     unsigned int num_alloc_nodes;
19473     unsigned int p;
19474     unsigned int pmax;
19475     unsigned long up_load; /* load times 256 */
19476     unsigned long down_load; /* load times 256 */
19477     unsigned long num_items;
19478     unsigned long num_expands;
19479     unsigned long num_expand_reallocs;
19480     unsigned long num_contracts;
19481     unsigned long num_contract_reallocs;
19482     unsigned long num_hash_calls;
19483     unsigned long num_comp_calls;
19484     unsigned long num_insert;
19485     unsigned long num_replace;
19486     unsigned long num_delete;
19487     unsigned long num_no_delete;
19488     unsigned long num_retrieve;
19489     unsigned long num_retrieve_miss;
19490     unsigned long num_hash_comps;
19491     int error;
19492 } _LHASH; /* Do not use _LHASH directly, use LHASH_OF
19493                                  * and friends */
19494 
19495 
19496 
19497 /*
19498  * Indicates a malloc() error in the last call, this is only bad in
19499  * lh_insert().
19500  */
19501 
19502 
19503 _LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c);
19504 void lh_free(_LHASH *lh);
19505 void *lh_insert(_LHASH *lh, void *data);
19506 void *lh_delete(_LHASH *lh, const void *data);
19507 void *lh_retrieve(_LHASH *lh, const void *data);
19508 void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func);
19509 void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg);
19510 unsigned long lh_strhash(const char *c);
19511 unsigned long lh_num_items(const _LHASH *lh);
19512 
19513 
19514 void lh_stats(const _LHASH *lh, FILE *out);
19515 void lh_node_stats(const _LHASH *lh, FILE *out);
19516 void lh_node_usage_stats(const _LHASH *lh, FILE *out);
19517 
19518 
19519 
19520 void lh_stats_bio(const _LHASH *lh, BIO *out);
19521 void lh_node_stats_bio(const _LHASH *lh, BIO *out);
19522 void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out);
19523 
19524 
19525 /* Type checking... */
19526 # 206 "/usr/include/openssl/lhash.h" 3 4
19527 /* Define wrapper functions. */
19528 # 233 "/usr/include/openssl/lhash.h" 3 4
19529 struct lhash_st_OPENSSL_STRING { int dummy; };
19530 struct lhash_st_OPENSSL_CSTRING { int dummy; };
19531 # 73 "/usr/include/openssl/x509_vfy.h" 2 3 4
19532 
19533 # 1 "/usr/include/openssl/bio.h" 1 3 4
19534 /* crypto/bio/bio.h */
19535 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19536  * All rights reserved.
19537  *
19538  * This package is an SSL implementation written
19539  * by Eric Young (eay@cryptsoft.com).
19540  * The implementation was written so as to conform with Netscapes SSL.
19541  *
19542  * This library is free for commercial and non-commercial use as long as
19543  * the following conditions are aheared to.  The following conditions
19544  * apply to all code found in this distribution, be it the RC4, RSA,
19545  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19546  * included with this distribution is covered by the same copyright terms
19547  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19548  *
19549  * Copyright remains Eric Young's, and as such any Copyright notices in
19550  * the code are not to be removed.
19551  * If this package is used in a product, Eric Young should be given attribution
19552  * as the author of the parts of the library used.
19553  * This can be in the form of a textual message at program startup or
19554  * in documentation (online or textual) provided with the package.
19555  *
19556  * Redistribution and use in source and binary forms, with or without
19557  * modification, are permitted provided that the following conditions
19558  * are met:
19559  * 1. Redistributions of source code must retain the copyright
19560  *    notice, this list of conditions and the following disclaimer.
19561  * 2. Redistributions in binary form must reproduce the above copyright
19562  *    notice, this list of conditions and the following disclaimer in the
19563  *    documentation and/or other materials provided with the distribution.
19564  * 3. All advertising materials mentioning features or use of this software
19565  *    must display the following acknowledgement:
19566  *    "This product includes cryptographic software written by
19567  *     Eric Young (eay@cryptsoft.com)"
19568  *    The word 'cryptographic' can be left out if the rouines from the library
19569  *    being used are not cryptographic related :-).
19570  * 4. If you include any Windows specific code (or a derivative thereof) from
19571  *    the apps directory (application code) you must include an acknowledgement:
19572  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19573  *
19574  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19575  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19576  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19577  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19578  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19579  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19580  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19581  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19582  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19583  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19584  * SUCH DAMAGE.
19585  *
19586  * The licence and distribution terms for any publically available version or
19587  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19588  * copied and put under another distribution licence
19589  * [including the GNU Public Licence.]
19590  */
19591 # 75 "/usr/include/openssl/x509_vfy.h" 2 3 4
19592 # 1 "/usr/include/openssl/crypto.h" 1 3 4
19593 /* crypto/crypto.h */
19594 /* ====================================================================
19595  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
19596  *
19597  * Redistribution and use in source and binary forms, with or without
19598  * modification, are permitted provided that the following conditions
19599  * are met:
19600  *
19601  * 1. Redistributions of source code must retain the above copyright
19602  *    notice, this list of conditions and the following disclaimer.
19603  *
19604  * 2. Redistributions in binary form must reproduce the above copyright
19605  *    notice, this list of conditions and the following disclaimer in
19606  *    the documentation and/or other materials provided with the
19607  *    distribution.
19608  *
19609  * 3. All advertising materials mentioning features or use of this
19610  *    software must display the following acknowledgment:
19611  *    "This product includes software developed by the OpenSSL Project
19612  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
19613  *
19614  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
19615  *    endorse or promote products derived from this software without
19616  *    prior written permission. For written permission, please contact
19617  *    openssl-core@openssl.org.
19618  *
19619  * 5. Products derived from this software may not be called "OpenSSL"
19620  *    nor may "OpenSSL" appear in their names without prior written
19621  *    permission of the OpenSSL Project.
19622  *
19623  * 6. Redistributions of any form whatsoever must retain the following
19624  *    acknowledgment:
19625  *    "This product includes software developed by the OpenSSL Project
19626  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
19627  *
19628  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
19629  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19630  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19631  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
19632  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19633  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19634  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19635  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19636  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19637  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19638  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
19639  * OF THE POSSIBILITY OF SUCH DAMAGE.
19640  * ====================================================================
19641  *
19642  * This product includes cryptographic software written by Eric Young
19643  * (eay@cryptsoft.com).  This product includes software written by Tim
19644  * Hudson (tjh@cryptsoft.com).
19645  *
19646  */
19647 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19648  * All rights reserved.
19649  *
19650  * This package is an SSL implementation written
19651  * by Eric Young (eay@cryptsoft.com).
19652  * The implementation was written so as to conform with Netscapes SSL.
19653  *
19654  * This library is free for commercial and non-commercial use as long as
19655  * the following conditions are aheared to.  The following conditions
19656  * apply to all code found in this distribution, be it the RC4, RSA,
19657  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19658  * included with this distribution is covered by the same copyright terms
19659  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19660  *
19661  * Copyright remains Eric Young's, and as such any Copyright notices in
19662  * the code are not to be removed.
19663  * If this package is used in a product, Eric Young should be given attribution
19664  * as the author of the parts of the library used.
19665  * This can be in the form of a textual message at program startup or
19666  * in documentation (online or textual) provided with the package.
19667  *
19668  * Redistribution and use in source and binary forms, with or without
19669  * modification, are permitted provided that the following conditions
19670  * are met:
19671  * 1. Redistributions of source code must retain the copyright
19672  *    notice, this list of conditions and the following disclaimer.
19673  * 2. Redistributions in binary form must reproduce the above copyright
19674  *    notice, this list of conditions and the following disclaimer in the
19675  *    documentation and/or other materials provided with the distribution.
19676  * 3. All advertising materials mentioning features or use of this software
19677  *    must display the following acknowledgement:
19678  *    "This product includes cryptographic software written by
19679  *     Eric Young (eay@cryptsoft.com)"
19680  *    The word 'cryptographic' can be left out if the rouines from the library
19681  *    being used are not cryptographic related :-).
19682  * 4. If you include any Windows specific code (or a derivative thereof) from
19683  *    the apps directory (application code) you must include an acknowledgement:
19684  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19685  *
19686  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19687  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19688  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19689  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19690  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19691  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19692  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19693  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19694  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19695  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19696  * SUCH DAMAGE.
19697  *
19698  * The licence and distribution terms for any publically available version or
19699  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19700  * copied and put under another distribution licence
19701  * [including the GNU Public Licence.]
19702  */
19703 /* ====================================================================
19704  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
19705  * ECDH support in OpenSSL originally developed by
19706  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
19707  */
19708 # 76 "/usr/include/openssl/x509_vfy.h" 2 3 4
19709 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
19710 /* ====================================================================
19711  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
19712  *
19713  * Redistribution and use in source and binary forms, with or without
19714  * modification, are permitted provided that the following conditions
19715  * are met:
19716  *
19717  * 1. Redistributions of source code must retain the above copyright
19718  *    notice, this list of conditions and the following disclaimer.
19719  *
19720  * 2. Redistributions in binary form must reproduce the above copyright
19721  *    notice, this list of conditions and the following disclaimer in
19722  *    the documentation and/or other materials provided with the
19723  *    distribution.
19724  *
19725  * 3. All advertising materials mentioning features or use of this
19726  *    software must display the following acknowledgment:
19727  *    "This product includes software developed by the OpenSSL Project
19728  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
19729  *
19730  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
19731  *    endorse or promote products derived from this software without
19732  *    prior written permission. For written permission, please contact
19733  *    openssl-core@openssl.org.
19734  *
19735  * 5. Products derived from this software may not be called "OpenSSL"
19736  *    nor may "OpenSSL" appear in their names without prior written
19737  *    permission of the OpenSSL Project.
19738  *
19739  * 6. Redistributions of any form whatsoever must retain the following
19740  *    acknowledgment:
19741  *    "This product includes software developed by the OpenSSL Project
19742  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
19743  *
19744  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
19745  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19746  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19747  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
19748  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19749  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19750  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19751  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19752  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19753  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19754  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
19755  * OF THE POSSIBILITY OF SUCH DAMAGE.
19756  * ====================================================================
19757  *
19758  * This product includes cryptographic software written by Eric Young
19759  * (eay@cryptsoft.com).  This product includes software written by Tim
19760  * Hudson (tjh@cryptsoft.com).
19761  *
19762  */
19763 # 77 "/usr/include/openssl/x509_vfy.h" 2 3 4
19764 # 92 "/usr/include/openssl/x509_vfy.h" 3 4
19765 typedef struct x509_file_st {
19766     int num_paths; /* number of paths to files or directories */
19767     int num_alloced;
19768     char **paths; /* the list of paths or directories */
19769     int *path_type;
19770 } X509_CERT_FILE_CTX;
19771 
19772 /*******************************/
19773 /*-
19774 SSL_CTX -> X509_STORE
19775                 -> X509_LOOKUP
19776                         ->X509_LOOKUP_METHOD
19777                 -> X509_LOOKUP
19778                         ->X509_LOOKUP_METHOD
19779 
19780 SSL     -> X509_STORE_CTX
19781                 ->X509_STORE
19782 
19783 The X509_STORE holds the tables etc for verification stuff.
19784 A X509_STORE_CTX is used while validating a single certificate.
19785 The X509_STORE has X509_LOOKUPs for looking up certs.
19786 The X509_STORE then calls a function to actually verify the
19787 certificate chain.
19788 */
19789 
19790 
19791 
19792 
19793 
19794 
19795 
19796 typedef struct x509_object_st {
19797     /* one of the above types */
19798     int type;
19799     union {
19800         char *ptr;
19801         X509 *x509;
19802         X509_CRL *crl;
19803         EVP_PKEY *pkey;
19804     } data;
19805 } X509_OBJECT;
19806 
19807 typedef struct x509_lookup_st X509_LOOKUP;
19808 
19809 struct stack_st_X509_LOOKUP { _STACK stack; };
19810 struct stack_st_X509_OBJECT { _STACK stack; };
19811 
19812 /* This is a static that defines the function interface */
19813 typedef struct x509_lookup_method_st {
19814     const char *name;
19815     int (*new_item) (X509_LOOKUP *ctx);
19816     void (*free) (X509_LOOKUP *ctx);
19817     int (*init) (X509_LOOKUP *ctx);
19818     int (*shutdown) (X509_LOOKUP *ctx);
19819     int (*ctrl) (X509_LOOKUP *ctx, int cmd, const char *argc, long argl,
19820                  char **ret);
19821     int (*get_by_subject) (X509_LOOKUP *ctx, int type, X509_NAME *name,
19822                            X509_OBJECT *ret);
19823     int (*get_by_issuer_serial) (X509_LOOKUP *ctx, int type, X509_NAME *name,
19824                                  ASN1_INTEGER *serial, X509_OBJECT *ret);
19825     int (*get_by_fingerprint) (X509_LOOKUP *ctx, int type,
19826                                unsigned char *bytes, int len,
19827                                X509_OBJECT *ret);
19828     int (*get_by_alias) (X509_LOOKUP *ctx, int type, char *str, int len,
19829                          X509_OBJECT *ret);
19830 } X509_LOOKUP_METHOD;
19831 
19832 typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID;
19833 
19834 /*
19835  * This structure hold all parameters associated with a verify operation by
19836  * including an X509_VERIFY_PARAM structure in related structures the
19837  * parameters used can be customized
19838  */
19839 
19840 typedef struct X509_VERIFY_PARAM_st {
19841     char *name;
19842     time_t check_time; /* Time to use */
19843     unsigned long inh_flags; /* Inheritance flags */
19844     unsigned long flags; /* Various verify flags */
19845     int purpose; /* purpose to check untrusted certificates */
19846     int trust; /* trust setting to check */
19847     int depth; /* Verify depth */
19848     struct stack_st_ASN1_OBJECT *policies; /* Permissible policies */
19849     X509_VERIFY_PARAM_ID *id; /* opaque ID data */
19850 } X509_VERIFY_PARAM;
19851 
19852 struct stack_st_X509_VERIFY_PARAM { _STACK stack; };
19853 
19854 /*
19855  * This is used to hold everything.  It is used for all certificate
19856  * validation.  Once we have a certificate chain, the 'verify' function is
19857  * then called to actually check the cert chain.
19858  */
19859 struct x509_store_st {
19860     /* The following is a cache of trusted certs */
19861     int cache; /* if true, stash any hits */
19862     struct stack_st_X509_OBJECT *objs; /* Cache of all objects */
19863     /* These are external lookup methods */
19864     struct stack_st_X509_LOOKUP *get_cert_methods;
19865     X509_VERIFY_PARAM *param;
19866     /* Callbacks for various operations */
19867     /* called to verify a certificate */
19868     int (*verify) (X509_STORE_CTX *ctx);
19869     /* error callback */
19870     int (*verify_cb) (int ok, X509_STORE_CTX *ctx);
19871     /* get issuers cert from ctx */
19872     int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
19873     /* check issued */
19874     int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
19875     /* Check revocation status of chain */
19876     int (*check_revocation) (X509_STORE_CTX *ctx);
19877     /* retrieve CRL */
19878     int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x);
19879     /* Check CRL validity */
19880     int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl);
19881     /* Check certificate against CRL */
19882     int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
19883     struct stack_st_X509 *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm);
19884     struct stack_st_X509_CRL *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm);
19885     int (*cleanup) (X509_STORE_CTX *ctx);
19886     CRYPTO_EX_DATA ex_data;
19887     int references;
19888 } /* X509_STORE */ ;
19889 
19890 int X509_STORE_set_depth(X509_STORE *store, int depth);
19891 
19892 
19893 
19894 
19895 /* This is the functions plus an instance of the local variables. */
19896 struct x509_lookup_st {
19897     int init; /* have we been started */
19898     int skip; /* don't use us. */
19899     X509_LOOKUP_METHOD *method; /* the functions */
19900     char *method_data; /* method data */
19901     X509_STORE *store_ctx; /* who owns us */
19902 } /* X509_LOOKUP */ ;
19903 
19904 /*
19905  * This is a used when verifying cert chains.  Since the gathering of the
19906  * cert chain can take some time (and have to be 'retried', this needs to be
19907  * kept and passed around.
19908  */
19909 struct x509_store_ctx_st { /* X509_STORE_CTX */
19910     X509_STORE *ctx;
19911     /* used when looking up certs */
19912     int current_method;
19913     /* The following are set by the caller */
19914     /* The cert to check */
19915     X509 *cert;
19916     /* chain of X509s - untrusted - passed in */
19917     struct stack_st_X509 *untrusted;
19918     /* set of CRLs passed in */
19919     struct stack_st_X509_CRL *crls;
19920     X509_VERIFY_PARAM *param;
19921     /* Other info for use with get_issuer() */
19922     void *other_ctx;
19923     /* Callbacks for various operations */
19924     /* called to verify a certificate */
19925     int (*verify) (X509_STORE_CTX *ctx);
19926     /* error callback */
19927     int (*verify_cb) (int ok, X509_STORE_CTX *ctx);
19928     /* get issuers cert from ctx */
19929     int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
19930     /* check issued */
19931     int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
19932     /* Check revocation status of chain */
19933     int (*check_revocation) (X509_STORE_CTX *ctx);
19934     /* retrieve CRL */
19935     int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x);
19936     /* Check CRL validity */
19937     int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl);
19938     /* Check certificate against CRL */
19939     int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
19940     int (*check_policy) (X509_STORE_CTX *ctx);
19941     struct stack_st_X509 *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm);
19942     struct stack_st_X509_CRL *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm);
19943     int (*cleanup) (X509_STORE_CTX *ctx);
19944     /* The following is built up */
19945     /* if 0, rebuild chain */
19946     int valid;
19947     /* index of last untrusted cert */
19948     int last_untrusted;
19949     /* chain of X509s - built up and trusted */
19950     struct stack_st_X509 *chain;
19951     /* Valid policy tree */
19952     X509_POLICY_TREE *tree;
19953     /* Require explicit policy value */
19954     int explicit_policy;
19955     /* When something goes wrong, this is why */
19956     int error_depth;
19957     int error;
19958     X509 *current_cert;
19959     /* cert currently being tested as valid issuer */
19960     X509 *current_issuer;
19961     /* current CRL */
19962     X509_CRL *current_crl;
19963     /* score of current CRL */
19964     int current_crl_score;
19965     /* Reason mask */
19966     unsigned int current_reasons;
19967     /* For CRL path validation: parent context */
19968     X509_STORE_CTX *parent;
19969     CRYPTO_EX_DATA ex_data;
19970 } /* X509_STORE_CTX */ ;
19971 
19972 void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
19973 # 345 "/usr/include/openssl/x509_vfy.h" 3 4
19974 /* These are 'informational' when looking for issuer cert */
19975 # 377 "/usr/include/openssl/x509_vfy.h" 3 4
19976 /* Suite B mode algorithm violation */
19977 
19978 
19979 
19980 
19981 
19982 
19983 
19984 /* Host, email and IP check errors */
19985 
19986 
19987 
19988 
19989 /* Caller error */
19990 
19991 /* Issuer lookup error */
19992 
19993 
19994 
19995 
19996 /* Certificate verify flags */
19997 
19998 /* Send issuer+subject checks to verify_cb */
19999 
20000 /* Use check time instead of current time */
20001 
20002 /* Lookup CRLs */
20003 
20004 /* Lookup CRLs for whole chain */
20005 
20006 /* Ignore unhandled critical extensions */
20007 
20008 /* Disable workarounds for broken certificates */
20009 
20010 /* Enable proxy certificate validation */
20011 
20012 /* Enable policy checking */
20013 
20014 /* Policy variable require-explicit-policy */
20015 
20016 /* Policy variable inhibit-any-policy */
20017 
20018 /* Policy variable inhibit-policy-mapping */
20019 
20020 /* Notify callback that policy is OK */
20021 
20022 /* Extended CRL features such as indirect CRLs, alternate CRL signing keys */
20023 
20024 /* Delta CRL support */
20025 
20026 /* Check selfsigned CA signature */
20027 
20028 /* Use trusted store first */
20029 
20030 /* Suite B 128 bit only mode: not normally used */
20031 
20032 /* Suite B 192 bit only mode */
20033 
20034 /* Suite B 128 bit mode allowing 192 bit algorithms */
20035 
20036 
20037 /* Allow partial chains if at least one certificate is in trusted store */
20038 
20039 /*
20040  * If the initial chain is not trusted, do not attempt to build an alternative
20041  * chain. Alternate chain checking was introduced in 1.0.2b. Setting this flag
20042  * will force the behaviour to match that of previous versions.
20043  */
20044 # 453 "/usr/include/openssl/x509_vfy.h" 3 4
20045 /* Internal use: mask of policy related options */
20046 
20047 
20048 
20049 
20050 
20051 int X509_OBJECT_idx_by_subject(struct stack_st_X509_OBJECT *h, int type,
20052                                X509_NAME *name);
20053 X509_OBJECT *X509_OBJECT_retrieve_by_subject(struct stack_st_X509_OBJECT *h,
20054                                              int type, X509_NAME *name);
20055 X509_OBJECT *X509_OBJECT_retrieve_match(struct stack_st_X509_OBJECT *h,
20056                                         X509_OBJECT *x);
20057 void X509_OBJECT_up_ref_count(X509_OBJECT *a);
20058 void X509_OBJECT_free_contents(X509_OBJECT *a);
20059 X509_STORE *X509_STORE_new(void);
20060 void X509_STORE_free(X509_STORE *v);
20061 
20062 struct stack_st_X509 *X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm);
20063 struct stack_st_X509_CRL *X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm);
20064 int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags);
20065 int X509_STORE_set_purpose(X509_STORE *ctx, int purpose);
20066 int X509_STORE_set_trust(X509_STORE *ctx, int trust);
20067 int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm);
20068 
20069 void X509_STORE_set_verify_cb(X509_STORE *ctx,
20070                               int (*verify_cb) (int, X509_STORE_CTX *));
20071 
20072 void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx,
20073                                    struct stack_st_X509_CRL *(*cb) (X509_STORE_CTX
20074                                                               *ctx,
20075                                                               X509_NAME *nm));
20076 
20077 X509_STORE_CTX *X509_STORE_CTX_new(void);
20078 
20079 int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
20080 
20081 void X509_STORE_CTX_free(X509_STORE_CTX *ctx);
20082 int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store,
20083                         X509 *x509, struct stack_st_X509 *chain);
20084 void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, struct stack_st_X509 *sk);
20085 void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx);
20086 
20087 X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx);
20088 
20089 X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
20090 
20091 X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
20092 X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
20093 
20094 int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
20095 int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);
20096 
20097 int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name,
20098                               X509_OBJECT *ret);
20099 
20100 int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
20101                      long argl, char **ret);
20102 
20103 
20104 int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type);
20105 int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type);
20106 int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type);
20107 
20108 
20109 X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method);
20110 void X509_LOOKUP_free(X509_LOOKUP *ctx);
20111 int X509_LOOKUP_init(X509_LOOKUP *ctx);
20112 int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name,
20113                            X509_OBJECT *ret);
20114 int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name,
20115                                  ASN1_INTEGER *serial, X509_OBJECT *ret);
20116 int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type,
20117                                unsigned char *bytes, int len,
20118                                X509_OBJECT *ret);
20119 int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len,
20120                          X509_OBJECT *ret);
20121 int X509_LOOKUP_shutdown(X509_LOOKUP *ctx);
20122 
20123 
20124 int X509_STORE_load_locations(X509_STORE *ctx,
20125                               const char *file, const char *dir);
20126 int X509_STORE_set_default_paths(X509_STORE *ctx);
20127 
20128 
20129 int X509_STORE_CTX_get_ex_new_index(long argl, void *argp,
20130                                     CRYPTO_EX_new *new_func,
20131                                     CRYPTO_EX_dup *dup_func,
20132                                     CRYPTO_EX_free *free_func);
20133 int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data);
20134 void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx);
20135 int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
20136 void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s);
20137 int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
20138 X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
20139 X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx);
20140 X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx);
20141 X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx);
20142 struct stack_st_X509 *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
20143 struct stack_st_X509 *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx);
20144 void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x);
20145 void X509_STORE_CTX_set_chain(X509_STORE_CTX *c, struct stack_st_X509 *sk);
20146 void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, struct stack_st_X509_CRL *sk);
20147 int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose);
20148 int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust);
20149 int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose,
20150                                    int purpose, int trust);
20151 void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags);
20152 void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags,
20153                              time_t t);
20154 void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx,
20155                                   int (*verify_cb) (int, X509_STORE_CTX *));
20156 
20157 X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx);
20158 int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx);
20159 
20160 X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx);
20161 void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param);
20162 int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name);
20163 
20164 /* X509_VERIFY_PARAM functions */
20165 
20166 X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void);
20167 void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param);
20168 int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to,
20169                               const X509_VERIFY_PARAM *from);
20170 int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to,
20171                            const X509_VERIFY_PARAM *from);
20172 int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name);
20173 int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param,
20174                                 unsigned long flags);
20175 int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param,
20176                                   unsigned long flags);
20177 unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param);
20178 int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose);
20179 int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust);
20180 void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth);
20181 void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t);
20182 int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param,
20183                                   ASN1_OBJECT *policy);
20184 int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param,
20185                                     struct stack_st_ASN1_OBJECT *policies);
20186 
20187 int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param,
20188                                 const char *name, size_t namelen);
20189 int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param,
20190                                 const char *name, size_t namelen);
20191 void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param,
20192                                      unsigned int flags);
20193 char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *);
20194 int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param,
20195                                  const char *email, size_t emaillen);
20196 int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param,
20197                               const unsigned char *ip, size_t iplen);
20198 int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param,
20199                                   const char *ipasc);
20200 
20201 int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param);
20202 const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param);
20203 
20204 int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param);
20205 int X509_VERIFY_PARAM_get_count(void);
20206 const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id);
20207 const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name);
20208 void X509_VERIFY_PARAM_table_cleanup(void);
20209 
20210 int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy,
20211                       struct stack_st_X509 *certs,
20212                       struct stack_st_ASN1_OBJECT *policy_oids, unsigned int flags);
20213 
20214 void X509_policy_tree_free(X509_POLICY_TREE *tree);
20215 
20216 int X509_policy_tree_level_count(const X509_POLICY_TREE *tree);
20217 X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree,
20218                                                int i);
20219 
20220 struct stack_st_X509_POLICY_NODE *X509_policy_tree_get0_policies(const
20221                                                            X509_POLICY_TREE
20222                                                            *tree);
20223 
20224 struct stack_st_X509_POLICY_NODE *X509_policy_tree_get0_user_policies(const
20225                                                                 X509_POLICY_TREE
20226                                                                 *tree);
20227 
20228 int X509_policy_level_node_count(X509_POLICY_LEVEL *level);
20229 
20230 X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level,
20231                                               int i);
20232 
20233 const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node);
20234 
20235 struct stack_st_POLICYQUALINFO *X509_policy_node_get0_qualifiers(const
20236                                                            X509_POLICY_NODE
20237                                                            *node);
20238 const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE
20239                                                      *node);
20240 # 582 "/usr/include/openssl/x509.h" 2 3 4
20241 # 1 "/usr/include/openssl/pkcs7.h" 1 3 4
20242 /* crypto/pkcs7/pkcs7.h */
20243 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
20244  * All rights reserved.
20245  *
20246  * This package is an SSL implementation written
20247  * by Eric Young (eay@cryptsoft.com).
20248  * The implementation was written so as to conform with Netscapes SSL.
20249  *
20250  * This library is free for commercial and non-commercial use as long as
20251  * the following conditions are aheared to.  The following conditions
20252  * apply to all code found in this distribution, be it the RC4, RSA,
20253  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
20254  * included with this distribution is covered by the same copyright terms
20255  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
20256  *
20257  * Copyright remains Eric Young's, and as such any Copyright notices in
20258  * the code are not to be removed.
20259  * If this package is used in a product, Eric Young should be given attribution
20260  * as the author of the parts of the library used.
20261  * This can be in the form of a textual message at program startup or
20262  * in documentation (online or textual) provided with the package.
20263  *
20264  * Redistribution and use in source and binary forms, with or without
20265  * modification, are permitted provided that the following conditions
20266  * are met:
20267  * 1. Redistributions of source code must retain the copyright
20268  *    notice, this list of conditions and the following disclaimer.
20269  * 2. Redistributions in binary form must reproduce the above copyright
20270  *    notice, this list of conditions and the following disclaimer in the
20271  *    documentation and/or other materials provided with the distribution.
20272  * 3. All advertising materials mentioning features or use of this software
20273  *    must display the following acknowledgement:
20274  *    "This product includes cryptographic software written by
20275  *     Eric Young (eay@cryptsoft.com)"
20276  *    The word 'cryptographic' can be left out if the rouines from the library
20277  *    being used are not cryptographic related :-).
20278  * 4. If you include any Windows specific code (or a derivative thereof) from
20279  *    the apps directory (application code) you must include an acknowledgement:
20280  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
20281  *
20282  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
20283  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20284  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20285  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20286  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20287  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20288  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20289  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20290  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20291  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
20292  * SUCH DAMAGE.
20293  *
20294  * The licence and distribution terms for any publically available version or
20295  * derivative of this code cannot be changed.  i.e. this code cannot simply be
20296  * copied and put under another distribution licence
20297  * [including the GNU Public Licence.]
20298  */
20299 
20300 
20301 
20302 
20303 # 1 "/usr/include/openssl/asn1.h" 1 3 4
20304 /* crypto/asn1/asn1.h */
20305 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
20306  * All rights reserved.
20307  *
20308  * This package is an SSL implementation written
20309  * by Eric Young (eay@cryptsoft.com).
20310  * The implementation was written so as to conform with Netscapes SSL.
20311  *
20312  * This library is free for commercial and non-commercial use as long as
20313  * the following conditions are aheared to.  The following conditions
20314  * apply to all code found in this distribution, be it the RC4, RSA,
20315  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
20316  * included with this distribution is covered by the same copyright terms
20317  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
20318  *
20319  * Copyright remains Eric Young's, and as such any Copyright notices in
20320  * the code are not to be removed.
20321  * If this package is used in a product, Eric Young should be given attribution
20322  * as the author of the parts of the library used.
20323  * This can be in the form of a textual message at program startup or
20324  * in documentation (online or textual) provided with the package.
20325  *
20326  * Redistribution and use in source and binary forms, with or without
20327  * modification, are permitted provided that the following conditions
20328  * are met:
20329  * 1. Redistributions of source code must retain the copyright
20330  *    notice, this list of conditions and the following disclaimer.
20331  * 2. Redistributions in binary form must reproduce the above copyright
20332  *    notice, this list of conditions and the following disclaimer in the
20333  *    documentation and/or other materials provided with the distribution.
20334  * 3. All advertising materials mentioning features or use of this software
20335  *    must display the following acknowledgement:
20336  *    "This product includes cryptographic software written by
20337  *     Eric Young (eay@cryptsoft.com)"
20338  *    The word 'cryptographic' can be left out if the rouines from the library
20339  *    being used are not cryptographic related :-).
20340  * 4. If you include any Windows specific code (or a derivative thereof) from
20341  *    the apps directory (application code) you must include an acknowledgement:
20342  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
20343  *
20344  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
20345  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20346  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20347  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20348  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20349  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20350  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20351  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20352  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20353  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
20354  * SUCH DAMAGE.
20355  *
20356  * The licence and distribution terms for any publically available version or
20357  * derivative of this code cannot be changed.  i.e. this code cannot simply be
20358  * copied and put under another distribution licence
20359  * [including the GNU Public Licence.]
20360  */
20361 # 63 "/usr/include/openssl/pkcs7.h" 2 3 4
20362 # 1 "/usr/include/openssl/bio.h" 1 3 4
20363 /* crypto/bio/bio.h */
20364 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
20365  * All rights reserved.
20366  *
20367  * This package is an SSL implementation written
20368  * by Eric Young (eay@cryptsoft.com).
20369  * The implementation was written so as to conform with Netscapes SSL.
20370  *
20371  * This library is free for commercial and non-commercial use as long as
20372  * the following conditions are aheared to.  The following conditions
20373  * apply to all code found in this distribution, be it the RC4, RSA,
20374  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
20375  * included with this distribution is covered by the same copyright terms
20376  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
20377  *
20378  * Copyright remains Eric Young's, and as such any Copyright notices in
20379  * the code are not to be removed.
20380  * If this package is used in a product, Eric Young should be given attribution
20381  * as the author of the parts of the library used.
20382  * This can be in the form of a textual message at program startup or
20383  * in documentation (online or textual) provided with the package.
20384  *
20385  * Redistribution and use in source and binary forms, with or without
20386  * modification, are permitted provided that the following conditions
20387  * are met:
20388  * 1. Redistributions of source code must retain the copyright
20389  *    notice, this list of conditions and the following disclaimer.
20390  * 2. Redistributions in binary form must reproduce the above copyright
20391  *    notice, this list of conditions and the following disclaimer in the
20392  *    documentation and/or other materials provided with the distribution.
20393  * 3. All advertising materials mentioning features or use of this software
20394  *    must display the following acknowledgement:
20395  *    "This product includes cryptographic software written by
20396  *     Eric Young (eay@cryptsoft.com)"
20397  *    The word 'cryptographic' can be left out if the rouines from the library
20398  *    being used are not cryptographic related :-).
20399  * 4. If you include any Windows specific code (or a derivative thereof) from
20400  *    the apps directory (application code) you must include an acknowledgement:
20401  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
20402  *
20403  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
20404  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20405  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20406  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20407  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20408  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20409  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20410  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20411  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20412  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
20413  * SUCH DAMAGE.
20414  *
20415  * The licence and distribution terms for any publically available version or
20416  * derivative of this code cannot be changed.  i.e. this code cannot simply be
20417  * copied and put under another distribution licence
20418  * [including the GNU Public Licence.]
20419  */
20420 # 64 "/usr/include/openssl/pkcs7.h" 2 3 4
20421 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
20422 /* e_os2.h */
20423 /* ====================================================================
20424  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
20425  *
20426  * Redistribution and use in source and binary forms, with or without
20427  * modification, are permitted provided that the following conditions
20428  * are met:
20429  *
20430  * 1. Redistributions of source code must retain the above copyright
20431  *    notice, this list of conditions and the following disclaimer.
20432  *
20433  * 2. Redistributions in binary form must reproduce the above copyright
20434  *    notice, this list of conditions and the following disclaimer in
20435  *    the documentation and/or other materials provided with the
20436  *    distribution.
20437  *
20438  * 3. All advertising materials mentioning features or use of this
20439  *    software must display the following acknowledgment:
20440  *    "This product includes software developed by the OpenSSL Project
20441  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20442  *
20443  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
20444  *    endorse or promote products derived from this software without
20445  *    prior written permission. For written permission, please contact
20446  *    openssl-core@openssl.org.
20447  *
20448  * 5. Products derived from this software may not be called "OpenSSL"
20449  *    nor may "OpenSSL" appear in their names without prior written
20450  *    permission of the OpenSSL Project.
20451  *
20452  * 6. Redistributions of any form whatsoever must retain the following
20453  *    acknowledgment:
20454  *    "This product includes software developed by the OpenSSL Project
20455  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
20456  *
20457  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
20458  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20459  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20460  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
20461  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20462  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20463  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20464  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20465  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
20466  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20467  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20468  * OF THE POSSIBILITY OF SUCH DAMAGE.
20469  * ====================================================================
20470  *
20471  * This product includes cryptographic software written by Eric Young
20472  * (eay@cryptsoft.com).  This product includes software written by Tim
20473  * Hudson (tjh@cryptsoft.com).
20474  *
20475  */
20476 
20477 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
20478 /* opensslconf.h */
20479 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
20480 
20481 
20482 
20483 
20484 /* OpenSSL was configured with the following options: */
20485 # 108 "/usr/include/openssl/opensslconf.h" 3 4
20486 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
20487    asks for it.  This is a transient feature that is provided for those
20488    who haven't had the time to do the appropriate changes in their
20489    applications.  */
20490 # 204 "/usr/include/openssl/opensslconf.h" 3 4
20491 /* crypto/opensslconf.h.in */
20492 
20493 /* Generate 80386 code? */
20494 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
20495 # 65 "/usr/include/openssl/pkcs7.h" 2 3 4
20496 
20497 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
20498 /* ====================================================================
20499  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
20500  *
20501  * Redistribution and use in source and binary forms, with or without
20502  * modification, are permitted provided that the following conditions
20503  * are met:
20504  *
20505  * 1. Redistributions of source code must retain the above copyright
20506  *    notice, this list of conditions and the following disclaimer.
20507  *
20508  * 2. Redistributions in binary form must reproduce the above copyright
20509  *    notice, this list of conditions and the following disclaimer in
20510  *    the documentation and/or other materials provided with the
20511  *    distribution.
20512  *
20513  * 3. All advertising materials mentioning features or use of this
20514  *    software must display the following acknowledgment:
20515  *    "This product includes software developed by the OpenSSL Project
20516  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20517  *
20518  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
20519  *    endorse or promote products derived from this software without
20520  *    prior written permission. For written permission, please contact
20521  *    openssl-core@openssl.org.
20522  *
20523  * 5. Products derived from this software may not be called "OpenSSL"
20524  *    nor may "OpenSSL" appear in their names without prior written
20525  *    permission of the OpenSSL Project.
20526  *
20527  * 6. Redistributions of any form whatsoever must retain the following
20528  *    acknowledgment:
20529  *    "This product includes software developed by the OpenSSL Project
20530  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
20531  *
20532  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
20533  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20534  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20535  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
20536  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20537  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20538  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20539  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20540  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
20541  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20542  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20543  * OF THE POSSIBILITY OF SUCH DAMAGE.
20544  * ====================================================================
20545  *
20546  * This product includes cryptographic software written by Eric Young
20547  * (eay@cryptsoft.com).  This product includes software written by Tim
20548  * Hudson (tjh@cryptsoft.com).
20549  *
20550  */
20551 # 67 "/usr/include/openssl/pkcs7.h" 2 3 4
20552 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
20553 /* ====================================================================
20554  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
20555  *
20556  * Redistribution and use in source and binary forms, with or without
20557  * modification, are permitted provided that the following conditions
20558  * are met:
20559  *
20560  * 1. Redistributions of source code must retain the above copyright
20561  *    notice, this list of conditions and the following disclaimer.
20562  *
20563  * 2. Redistributions in binary form must reproduce the above copyright
20564  *    notice, this list of conditions and the following disclaimer in
20565  *    the documentation and/or other materials provided with the
20566  *    distribution.
20567  *
20568  * 3. All advertising materials mentioning features or use of this
20569  *    software must display the following acknowledgment:
20570  *    "This product includes software developed by the OpenSSL Project
20571  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20572  *
20573  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
20574  *    endorse or promote products derived from this software without
20575  *    prior written permission. For written permission, please contact
20576  *    openssl-core@openssl.org.
20577  *
20578  * 5. Products derived from this software may not be called "OpenSSL"
20579  *    nor may "OpenSSL" appear in their names without prior written
20580  *    permission of the OpenSSL Project.
20581  *
20582  * 6. Redistributions of any form whatsoever must retain the following
20583  *    acknowledgment:
20584  *    "This product includes software developed by the OpenSSL Project
20585  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
20586  *
20587  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
20588  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20589  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20590  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
20591  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20592  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20593  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20594  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20595  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
20596  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20597  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20598  * OF THE POSSIBILITY OF SUCH DAMAGE.
20599  * ====================================================================
20600  *
20601  * This product includes cryptographic software written by Eric Young
20602  * (eay@cryptsoft.com).  This product includes software written by Tim
20603  * Hudson (tjh@cryptsoft.com).
20604  *
20605  */
20606 # 68 "/usr/include/openssl/pkcs7.h" 2 3 4
20607 # 79 "/usr/include/openssl/pkcs7.h" 3 4
20608 /*-
20609 Encryption_ID           DES-CBC
20610 Digest_ID               MD5
20611 Digest_Encryption_ID    rsaEncryption
20612 Key_Encryption_ID       rsaEncryption
20613 */
20614 
20615 typedef struct pkcs7_issuer_and_serial_st {
20616     X509_NAME *issuer;
20617     ASN1_INTEGER *serial;
20618 } PKCS7_ISSUER_AND_SERIAL;
20619 
20620 typedef struct pkcs7_signer_info_st {
20621     ASN1_INTEGER *version; /* version 1 */
20622     PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
20623     X509_ALGOR *digest_alg;
20624     struct stack_st_X509_ATTRIBUTE *auth_attr; /* [ 0 ] */
20625     X509_ALGOR *digest_enc_alg;
20626     ASN1_OCTET_STRING *enc_digest;
20627     struct stack_st_X509_ATTRIBUTE *unauth_attr; /* [ 1 ] */
20628     /* The private key to sign with */
20629     EVP_PKEY *pkey;
20630 } PKCS7_SIGNER_INFO;
20631 
20632 struct stack_st_PKCS7_SIGNER_INFO { _STACK stack; };
20633 
20634 
20635 typedef struct pkcs7_recip_info_st {
20636     ASN1_INTEGER *version; /* version 0 */
20637     PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
20638     X509_ALGOR *key_enc_algor;
20639     ASN1_OCTET_STRING *enc_key;
20640     X509 *cert; /* get the pub-key from this */
20641 } PKCS7_RECIP_INFO;
20642 
20643 struct stack_st_PKCS7_RECIP_INFO { _STACK stack; };
20644 
20645 
20646 typedef struct pkcs7_signed_st {
20647     ASN1_INTEGER *version; /* version 1 */
20648     struct stack_st_X509_ALGOR *md_algs; /* md used */
20649     struct stack_st_X509 *cert; /* [ 0 ] */
20650     struct stack_st_X509_CRL *crl; /* [ 1 ] */
20651     struct stack_st_PKCS7_SIGNER_INFO *signer_info;
20652     struct pkcs7_st *contents;
20653 } PKCS7_SIGNED;
20654 /*
20655  * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about
20656  * merging the two
20657  */
20658 
20659 typedef struct pkcs7_enc_content_st {
20660     ASN1_OBJECT *content_type;
20661     X509_ALGOR *algorithm;
20662     ASN1_OCTET_STRING *enc_data; /* [ 0 ] */
20663     const EVP_CIPHER *cipher;
20664 } PKCS7_ENC_CONTENT;
20665 
20666 typedef struct pkcs7_enveloped_st {
20667     ASN1_INTEGER *version; /* version 0 */
20668     struct stack_st_PKCS7_RECIP_INFO *recipientinfo;
20669     PKCS7_ENC_CONTENT *enc_data;
20670 } PKCS7_ENVELOPE;
20671 
20672 typedef struct pkcs7_signedandenveloped_st {
20673     ASN1_INTEGER *version; /* version 1 */
20674     struct stack_st_X509_ALGOR *md_algs; /* md used */
20675     struct stack_st_X509 *cert; /* [ 0 ] */
20676     struct stack_st_X509_CRL *crl; /* [ 1 ] */
20677     struct stack_st_PKCS7_SIGNER_INFO *signer_info;
20678     PKCS7_ENC_CONTENT *enc_data;
20679     struct stack_st_PKCS7_RECIP_INFO *recipientinfo;
20680 } PKCS7_SIGN_ENVELOPE;
20681 
20682 typedef struct pkcs7_digest_st {
20683     ASN1_INTEGER *version; /* version 0 */
20684     X509_ALGOR *md; /* md used */
20685     struct pkcs7_st *contents;
20686     ASN1_OCTET_STRING *digest;
20687 } PKCS7_DIGEST;
20688 
20689 typedef struct pkcs7_encrypted_st {
20690     ASN1_INTEGER *version; /* version 0 */
20691     PKCS7_ENC_CONTENT *enc_data;
20692 } PKCS7_ENCRYPT;
20693 
20694 typedef struct pkcs7_st {
20695     /*
20696      * The following is non NULL if it contains ASN1 encoding of this
20697      * structure
20698      */
20699     unsigned char *asn1;
20700     long length;
20701 
20702 
20703 
20704     int state; /* used during processing */
20705     int detached;
20706     ASN1_OBJECT *type;
20707     /* content as defined by the type */
20708     /*
20709      * all encryption/message digests are applied to the 'contents', leaving
20710      * out the 'type' field.
20711      */
20712     union {
20713         char *ptr;
20714         /* NID_pkcs7_data */
20715         ASN1_OCTET_STRING *data;
20716         /* NID_pkcs7_signed */
20717         PKCS7_SIGNED *sign;
20718         /* NID_pkcs7_enveloped */
20719         PKCS7_ENVELOPE *enveloped;
20720         /* NID_pkcs7_signedAndEnveloped */
20721         PKCS7_SIGN_ENVELOPE *signed_and_enveloped;
20722         /* NID_pkcs7_digest */
20723         PKCS7_DIGEST *digest;
20724         /* NID_pkcs7_encrypted */
20725         PKCS7_ENCRYPT *encrypted;
20726         /* Anything else */
20727         ASN1_TYPE *other;
20728     } d;
20729 } PKCS7;
20730 
20731 struct stack_st_PKCS7 { _STACK stack; };
20732 
20733 
20734 # 227 "/usr/include/openssl/pkcs7.h" 3 4
20735 /* S/MIME related flags */
20736 # 246 "/usr/include/openssl/pkcs7.h" 3 4
20737 /* Flags: for compatibility with older code */
20738 # 258 "/usr/include/openssl/pkcs7.h" 3 4
20739 PKCS7_ISSUER_AND_SERIAL *PKCS7_ISSUER_AND_SERIAL_new(void); void PKCS7_ISSUER_AND_SERIAL_free(PKCS7_ISSUER_AND_SERIAL *a); PKCS7_ISSUER_AND_SERIAL *d2i_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL **a, const unsigned char **in, long len); int i2d_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL *a, unsigned char **out); extern const ASN1_ITEM PKCS7_ISSUER_AND_SERIAL_it;
20740 
20741 int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,
20742                                    const EVP_MD *type, unsigned char *md,
20743                                    unsigned int *len);
20744 
20745 PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7);
20746 int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7);
20747 
20748 PKCS7 *PKCS7_dup(PKCS7 *p7);
20749 PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7);
20750 int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7);
20751 int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
20752 int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
20753 
20754 PKCS7_SIGNER_INFO *PKCS7_SIGNER_INFO_new(void); void PKCS7_SIGNER_INFO_free(PKCS7_SIGNER_INFO *a); PKCS7_SIGNER_INFO *d2i_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO **a, const unsigned char **in, long len); int i2d_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO *a, unsigned char **out); extern const ASN1_ITEM PKCS7_SIGNER_INFO_it;
20755 PKCS7_RECIP_INFO *PKCS7_RECIP_INFO_new(void); void PKCS7_RECIP_INFO_free(PKCS7_RECIP_INFO *a); PKCS7_RECIP_INFO *d2i_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO **a, const unsigned char **in, long len); int i2d_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO *a, unsigned char **out); extern const ASN1_ITEM PKCS7_RECIP_INFO_it;
20756 PKCS7_SIGNED *PKCS7_SIGNED_new(void); void PKCS7_SIGNED_free(PKCS7_SIGNED *a); PKCS7_SIGNED *d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, const unsigned char **in, long len); int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **out); extern const ASN1_ITEM PKCS7_SIGNED_it;
20757 PKCS7_ENC_CONTENT *PKCS7_ENC_CONTENT_new(void); void PKCS7_ENC_CONTENT_free(PKCS7_ENC_CONTENT *a); PKCS7_ENC_CONTENT *d2i_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT **a, const unsigned char **in, long len); int i2d_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT *a, unsigned char **out); extern const ASN1_ITEM PKCS7_ENC_CONTENT_it;
20758 PKCS7_ENVELOPE *PKCS7_ENVELOPE_new(void); void PKCS7_ENVELOPE_free(PKCS7_ENVELOPE *a); PKCS7_ENVELOPE *d2i_PKCS7_ENVELOPE(PKCS7_ENVELOPE **a, const unsigned char **in, long len); int i2d_PKCS7_ENVELOPE(PKCS7_ENVELOPE *a, unsigned char **out); extern const ASN1_ITEM PKCS7_ENVELOPE_it;
20759 PKCS7_SIGN_ENVELOPE *PKCS7_SIGN_ENVELOPE_new(void); void PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a); PKCS7_SIGN_ENVELOPE *d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a, const unsigned char **in, long len); int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **out); extern const ASN1_ITEM PKCS7_SIGN_ENVELOPE_it;
20760 PKCS7_DIGEST *PKCS7_DIGEST_new(void); void PKCS7_DIGEST_free(PKCS7_DIGEST *a); PKCS7_DIGEST *d2i_PKCS7_DIGEST(PKCS7_DIGEST **a, const unsigned char **in, long len); int i2d_PKCS7_DIGEST(PKCS7_DIGEST *a, unsigned char **out); extern const ASN1_ITEM PKCS7_DIGEST_it;
20761 PKCS7_ENCRYPT *PKCS7_ENCRYPT_new(void); void PKCS7_ENCRYPT_free(PKCS7_ENCRYPT *a); PKCS7_ENCRYPT *d2i_PKCS7_ENCRYPT(PKCS7_ENCRYPT **a, const unsigned char **in, long len); int i2d_PKCS7_ENCRYPT(PKCS7_ENCRYPT *a, unsigned char **out); extern const ASN1_ITEM PKCS7_ENCRYPT_it;
20762 PKCS7 *PKCS7_new(void); void PKCS7_free(PKCS7 *a); PKCS7 *d2i_PKCS7(PKCS7 **a, const unsigned char **in, long len); int i2d_PKCS7(PKCS7 *a, unsigned char **out); extern const ASN1_ITEM PKCS7_it;
20763 
20764 extern const ASN1_ITEM PKCS7_ATTR_SIGN_it;
20765 extern const ASN1_ITEM PKCS7_ATTR_VERIFY_it;
20766 
20767 int i2d_PKCS7_NDEF(PKCS7 *a, unsigned char **out);
20768 int PKCS7_print_ctx(BIO *out, PKCS7 *x, int indent, const ASN1_PCTX *pctx);
20769 
20770 long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
20771 
20772 int PKCS7_set_type(PKCS7 *p7, int type);
20773 int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
20774 int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
20775 int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
20776                           const EVP_MD *dgst);
20777 int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
20778 int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
20779 int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
20780 int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
20781 int PKCS7_content_new(PKCS7 *p7, int nid);
20782 int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
20783                      BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si);
20784 int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
20785                           X509 *x509);
20786 
20787 BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
20788 int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
20789 BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
20790 
20791 PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
20792                                        EVP_PKEY *pkey, const EVP_MD *dgst);
20793 X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
20794 int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
20795 struct stack_st_PKCS7_SIGNER_INFO *PKCS7_get_signer_info(PKCS7 *p7);
20796 
20797 PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
20798 void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
20799                                  X509_ALGOR **pdig, X509_ALGOR **psig);
20800 void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
20801 int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
20802 int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
20803 int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
20804 int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7);
20805 
20806 PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
20807 ASN1_OCTET_STRING *PKCS7_digest_from_attributes(struct stack_st_X509_ATTRIBUTE *sk);
20808 int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type,
20809                                void *data);
20810 int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
20811                         void *value);
20812 ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid);
20813 ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid);
20814 int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
20815                                 struct stack_st_X509_ATTRIBUTE *sk);
20816 int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,
20817                          struct stack_st_X509_ATTRIBUTE *sk);
20818 
20819 PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, struct stack_st_X509 *certs,
20820                   BIO *data, int flags);
20821 
20822 PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
20823                                          X509 *signcert, EVP_PKEY *pkey,
20824                                          const EVP_MD *md, int flags);
20825 
20826 int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
20827 int PKCS7_verify(PKCS7 *p7, struct stack_st_X509 *certs, X509_STORE *store,
20828                  BIO *indata, BIO *out, int flags);
20829 struct stack_st_X509 *PKCS7_get0_signers(PKCS7 *p7, struct stack_st_X509 *certs,
20830                                    int flags);
20831 PKCS7 *PKCS7_encrypt(struct stack_st_X509 *certs, BIO *in, const EVP_CIPHER *cipher,
20832                      int flags);
20833 int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data,
20834                   int flags);
20835 
20836 int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
20837                               struct stack_st_X509_ALGOR *cap);
20838 struct stack_st_X509_ALGOR *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
20839 int PKCS7_simple_smimecap(struct stack_st_X509_ALGOR *sk, int nid, int arg);
20840 
20841 int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
20842 int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
20843 int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
20844                              const unsigned char *md, int mdlen);
20845 
20846 int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
20847 PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
20848 
20849 BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7);
20850 
20851 /* BEGIN ERROR CODES */
20852 /*
20853  * The following lines are auto generated by the script mkerr.pl. Any changes
20854  * made after this point may be overwritten when the script is next run.
20855  */
20856 void ERR_load_PKCS7_strings(void);
20857 
20858 /* Error codes for the PKCS7 functions. */
20859 
20860 /* Function codes. */
20861 # 421 "/usr/include/openssl/pkcs7.h" 3 4
20862 /* Reason codes. */
20863 # 583 "/usr/include/openssl/x509.h" 2 3 4
20864 # 592 "/usr/include/openssl/x509.h" 3 4
20865 /* #define      X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */
20866 # 608 "/usr/include/openssl/x509.h" 3 4
20867 void X509_CRL_set_default_method(const X509_CRL_METHOD *meth);
20868 X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl),
20869                                      int (*crl_free) (X509_CRL *crl),
20870                                      int (*crl_lookup) (X509_CRL *crl,
20871                                                         X509_REVOKED **ret,
20872                                                         ASN1_INTEGER *ser,
20873                                                         X509_NAME *issuer),
20874                                      int (*crl_verify) (X509_CRL *crl,
20875                                                         EVP_PKEY *pk));
20876 void X509_CRL_METHOD_free(X509_CRL_METHOD *m);
20877 
20878 void X509_CRL_set_meth_data(X509_CRL *crl, void *dat);
20879 void *X509_CRL_get_meth_data(X509_CRL *crl);
20880 
20881 /*
20882  * This one is only used so that a binary form can output, as in
20883  * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf)
20884  */
20885 
20886 
20887 const char *X509_verify_cert_error_string(long n);
20888 
20889 
20890 int X509_verify(X509 *a, EVP_PKEY *r);
20891 
20892 int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r);
20893 int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r);
20894 int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r);
20895 
20896 NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len);
20897 char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x);
20898 EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x);
20899 int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);
20900 
20901 int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki);
20902 
20903 int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent);
20904 int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig);
20905 
20906 int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
20907 int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx);
20908 int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert);
20909 int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md);
20910 int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx);
20911 int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md);
20912 int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx);
20913 int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl);
20914 int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md);
20915 
20916 int X509_pubkey_digest(const X509 *data, const EVP_MD *type,
20917                        unsigned char *md, unsigned int *len);
20918 int X509_digest(const X509 *data, const EVP_MD *type,
20919                 unsigned char *md, unsigned int *len);
20920 int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type,
20921                     unsigned char *md, unsigned int *len);
20922 int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type,
20923                     unsigned char *md, unsigned int *len);
20924 int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type,
20925                      unsigned char *md, unsigned int *len);
20926 
20927 
20928 
20929 X509 *d2i_X509_fp(FILE *fp, X509 **x509);
20930 int i2d_X509_fp(FILE *fp, X509 *x509);
20931 X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
20932 int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl);
20933 X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req);
20934 int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req);
20935 
20936 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
20937 int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa);
20938 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
20939 int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa);
20940 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
20941 int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa);
20942 
20943 
20944 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
20945 int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
20946 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
20947 int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
20948 
20949 
20950 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey);
20951 int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey);
20952 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey);
20953 int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey);
20954 
20955 X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8);
20956 int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8);
20957 PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
20958                                                 PKCS8_PRIV_KEY_INFO **p8inf);
20959 int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf);
20960 int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key);
20961 int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
20962 EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
20963 int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
20964 EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
20965 
20966 
20967 
20968 X509 *d2i_X509_bio(BIO *bp, X509 **x509);
20969 int i2d_X509_bio(BIO *bp, X509 *x509);
20970 X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl);
20971 int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl);
20972 X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req);
20973 int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req);
20974 
20975 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
20976 int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa);
20977 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
20978 int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa);
20979 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
20980 int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa);
20981 
20982 
20983 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
20984 int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa);
20985 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa);
20986 int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa);
20987 
20988 
20989 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey);
20990 int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey);
20991 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey);
20992 int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey);
20993 
20994 X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8);
20995 int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8);
20996 PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
20997                                                  PKCS8_PRIV_KEY_INFO **p8inf);
20998 int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf);
20999 int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key);
21000 int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey);
21001 EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
21002 int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey);
21003 EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a);
21004 
21005 
21006 X509 *X509_dup(X509 *x509);
21007 X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa);
21008 X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex);
21009 X509_CRL *X509_CRL_dup(X509_CRL *crl);
21010 X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
21011 X509_REQ *X509_REQ_dup(X509_REQ *req);
21012 X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
21013 int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype,
21014                     void *pval);
21015 void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval,
21016                      X509_ALGOR *algor);
21017 void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
21018 int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);
21019 
21020 X509_NAME *X509_NAME_dup(X509_NAME *xn);
21021 X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
21022 
21023 int X509_cmp_time(const ASN1_TIME *s, time_t *t);
21024 int X509_cmp_current_time(const ASN1_TIME *s);
21025 ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
21026 ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s,
21027                             int offset_day, long offset_sec, time_t *t);
21028 ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);
21029 
21030 const char *X509_get_default_cert_area(void);
21031 const char *X509_get_default_cert_dir(void);
21032 const char *X509_get_default_cert_file(void);
21033 const char *X509_get_default_cert_dir_env(void);
21034 const char *X509_get_default_cert_file_env(void);
21035 const char *X509_get_default_private_dir(void);
21036 
21037 X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
21038 X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey);
21039 
21040 X509_ALGOR *X509_ALGOR_new(void); void X509_ALGOR_free(X509_ALGOR *a); X509_ALGOR *d2i_X509_ALGOR(X509_ALGOR **a, const unsigned char **in, long len); int i2d_X509_ALGOR(X509_ALGOR *a, unsigned char **out); extern const ASN1_ITEM X509_ALGOR_it;
21041 X509_ALGORS *d2i_X509_ALGORS(X509_ALGORS **a, const unsigned char **in, long len); int i2d_X509_ALGORS(X509_ALGORS *a, unsigned char **out); extern const ASN1_ITEM X509_ALGORS_it;
21042 X509_VAL *X509_VAL_new(void); void X509_VAL_free(X509_VAL *a); X509_VAL *d2i_X509_VAL(X509_VAL **a, const unsigned char **in, long len); int i2d_X509_VAL(X509_VAL *a, unsigned char **out); extern const ASN1_ITEM X509_VAL_it;
21043 
21044 X509_PUBKEY *X509_PUBKEY_new(void); void X509_PUBKEY_free(X509_PUBKEY *a); X509_PUBKEY *d2i_X509_PUBKEY(X509_PUBKEY **a, const unsigned char **in, long len); int i2d_X509_PUBKEY(X509_PUBKEY *a, unsigned char **out); extern const ASN1_ITEM X509_PUBKEY_it;
21045 
21046 int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
21047 EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key);
21048 int X509_get_pubkey_parameters(EVP_PKEY *pkey, struct stack_st_X509 *chain);
21049 int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp);
21050 EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length);
21051 
21052 int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp);
21053 RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length);
21054 
21055 
21056 int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp);
21057 DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length);
21058 
21059 
21060 int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp);
21061 EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length);
21062 
21063 
21064 X509_SIG *X509_SIG_new(void); void X509_SIG_free(X509_SIG *a); X509_SIG *d2i_X509_SIG(X509_SIG **a, const unsigned char **in, long len); int i2d_X509_SIG(X509_SIG *a, unsigned char **out); extern const ASN1_ITEM X509_SIG_it;
21065 X509_REQ_INFO *X509_REQ_INFO_new(void); void X509_REQ_INFO_free(X509_REQ_INFO *a); X509_REQ_INFO *d2i_X509_REQ_INFO(X509_REQ_INFO **a, const unsigned char **in, long len); int i2d_X509_REQ_INFO(X509_REQ_INFO *a, unsigned char **out); extern const ASN1_ITEM X509_REQ_INFO_it;
21066 X509_REQ *X509_REQ_new(void); void X509_REQ_free(X509_REQ *a); X509_REQ *d2i_X509_REQ(X509_REQ **a, const unsigned char **in, long len); int i2d_X509_REQ(X509_REQ *a, unsigned char **out); extern const ASN1_ITEM X509_REQ_it;
21067 
21068 X509_ATTRIBUTE *X509_ATTRIBUTE_new(void); void X509_ATTRIBUTE_free(X509_ATTRIBUTE *a); X509_ATTRIBUTE *d2i_X509_ATTRIBUTE(X509_ATTRIBUTE **a, const unsigned char **in, long len); int i2d_X509_ATTRIBUTE(X509_ATTRIBUTE *a, unsigned char **out); extern const ASN1_ITEM X509_ATTRIBUTE_it;
21069 X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value);
21070 
21071 X509_EXTENSION *X509_EXTENSION_new(void); void X509_EXTENSION_free(X509_EXTENSION *a); X509_EXTENSION *d2i_X509_EXTENSION(X509_EXTENSION **a, const unsigned char **in, long len); int i2d_X509_EXTENSION(X509_EXTENSION *a, unsigned char **out); extern const ASN1_ITEM X509_EXTENSION_it;
21072 X509_EXTENSIONS *d2i_X509_EXTENSIONS(X509_EXTENSIONS **a, const unsigned char **in, long len); int i2d_X509_EXTENSIONS(X509_EXTENSIONS *a, unsigned char **out); extern const ASN1_ITEM X509_EXTENSIONS_it;
21073 
21074 X509_NAME_ENTRY *X509_NAME_ENTRY_new(void); void X509_NAME_ENTRY_free(X509_NAME_ENTRY *a); X509_NAME_ENTRY *d2i_X509_NAME_ENTRY(X509_NAME_ENTRY **a, const unsigned char **in, long len); int i2d_X509_NAME_ENTRY(X509_NAME_ENTRY *a, unsigned char **out); extern const ASN1_ITEM X509_NAME_ENTRY_it;
21075 
21076 X509_NAME *X509_NAME_new(void); void X509_NAME_free(X509_NAME *a); X509_NAME *d2i_X509_NAME(X509_NAME **a, const unsigned char **in, long len); int i2d_X509_NAME(X509_NAME *a, unsigned char **out); extern const ASN1_ITEM X509_NAME_it;
21077 
21078 int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
21079 
21080 X509_CINF *X509_CINF_new(void); void X509_CINF_free(X509_CINF *a); X509_CINF *d2i_X509_CINF(X509_CINF **a, const unsigned char **in, long len); int i2d_X509_CINF(X509_CINF *a, unsigned char **out); extern const ASN1_ITEM X509_CINF_it;
21081 
21082 X509 *X509_new(void); void X509_free(X509 *a); X509 *d2i_X509(X509 **a, const unsigned char **in, long len); int i2d_X509(X509 *a, unsigned char **out); extern const ASN1_ITEM X509_it;
21083 X509_CERT_AUX *X509_CERT_AUX_new(void); void X509_CERT_AUX_free(X509_CERT_AUX *a); X509_CERT_AUX *d2i_X509_CERT_AUX(X509_CERT_AUX **a, const unsigned char **in, long len); int i2d_X509_CERT_AUX(X509_CERT_AUX *a, unsigned char **out); extern const ASN1_ITEM X509_CERT_AUX_it;
21084 
21085 X509_CERT_PAIR *X509_CERT_PAIR_new(void); void X509_CERT_PAIR_free(X509_CERT_PAIR *a); X509_CERT_PAIR *d2i_X509_CERT_PAIR(X509_CERT_PAIR **a, const unsigned char **in, long len); int i2d_X509_CERT_PAIR(X509_CERT_PAIR *a, unsigned char **out); extern const ASN1_ITEM X509_CERT_PAIR_it;
21086 
21087 int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
21088                           CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
21089 int X509_set_ex_data(X509 *r, int idx, void *arg);
21090 void *X509_get_ex_data(X509 *r, int idx);
21091 int i2d_X509_AUX(X509 *a, unsigned char **pp);
21092 X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length);
21093 
21094 int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
21095 
21096 void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg,
21097                          const X509 *x);
21098 int X509_get_signature_nid(const X509 *x);
21099 
21100 int X509_alias_set1(X509 *x, unsigned char *name, int len);
21101 int X509_keyid_set1(X509 *x, unsigned char *id, int len);
21102 unsigned char *X509_alias_get0(X509 *x, int *len);
21103 unsigned char *X509_keyid_get0(X509 *x, int *len);
21104 int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *,
21105                                                                 int);
21106 int X509_TRUST_set(int *t, int trust);
21107 int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj);
21108 int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj);
21109 void X509_trust_clear(X509 *x);
21110 void X509_reject_clear(X509 *x);
21111 
21112 X509_REVOKED *X509_REVOKED_new(void); void X509_REVOKED_free(X509_REVOKED *a); X509_REVOKED *d2i_X509_REVOKED(X509_REVOKED **a, const unsigned char **in, long len); int i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **out); extern const ASN1_ITEM X509_REVOKED_it;
21113 X509_CRL_INFO *X509_CRL_INFO_new(void); void X509_CRL_INFO_free(X509_CRL_INFO *a); X509_CRL_INFO *d2i_X509_CRL_INFO(X509_CRL_INFO **a, const unsigned char **in, long len); int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **out); extern const ASN1_ITEM X509_CRL_INFO_it;
21114 X509_CRL *X509_CRL_new(void); void X509_CRL_free(X509_CRL *a); X509_CRL *d2i_X509_CRL(X509_CRL **a, const unsigned char **in, long len); int i2d_X509_CRL(X509_CRL *a, unsigned char **out); extern const ASN1_ITEM X509_CRL_it;
21115 
21116 int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
21117 int X509_CRL_get0_by_serial(X509_CRL *crl,
21118                             X509_REVOKED **ret, ASN1_INTEGER *serial);
21119 int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x);
21120 
21121 X509_PKEY *X509_PKEY_new(void);
21122 void X509_PKEY_free(X509_PKEY *a);
21123 int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp);
21124 X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp,
21125                          long length);
21126 
21127 NETSCAPE_SPKI *NETSCAPE_SPKI_new(void); void NETSCAPE_SPKI_free(NETSCAPE_SPKI *a); NETSCAPE_SPKI *d2i_NETSCAPE_SPKI(NETSCAPE_SPKI **a, const unsigned char **in, long len); int i2d_NETSCAPE_SPKI(NETSCAPE_SPKI *a, unsigned char **out); extern const ASN1_ITEM NETSCAPE_SPKI_it;
21128 NETSCAPE_SPKAC *NETSCAPE_SPKAC_new(void); void NETSCAPE_SPKAC_free(NETSCAPE_SPKAC *a); NETSCAPE_SPKAC *d2i_NETSCAPE_SPKAC(NETSCAPE_SPKAC **a, const unsigned char **in, long len); int i2d_NETSCAPE_SPKAC(NETSCAPE_SPKAC *a, unsigned char **out); extern const ASN1_ITEM NETSCAPE_SPKAC_it;
21129 NETSCAPE_CERT_SEQUENCE *NETSCAPE_CERT_SEQUENCE_new(void); void NETSCAPE_CERT_SEQUENCE_free(NETSCAPE_CERT_SEQUENCE *a); NETSCAPE_CERT_SEQUENCE *d2i_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE **a, const unsigned char **in, long len); int i2d_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE *a, unsigned char **out); extern const ASN1_ITEM NETSCAPE_CERT_SEQUENCE_it;
21130 
21131 
21132 X509_INFO *X509_INFO_new(void);
21133 void X509_INFO_free(X509_INFO *a);
21134 char *X509_NAME_oneline(X509_NAME *a, char *buf, int size);
21135 
21136 int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1,
21137                 ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey);
21138 
21139 int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data,
21140                 unsigned char *md, unsigned int *len);
21141 
21142 int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1,
21143               X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
21144               char *data, EVP_PKEY *pkey, const EVP_MD *type);
21145 
21146 int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data,
21147                      unsigned char *md, unsigned int *len);
21148 
21149 int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,
21150                      ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey);
21151 
21152 int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1,
21153                    X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data,
21154                    EVP_PKEY *pkey, const EVP_MD *type);
21155 int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
21156                        X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
21157                        void *asn, EVP_MD_CTX *ctx);
21158 
21159 
21160 int X509_set_version(X509 *x, long version);
21161 int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
21162 ASN1_INTEGER *X509_get_serialNumber(X509 *x);
21163 int X509_set_issuer_name(X509 *x, X509_NAME *name);
21164 X509_NAME *X509_get_issuer_name(X509 *a);
21165 int X509_set_subject_name(X509 *x, X509_NAME *name);
21166 X509_NAME *X509_get_subject_name(X509 *a);
21167 int X509_set_notBefore(X509 *x, const ASN1_TIME *tm);
21168 int X509_set_notAfter(X509 *x, const ASN1_TIME *tm);
21169 int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
21170 EVP_PKEY *X509_get_pubkey(X509 *x);
21171 ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x);
21172 int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ );
21173 
21174 int X509_REQ_set_version(X509_REQ *x, long version);
21175 int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name);
21176 int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
21177 EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
21178 int X509_REQ_extension_nid(int nid);
21179 int *X509_REQ_get_extension_nids(void);
21180 void X509_REQ_set_extension_nids(int *nids);
21181 struct stack_st_X509_EXTENSION *X509_REQ_get_extensions(X509_REQ *req);
21182 int X509_REQ_add_extensions_nid(X509_REQ *req, struct stack_st_X509_EXTENSION *exts,
21183                                 int nid);
21184 int X509_REQ_add_extensions(X509_REQ *req, struct stack_st_X509_EXTENSION *exts);
21185 int X509_REQ_get_attr_count(const X509_REQ *req);
21186 int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos);
21187 int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj,
21188                              int lastpos);
21189 X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc);
21190 X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc);
21191 int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr);
21192 int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
21193                               const ASN1_OBJECT *obj, int type,
21194                               const unsigned char *bytes, int len);
21195 int X509_REQ_add1_attr_by_NID(X509_REQ *req,
21196                               int nid, int type,
21197                               const unsigned char *bytes, int len);
21198 int X509_REQ_add1_attr_by_txt(X509_REQ *req,
21199                               const char *attrname, int type,
21200                               const unsigned char *bytes, int len);
21201 
21202 int X509_CRL_set_version(X509_CRL *x, long version);
21203 int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
21204 int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm);
21205 int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
21206 int X509_CRL_sort(X509_CRL *crl);
21207 
21208 int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
21209 int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
21210 
21211 X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer,
21212                         EVP_PKEY *skey, const EVP_MD *md, unsigned int flags);
21213 
21214 int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey);
21215 
21216 int X509_check_private_key(X509 *x509, EVP_PKEY *pkey);
21217 int X509_chain_check_suiteb(int *perror_depth,
21218                             X509 *x, struct stack_st_X509 *chain,
21219                             unsigned long flags);
21220 int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags);
21221 struct stack_st_X509 *X509_chain_up_ref(struct stack_st_X509 *chain);
21222 
21223 int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b);
21224 unsigned long X509_issuer_and_serial_hash(X509 *a);
21225 
21226 int X509_issuer_name_cmp(const X509 *a, const X509 *b);
21227 unsigned long X509_issuer_name_hash(X509 *a);
21228 
21229 int X509_subject_name_cmp(const X509 *a, const X509 *b);
21230 unsigned long X509_subject_name_hash(X509 *x);
21231 
21232 
21233 unsigned long X509_issuer_name_hash_old(X509 *a);
21234 unsigned long X509_subject_name_hash_old(X509 *x);
21235 
21236 
21237 int X509_cmp(const X509 *a, const X509 *b);
21238 int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
21239 unsigned long X509_NAME_hash(X509_NAME *x);
21240 unsigned long X509_NAME_hash_old(X509_NAME *x);
21241 
21242 int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
21243 int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
21244 
21245 int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag,
21246                      unsigned long cflag);
21247 int X509_print_fp(FILE *bp, X509 *x);
21248 int X509_CRL_print_fp(FILE *bp, X509_CRL *x);
21249 int X509_REQ_print_fp(FILE *bp, X509_REQ *req);
21250 int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent,
21251                           unsigned long flags);
21252 
21253 
21254 
21255 int X509_NAME_print(BIO *bp, X509_NAME *name, int obase);
21256 int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent,
21257                        unsigned long flags);
21258 int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag,
21259                   unsigned long cflag);
21260 int X509_print(BIO *bp, X509 *x);
21261 int X509_ocspid_print(BIO *bp, X509 *x);
21262 int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent);
21263 int X509_CRL_print(BIO *bp, X509_CRL *x);
21264 int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag,
21265                       unsigned long cflag);
21266 int X509_REQ_print(BIO *bp, X509_REQ *req);
21267 
21268 
21269 int X509_NAME_entry_count(X509_NAME *name);
21270 int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len);
21271 int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
21272                               char *buf, int len);
21273 
21274 /*
21275  * NOTE: you should be passsing -1, not 0 as lastpos.  The functions that use
21276  * lastpos, search after that position on.
21277  */
21278 int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos);
21279 int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
21280                                int lastpos);
21281 X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
21282 X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
21283 int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne,
21284                         int loc, int set);
21285 int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
21286                                unsigned char *bytes, int len, int loc,
21287                                int set);
21288 int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
21289                                unsigned char *bytes, int len, int loc,
21290                                int set);
21291 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
21292                                                const char *field, int type,
21293                                                const unsigned char *bytes,
21294                                                int len);
21295 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
21296                                                int type, unsigned char *bytes,
21297                                                int len);
21298 int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
21299                                const unsigned char *bytes, int len, int loc,
21300                                int set);
21301 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
21302                                                ASN1_OBJECT *obj, int type,
21303                                                const unsigned char *bytes,
21304                                                int len);
21305 int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj);
21306 int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
21307                              const unsigned char *bytes, int len);
21308 ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne);
21309 ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
21310 
21311 int X509v3_get_ext_count(const struct stack_st_X509_EXTENSION *x);
21312 int X509v3_get_ext_by_NID(const struct stack_st_X509_EXTENSION *x,
21313                           int nid, int lastpos);
21314 int X509v3_get_ext_by_OBJ(const struct stack_st_X509_EXTENSION *x,
21315                           ASN1_OBJECT *obj, int lastpos);
21316 int X509v3_get_ext_by_critical(const struct stack_st_X509_EXTENSION *x,
21317                                int crit, int lastpos);
21318 X509_EXTENSION *X509v3_get_ext(const struct stack_st_X509_EXTENSION *x, int loc);
21319 X509_EXTENSION *X509v3_delete_ext(struct stack_st_X509_EXTENSION *x, int loc);
21320 struct stack_st_X509_EXTENSION *X509v3_add_ext(struct stack_st_X509_EXTENSION **x,
21321                                          X509_EXTENSION *ex, int loc);
21322 
21323 int X509_get_ext_count(X509 *x);
21324 int X509_get_ext_by_NID(X509 *x, int nid, int lastpos);
21325 int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos);
21326 int X509_get_ext_by_critical(X509 *x, int crit, int lastpos);
21327 X509_EXTENSION *X509_get_ext(X509 *x, int loc);
21328 X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
21329 int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
21330 void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
21331 int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
21332                       unsigned long flags);
21333 
21334 int X509_CRL_get_ext_count(X509_CRL *x);
21335 int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos);
21336 int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos);
21337 int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos);
21338 X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc);
21339 X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
21340 int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
21341 void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx);
21342 int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit,
21343                           unsigned long flags);
21344 
21345 int X509_REVOKED_get_ext_count(X509_REVOKED *x);
21346 int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos);
21347 int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj,
21348                                 int lastpos);
21349 int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos);
21350 X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc);
21351 X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc);
21352 int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc);
21353 void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
21354 int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit,
21355                               unsigned long flags);
21356 
21357 X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
21358                                              int nid, int crit,
21359                                              ASN1_OCTET_STRING *data);
21360 X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
21361                                              ASN1_OBJECT *obj, int crit,
21362                                              ASN1_OCTET_STRING *data);
21363 int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj);
21364 int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
21365 int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data);
21366 ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
21367 ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
21368 int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
21369 
21370 int X509at_get_attr_count(const struct stack_st_X509_ATTRIBUTE *x);
21371 int X509at_get_attr_by_NID(const struct stack_st_X509_ATTRIBUTE *x, int nid,
21372                            int lastpos);
21373 int X509at_get_attr_by_OBJ(const struct stack_st_X509_ATTRIBUTE *sk,
21374                            ASN1_OBJECT *obj, int lastpos);
21375 X509_ATTRIBUTE *X509at_get_attr(const struct stack_st_X509_ATTRIBUTE *x, int loc);
21376 X509_ATTRIBUTE *X509at_delete_attr(struct stack_st_X509_ATTRIBUTE *x, int loc);
21377 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr(struct stack_st_X509_ATTRIBUTE **x,
21378                                            X509_ATTRIBUTE *attr);
21379 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_OBJ(struct stack_st_X509_ATTRIBUTE
21380                                                   **x, const ASN1_OBJECT *obj,
21381                                                   int type,
21382                                                   const unsigned char *bytes,
21383                                                   int len);
21384 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_NID(struct stack_st_X509_ATTRIBUTE
21385                                                   **x, int nid, int type,
21386                                                   const unsigned char *bytes,
21387                                                   int len);
21388 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_txt(struct stack_st_X509_ATTRIBUTE
21389                                                   **x, const char *attrname,
21390                                                   int type,
21391                                                   const unsigned char *bytes,
21392                                                   int len);
21393 void *X509at_get0_data_by_OBJ(struct stack_st_X509_ATTRIBUTE *x, ASN1_OBJECT *obj,
21394                               int lastpos, int type);
21395 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
21396                                              int atrtype, const void *data,
21397                                              int len);
21398 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
21399                                              const ASN1_OBJECT *obj,
21400                                              int atrtype, const void *data,
21401                                              int len);
21402 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
21403                                              const char *atrname, int type,
21404                                              const unsigned char *bytes,
21405                                              int len);
21406 int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj);
21407 int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype,
21408                              const void *data, int len);
21409 void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype,
21410                                void *data);
21411 int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr);
21412 ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr);
21413 ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx);
21414 
21415 int EVP_PKEY_get_attr_count(const EVP_PKEY *key);
21416 int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos);
21417 int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj,
21418                              int lastpos);
21419 X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc);
21420 X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc);
21421 int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr);
21422 int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key,
21423                               const ASN1_OBJECT *obj, int type,
21424                               const unsigned char *bytes, int len);
21425 int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key,
21426                               int nid, int type,
21427                               const unsigned char *bytes, int len);
21428 int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key,
21429                               const char *attrname, int type,
21430                               const unsigned char *bytes, int len);
21431 
21432 int X509_verify_cert(X509_STORE_CTX *ctx);
21433 
21434 /* lookup a cert from a X509 STACK */
21435 X509 *X509_find_by_issuer_and_serial(struct stack_st_X509 *sk, X509_NAME *name,
21436                                      ASN1_INTEGER *serial);
21437 X509 *X509_find_by_subject(struct stack_st_X509 *sk, X509_NAME *name);
21438 
21439 PBEPARAM *PBEPARAM_new(void); void PBEPARAM_free(PBEPARAM *a); PBEPARAM *d2i_PBEPARAM(PBEPARAM **a, const unsigned char **in, long len); int i2d_PBEPARAM(PBEPARAM *a, unsigned char **out); extern const ASN1_ITEM PBEPARAM_it;
21440 PBE2PARAM *PBE2PARAM_new(void); void PBE2PARAM_free(PBE2PARAM *a); PBE2PARAM *d2i_PBE2PARAM(PBE2PARAM **a, const unsigned char **in, long len); int i2d_PBE2PARAM(PBE2PARAM *a, unsigned char **out); extern const ASN1_ITEM PBE2PARAM_it;
21441 PBKDF2PARAM *PBKDF2PARAM_new(void); void PBKDF2PARAM_free(PBKDF2PARAM *a); PBKDF2PARAM *d2i_PBKDF2PARAM(PBKDF2PARAM **a, const unsigned char **in, long len); int i2d_PBKDF2PARAM(PBKDF2PARAM *a, unsigned char **out); extern const ASN1_ITEM PBKDF2PARAM_it;
21442 
21443 int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter,
21444                          const unsigned char *salt, int saltlen);
21445 
21446 X509_ALGOR *PKCS5_pbe_set(int alg, int iter,
21447                           const unsigned char *salt, int saltlen);
21448 X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
21449                            unsigned char *salt, int saltlen);
21450 X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter,
21451                               unsigned char *salt, int saltlen,
21452                               unsigned char *aiv, int prf_nid);
21453 
21454 X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen,
21455                              int prf_nid, int keylen);
21456 
21457 /* PKCS#8 utilities */
21458 
21459 PKCS8_PRIV_KEY_INFO *PKCS8_PRIV_KEY_INFO_new(void); void PKCS8_PRIV_KEY_INFO_free(PKCS8_PRIV_KEY_INFO *a); PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO(PKCS8_PRIV_KEY_INFO **a, const unsigned char **in, long len); int i2d_PKCS8_PRIV_KEY_INFO(PKCS8_PRIV_KEY_INFO *a, unsigned char **out); extern const ASN1_ITEM PKCS8_PRIV_KEY_INFO_it;
21460 
21461 EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8);
21462 PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);
21463 PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken);
21464 PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken);
21465 
21466 int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
21467                     int version, int ptype, void *pval,
21468                     unsigned char *penc, int penclen);
21469 int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg,
21470                     const unsigned char **pk, int *ppklen,
21471                     X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8);
21472 
21473 int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj,
21474                            int ptype, void *pval,
21475                            unsigned char *penc, int penclen);
21476 int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg,
21477                            const unsigned char **pk, int *ppklen,
21478                            X509_ALGOR **pa, X509_PUBKEY *pub);
21479 
21480 int X509_check_trust(X509 *x, int id, int flags);
21481 int X509_TRUST_get_count(void);
21482 X509_TRUST *X509_TRUST_get0(int idx);
21483 int X509_TRUST_get_by_id(int id);
21484 int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int),
21485                    char *name, int arg1, void *arg2);
21486 void X509_TRUST_cleanup(void);
21487 int X509_TRUST_get_flags(X509_TRUST *xp);
21488 char *X509_TRUST_get0_name(X509_TRUST *xp);
21489 int X509_TRUST_get_trust(X509_TRUST *xp);
21490 
21491 /* BEGIN ERROR CODES */
21492 /*
21493  * The following lines are auto generated by the script mkerr.pl. Any changes
21494  * made after this point may be overwritten when the script is next run.
21495  */
21496 
21497 void ERR_load_X509_strings(void);
21498 
21499 /* Error codes for the X509 functions. */
21500 
21501 /* Function codes. */
21502 # 1291 "/usr/include/openssl/x509.h" 3 4
21503 /* Reason codes. */
21504 # 45 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
21505 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 1
21506 /*
21507  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
21508  *
21509  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21510  * Use is subject to license terms.
21511  */
21512 
21513 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
21514 /*	  All Rights Reserved  	*/
21515 
21516 /*
21517  * BIND 4.9.3:
21518  *
21519  * Copyright (c) 1980, 1983, 1988, 1993
21520  *	The Regents of the University of California.  All rights reserved.
21521  *
21522  * Redistribution and use in source and binary forms, with or without
21523  * modification, are permitted provided that the following conditions
21524  * are met:
21525  * 1. Redistributions of source code must retain the above copyright
21526  *    notice, this list of conditions and the following disclaimer.
21527  * 2. Redistributions in binary form must reproduce the above copyright
21528  *    notice, this list of conditions and the following disclaimer in the
21529  *    documentation and/or other materials provided with the distribution.
21530  * 3. All advertising materials mentioning features or use of this software
21531  *    must display the following acknowledgement:
21532  *	This product includes software developed by the University of
21533  *	California, Berkeley and its contributors.
21534  * 4. Neither the name of the University nor the names of its contributors
21535  *    may be used to endorse or promote products derived from this software
21536  *    without specific prior written permission.
21537  *
21538  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21539  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21540  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21541  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21542  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21543  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21544  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21545  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21546  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21547  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
21548  * SUCH DAMAGE.
21549  * -
21550  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
21551  *
21552  * Permission to use, copy, modify, and distribute this software for any
21553  * purpose with or without fee is hereby granted, provided that the above
21554  * copyright notice and this permission notice appear in all copies, and that
21555  * the name of Digital Equipment Corporation not be used in advertising or
21556  * publicity pertaining to distribution of the document or software without
21557  * specific, written prior permission.
21558  *
21559  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
21560  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
21561  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
21562  * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
21563  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
21564  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
21565  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
21566  * SOFTWARE.
21567  * --Copyright--
21568  *
21569  * End BIND 4.9.3
21570  */
21571 
21572 /*
21573  * Structures returned by network data base library.
21574  * All addresses are supplied in host order, and
21575  * returned in network order (suitable for use in system calls).
21576  */
21577 
21578 
21579 
21580 
21581 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
21582 /*
21583  * CDDL HEADER START
21584  *
21585  * The contents of this file are subject to the terms of the
21586  * Common Development and Distribution License (the "License").
21587  * You may not use this file except in compliance with the License.
21588  *
21589  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21590  * or http://www.opensolaris.org/os/licensing.
21591  * See the License for the specific language governing permissions
21592  * and limitations under the License.
21593  *
21594  * When distributing Covered Code, include this CDDL HEADER in each
21595  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21596  * If applicable, add the following below this CDDL HEADER, with the
21597  * fields enclosed by brackets "[]" replaced with your own identifying
21598  * information: Portions Copyright [yyyy] [name of copyright owner]
21599  *
21600  * CDDL HEADER END
21601  */
21602 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
21603 /*	  All Rights Reserved  	*/
21604 
21605 
21606 /*
21607  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21608  * Use is subject to license terms.
21609  *
21610  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
21611  * Copyright 2016 Joyent, Inc.
21612  */
21613 # 77 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
21614 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 1
21615 /*
21616  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21617  * Use is subject to license terms.
21618  *
21619  * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
21620  */
21621 /*
21622  * Copyright (c) 1982, 1986 Regents of the University of California.
21623  * All rights reserved.
21624  *
21625  * Redistribution and use in source and binary forms are permitted
21626  * provided that this notice is preserved and that due credit is given
21627  * to the University of California at Berkeley. The name of the University
21628  * may not be used to endorse or promote products derived from this
21629  * software without specific prior written permission. This software
21630  * is provided ``as is'' without express or implied warranty.
21631  */
21632 
21633 /*
21634  * Constants and structures defined by the internet system,
21635  * according to following documents
21636  *
21637  * Internet ASSIGNED NUMBERS (RFC1700) and its successors:
21638  *	http://www.iana.org/assignments/protocol-numbers
21639  *	http://www.iana.org/assignments/port-numbers
21640  * Basic Socket Interface Extensions for IPv6 (RFC2133 and its successors)
21641  *
21642  */
21643 
21644 
21645 
21646 
21647 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
21648 /*
21649  * CDDL HEADER START
21650  *
21651  * The contents of this file are subject to the terms of the
21652  * Common Development and Distribution License (the "License").
21653  * You may not use this file except in compliance with the License.
21654  *
21655  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21656  * or http://www.opensolaris.org/os/licensing.
21657  * See the License for the specific language governing permissions
21658  * and limitations under the License.
21659  *
21660  * When distributing Covered Code, include this CDDL HEADER in each
21661  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21662  * If applicable, add the following below this CDDL HEADER, with the
21663  * fields enclosed by brackets "[]" replaced with your own identifying
21664  * information: Portions Copyright [yyyy] [name of copyright owner]
21665  *
21666  * CDDL HEADER END
21667  */
21668 
21669 /*
21670  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
21671  * Copyright 2016 Joyent, Inc.
21672  *
21673  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
21674  * Use is subject to license terms.
21675  */
21676 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
21677 
21678 
21679 
21680 
21681 
21682 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
21683 /*
21684  * CDDL HEADER START
21685  *
21686  * The contents of this file are subject to the terms of the
21687  * Common Development and Distribution License (the "License").
21688  * You may not use this file except in compliance with the License.
21689  *
21690  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21691  * or http://www.opensolaris.org/os/licensing.
21692  * See the License for the specific language governing permissions
21693  * and limitations under the License.
21694  *
21695  * When distributing Covered Code, include this CDDL HEADER in each
21696  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21697  * If applicable, add the following below this CDDL HEADER, with the
21698  * fields enclosed by brackets "[]" replaced with your own identifying
21699  * information: Portions Copyright [yyyy] [name of copyright owner]
21700  *
21701  * CDDL HEADER END
21702  */
21703 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
21704 /*	  All Rights Reserved  	*/
21705 
21706 
21707 /*
21708  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21709  * Use is subject to license terms.
21710  *
21711  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
21712  * Copyright 2016 Joyent, Inc.
21713  */
21714 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
21715 
21716 
21717 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 1
21718 /*
21719  * CDDL HEADER START
21720  *
21721  * The contents of this file are subject to the terms of the
21722  * Common Development and Distribution License (the "License").
21723  * You may not use this file except in compliance with the License.
21724  *
21725  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21726  * or http://www.opensolaris.org/os/licensing.
21727  * See the License for the specific language governing permissions
21728  * and limitations under the License.
21729  *
21730  * When distributing Covered Code, include this CDDL HEADER in each
21731  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21732  * If applicable, add the following below this CDDL HEADER, with the
21733  * fields enclosed by brackets "[]" replaced with your own identifying
21734  * information: Portions Copyright [yyyy] [name of copyright owner]
21735  *
21736  * CDDL HEADER END
21737  */
21738 /*
21739  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21740  * Use is subject to license terms.
21741  */
21742 
21743 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
21744 /*	  All Rights Reserved	*/
21745 
21746 /*
21747  * Portions of this source code were derived from Berkeley 4.3 BSD
21748  * under license from the Regents of the University of California.
21749  */
21750 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h"
21751 typedef uint16_t sa_family_t;
21752 
21753 
21754 /*
21755  * Structure used by kernel to store most
21756  * addresses.
21757  */
21758 struct sockaddr {
21759  sa_family_t sa_family; /* address family */
21760  char sa_data[14]; /* up to 14 bytes of direct address */
21761 };
21762 
21763 
21764 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/un.h" 1
21765 /*
21766  * CDDL HEADER START
21767  *
21768  * The contents of this file are subject to the terms of the
21769  * Common Development and Distribution License (the "License").
21770  * You may not use this file except in compliance with the License.
21771  *
21772  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21773  * or http://www.opensolaris.org/os/licensing.
21774  * See the License for the specific language governing permissions
21775  * and limitations under the License.
21776  *
21777  * When distributing Covered Code, include this CDDL HEADER in each
21778  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21779  * If applicable, add the following below this CDDL HEADER, with the
21780  * fields enclosed by brackets "[]" replaced with your own identifying
21781  * information: Portions Copyright [yyyy] [name of copyright owner]
21782  *
21783  * CDDL HEADER END
21784  */
21785 /*
21786  * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
21787  */
21788 
21789 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
21790 /*	  All Rights Reserved  	*/
21791 
21792 /*
21793  * University Copyright- Copyright (c) 1982, 1986, 1988
21794  * The Regents of the University of California
21795  * All Rights Reserved
21796  *
21797  * University Acknowledgment- Portions of this document are derived from
21798  * software developed by the University of California, Berkeley, and its
21799  * contributors.
21800  */
21801 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/un.h"
21802 /*
21803  * Definitions for UNIX IPC domain.
21804  */
21805 struct sockaddr_un {
21806  sa_family_t sun_family; /* AF_UNIX */
21807  char sun_path[108]; /* path name (gag) */
21808 };
21809 
21810 
21811 
21812 /*
21813  * NOTE: If we ever go to BSD-style sun_len + sun_family, this macro needs to
21814  * change.
21815  *
21816  * Also, include a strlen() prototype, and we have to protect it w.r.t.
21817  * UNIX{98,03}.  And because there's strlen, we need size_t as well.
21818  */
21819 # 76 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/un.h"
21820 extern size_t strlen(const char *);
21821 # 57 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 2
21822 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/net/if_dl.h" 1
21823 /*
21824  * Copyright 1993-2003 Sun Microsystems, Inc.  All rights reserved.
21825  * Use is subject to license terms.
21826  */
21827 /*
21828  * Copyright (c) 1990, 1993
21829  *	The Regents of the University of California.  All rights reserved.
21830  *
21831  * Redistribution and use in source and binary forms, with or without
21832  * modification, are permitted provided that the following conditions
21833  * are met:
21834  * 1. Redistributions of source code must retain the above copyright
21835  *    notice, this list of conditions and the following disclaimer.
21836  * 2. Redistributions in binary form must reproduce the above copyright
21837  *    notice, this list of conditions and the following disclaimer in the
21838  *    documentation and/or other materials provided with the distribution.
21839  * 3. All advertising materials mentioning features or use of this software
21840  *    must display the following acknowledgement:
21841  *	This product includes software developed by the University of
21842  *	California, Berkeley and its contributors.
21843  * 4. Neither the name of the University nor the names of its contributors
21844  *    may be used to endorse or promote products derived from this software
21845  *    without specific prior written permission.
21846  *
21847  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21848  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21849  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21850  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21851  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21852  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21853  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21854  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21855  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21856  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
21857  * SUCH DAMAGE.
21858  */
21859 
21860 
21861 
21862 
21863 #pragma ident "%Z%%M%	%I%	%E% SMI"
21864 /* from UCB 8.1 (Berkeley) 6/10/93 */
21865 
21866 
21867 
21868 
21869 
21870 /*
21871  * A Link-Level Sockaddr may specify the interface in one of two
21872  * ways: either by means of a system-provided index number (computed
21873  * anew and possibly differently on every reboot), or by a human-readable
21874  * string such as "il0" (for managerial convenience).
21875  *
21876  * Census taking actions, such as something akin to SIOCGCONF would return
21877  * both the index and the human name.
21878  *
21879  * High volume transactions (such as giving a link-level ``from'' address
21880  * in a recvfrom or recvmsg call) may be likely only to provide the indexed
21881  * form, (which requires fewer copy operations and less space).
21882  *
21883  * The form and interpretation  of the link-level address is purely a matter
21884  * of convention between the device driver and its consumers; however, it is
21885  * expected that all drivers for an interface of a given if_type will agree.
21886  */
21887 
21888 /*
21889  * Structure of a Link-Level sockaddr:
21890  */
21891 struct sockaddr_dl {
21892  ushort_t sdl_family; /* AF_LINK */
21893  ushort_t sdl_index; /* if != 0, system given index for interface */
21894  uchar_t sdl_type; /* interface type */
21895  uchar_t sdl_nlen; /* interface name length, no trailing 0 reqd. */
21896  uchar_t sdl_alen; /* link level address length */
21897  uchar_t sdl_slen; /* link layer selector length */
21898  char sdl_data[244]; /* contains both if name and ll address */
21899 };
21900 
21901 
21902 
21903 
21904 extern char *_link_ntoa(const unsigned char *, char *, int, int);
21905 extern unsigned char *_link_aton(const char *, int *);
21906 # 58 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 2
21907 
21908 
21909 
21910 /*
21911  * sockaddr_storage:
21912  * Common superset of at least AF_INET, AF_INET6 and AF_LINK sockaddr
21913  * structures. Has sufficient size and alignment for those sockaddrs.
21914  */
21915 
21916 /*
21917  * Desired maximum size, alignment size and related types.
21918  */
21919 
21920 
21921 /*
21922  * To represent desired sockaddr max alignment for platform, a
21923  * type is chosen which may depend on implementation platform architecture.
21924  * Type chosen based on alignment size restrictions from <sys/isa_defs.h>.
21925  * We desire to force up to (but no more than) 64-bit (8 byte) alignment,
21926  * on platforms where it is possible to do so. (e.g not possible on ia32).
21927  * For all currently supported platforms by our implementation
21928  * in <sys/isa_defs.h>, (i.e. sparc, sparcv9, ia32, ia64)
21929  * type "double" is suitable for that intent.
21930  *
21931  * Note: Type "double" is chosen over the more obvious integer type int64_t.
21932  *   int64_t is not a valid type for strict ANSI/ISO C compilation on ILP32.
21933  */
21934 typedef double sockaddr_maxalign_t;
21935 
21936 
21937 
21938 /*
21939  * Definitions used for sockaddr_storage structure paddings design.
21940  */
21941 
21942 
21943 
21944 
21945 struct sockaddr_storage {
21946  sa_family_t ss_family; /* Address family */
21947  /* Following fields are implementation specific */
21948  char _ss_pad1[((sizeof (sockaddr_maxalign_t)) - sizeof (sa_family_t))];
21949  sockaddr_maxalign_t _ss_align;
21950  char _ss_pad2[(256 - (sizeof (sa_family_t)+ ((sizeof (sockaddr_maxalign_t)) - sizeof (sa_family_t)) + (sizeof (sockaddr_maxalign_t))))];
21951 };
21952 
21953 
21954 /*
21955  * To be compatible with the Linux interfaces used, this structure is
21956  * placed in socket_impl.h so that an include for <sys/socket.h> will
21957  * pickup this structure. This structure is for use with PF_PACKET
21958  * sockets.
21959  */
21960 struct sockaddr_ll {
21961  uint16_t sll_family;
21962  uint16_t sll_protocol;
21963  int32_t sll_ifindex;
21964  uint16_t sll_hatype;
21965  uint8_t sll_pkttype;
21966  uint8_t sll_halen;
21967  uint8_t sll_addr[8];
21968 };
21969 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
21970 
21971 
21972 
21973 
21974 
21975 /*
21976  * The socklen definitions are reproduced here from sys/socket.h so as to
21977  * not introduce that namespace into existing users of netinet/in.h.
21978  */
21979 
21980 
21981 
21982 typedef uint32_t socklen_t;
21983 
21984 
21985 
21986 
21987 
21988 typedef void *Psocklen_t;
21989 
21990 
21991 
21992 
21993 
21994 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 1
21995 /*
21996  * CDDL HEADER START
21997  *
21998  * The contents of this file are subject to the terms of the
21999  * Common Development and Distribution License (the "License").
22000  * You may not use this file except in compliance with the License.
22001  *
22002  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22003  * or http://www.opensolaris.org/os/licensing.
22004  * See the License for the specific language governing permissions
22005  * and limitations under the License.
22006  *
22007  * When distributing Covered Code, include this CDDL HEADER in each
22008  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22009  * If applicable, add the following below this CDDL HEADER, with the
22010  * fields enclosed by brackets "[]" replaced with your own identifying
22011  * information: Portions Copyright [yyyy] [name of copyright owner]
22012  *
22013  * CDDL HEADER END
22014  */
22015 /*
22016  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22017  * Use is subject to license terms.
22018  */
22019 
22020 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22021 /*	  All Rights Reserved  	*/
22022 
22023 
22024 
22025 
22026 
22027 /*
22028  * For source compatibility
22029  */
22030 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
22031 /*
22032  * CDDL HEADER START
22033  *
22034  * The contents of this file are subject to the terms of the
22035  * Common Development and Distribution License (the "License").
22036  * You may not use this file except in compliance with the License.
22037  *
22038  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22039  * or http://www.opensolaris.org/os/licensing.
22040  * See the License for the specific language governing permissions
22041  * and limitations under the License.
22042  *
22043  *
22044  * When distributing Covered Code, include this CDDL HEADER in each
22045  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22046  * If applicable, add the following below this CDDL HEADER, with the
22047  * fields enclosed by brackets "[]" replaced with your own identifying
22048  * information: Portions Copyright [yyyy] [name of copyright owner]
22049  *
22050  * CDDL HEADER END
22051  */
22052 
22053 /*
22054  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
22055  * Use is subject to license terms.
22056  * Copyright 2016 Joyent, Inc.
22057  */
22058 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
22059 
22060 
22061 
22062 
22063 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h" 1
22064 /*
22065  * CDDL HEADER START
22066  *
22067  * The contents of this file are subject to the terms of the
22068  * Common Development and Distribution License, Version 1.0 only
22069  * (the "License").  You may not use this file except in compliance
22070  * with the License.
22071  *
22072  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22073  * or http://www.opensolaris.org/os/licensing.
22074  * See the License for the specific language governing permissions
22075  * and limitations under the License.
22076  *
22077  * When distributing Covered Code, include this CDDL HEADER in each
22078  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22079  * If applicable, add the following below this CDDL HEADER, with the
22080  * fields enclosed by brackets "[]" replaced with your own identifying
22081  * information: Portions Copyright [yyyy] [name of copyright owner]
22082  *
22083  * CDDL HEADER END
22084  */
22085 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22086 /*	  All Rights Reserved  	*/
22087 
22088 
22089 /*
22090  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
22091  *
22092  * Copyright (c) 1995, 1998 by Sun Microsystems, Inc.
22093  * All rights reserved.
22094  */
22095 
22096 /*
22097  * Copyright 2015, Joyent, Inc.
22098  */
22099 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h"
22100 /*
22101  * Structure of file descriptor/event pairs supplied in
22102  * the poll arrays.
22103  */
22104 typedef struct pollfd {
22105  int fd; /* file desc to poll */
22106  short events; /* events of interest on fd */
22107  short revents; /* events that occurred on fd */
22108 } pollfd_t;
22109 
22110 typedef unsigned long nfds_t;
22111 
22112 /*
22113  * Testable select events
22114  */
22115 # 70 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h"
22116 /*
22117  * Non-testable poll events (may not be specified in events field,
22118  * but may be returned in revents field).
22119  */
22120 
22121 
22122 
22123 
22124 /*
22125  * These events will never be specified in revents, but may be specified in
22126  * events to control /dev/poll behavior.
22127  */
22128 # 152 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h"
22129 int poll(struct pollfd *, nfds_t, int);
22130 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
22131 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/strmdep.h" 1
22132 /*
22133  * CDDL HEADER START
22134  *
22135  * The contents of this file are subject to the terms of the
22136  * Common Development and Distribution License, Version 1.0 only
22137  * (the "License").  You may not use this file except in compliance
22138  * with the License.
22139  *
22140  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22141  * or http://www.opensolaris.org/os/licensing.
22142  * See the License for the specific language governing permissions
22143  * and limitations under the License.
22144  *
22145  * When distributing Covered Code, include this CDDL HEADER in each
22146  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22147  * If applicable, add the following below this CDDL HEADER, with the
22148  * fields enclosed by brackets "[]" replaced with your own identifying
22149  * information: Portions Copyright [yyyy] [name of copyright owner]
22150  *
22151  * CDDL HEADER END
22152  */
22153 /*
22154  * Copyright (c) 1997-1998 by Sun Microsystems, Inc.
22155  * All rights reserved.
22156  */
22157 
22158 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22159 /*	  All Rights Reserved  	*/
22160 
22161 
22162 
22163 
22164 
22165 #pragma ident "%Z%%M%	%I%	%E% SMI"
22166 
22167 
22168 
22169 
22170 
22171 /*
22172  * This file contains all machine-dependent declarations
22173  * in STREAMS.
22174  */
22175 
22176 /*
22177  * Copy data from one data buffer to another.
22178  * The addresses must be word aligned - if not, use bcopy!
22179  */
22180 
22181 
22182 /*
22183  * save the address of the calling function on the 3b2 to
22184  * enable tracking of who is allocating message blocks
22185  */
22186 
22187 
22188 /*
22189  * macro to check pointer alignment
22190  * (true if alignment is sufficient for worst case)
22191  */
22192 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
22193 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/cred.h" 1
22194 /*
22195  * CDDL HEADER START
22196  *
22197  * The contents of this file are subject to the terms of the
22198  * Common Development and Distribution License (the "License").
22199  * You may not use this file except in compliance with the License.
22200  *
22201  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22202  * or http://www.opensolaris.org/os/licensing.
22203  * See the License for the specific language governing permissions
22204  * and limitations under the License.
22205  *
22206  * When distributing Covered Code, include this CDDL HEADER in each
22207  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22208  * If applicable, add the following below this CDDL HEADER, with the
22209  * fields enclosed by brackets "[]" replaced with your own identifying
22210  * information: Portions Copyright [yyyy] [name of copyright owner]
22211  *
22212  * CDDL HEADER END
22213  */
22214 /*
22215  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22216  * Use is subject to license terms.
22217  */
22218 
22219 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
22220 /*	  All Rights Reserved  	*/
22221 
22222 /*
22223  * Portions of this source code were derived from Berkeley 4.3 BSD
22224  * under license from the Regents of the University of California.
22225  */
22226 
22227 
22228 
22229 
22230 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22231 /*
22232  * CDDL HEADER START
22233  *
22234  * The contents of this file are subject to the terms of the
22235  * Common Development and Distribution License (the "License").
22236  * You may not use this file except in compliance with the License.
22237  *
22238  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22239  * or http://www.opensolaris.org/os/licensing.
22240  * See the License for the specific language governing permissions
22241  * and limitations under the License.
22242  *
22243  * When distributing Covered Code, include this CDDL HEADER in each
22244  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22245  * If applicable, add the following below this CDDL HEADER, with the
22246  * fields enclosed by brackets "[]" replaced with your own identifying
22247  * information: Portions Copyright [yyyy] [name of copyright owner]
22248  *
22249  * CDDL HEADER END
22250  */
22251 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22252 /*	  All Rights Reserved  	*/
22253 
22254 
22255 /*
22256  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22257  * Use is subject to license terms.
22258  *
22259  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22260  * Copyright 2016 Joyent, Inc.
22261  */
22262 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/cred.h" 2
22263 
22264 
22265 
22266 
22267 
22268 /*
22269  * The credential is an opaque kernel private data structure defined in
22270  * <sys/cred_impl.h>.
22271  */
22272 
22273 typedef struct cred cred_t;
22274 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
22275 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 1
22276 /*
22277  * CDDL HEADER START
22278  *
22279  * The contents of this file are subject to the terms of the
22280  * Common Development and Distribution License, Version 1.0 only
22281  * (the "License").  You may not use this file except in compliance
22282  * with the License.
22283  *
22284  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22285  * or http://www.opensolaris.org/os/licensing.
22286  * See the License for the specific language governing permissions
22287  * and limitations under the License.
22288  *
22289  * When distributing Covered Code, include this CDDL HEADER in each
22290  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22291  * If applicable, add the following below this CDDL HEADER, with the
22292  * fields enclosed by brackets "[]" replaced with your own identifying
22293  * information: Portions Copyright [yyyy] [name of copyright owner]
22294  *
22295  * CDDL HEADER END
22296  */
22297 /*
22298  * Copyright (c) 1991-1998 by Sun Microsystems, Inc.
22299  * All rights reserved.
22300  */
22301 
22302 /*
22303  * t_lock.h:	Prototypes for disp_locks, plus include files
22304  *		that describe the interfaces to kernel synch.
22305  *		objects.
22306  */
22307 
22308 
22309 
22310 
22311 #pragma ident "%Z%%M%	%I%	%E% SMI"
22312 
22313 
22314 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h" 1
22315 /*
22316  * CDDL HEADER START
22317  *
22318  * The contents of this file are subject to the terms of the
22319  * Common Development and Distribution License (the "License").
22320  * You may not use this file except in compliance with the License.
22321  *
22322  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22323  * or http://www.opensolaris.org/os/licensing.
22324  * See the License for the specific language governing permissions
22325  * and limitations under the License.
22326  *
22327  * When distributing Covered Code, include this CDDL HEADER in each
22328  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22329  * If applicable, add the following below this CDDL HEADER, with the
22330  * fields enclosed by brackets "[]" replaced with your own identifying
22331  * information: Portions Copyright [yyyy] [name of copyright owner]
22332  *
22333  * CDDL HEADER END
22334  */
22335 /*
22336  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
22337  * Use is subject to license terms.
22338  * Copyright 2016 Joyent, Inc.
22339  */
22340 
22341 
22342 
22343 
22344 #pragma ident "%Z%%M%	%I%	%E% SMI"
22345 
22346 
22347 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22348 /*
22349  * CDDL HEADER START
22350  *
22351  * The contents of this file are subject to the terms of the
22352  * Common Development and Distribution License (the "License").
22353  * You may not use this file except in compliance with the License.
22354  *
22355  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22356  * or http://www.opensolaris.org/os/licensing.
22357  * See the License for the specific language governing permissions
22358  * and limitations under the License.
22359  *
22360  * When distributing Covered Code, include this CDDL HEADER in each
22361  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22362  * If applicable, add the following below this CDDL HEADER, with the
22363  * fields enclosed by brackets "[]" replaced with your own identifying
22364  * information: Portions Copyright [yyyy] [name of copyright owner]
22365  *
22366  * CDDL HEADER END
22367  */
22368 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22369 /*	  All Rights Reserved  	*/
22370 
22371 
22372 /*
22373  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22374  * Use is subject to license terms.
22375  *
22376  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22377  * Copyright 2016 Joyent, Inc.
22378  */
22379 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h" 2
22380 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 1
22381 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22382 /*	  All Rights Reserved  	*/
22383 
22384 
22385 /*
22386  * Copyright (c) 1982, 1986, 1993 Regents of the University of California.
22387  * All rights reserved.  The Berkeley software License Agreement
22388  * specifies the terms and conditions for redistribution.
22389  */
22390 
22391 /*
22392  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
22393  *
22394  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22395  * Use is subject to license terms.
22396  *
22397  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22398  */
22399 
22400 /*
22401  * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
22402  */
22403 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h" 2
22404 # 61 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h"
22405 typedef lock_t disp_lock_t; /* dispatcher lock type */
22406 
22407 /*
22408  * SPIN_LOCK() macro indicates whether lock is implemented as a spin lock or
22409  * an adaptive mutex, depending on what interrupt levels use it.
22410  */
22411 
22412 
22413 /*
22414  * Macro to control loops which spin on a lock and then check state
22415  * periodically.  Its passed an integer, and returns a boolean value
22416  * that if true indicates its a good time to get the scheduler lock and
22417  * check the state of the current owner of the lock.
22418  */
22419 
22420 
22421 /*
22422  * Externs for CLOCK_LOCK and clock resolution
22423  */
22424 extern volatile uint32_t hres_lock;
22425 extern hrtime_t hrtime_base;
22426 extern int clock_res;
22427 
22428 
22429 
22430 /*
22431  * The definitions of the symbolic interrupt levels:
22432  *
22433  *   CLOCK_LEVEL =>  The level at which one must be to block the clock.
22434  *
22435  *   LOCK_LEVEL  =>  The highest level at which one may block (and thus the
22436  *                   highest level at which one may acquire adaptive locks)
22437  *                   Also the highest level at which one may be preempted.
22438  *
22439  *   DISP_LEVEL  =>  The level at which one must be to perform dispatcher
22440  *                   operations.
22441  *
22442  * The constraints on the platform:
22443  *
22444  *  - CLOCK_LEVEL must be less than or equal to LOCK_LEVEL
22445  *  - LOCK_LEVEL must be less than DISP_LEVEL
22446  *  - DISP_LEVEL should be as close to LOCK_LEVEL as possible
22447  *
22448  * Note that LOCK_LEVEL and CLOCK_LEVEL have historically always been equal;
22449  * changing this relationship is probably possible but not advised.
22450  *
22451  */
22452 # 117 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h"
22453 /*
22454  * The following mask is for the cpu_intr_actv bits corresponding to
22455  * high-level PILs. It should equal:
22456  * ((((1 << PIL_MAX + 1) - 1) >> LOCK_LEVEL + 1) << LOCK_LEVEL + 1)
22457  */
22458 
22459 
22460 /*
22461  * The semaphore code depends on being able to represent a lock plus
22462  * owner in a single 32-bit word.  (Mutexes used to have a similar
22463  * dependency, but no longer.)  Thus the owner must contain at most
22464  * 24 significant bits.  At present only threads and semaphores
22465  * must be aware of this vile constraint.  Different ISAs may handle this
22466  * differently depending on their capabilities (e.g. compare-and-swap)
22467  * and limitations (e.g. constraints on alignment and/or KERNELBASE).
22468  */
22469 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22470 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 1
22471 /*
22472  * CDDL HEADER START
22473  *
22474  * The contents of this file are subject to the terms of the
22475  * Common Development and Distribution License (the "License").
22476  * You may not use this file except in compliance with the License.
22477  *
22478  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22479  * or http://www.opensolaris.org/os/licensing.
22480  * See the License for the specific language governing permissions
22481  * and limitations under the License.
22482  *
22483  * When distributing Covered Code, include this CDDL HEADER in each
22484  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22485  * If applicable, add the following below this CDDL HEADER, with the
22486  * fields enclosed by brackets "[]" replaced with your own identifying
22487  * information: Portions Copyright [yyyy] [name of copyright owner]
22488  *
22489  * CDDL HEADER END
22490  */
22491 
22492 /*
22493  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
22494  * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
22495  */
22496 
22497 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
22498 /*	  All Rights Reserved  	*/
22499 
22500 /*
22501  * University Copyright- Copyright (c) 1982, 1986, 1988
22502  * The Regents of the University of California
22503  * All Rights Reserved
22504  *
22505  * University Acknowledgment- Portions of this document are derived from
22506  * software developed by the University of California, Berkeley, and its
22507  * contributors.
22508  */
22509 
22510 
22511 
22512 
22513 
22514 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22515 /*
22516  * CDDL HEADER START
22517  *
22518  * The contents of this file are subject to the terms of the
22519  * Common Development and Distribution License (the "License").
22520  * You may not use this file except in compliance with the License.
22521  *
22522  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22523  * or http://www.opensolaris.org/os/licensing.
22524  * See the License for the specific language governing permissions
22525  * and limitations under the License.
22526  *
22527  * When distributing Covered Code, include this CDDL HEADER in each
22528  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22529  * If applicable, add the following below this CDDL HEADER, with the
22530  * fields enclosed by brackets "[]" replaced with your own identifying
22531  * information: Portions Copyright [yyyy] [name of copyright owner]
22532  *
22533  * CDDL HEADER END
22534  */
22535 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22536 /*	  All Rights Reserved  	*/
22537 
22538 
22539 /*
22540  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22541  * Use is subject to license terms.
22542  *
22543  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22544  * Copyright 2016 Joyent, Inc.
22545  */
22546 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22547 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
22548 /*
22549  * CDDL HEADER START
22550  *
22551  * The contents of this file are subject to the terms of the
22552  * Common Development and Distribution License (the "License").
22553  * You may not use this file except in compliance with the License.
22554  *
22555  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22556  * or http://www.opensolaris.org/os/licensing.
22557  * See the License for the specific language governing permissions
22558  * and limitations under the License.
22559  *
22560  *
22561  * When distributing Covered Code, include this CDDL HEADER in each
22562  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22563  * If applicable, add the following below this CDDL HEADER, with the
22564  * fields enclosed by brackets "[]" replaced with your own identifying
22565  * information: Portions Copyright [yyyy] [name of copyright owner]
22566  *
22567  * CDDL HEADER END
22568  */
22569 
22570 /*
22571  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
22572  * Use is subject to license terms.
22573  * Copyright 2016 Joyent, Inc.
22574  */
22575 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22576 
22577 
22578 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
22579 /*
22580  * This file and its contents are supplied under the terms of the
22581  * Common Development and Distribution License ("CDDL"), version 1.0.
22582  * You may only use this file in accordance with the terms of version
22583  * 1.0 of the CDDL.
22584  *
22585  * A full copy of the text of the CDDL should have accompanied this
22586  * source.  A copy of the CDDL is also available via the Internet at
22587  * http://www.illumos.org/license/CDDL.
22588  */
22589 
22590 /*
22591  * Copyright 2014-2016 PALO, Richard.
22592  */
22593 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22594 
22595 
22596 
22597 
22598 
22599 /*
22600  * Fundamental variables; don't change too often.
22601  */
22602 
22603 /*
22604  * _POSIX_VDISABLE has historically been defined in <sys/param.h> since
22605  * an early merge with AT&T source.  It has also historically been defined
22606  * in <sys/termios.h>. The POSIX standard, IEEE Std. 1003.1-1988 initially
22607  * required the existence of _POSIX_VDISABLE in <sys/termios.h>.
22608  * Subsequent versions of the IEEE Standard as well as the X/Open
22609  * specifications required that _POSIX_VDISABLE be defined in <unistd.h>
22610  * while still allowing for it's existence in other headers.  With the
22611  * introduction of XPG6, _POSIX_VDISABLE can only be defined in <unistd.h>.
22612  */
22613 # 123 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22614     /* compatibility purposes only	*/
22615     /* and will be removed in a	*/
22616     /* later release		*/
22617 
22618 /*
22619  * These define the maximum and minimum allowable values of the
22620  * configurable parameter NGROUPS_MAX.
22621  */
22622 
22623 
22624 
22625 
22626 /*
22627  * NGROUPS_MAX_DEFAULT: *MUST* match NGROUPS_MAX value in limits.h.
22628  */
22629 
22630 
22631 /*
22632  * Default process priority.  Keep it in sync with limits.h.
22633  */
22634 
22635 
22636 /*
22637  * Fundamental constants of the implementation--cannot be changed easily.
22638  */
22639 # 171 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22640 /* REMOTE -- whether machine is primary, secondary, or regular */
22641 
22642 
22643 
22644 /*
22645  * MAXPATHLEN defines the longest permissible path length,
22646  * including the terminating null, after expanding symbolic links.
22647  * TYPICALMAXPATHLEN is used in a few places as an optimization
22648  * with a local buffer on the stack to avoid kmem_alloc().
22649  * MAXSYMLINKS defines the maximum number of symbolic links
22650  * that may be expanded in a path name. It should be set high
22651  * enough to allow all legitimate uses, but halt infinite loops
22652  * reasonably quickly.
22653  * MAXNAMELEN is the length (including the terminating null) of
22654  * the longest permissible file (component) name.
22655  */
22656 
22657 
22658 
22659 
22660 
22661 /*
22662  * MAXLINKNAMELEN defines the longest possible permitted datalink name,
22663  * including the terminating NUL.  Note that this must not be larger
22664  * than related networking constants such as LIFNAMSIZ.
22665  */
22666 
22667 
22668 
22669 
22670 
22671 
22672 /*
22673  * The following are defined to be the same as
22674  * defined in /usr/include/limits.h.  They are
22675  * needed for pipe and FIFO compatibility.
22676  */
22677 # 220 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22678 /* macros replacing interleaving functions */
22679 
22680 
22681 
22682 /*
22683  * File system parameters and macros.
22684  *
22685  * The file system is made out of blocks of at most MAXBSIZE units,
22686  * with smaller units (fragments) only in the last direct block.
22687  * MAXBSIZE primarily determines the size of buffers in the buffer
22688  * pool. It may be made larger without any effect on existing
22689  * file systems; however making it smaller make make some file
22690  * systems unmountable.
22691  *
22692  * Note that the blocked devices are assumed to have DEV_BSIZE
22693  * "sectors" and that fragments must be some multiple of this size.
22694  */
22695 # 261 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22696 /*	64 bit versions of btodb and dbtob */
22697 # 276 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22698 /*
22699  * Size of arg list passed in by user.
22700  */
22701 # 287 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22702 /*
22703  * Scale factor for scaled integers used to count
22704  * %cpu time and load averages.
22705  */
22706 
22707 
22708 
22709 /*
22710  * Delay units are in microseconds.
22711  *
22712  * XXX	These macros are not part of the DDI!
22713  */
22714 # 317 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22715 /*
22716  * The following is to free utilities from machine dependencies within
22717  * an architecture. Must be included after definition of DEV_BSIZE.
22718  */
22719 # 471 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22720 /*
22721  * The following are assorted machine dependent values which can be
22722  * obtained in a machine independent manner through sysconf(2) or
22723  * sysinfo(2). In order to guarantee that these provide the expected
22724  * value at all times, the System Private interface (leading underscore)
22725  * is used.
22726  */
22727 
22728 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h" 1
22729 /*
22730  * CDDL HEADER START
22731  *
22732  * The contents of this file are subject to the terms of the
22733  * Common Development and Distribution License (the "License").
22734  * You may not use this file except in compliance with the License.
22735  *
22736  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22737  * or http://www.opensolaris.org/os/licensing.
22738  * See the License for the specific language governing permissions
22739  * and limitations under the License.
22740  *
22741  * When distributing Covered Code, include this CDDL HEADER in each
22742  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22743  * If applicable, add the following below this CDDL HEADER, with the
22744  * fields enclosed by brackets "[]" replaced with your own identifying
22745  * information: Portions Copyright [yyyy] [name of copyright owner]
22746  *
22747  * CDDL HEADER END
22748  */
22749 
22750 /*
22751  *	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
22752  *	  All Rights Reserved
22753  *
22754  */
22755 
22756 /*
22757  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22758  * Use is subject to license terms.
22759  */
22760 
22761 /*
22762  * WARNING: This is an implementation-specific header,
22763  * its contents are not guaranteed. Applications
22764  * should include <unistd.h> and not this header.
22765  */
22766 # 480 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22767 
22768 
22769 
22770 
22771 
22772 
22773 extern long _sysconf(int); /* System Private interface to sysconf() */
22774 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22775 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/mutex.h" 1
22776 /*
22777  * CDDL HEADER START
22778  *
22779  * The contents of this file are subject to the terms of the
22780  * Common Development and Distribution License (the "License").
22781  * You may not use this file except in compliance with the License.
22782  *
22783  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22784  * or http://www.opensolaris.org/os/licensing.
22785  * See the License for the specific language governing permissions
22786  * and limitations under the License.
22787  *
22788  * When distributing Covered Code, include this CDDL HEADER in each
22789  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22790  * If applicable, add the following below this CDDL HEADER, with the
22791  * fields enclosed by brackets "[]" replaced with your own identifying
22792  * information: Portions Copyright [yyyy] [name of copyright owner]
22793  *
22794  * CDDL HEADER END
22795  */
22796 /*
22797  * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
22798  */
22799 
22800 
22801 
22802 
22803 
22804 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22805 /*
22806  * CDDL HEADER START
22807  *
22808  * The contents of this file are subject to the terms of the
22809  * Common Development and Distribution License (the "License").
22810  * You may not use this file except in compliance with the License.
22811  *
22812  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22813  * or http://www.opensolaris.org/os/licensing.
22814  * See the License for the specific language governing permissions
22815  * and limitations under the License.
22816  *
22817  * When distributing Covered Code, include this CDDL HEADER in each
22818  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22819  * If applicable, add the following below this CDDL HEADER, with the
22820  * fields enclosed by brackets "[]" replaced with your own identifying
22821  * information: Portions Copyright [yyyy] [name of copyright owner]
22822  *
22823  * CDDL HEADER END
22824  */
22825 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22826 /*	  All Rights Reserved  	*/
22827 
22828 
22829 /*
22830  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22831  * Use is subject to license terms.
22832  *
22833  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22834  * Copyright 2016 Joyent, Inc.
22835  */
22836 # 30 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/mutex.h" 2
22837 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/mutex.h"
22838 /*
22839  * Public interface to mutual exclusion locks.  See mutex(9F) for details.
22840  *
22841  * The basic mutex type is MUTEX_ADAPTIVE, which is expected to be used
22842  * in almost all of the kernel.  MUTEX_SPIN provides interrupt blocking
22843  * and must be used in interrupt handlers above LOCK_LEVEL.  The iblock
22844  * cookie argument to mutex_init() encodes the interrupt level to block.
22845  * The iblock cookie must be NULL for adaptive locks.
22846  *
22847  * MUTEX_DEFAULT is the type usually specified (except in drivers) to
22848  * mutex_init().  It is identical to MUTEX_ADAPTIVE.
22849  *
22850  * MUTEX_DRIVER is always used by drivers.  mutex_init() converts this to
22851  * either MUTEX_ADAPTIVE or MUTEX_SPIN depending on the iblock cookie.
22852  *
22853  * Mutex statistics can be gathered on the fly, without rebooting or
22854  * recompiling the kernel, via the lockstat driver (lockstat(7D)).
22855  */
22856 typedef enum {
22857  MUTEX_ADAPTIVE = 0, /* spin if owner is running, otherwise block */
22858  MUTEX_SPIN = 1, /* block interrupts and spin */
22859  MUTEX_DRIVER = 4, /* driver (DDI) mutex */
22860  MUTEX_DEFAULT = 6 /* kernel default mutex */
22861 } kmutex_type_t;
22862 
22863 typedef struct mutex {
22864 
22865 
22866 
22867  void *_opaque[2];
22868 
22869 } kmutex_t;
22870 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22871 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/rwlock.h" 1
22872 /*
22873  * CDDL HEADER START
22874  *
22875  * The contents of this file are subject to the terms of the
22876  * Common Development and Distribution License (the "License").
22877  * You may not use this file except in compliance with the License.
22878  *
22879  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22880  * or http://www.opensolaris.org/os/licensing.
22881  * See the License for the specific language governing permissions
22882  * and limitations under the License.
22883  *
22884  * When distributing Covered Code, include this CDDL HEADER in each
22885  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22886  * If applicable, add the following below this CDDL HEADER, with the
22887  * fields enclosed by brackets "[]" replaced with your own identifying
22888  * information: Portions Copyright [yyyy] [name of copyright owner]
22889  *
22890  * CDDL HEADER END
22891  */
22892 /*
22893  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
22894  * Use is subject to license terms.
22895  */
22896 
22897 /*
22898  * Copyright (c) 2013, Joyent, Inc.  All rights reserved.
22899  */
22900 
22901 
22902 
22903 
22904 /*
22905  * Public interface to readers/writer locks.  See rwlock(9F) for details.
22906  */
22907 
22908 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22909 /*
22910  * CDDL HEADER START
22911  *
22912  * The contents of this file are subject to the terms of the
22913  * Common Development and Distribution License (the "License").
22914  * You may not use this file except in compliance with the License.
22915  *
22916  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22917  * or http://www.opensolaris.org/os/licensing.
22918  * See the License for the specific language governing permissions
22919  * and limitations under the License.
22920  *
22921  * When distributing Covered Code, include this CDDL HEADER in each
22922  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22923  * If applicable, add the following below this CDDL HEADER, with the
22924  * fields enclosed by brackets "[]" replaced with your own identifying
22925  * information: Portions Copyright [yyyy] [name of copyright owner]
22926  *
22927  * CDDL HEADER END
22928  */
22929 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22930 /*	  All Rights Reserved  	*/
22931 
22932 
22933 /*
22934  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22935  * Use is subject to license terms.
22936  *
22937  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22938  * Copyright 2016 Joyent, Inc.
22939  */
22940 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/rwlock.h" 2
22941 
22942 
22943 
22944 
22945 
22946 
22947 
22948 typedef enum {
22949  RW_DRIVER = 2, /* driver (DDI) rwlock */
22950  RW_DEFAULT = 4 /* kernel default rwlock */
22951 } krw_type_t;
22952 
22953 typedef enum {
22954  RW_WRITER,
22955  RW_READER,
22956  RW_READER_STARVEWRITER
22957 } krw_t;
22958 
22959 typedef struct _krwlock {
22960  void *_opaque[1];
22961 } krwlock_t;
22962 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22963 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/semaphore.h" 1
22964 /*
22965  * CDDL HEADER START
22966  *
22967  * The contents of this file are subject to the terms of the
22968  * Common Development and Distribution License, Version 1.0 only
22969  * (the "License").  You may not use this file except in compliance
22970  * with the License.
22971  *
22972  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22973  * or http://www.opensolaris.org/os/licensing.
22974  * See the License for the specific language governing permissions
22975  * and limitations under the License.
22976  *
22977  * When distributing Covered Code, include this CDDL HEADER in each
22978  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22979  * If applicable, add the following below this CDDL HEADER, with the
22980  * fields enclosed by brackets "[]" replaced with your own identifying
22981  * information: Portions Copyright [yyyy] [name of copyright owner]
22982  *
22983  * CDDL HEADER END
22984  */
22985 /*
22986  * Copyright (c) 1993-1998 by Sun Microsystems, Inc.
22987  * All rights reserved.
22988  */
22989 
22990 
22991 
22992 
22993 #pragma ident "%Z%%M%	%I%	%E% SMI"
22994 
22995 /*
22996  * Public interface to semaphores.  See semaphore(9F) for details.
22997  */
22998 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/semaphore.h"
22999 typedef enum {
23000  SEMA_DEFAULT,
23001  SEMA_DRIVER
23002 } ksema_type_t;
23003 
23004 typedef struct _ksema {
23005  void * _opaque[2]; /* 2 words on 4 byte alignment */
23006 } ksema_t;
23007 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
23008 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h" 1
23009 /*
23010  * CDDL HEADER START
23011  *
23012  * The contents of this file are subject to the terms of the
23013  * Common Development and Distribution License (the "License").
23014  * You may not use this file except in compliance with the License.
23015  *
23016  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23017  * or http://www.opensolaris.org/os/licensing.
23018  * See the License for the specific language governing permissions
23019  * and limitations under the License.
23020  *
23021  * When distributing Covered Code, include this CDDL HEADER in each
23022  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23023  * If applicable, add the following below this CDDL HEADER, with the
23024  * fields enclosed by brackets "[]" replaced with your own identifying
23025  * information: Portions Copyright [yyyy] [name of copyright owner]
23026  *
23027  * CDDL HEADER END
23028  */
23029 /*
23030  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23031  * Use is subject to license terms.
23032  */
23033 
23034 /*
23035  * Copyright (c) 2012 by Delphix. All rights reserved.
23036  */
23037 
23038 /*
23039  * condvar.h:
23040  *
23041  * definitions for thread synchronization primitives: condition variables
23042  * This is the public part of the interface to condition variables. The
23043  * private (implementation-specific) part is in <arch>/sys/condvar_impl.h.
23044  */
23045 
23046 
23047 
23048 
23049 
23050 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
23051 /*
23052  * CDDL HEADER START
23053  *
23054  * The contents of this file are subject to the terms of the
23055  * Common Development and Distribution License (the "License").
23056  * You may not use this file except in compliance with the License.
23057  *
23058  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23059  * or http://www.opensolaris.org/os/licensing.
23060  * See the License for the specific language governing permissions
23061  * and limitations under the License.
23062  *
23063  * When distributing Covered Code, include this CDDL HEADER in each
23064  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23065  * If applicable, add the following below this CDDL HEADER, with the
23066  * fields enclosed by brackets "[]" replaced with your own identifying
23067  * information: Portions Copyright [yyyy] [name of copyright owner]
23068  *
23069  * CDDL HEADER END
23070  */
23071 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
23072 /*	  All Rights Reserved  	*/
23073 
23074 
23075 /*
23076  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23077  * Use is subject to license terms.
23078  *
23079  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
23080  * Copyright 2016 Joyent, Inc.
23081  */
23082 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h" 2
23083 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 1
23084 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
23085 /*	  All Rights Reserved  	*/
23086 
23087 
23088 /*
23089  * Copyright (c) 1982, 1986, 1993 Regents of the University of California.
23090  * All rights reserved.  The Berkeley software License Agreement
23091  * specifies the terms and conditions for redistribution.
23092  */
23093 
23094 /*
23095  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
23096  *
23097  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23098  * Use is subject to license terms.
23099  *
23100  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
23101  */
23102 
23103 /*
23104  * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
23105  */
23106 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h" 2
23107 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h"
23108 /*
23109  * Condtion variables.
23110  */
23111 
23112 typedef struct _kcondvar {
23113  ushort_t _opaque;
23114 } kcondvar_t;
23115 
23116 typedef enum {
23117  CV_DEFAULT,
23118  CV_DRIVER
23119 } kcv_type_t;
23120 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
23121 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h"
23122 /*
23123  * Mutual exclusion locks described in common/sys/mutex.h.
23124  *
23125  * Semaphores described in common/sys/semaphore.h.
23126  *
23127  * Readers/Writer locks described in common/sys/rwlock.h.
23128  *
23129  * Condition variables described in common/sys/condvar.h
23130  */
23131 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
23132 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h" 1
23133 /*
23134  * CDDL HEADER START
23135  *
23136  * The contents of this file are subject to the terms of the
23137  * Common Development and Distribution License, Version 1.0 only
23138  * (the "License").  You may not use this file except in compliance
23139  * with the License.
23140  *
23141  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23142  * or http://www.opensolaris.org/os/licensing.
23143  * See the License for the specific language governing permissions
23144  * and limitations under the License.
23145  *
23146  * When distributing Covered Code, include this CDDL HEADER in each
23147  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23148  * If applicable, add the following below this CDDL HEADER, with the
23149  * fields enclosed by brackets "[]" replaced with your own identifying
23150  * information: Portions Copyright [yyyy] [name of copyright owner]
23151  *
23152  * CDDL HEADER END
23153  */
23154 /*
23155  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
23156  * Use is subject to license terms.
23157  */
23158 
23159 
23160 
23161 
23162 #pragma ident "%Z%%M%	%I%	%E% SMI"
23163 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h"
23164 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
23165 /*
23166  * CDDL HEADER START
23167  *
23168  * The contents of this file are subject to the terms of the
23169  * Common Development and Distribution License (the "License").
23170  * You may not use this file except in compliance with the License.
23171  *
23172  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23173  * or http://www.opensolaris.org/os/licensing.
23174  * See the License for the specific language governing permissions
23175  * and limitations under the License.
23176  *
23177  *
23178  * When distributing Covered Code, include this CDDL HEADER in each
23179  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23180  * If applicable, add the following below this CDDL HEADER, with the
23181  * fields enclosed by brackets "[]" replaced with your own identifying
23182  * information: Portions Copyright [yyyy] [name of copyright owner]
23183  *
23184  * CDDL HEADER END
23185  */
23186 
23187 /*
23188  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23189  * Use is subject to license terms.
23190  * Copyright 2016 Joyent, Inc.
23191  */
23192 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h" 2
23193 # 69 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h"
23194 /*
23195  * XXX	Ick.  This type needs to be visible outside the above guard because
23196  * the proc structure is visible outside the _KERNEL | _KMEMUSER guard.
23197  * If we can make proc internals less visible, (which we obviously should)
23198  * then this can be invisible too.
23199  */
23200 typedef unsigned int model_t;
23201 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
23202 
23203 
23204 
23205 
23206 
23207 /*
23208  * Data queue.
23209  *
23210  * NOTE: The *only* public fields are documented in queue(9S).
23211  *       Everything else is implementation-private.
23212  *
23213  * The locking rules for the queue_t structure are extremely subtle and vary
23214  * widely depending on the field in question.  As such, each field is
23215  * annotated according to the following legend:
23216  *
23217  *   Q9S: The field is documented in queue(9S) and may be accessed without
23218  *        locks by a STREAMS module when inside an entry point (e.g., put(9E)).
23219  *        However, no fields can be directly modified unless q_lock is held
23220  *        (which is not possible in a DDI compliant STREAMS module), with the
23221  *        following exceptions:
23222  *
23223  *	   - q_ptr: can be modified as per the rules of the STREAMS module.
23224  *		    The STREAMS framework ignores q_ptr and thus imposes *no*
23225  *		    locking rules on it.
23226  *         - q_qinfo: can be modified before qprocson().
23227  *
23228  *	   - q_minpsz, q_maxpsz, q_hiwat, q_lowat: can be modified as per the
23229  *		    rules of the STREAMS module.  The STREAMS framework never
23230  *		    modifies these fields, and is tolerant of temporarily
23231  *		    stale field values.
23232  *
23233  *	  In general, the STREAMS framework employs one of the following
23234  *	  techniques to ensure STREAMS modules can safely access Q9S fields:
23235  *
23236  *	   - The field is only modified by the framework when the stream is
23237  *	     locked with strlock() (q_next).
23238  *
23239  *	   - The field is modified by the framework, but the modifies are
23240  *	     atomic, and temporarily stale values are harmless (q_count,
23241  *	     q_first, q_last).
23242  *
23243  *	   - The field is modified by the framework, but the field's visible
23244  *	     values are either constant or directly under the control
23245  *	     of the STREAMS module itself (q_flag).
23246  *
23247  *   QLK: The field must be accessed or modified under q_lock, except when
23248  *        the stream has been locked with strlock().  If multiple q_locks must
23249  *        be acquired, q_locks at higher addresses must be taken first.
23250  *
23251  *   STR: The field can be accessed without a lock, but must be modified under
23252  *	  strlock().
23253  *
23254  *   SQLK: The field must be accessed or modified under SQLOCK().
23255  *
23256  *   NOLK: The field can be accessed without a lock, but can only be modified
23257  *	   when the queue_t is not known to any other threads.
23258  *
23259  *   SVLK: The field must be accessed or modified under the service_queue lock.
23260  *         Note that service_lock must be taken after any needed q_locks,
23261  *	   and that no other lock should be taken while service_lock is held.
23262  *
23263  * In addition, it is always acceptable to modify a field that is not yet
23264  * known to any other threads -- and other special case exceptions exist in
23265  * the code.  Also, q_lock is used with q_wait to implement a stream head
23266  * monitor for reads and writes.
23267  */
23268 typedef struct queue {
23269  struct qinit *q_qinfo; /* Q9S: Q processing procedure  */
23270  struct msgb *q_first; /* Q9S: first message in Q	*/
23271  struct msgb *q_last; /* Q9S: last message in Q	*/
23272  struct queue *q_next; /* Q9S: next Q in stream	*/
23273  struct queue *q_link; /* SVLK: next Q for scheduling	*/
23274  void *q_ptr; /* Q9S: module-specific data	*/
23275  size_t q_count; /* Q9S: number of bytes on Q	*/
23276  uint_t q_flag; /* Q9S: Q state			*/
23277  ssize_t q_minpsz; /* Q9S: smallest packet OK on Q */
23278  ssize_t q_maxpsz; /* Q9S: largest packet OK on Q	*/
23279  size_t q_hiwat; /* Q9S: Q high water mark	*/
23280  size_t q_lowat; /* Q9S: Q low water mark	*/
23281  struct qband *q_bandp; /* QLK: band flow information	*/
23282  kmutex_t q_lock; /* NOLK: structure lock		*/
23283  struct stdata *q_stream; /* NOLK: stream backpointer	*/
23284  struct syncq *q_syncq; /* NOLK: associated syncq 	*/
23285  unsigned char q_nband; /* QLK: number of bands		*/
23286  kcondvar_t q_wait; /* NOLK: read/write sleep CV	*/
23287  struct queue *q_nfsrv; /* STR: next Q with svc routine */
23288  ushort_t q_draining; /* QLK: Q is draining		*/
23289  short q_struiot; /* QLK: sync streams Q UIO mode	*/
23290  clock_t q_qtstamp; /* QLK: when Q was enabled	*/
23291  size_t q_mblkcnt; /* QLK: mblk count		*/
23292  uint_t q_syncqmsgs; /* QLK: syncq message count	*/
23293  size_t q_rwcnt; /* QLK: # threads in rwnext()	*/
23294  pri_t q_spri; /* QLK: Q scheduling priority	*/
23295 
23296  /*
23297 	 * Syncq scheduling
23298 	 */
23299  struct msgb *q_sqhead; /* QLK: first syncq message	*/
23300  struct msgb *q_sqtail; /* QLK: last syncq message 	*/
23301  struct queue *q_sqnext; /* SQLK: next Q on syncq list	*/
23302  struct queue *q_sqprev; /* SQLK: prev Q on syncq list 	*/
23303  uint_t q_sqflags; /* SQLK: syncq flags		*/
23304  clock_t q_sqtstamp; /* SQLK: when Q was scheduled for sq */
23305 
23306  /*
23307 	 * NOLK: Reference to the queue's module's implementation
23308 	 * structure. This will be NULL for queues associated with drivers.
23309 	 */
23310  struct fmodsw_impl *q_fp;
23311 } queue_t;
23312 
23313 /*
23314  * Queue flags; unused flags not documented in queue(9S) can be recycled.
23315  */
23316 # 169 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23317 /*	UNUSED		0x00000200	   was QHLIST			*/
23318 /* 	UNUSED 		0x00000400	   was QUNSAFE			*/
23319 
23320 
23321 
23322 
23323 
23324 
23325      /* all MT type flags		*/
23326 
23327 
23328 
23329 
23330 
23331 
23332 /*	UNUSED		0x00400000	   was QHOT			*/
23333 /*	UNUSED		0x00800000	   was QNEXTHOT			*/
23334 /* 	UNUSED		0x01000000	   was _QNEXTLESS		*/
23335 
23336 
23337 
23338 
23339      /* direct interface to/from sockfs */
23340 
23341 /* queue sqflags (protected by SQLOCK). */
23342 
23343 
23344      /* This is also noted by the	*/
23345      /* q_draining field, but this one is */
23346      /* protected by SQLOCK */
23347 
23348 /*
23349  * Structure that describes the separate information
23350  * for each priority band in the queue.
23351  */
23352 typedef struct qband {
23353  struct qband *qb_next; /* next band's info */
23354  size_t qb_count; /* number of bytes in band */
23355  struct msgb *qb_first; /* beginning of band's data */
23356  struct msgb *qb_last; /* end of band's data */
23357  size_t qb_hiwat; /* high water mark for band */
23358  size_t qb_lowat; /* low water mark for band */
23359  uint_t qb_flag; /* see below */
23360  size_t qb_mblkcnt; /* mblk counter for runaway msgs */
23361 } qband_t;
23362 
23363 /*
23364  * qband flags
23365  */
23366 
23367 
23368 
23369 
23370 /*
23371  * Maximum number of bands.
23372  */
23373 
23374 
23375 /*
23376  * Fields that can be manipulated through strqset() and strqget().
23377  */
23378 typedef enum qfields {
23379  QHIWAT = 0, /* q_hiwat or qb_hiwat */
23380  QLOWAT = 1, /* q_lowat or qb_lowat */
23381  QMAXPSZ = 2, /* q_maxpsz */
23382  QMINPSZ = 3, /* q_minpsz */
23383  QCOUNT = 4, /* q_count or qb_count */
23384  QFIRST = 5, /* q_first or qb_first */
23385  QLAST = 6, /* q_last or qb_last */
23386  QFLAG = 7, /* q_flag or qb_flag */
23387  QSTRUIOT = 8, /* q_struiot */
23388  QBAD = 9
23389 } qfields_t;
23390 
23391 /*
23392  * Module information structure
23393  */
23394 struct module_info {
23395  ushort_t mi_idnum; /* module id number */
23396  char *mi_idname; /* module name */
23397  ssize_t mi_minpsz; /* min packet size accepted */
23398  ssize_t mi_maxpsz; /* max packet size accepted */
23399  size_t mi_hiwat; /* hi-water mark */
23400  size_t mi_lowat; /* lo-water mark */
23401 };
23402 
23403 /*
23404  * queue information structure (with Synchronous STREAMS extensions)
23405  */
23406 struct qinit {
23407  int (*qi_putp)(); /* put procedure */
23408  int (*qi_srvp)(); /* service procedure */
23409  int (*qi_qopen)(); /* called on startup */
23410  int (*qi_qclose)(); /* called on finish */
23411  int (*qi_qadmin)(); /* for future use */
23412  struct module_info *qi_minfo; /* module information structure */
23413  struct module_stat *qi_mstat; /* module statistics structure */
23414  int (*qi_rwp)(); /* r/w procedure */
23415  int (*qi_infop)(); /* information procedure */
23416  int qi_struiot; /* stream uio type for struio() */
23417 };
23418 
23419 /*
23420  * Values for qi_struiot and q_struiot:
23421  */
23422 
23423 
23424 
23425 
23426 /*
23427  * Streamtab (used in cdevsw and fmodsw to point to module or driver)
23428  */
23429 struct streamtab {
23430  struct qinit *st_rdinit;
23431  struct qinit *st_wrinit;
23432  struct qinit *st_muxrinit;
23433  struct qinit *st_muxwinit;
23434 };
23435 
23436 /*
23437  * Structure sent to mux drivers to indicate a link.
23438  */
23439 struct linkblk {
23440  queue_t *l_qtop; /* lowest level write queue of upper stream */
23441     /* (set to NULL for persistent links) */
23442  queue_t *l_qbot; /* highest level write queue of lower stream */
23443  int l_index; /* index for lower stream. */
23444 };
23445 
23446 /*
23447  * Esballoc data buffer freeing routine
23448  */
23449 typedef struct free_rtn {
23450  void (*free_func)();
23451  caddr_t free_arg;
23452 } frtn_t;
23453 
23454 /*
23455  * Data block descriptor
23456  *
23457  * NOTE: db_base, db_lim, db_ref and db_type are the *only* public fields,
23458  * as described in datab(9S).  Everything else is implementation-private.
23459  */
23460 
23461 
23462 
23463 typedef struct datab {
23464  frtn_t *db_frtnp;
23465  unsigned char *db_base;
23466  unsigned char *db_lim;
23467  unsigned char db_ref;
23468  unsigned char db_type;
23469  unsigned char db_flags;
23470  unsigned char db_struioflag;
23471  pid_t db_cpid; /* cached pid, needs verification */
23472  void *db_cache; /* kmem cache descriptor */
23473  struct msgb *db_mblk;
23474  void (*db_free)(struct msgb *, struct datab *);
23475  void (*db_lastfree)(struct msgb *, struct datab *);
23476  intptr_t db_cksumstart;
23477  intptr_t db_cksumend;
23478  intptr_t db_cksumstuff;
23479  union {
23480   double enforce_alignment;
23481   unsigned char data[8];
23482   struct {
23483    union {
23484     uint32_t u32;
23485     uint16_t u16;
23486    } cksum_val; /* used to store calculated cksum */
23487    uint16_t flags;
23488    uint16_t pad;
23489   } cksum;
23490   /*
23491 		 * Union used for future extensions (pointer to data ?).
23492 		 */
23493  } db_struioun;
23494  struct fthdr *db_fthdr;
23495  cred_t *db_credp; /* credential */
23496 } dblk_t;
23497 
23498 
23499 
23500 
23501 /*
23502  * Accessor macros for private dblk_t fields (the rest are in <sys/strsun.h>).
23503  */
23504 
23505 
23506 
23507 /*
23508  * Used by GLDv2 to store the TCI information.
23509  */
23510 
23511 
23512 /*
23513  * Message block descriptor
23514  */
23515 typedef struct msgb {
23516  struct msgb *b_next;
23517  struct msgb *b_prev;
23518  struct msgb *b_cont;
23519  unsigned char *b_rptr;
23520  unsigned char *b_wptr;
23521  struct datab *b_datap;
23522  unsigned char b_band;
23523  unsigned char b_tag;
23524  unsigned short b_flag;
23525  queue_t *b_queue; /* for sync queues */
23526 } mblk_t;
23527 
23528 /*
23529  * bcache descriptor
23530  */
23531 typedef struct bcache {
23532  kmutex_t mutex;
23533  struct kmem_cache *buffer_cache;
23534  struct kmem_cache *dblk_cache;
23535  int alloc;
23536  int destroy;
23537  size_t size;
23538  uint_t align;
23539 } bcache_t;
23540 
23541 /*
23542  * db_flags values (all implementation private!)
23543  */
23544 
23545 
23546 
23547 
23548 /*
23549  * db_struioflag values:
23550  */
23551 
23552 
23553 
23554 
23555 
23556 
23557 /*
23558  * Message flags.  These are interpreted by the stream head.
23559  */
23560 
23561 
23562     /* write side of stream */
23563 
23564 /*	UNUSED		0x08	   was MSGNOGET (can be recycled) */
23565 
23566 
23567 
23568 
23569 /*
23570  * Streams message types.
23571  */
23572 
23573 /*
23574  * Data and protocol messages (regular and priority)
23575  */
23576 
23577 
23578 
23579 
23580 /*
23581  * Control messages (regular and priority)
23582  */
23583 # 445 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23584 /*
23585  * Control messages (high priority; go to head of queue)
23586  */
23587 # 468 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23588 /*
23589  * Queue message class definitions.
23590  */
23591 
23592 
23593 
23594 /*
23595  *  IOCTL structure - this structure is the format of the M_IOCTL message type.
23596  */
23597 # 488 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23598 struct iocblk {
23599  int ioc_cmd; /* ioctl command type */
23600  cred_t *ioc_cr; /* full credentials */
23601  uint_t ioc_id; /* ioctl id */
23602  size_t ioc_count; /* count of bytes in data field */
23603  int ioc_error; /* error code */
23604  int ioc_rval; /* return value  */
23605  int ioc_fill1;
23606  uint_t ioc_flag; /* see below */
23607  int ioc_filler[2]; /* reserved for future use */
23608 };
23609 
23610 
23611 typedef struct iocblk *IOCP;
23612 
23613 /* {ioc,cp}_flags values */
23614 
23615 
23616 
23617 
23618 
23619 
23620 
23621 /*
23622  *	Is the ioctl data formatted for our native model?
23623  */
23624 
23625 
23626 
23627 /*
23628  * structure for the M_COPYIN and M_COPYOUT message types.
23629  */
23630 # 531 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23631 struct copyreq {
23632  int cq_cmd; /* ioctl command (from ioc_cmd) */
23633  cred_t *cq_cr; /* full credentials */
23634  uint_t cq_id; /* ioctl id (from ioc_id) */
23635  caddr_t cq_addr; /* address to copy data to/from */
23636  size_t cq_size; /* number of bytes to copy */
23637  uint_t cq_flag; /* must be zero */
23638  mblk_t *cq_private; /* private state information */
23639  int cq_filler[4]; /* reserved for future use */
23640 };
23641 
23642 
23643 /*
23644  * structure for the M_IOCDATA message type.
23645  */
23646 # 557 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23647 struct copyresp {
23648  int cp_cmd; /* ioctl command (from ioc_cmd) */
23649  cred_t *cp_cr; /* full credentials */
23650  uint_t cp_id; /* ioctl id (from ioc_id) */
23651  caddr_t cp_rval; /* status of request: 0 -> success */
23652      /* 		non-zero -> failure */
23653  size_t cp_pad1;
23654  uint_t cp_pad2;
23655  mblk_t *cp_private; /* private state information */
23656  uint_t cp_flag; /* datamodel IOC_ flags; see above */
23657  int cp_filler[3];
23658 };
23659 
23660 
23661 /*
23662  * Since these structures are all intended to travel in the same message
23663  * at different stages of a STREAMS ioctl, this union is used to determine
23664  * the message size in strdoioctl().
23665  */
23666 union ioctypes {
23667  struct iocblk iocblk;
23668  struct copyreq copyreq;
23669  struct copyresp copyresp;
23670 };
23671 
23672 /*
23673  * Options structure for M_SETOPTS message.  This is sent upstream
23674  * by a module or driver to set stream head options.
23675  */
23676 struct stroptions {
23677  uint_t so_flags; /* options to set */
23678  short so_readopt; /* read option */
23679  ushort_t so_wroff; /* write offset */
23680  ssize_t so_minpsz; /* minimum read packet size */
23681  ssize_t so_maxpsz; /* maximum read packet size */
23682  size_t so_hiwat; /* read queue high water mark */
23683  size_t so_lowat; /* read queue low water mark */
23684  unsigned char so_band; /* band for water marks */
23685  ushort_t so_erropt; /* error option */
23686  ssize_t so_maxblk; /* maximum message block size */
23687  ushort_t so_copyopt; /* copy options (see stropts.h) */
23688  ushort_t so_tail; /* space available at the end */
23689 };
23690 
23691 /* flags for stream options set message */
23692 # 673 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23693 /*
23694  * Miscellaneous parameters and flags.
23695  */
23696 
23697 /*
23698  * Values for stream flag in open to indicate module open, clone open,
23699  * and the return value for failure.
23700  */
23701 
23702 
23703 
23704 
23705 /*
23706  * Priority definitions for block allocation.
23707  */
23708 
23709 
23710 
23711 
23712 /*
23713  * Value for packet size that denotes infinity
23714  */
23715 
23716 
23717 /*
23718  * Flags for flushq()
23719  */
23720 
23721 
23722 
23723 /*
23724  * Flag for transparent ioctls
23725  */
23726 
23727 
23728 /*
23729  * Stream head default high/low water marks
23730  */
23731 
23732 
23733 
23734 /*
23735  * qwriter perimeter types
23736  */
23737 
23738 
23739 
23740 /*
23741  * Definitions of Streams macros and function interfaces.
23742  */
23743 
23744 /*
23745  * canenable - check if queue can be enabled by putq().
23746  */
23747 
23748 
23749 /*
23750  * Test if data block type is one of the data messages (i.e. not a control
23751  * message).
23752  */
23753 
23754 
23755 
23756 
23757 
23758 
23759 
23760 /*
23761  * Extract queue class of message block.
23762  */
23763 
23764 
23765 /*
23766  * Align address on next lower word boundary.
23767  */
23768 
23769 
23770 /*
23771  * Find the max size of data block.
23772  */
23773 # 68 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
23774 
23775 /*
23776  * Symbols such as htonl() are required to be exposed through this file,
23777  * per XNS Issue 5. This is achieved by inclusion of <sys/byteorder.h>
23778  */
23779 
23780 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h" 1
23781 /*
23782  * CDDL HEADER START
23783  *
23784  * The contents of this file are subject to the terms of the
23785  * Common Development and Distribution License (the "License").
23786  * You may not use this file except in compliance with the License.
23787  *
23788  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23789  * or http://www.opensolaris.org/os/licensing.
23790  * See the License for the specific language governing permissions
23791  * and limitations under the License.
23792  *
23793  * When distributing Covered Code, include this CDDL HEADER in each
23794  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23795  * If applicable, add the following below this CDDL HEADER, with the
23796  * fields enclosed by brackets "[]" replaced with your own identifying
23797  * information: Portions Copyright [yyyy] [name of copyright owner]
23798  *
23799  * CDDL HEADER END
23800  */
23801 
23802 /*
23803  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23804  * Use is subject to license terms.
23805  */
23806 
23807 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
23808 /*	  All Rights Reserved  	*/
23809 
23810 /*
23811  * University Copyright- Copyright (c) 1982, 1986, 1988
23812  * The Regents of the University of California
23813  * All Rights Reserved
23814  *
23815  * University Acknowledgment- Portions of this document are derived from
23816  * software developed by the University of California, Berkeley, and its
23817  * contributors.
23818  */
23819 
23820 
23821 
23822 
23823 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
23824 /*
23825  * CDDL HEADER START
23826  *
23827  * The contents of this file are subject to the terms of the
23828  * Common Development and Distribution License (the "License").
23829  * You may not use this file except in compliance with the License.
23830  *
23831  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23832  * or http://www.opensolaris.org/os/licensing.
23833  * See the License for the specific language governing permissions
23834  * and limitations under the License.
23835  *
23836  *
23837  * When distributing Covered Code, include this CDDL HEADER in each
23838  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23839  * If applicable, add the following below this CDDL HEADER, with the
23840  * fields enclosed by brackets "[]" replaced with your own identifying
23841  * information: Portions Copyright [yyyy] [name of copyright owner]
23842  *
23843  * CDDL HEADER END
23844  */
23845 
23846 /*
23847  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23848  * Use is subject to license terms.
23849  * Copyright 2016 Joyent, Inc.
23850  */
23851 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h" 2
23852 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
23853 /*
23854  * CDDL HEADER START
23855  *
23856  * The contents of this file are subject to the terms of the
23857  * Common Development and Distribution License, Version 1.0 only
23858  * (the "License").  You may not use this file except in compliance
23859  * with the License.
23860  *
23861  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23862  * or http://www.opensolaris.org/os/licensing.
23863  * See the License for the specific language governing permissions
23864  * and limitations under the License.
23865  *
23866  * When distributing Covered Code, include this CDDL HEADER in each
23867  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23868  * If applicable, add the following below this CDDL HEADER, with the
23869  * fields enclosed by brackets "[]" replaced with your own identifying
23870  * information: Portions Copyright [yyyy] [name of copyright owner]
23871  *
23872  * CDDL HEADER END
23873  */
23874 /*
23875  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
23876  *
23877  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
23878  * Use is subject to license terms.
23879  */
23880 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h" 2
23881 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23882 /*
23883  * macros for conversion between host and (internet) network byte order
23884  */
23885 # 74 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23886 typedef uint16_t in_port_t;
23887 
23888 
23889 
23890 
23891 typedef uint32_t in_addr_t;
23892 
23893 
23894 
23895 extern uint32_t htonl(uint32_t);
23896 extern uint16_t htons(uint16_t);
23897 extern uint32_t ntohl(uint32_t);
23898 extern uint16_t ntohs(uint16_t);
23899 # 96 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23900 extern uint64_t htonll(uint64_t);
23901 extern uint64_t ntohll(uint64_t);
23902 
23903 
23904 
23905 
23906 
23907 
23908 /*
23909  * Macros to reverse byte order
23910  */
23911 # 141 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23912 /*
23913  * Macros to convert from a specific byte order to/from native byte order
23914  */
23915 # 164 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23916 /*
23917  * Macros to read unaligned values from a specific byte order to
23918  * native byte order
23919  */
23920 # 204 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23921 /*
23922  * Macros to write unaligned values from native byte order to a specific byte
23923  * order.
23924  */
23925 # 75 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
23926 
23927 
23928 
23929 
23930 
23931 
23932 
23933 /*
23934  * Note: IPv4 address data structures usage conventions.
23935  * The "in_addr_t" type below (required by Unix standards)
23936  * is NOT a typedef of "struct in_addr" and violates the usual
23937  * conventions where "struct <name>" and <name>_t are corresponding
23938  * typedefs.
23939  * To minimize confusion, kernel data structures/usage prefers use
23940  * of "ipaddr_t" as atomic uint32_t type and avoid using "in_addr_t"
23941  * The user level APIs continue to follow the historic popular
23942  * practice of using "struct in_addr".
23943  */
23944 
23945 
23946 
23947 
23948 
23949 
23950 
23951 typedef uint32_t ipaddr_t;
23952 
23953 
23954 
23955 
23956 struct in6_addr {
23957  union {
23958   /*
23959 		 * Note: Static initalizers of "union" type assume
23960 		 * the constant on the RHS is the type of the first member
23961 		 * of union.
23962 		 * To make static initializers (and efficient usage) work,
23963 		 * the order of members exposed to user and kernel view of
23964 		 * this data structure is different.
23965 		 * User environment sees specified uint8_t type as first
23966 		 * member whereas kernel sees most efficient type as
23967 		 * first member.
23968 		 */
23969 
23970 
23971 
23972 
23973   uint8_t _S6_u8[16]; /* IPv6 address */
23974   uint32_t _S6_u32[4]; /* IPv6 address */
23975 
23976   uint32_t __S6_align; /* Align on 32 bit boundary */
23977  } _S6_un;
23978 };
23979 
23980 
23981 
23982 
23983 
23984 
23985 
23986 typedef struct in6_addr in6_addr_t;
23987 # 144 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23988 /*
23989  * Protocols
23990  *
23991  * Some of these constant names are copied for the DTrace IP provider in
23992  * usr/src/lib/libdtrace/common/{ip.d.in, ip.sed.in}, which should be kept
23993  * in sync.
23994  */
23995 # 177 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23996       /* Transmission Protocol */
23997 # 186 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23998 /*
23999  * Port/socket numbers: network standard functions
24000  *
24001  * Entries should exist here for each port number compiled into an ON
24002  * component, such as snoop.
24003  */
24004 # 208 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24005 /*
24006  * Port/socket numbers: host specific functions
24007  */
24008 # 229 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24009 /*
24010  * Internet Key Exchange (IKE) ports
24011  */
24012 
24013 
24014 
24015 /*
24016  * UNIX TCP sockets
24017  */
24018 
24019 
24020 
24021 
24022 
24023 
24024 /*
24025  * UNIX UDP sockets
24026  */
24027 
24028 
24029 
24030 
24031 
24032 
24033 
24034 /*
24035  * DHCPv6 UDP ports
24036  */
24037 
24038 
24039 
24040 
24041 
24042 /*
24043  * Ports < IPPORT_RESERVED are reserved for
24044  * privileged processes (e.g. root).
24045  * Ports > IPPORT_USERRESERVED are reserved
24046  * for servers, not necessarily privileged.
24047  */
24048 
24049 
24050 
24051 /*
24052  * Link numbers
24053  */
24054 
24055 
24056 
24057 
24058 /*
24059  * IPv4 Internet address
24060  *	This definition contains obsolete fields for compatibility
24061  *	with SunOS 3.x and 4.2bsd.  The presence of subnets renders
24062  *	divisions into fixed fields misleading at best.  New code
24063  *	should use only the s_addr field.
24064  */
24065 # 293 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24066 struct in_addr {
24067  union {
24068   struct { uint8_t s_b1, s_b2, s_b3, s_b4; } S_un_b;
24069   struct { uint16_t s_w1, s_w2; } S_un_w;
24070 
24071   uint32_t S_addr;
24072 
24073 
24074 
24075  } S_un;
24076 
24077 
24078 
24079 
24080 
24081 
24082 };
24083 
24084 /*
24085  * Definitions of bits in internet address integers.
24086  * On subnets, the decomposition of addresses to host and net parts
24087  * is done according to subnet mask, not the masks here.
24088  *
24089  * Note that with the introduction of CIDR, IN_CLASSA, IN_CLASSB,
24090  * IN_CLASSC, IN_CLASSD and IN_CLASSE macros have become "de-facto
24091  * obsolete". IN_MULTICAST macro should be used to test if a address
24092  * is a multicast address.
24093  */
24094 # 348 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24095 /*
24096  * We have removed CLASS E checks from the kernel
24097  * But we preserve these defines for userland in order
24098  * to avoid compile  breakage of some 3rd party piece of software
24099  */
24100 # 369 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24101 /* Scoped IPv4 prefixes (in host byte-order) */
24102 # 379 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24103 /* RFC 3927 IPv4 link local address (i in host byte-order) */
24104 
24105 
24106 /* Well known 6to4 Relay Router Anycast address defined in RFC 3068 */
24107 
24108 
24109 
24110 
24111 
24112 
24113 /*
24114  * Define a macro to stuff the loopback address into an Internet address
24115  */
24116 
24117 
24118 
24119 
24120 
24121 
24122 /*
24123  * IPv4 Socket address.
24124  */
24125 struct sockaddr_in {
24126  sa_family_t sin_family;
24127  in_port_t sin_port;
24128  struct in_addr sin_addr;
24129 
24130  char sin_zero[8];
24131 
24132 
24133 
24134 };
24135 
24136 
24137 /*
24138  * IPv6 socket address.
24139  */
24140 struct sockaddr_in6 {
24141  sa_family_t sin6_family;
24142  in_port_t sin6_port;
24143  uint32_t sin6_flowinfo;
24144  struct in6_addr sin6_addr;
24145  uint32_t sin6_scope_id; /* Depends on scope of sin6_addr */
24146  uint32_t __sin6_src_id; /* Impl. specific - UDP replies */
24147 };
24148 
24149 /*
24150  * Macros for accessing the traffic class and flow label fields from
24151  * sin6_flowinfo.
24152  * These are designed to be applied to a 32-bit value.
24153  */
24154 # 438 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24155 /* masks */
24156 
24157 
24158 
24159 
24160 
24161 /*
24162  * Note: Macros IN6ADDR_ANY_INIT and IN6ADDR_LOOPBACK_INIT are for
24163  * use as RHS of Static initializers of "struct in6_addr" (or in6_addr_t)
24164  * only. They need to be different for User/Kernel versions because union
24165  * component data structure is defined differently (it is identical at
24166  * binary representation level).
24167  *
24168  * const struct in6_addr IN6ADDR_ANY_INIT;
24169  * const struct in6_addr IN6ADDR_LOOPBACK_INIT;
24170  */
24171 # 478 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24172 /*
24173  * RFC 2553 specifies the following macros. Their type is defined
24174  * as "int" in the RFC but they only have boolean significance
24175  * (zero or non-zero). For the purposes of our comment notation,
24176  * we assume a hypothetical type "bool" defined as follows to
24177  * write the prototypes assumed for macros in our comments better.
24178  *
24179  * typedef int bool;
24180  */
24181 
24182 /*
24183  * IN6 macros used to test for special IPv6 addresses
24184  * (Mostly from spec)
24185  *
24186  * bool  IN6_IS_ADDR_UNSPECIFIED (const struct in6_addr *);
24187  * bool  IN6_IS_ADDR_LOOPBACK    (const struct in6_addr *);
24188  * bool  IN6_IS_ADDR_MULTICAST   (const struct in6_addr *);
24189  * bool  IN6_IS_ADDR_LINKLOCAL   (const struct in6_addr *);
24190  * bool  IN6_IS_ADDR_SITELOCAL   (const struct in6_addr *);
24191  * bool  IN6_IS_ADDR_V4MAPPED    (const struct in6_addr *);
24192  * bool  IN6_IS_ADDR_V4MAPPED_ANY(const struct in6_addr *); -- Not from RFC2553
24193  * bool  IN6_IS_ADDR_V4COMPAT    (const struct in6_addr *);
24194  * bool  IN6_IS_ADDR_MC_RESERVED (const struct in6_addr *); -- Not from RFC2553
24195  * bool  IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *);
24196  * bool  IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *);
24197  * bool  IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *);
24198  * bool  IN6_IS_ADDR_MC_ORGLOCAL (const struct in6_addr *);
24199  * bool  IN6_IS_ADDR_MC_GLOBAL   (const struct in6_addr *);
24200  * bool  IN6_IS_ADDR_6TO4	 (const struct in6_addr *); -- Not from RFC2553
24201  * bool  IN6_ARE_6TO4_PREFIX_EQUAL(const struct in6_addr *,
24202  *	     const struct in6_addr *);			    -- Not from RFC2553
24203  * bool  IN6_IS_ADDR_LINKSCOPE	 (const struct in6addr  *); -- Not from RFC2553
24204  */
24205 # 568 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24206 /*
24207  * IN6_IS_ADDR_V4MAPPED - A IPv4 mapped INADDR_ANY
24208  * Note: This macro is currently NOT defined in RFC2553 specification
24209  * and not a standard macro that portable applications should use.
24210  */
24211 # 587 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24212 /* Exclude loopback and unspecified address */
24213 # 605 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24214 /*
24215  * Note:
24216  * IN6_IS_ADDR_MC_RESERVED macro is currently NOT defined in RFC2553
24217  * specification and not a standard macro that portable applications
24218  * should use.
24219  */
24220 # 660 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24221 /*
24222  * The IN6_IS_ADDR_MC_SOLICITEDNODE macro is not defined in any standard or
24223  * RFC, and shouldn't be used by portable applications.  It is used to see
24224  * if an address is a solicited-node multicast address, which is prefixed
24225  * with ff02:0:0:0:0:1:ff00::/104.
24226  */
24227 # 680 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24228 /*
24229  * Macros to a) test for 6to4 IPv6 address, and b) to test if two
24230  * 6to4 addresses have the same /48 prefix, and, hence, are from the
24231  * same 6to4 site.
24232  */
24233 # 699 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24234 /*
24235  * IN6_IS_ADDR_LINKSCOPE
24236  * Identifies an address as being either link-local, link-local multicast or
24237  * node-local multicast.  All types of addresses are considered to be unique
24238  * within the scope of a given link.
24239  */
24240 
24241 
24242 
24243 
24244 /*
24245  * Useful utility macros for operations with IPv6 addresses
24246  * Note: These macros are NOT defined in the RFC2553 or any other
24247  * standard specification and are not standard macros that portable
24248  * applications should use.
24249  */
24250 
24251 /*
24252  * IN6_V4MAPPED_TO_INADDR
24253  * IN6_V4MAPPED_TO_IPADDR
24254  *	Assign a IPv4-Mapped IPv6 address to an IPv4 address.
24255  *	Note: These macros are NOT defined in RFC2553 or any other standard
24256  *	specification and are not macros that portable applications should
24257  *	use.
24258  *
24259  * void IN6_V4MAPPED_TO_INADDR(const in6_addr_t *v6, struct in_addr *v4);
24260  * void IN6_V4MAPPED_TO_IPADDR(const in6_addr_t *v6, ipaddr_t v4);
24261  *
24262  */
24263 
24264 
24265 
24266 
24267 
24268 /*
24269  * IN6_INADDR_TO_V4MAPPED
24270  * IN6_IPADDR_TO_V4MAPPED
24271  *	Assign a IPv4 address address to an IPv6 address as a IPv4-mapped
24272  *	address.
24273  *	Note: These macros are NOT defined in RFC2553 or any other standard
24274  *	specification and are not macros that portable applications should
24275  *	use.
24276  *
24277  * void IN6_INADDR_TO_V4MAPPED(const struct in_addr *v4, in6_addr_t *v6);
24278  * void IN6_IPADDR_TO_V4MAPPED(const ipaddr_t v4, in6_addr_t *v6);
24279  *
24280  */
24281 # 770 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24282 /*
24283  * IN6_6TO4_TO_V4ADDR
24284  *	Extract the embedded IPv4 address from the prefix to a 6to4 IPv6
24285  *      address.
24286  *	Note: This macro is NOT defined in RFC2553 or any other standard
24287  *	specification and is not a macro that portable applications should
24288  *	use.
24289  *	Note: we don't use the IPADDR form of the macro because we need
24290  *	to do a bytewise copy; the V4ADDR in the 6to4 address is not
24291  *	32-bit aligned.
24292  *
24293  * void IN6_6TO4_TO_V4ADDR(const in6_addr_t *v6, struct in_addr *v4);
24294  *
24295  */
24296 
24297 
24298 
24299 
24300 
24301 
24302 /*
24303  * IN6_V4ADDR_TO_6TO4
24304  *	Given an IPv4 address and an IPv6 address for output, a 6to4 address
24305  *	will be created from the IPv4 Address.
24306  *	Note:  This method for creating 6to4 addresses is not standardized
24307  *	outside of Solaris.  The newly created 6to4 address will be of the form
24308  *	2002:<V4ADDR>:<SUBNETID>::<HOSTID>, where SUBNETID will equal 0 and
24309  *	HOSTID will equal 1.
24310  *
24311  * void IN6_V4ADDR_TO_6TO4(const struct in_addr *v4, in6_addr_t *v6)
24312  *
24313  */
24314 # 828 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24315 /*
24316  * IN6_ARE_ADDR_EQUAL (defined in RFC2292)
24317  *	 Compares if IPv6 addresses are equal.
24318  * Note: Compares in order of high likelyhood of a miss so we minimize
24319  * compares. (Current heuristic order, compare in reverse order of
24320  * uint32_t units)
24321  *
24322  * bool  IN6_ARE_ADDR_EQUAL(const struct in6_addr *,
24323  *			    const struct in6_addr *);
24324  */
24325 
24326 
24327 
24328 
24329 
24330 
24331 /*
24332  * IN6_ARE_PREFIXEDADDR_EQUAL (not defined in RFCs)
24333  *	Compares if prefixed parts of IPv6 addresses are equal.
24334  *
24335  * uint32_t IN6_MASK_FROM_PREFIX(int, int);
24336  * bool     IN6_ARE_PREFIXEDADDR_EQUAL(const struct in6_addr *,
24337  *				       const struct in6_addr *,
24338  *				       int);
24339  */
24340 # 879 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24341 /*
24342  * Options for use with [gs]etsockopt at the IP level.
24343  *
24344  * Note: Some of the IP_ namespace has conflict with and
24345  * and is exposed through <xti.h>. (It also requires exposing
24346  * options not implemented). The options with potential
24347  * for conflicts use #ifndef guards.
24348  */
24349 # 919 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24350 /*
24351  * IP_PKTINFO and IP_RECVPKTINFO have same value. Size of argument passed in
24352  * is used to differentiate b/w the two.
24353  */
24354 
24355 
24356 
24357 
24358 
24359 /*
24360  * Different preferences that can be requested from IPSEC protocols.
24361  */
24362 
24363 
24364 
24365 
24366 /*
24367  * This can be used with the setsockopt() call to set per socket security
24368  * options. When the application uses per-socket API, we will reflect
24369  * the request on both outbound and inbound packets.
24370  */
24371 
24372 typedef struct ipsec_req {
24373  uint_t ipsr_ah_req; /* AH request */
24374  uint_t ipsr_esp_req; /* ESP request */
24375  uint_t ipsr_self_encap_req; /* Self-Encap request */
24376  uint8_t ipsr_auth_alg; /* Auth algs for AH */
24377  uint8_t ipsr_esp_alg; /* Encr algs for ESP */
24378  uint8_t ipsr_esp_auth_alg; /* Auth algs for ESP */
24379 } ipsec_req_t;
24380 
24381 /*
24382  * MCAST_* options are protocol-independent.  The actual definitions
24383  * are with the v6 options below; this comment is here to note the
24384  * namespace usage.
24385  *
24386  * #define	MCAST_JOIN_GROUP	0x29
24387  * #define	MCAST_LEAVE_GROUP	0x2a
24388  * #define	MCAST_BLOCK_SOURCE	0x2b
24389  * #define	MCAST_UNBLOCK_SOURCE	0x2c
24390  * #define	MCAST_JOIN_SOURCE_GROUP	0x2d
24391  * #define	MCAST_LEAVE_SOURCE_GROUP 0x2e
24392  */
24393 
24394 
24395 /*
24396  * SunOS private (potentially not portable) IP_ option names
24397  */
24398 
24399 
24400 
24401 /* can be reused		0x44 */
24402 
24403 
24404 /*
24405  * Option values and names (when !_XPG5) shared with <xti_inet.h>
24406  */
24407 # 988 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24408 /*
24409  * The following option values are reserved by <xti_inet.h>
24410  *
24411  * T_IP_OPTIONS	0x107	 -  IP per-packet options
24412  * T_IP_TOS	0x108	 -  IP per packet type of service
24413  */
24414 
24415 /*
24416  * Default value constants for multicast attributes controlled by
24417  * IP*_MULTICAST_LOOP and IP*_MULTICAST_{TTL,HOPS} options.
24418  */
24419 
24420 
24421 
24422 
24423 /*
24424  * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
24425  */
24426 struct ip_mreq {
24427  struct in_addr imr_multiaddr; /* IP multicast address of group */
24428  struct in_addr imr_interface; /* local IP address of interface */
24429 };
24430 
24431 /*
24432  * Argument structure for IP_BLOCK_SOURCE, IP_UNBLOCK_SOURCE,
24433  * IP_ADD_SOURCE_MEMBERSHIP, and IP_DROP_SOURCE_MEMBERSHIP.
24434  */
24435 struct ip_mreq_source {
24436  struct in_addr imr_multiaddr; /* IP address of group */
24437  struct in_addr imr_sourceaddr; /* IP address of source */
24438  struct in_addr imr_interface; /* IP address of interface */
24439 };
24440 
24441 /*
24442  * Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP on
24443  * IPv6 addresses.
24444  */
24445 struct ipv6_mreq {
24446  struct in6_addr ipv6mr_multiaddr; /* IPv6 multicast addr */
24447  unsigned int ipv6mr_interface; /* interface index */
24448 };
24449 
24450 /*
24451  * Use #pragma pack() construct to force 32-bit alignment on amd64.
24452  * This is needed to keep the structure size and offsets consistent
24453  * between a 32-bit app and the 64-bit amd64 kernel in structures
24454  * where 64-bit alignment would create gaps (in this case, structures
24455  * which have a uint32_t followed by a struct sockaddr_storage).
24456  */
24457 
24458 
24459 
24460 
24461 /*
24462  * Argument structure for MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP.
24463  */
24464 struct group_req {
24465  uint32_t gr_interface; /* interface index */
24466  struct sockaddr_storage gr_group; /* group address */
24467 };
24468 
24469 /*
24470  * Argument structure for MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE,
24471  * MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP.
24472  */
24473 struct group_source_req {
24474  uint32_t gsr_interface; /* interface index */
24475  struct sockaddr_storage gsr_group; /* group address */
24476  struct sockaddr_storage gsr_source; /* source address */
24477 };
24478 
24479 /*
24480  * Argument for SIOC[GS]MSFILTER ioctls
24481  */
24482 struct group_filter {
24483  uint32_t gf_interface; /* interface index */
24484  struct sockaddr_storage gf_group; /* multicast address */
24485  uint32_t gf_fmode; /* filter mode */
24486  uint32_t gf_numsrc; /* number of sources */
24487  struct sockaddr_storage gf_slist[1]; /* source address */
24488 };
24489 # 1078 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24490 /*
24491  * Argument for SIOC[GS]IPMSFILTER ioctls (IPv4-specific)
24492  */
24493 struct ip_msfilter {
24494  struct in_addr imsf_multiaddr; /* IP multicast address of group */
24495  struct in_addr imsf_interface; /* local IP address of interface */
24496  uint32_t imsf_fmode; /* filter mode */
24497  uint32_t imsf_numsrc; /* number of sources in src_list */
24498  struct in_addr imsf_slist[1]; /* start of source list */
24499 };
24500 
24501 
24502 
24503 
24504 
24505 /*
24506  * Multicast source filter manipulation functions in libsocket;
24507  * defined in RFC 3678.
24508  */
24509 int setsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, uint32_t,
24510    uint_t, struct sockaddr_storage *);
24511 
24512 int getsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, uint32_t *,
24513    uint_t *, struct sockaddr_storage *);
24514 
24515 int setipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t,
24516    uint32_t, struct in_addr *);
24517 
24518 int getipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t *,
24519    uint32_t *, struct in_addr *);
24520 
24521 /*
24522  * Definitions needed for [gs]etsourcefilter(), [gs]etipv4sourcefilter()
24523  */
24524 
24525 
24526 
24527 /*
24528  * Argument struct for IP_PKTINFO option
24529  */
24530 typedef struct in_pktinfo {
24531  unsigned int ipi_ifindex; /* send/recv interface index */
24532  struct in_addr ipi_spec_dst; /* matched source address */
24533  struct in_addr ipi_addr; /* src/dst address in IP hdr */
24534 } in_pktinfo_t;
24535 
24536 /*
24537  * Argument struct for IPV6_PKTINFO option
24538  */
24539 struct in6_pktinfo {
24540  struct in6_addr ipi6_addr; /* src/dst IPv6 address */
24541  unsigned int ipi6_ifindex; /* send/recv interface index */
24542 };
24543 
24544 /*
24545  * Argument struct for IPV6_MTUINFO option
24546  */
24547 struct ip6_mtuinfo {
24548  struct sockaddr_in6 ip6m_addr; /* dst address including zone ID */
24549  uint32_t ip6m_mtu; /* path MTU in host byte order */
24550 };
24551 
24552 /*
24553  * IPv6 routing header types
24554  */
24555 
24556 
24557 extern socklen_t inet6_rth_space(int type, int segments);
24558 extern void *inet6_rth_init(void *bp, socklen_t bp_len, int type, int segments);
24559 extern int inet6_rth_add(void *bp, const struct in6_addr *addr);
24560 extern int inet6_rth_reverse(const void *in, void *out);
24561 extern int inet6_rth_segments(const void *bp);
24562 extern struct in6_addr *inet6_rth_getaddr(const void *bp, int index);
24563 
24564 extern int inet6_opt_init(void *extbuf, socklen_t extlen);
24565 extern int inet6_opt_append(void *extbuf, socklen_t extlen, int offset,
24566  uint8_t type, socklen_t len, uint_t align, void **databufp);
24567 extern int inet6_opt_finish(void *extbuf, socklen_t extlen, int offset);
24568 extern int inet6_opt_set_val(void *databuf, int offset, void *val,
24569  socklen_t vallen);
24570 extern int inet6_opt_next(void *extbuf, socklen_t extlen, int offset,
24571  uint8_t *typep, socklen_t *lenp, void **databufp);
24572 extern int inet6_opt_find(void *extbufp, socklen_t extlen, int offset,
24573  uint8_t type, socklen_t *lenp, void **databufp);
24574 extern int inet6_opt_get_val(void *databuf, int offset, void *val,
24575  socklen_t vallen);
24576 
24577 
24578 /*
24579  * Argument structure for IP_ADD_PROXY_ADDR.
24580  * Note that this is an unstable, experimental interface. It may change
24581  * later. Don't use it unless you know what it is.
24582  */
24583 typedef struct {
24584  struct in_addr in_prefix_addr;
24585  unsigned int in_prefix_len;
24586 } in_prefix_t;
24587 
24588 
24589 
24590 /*
24591  * IPv6 options
24592  */
24593 
24594      /* packets. */
24595      /* argument type: uint_t */
24596 
24597      /* multicast packets. */
24598      /* argument type: struct in6_addr */
24599 
24600      /* multicast packets. */
24601      /* argument type: uint_t */
24602 
24603      /* multicast packets on same socket. */
24604      /* argument type: uint_t */
24605 
24606      /* argument type: struct ipv6_mreq */
24607 
24608      /* argument type: struct ipv6_mreq */
24609 
24610 /*
24611  * Other XPG6 constants.
24612  */
24613 
24614      /* decimal notation. */
24615 
24616      /* standard colon-hex notation. */
24617 
24618 
24619 
24620 
24621 
24622 /*
24623  * IPV6_ADD_MEMBERSHIP and IPV6_DROP_MEMBERSHIP are being kept
24624  * for backward compatibility. They have the same meaning as IPV6_JOIN_GROUP
24625  * and IPV6_LEAVE_GROUP respectively.
24626  */
24627 
24628      /* argument type: struct ipv6_mreq */
24629 
24630      /* argument type: struct ipv6_mreq */
24631 
24632 
24633      /* arg type: "struct in6_pktingo" - */
24634 
24635 
24636 
24637 
24638      /* the routing header */
24639 
24640 
24641      /* the routing header */
24642 
24643 
24644 
24645 
24646 /*
24647  * This options exists for backwards compatability and should no longer be
24648  * used.  Use IPV6_RECVDSTOPTS instead.
24649  */
24650 
24651 
24652 
24653 
24654 /*
24655  * enable/disable IPV6_RTHDRDSTOPTS.  Now obsolete.  IPV6_RECVDSTOPTS enables
24656  * the receipt of both headers.
24657  */
24658 # 1259 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24659 /*
24660  * enable/disable receipt of both both IPV6_DSTOPTS headers.
24661  */
24662 
24663 
24664 /*
24665  * protocol-independent multicast membership options.
24666  */
24667 
24668 
24669 
24670 
24671 
24672 
24673 
24674 /* 32Bit field for IPV6_SRC_PREFERENCES */
24675 # 1295 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24676 /*
24677  * SunOS private (potentially not portable) IPV6_ option names
24678  */
24679 
24680 
24681      /* unspecified (all zeros) */
24682 
24683 /*
24684  * Miscellaneous IPv6 constants.
24685  */
24686 
24687 
24688 
24689 
24690 /*
24691  * Extern declarations for pre-defined global const variables
24692  */
24693 
24694 
24695 
24696 extern const struct in6_addr in6addr_any;
24697 extern const struct in6_addr in6addr_loopback;
24698 # 78 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
24699 
24700 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 1
24701 /*
24702  * CDDL HEADER START
24703  *
24704  * The contents of this file are subject to the terms of the
24705  * Common Development and Distribution License (the "License").
24706  * You may not use this file except in compliance with the License.
24707  *
24708  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24709  * or http://www.opensolaris.org/os/licensing.
24710  * See the License for the specific language governing permissions
24711  * and limitations under the License.
24712  *
24713  * When distributing Covered Code, include this CDDL HEADER in each
24714  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24715  * If applicable, add the following below this CDDL HEADER, with the
24716  * fields enclosed by brackets "[]" replaced with your own identifying
24717  * information: Portions Copyright [yyyy] [name of copyright owner]
24718  *
24719  * CDDL HEADER END
24720  */
24721 /*
24722  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24723  *
24724  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24725  */
24726 
24727 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
24728 /*	  All Rights Reserved	*/
24729 
24730 /*
24731  * University Copyright- Copyright (c) 1982, 1986, 1988
24732  * The Regents of the University of California
24733  * All Rights Reserved
24734  *
24735  * University Acknowledgment- Portions of this document are derived from
24736  * software developed by the University of California, Berkeley, and its
24737  * contributors.
24738  */
24739 
24740 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
24741 
24742 
24743 
24744 
24745 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
24746 /*
24747  * CDDL HEADER START
24748  *
24749  * The contents of this file are subject to the terms of the
24750  * Common Development and Distribution License (the "License").
24751  * You may not use this file except in compliance with the License.
24752  *
24753  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24754  * or http://www.opensolaris.org/os/licensing.
24755  * See the License for the specific language governing permissions
24756  * and limitations under the License.
24757  *
24758  * When distributing Covered Code, include this CDDL HEADER in each
24759  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24760  * If applicable, add the following below this CDDL HEADER, with the
24761  * fields enclosed by brackets "[]" replaced with your own identifying
24762  * information: Portions Copyright [yyyy] [name of copyright owner]
24763  *
24764  * CDDL HEADER END
24765  */
24766 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
24767 /*	  All Rights Reserved  	*/
24768 
24769 
24770 /*
24771  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24772  * Use is subject to license terms.
24773  *
24774  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24775  * Copyright 2016 Joyent, Inc.
24776  */
24777 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
24778 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h" 1
24779 /*
24780  * CDDL HEADER START
24781  *
24782  * The contents of this file are subject to the terms of the
24783  * Common Development and Distribution License (the "License").
24784  * You may not use this file except in compliance with the License.
24785  *
24786  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24787  * or http://www.opensolaris.org/os/licensing.
24788  * See the License for the specific language governing permissions
24789  * and limitations under the License.
24790  *
24791  * When distributing Covered Code, include this CDDL HEADER in each
24792  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24793  * If applicable, add the following below this CDDL HEADER, with the
24794  * fields enclosed by brackets "[]" replaced with your own identifying
24795  * information: Portions Copyright [yyyy] [name of copyright owner]
24796  *
24797  * CDDL HEADER END
24798  */
24799 /*
24800  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24801  *
24802  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
24803  * Use is subject to license terms.
24804  *
24805  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24806  * Copyright (c) 2015, Joyent, Inc.  All rights reserved.
24807  */
24808 
24809 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
24810 /*	  All Rights Reserved  	*/
24811 
24812 /*
24813  * University Copyright- Copyright (c) 1982, 1986, 1988
24814  * The Regents of the University of California
24815  * All Rights Reserved
24816  *
24817  * University Acknowledgment- Portions of this document are derived from
24818  * software developed by the University of California, Berkeley, and its
24819  * contributors.
24820  */
24821 
24822 
24823 
24824 
24825 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
24826 /*
24827  * CDDL HEADER START
24828  *
24829  * The contents of this file are subject to the terms of the
24830  * Common Development and Distribution License (the "License").
24831  * You may not use this file except in compliance with the License.
24832  *
24833  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24834  * or http://www.opensolaris.org/os/licensing.
24835  * See the License for the specific language governing permissions
24836  * and limitations under the License.
24837  *
24838  * When distributing Covered Code, include this CDDL HEADER in each
24839  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24840  * If applicable, add the following below this CDDL HEADER, with the
24841  * fields enclosed by brackets "[]" replaced with your own identifying
24842  * information: Portions Copyright [yyyy] [name of copyright owner]
24843  *
24844  * CDDL HEADER END
24845  */
24846 
24847 /*
24848  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
24849  * Copyright 2016 Joyent, Inc.
24850  *
24851  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24852  * Use is subject to license terms.
24853  */
24854 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h" 2
24855 
24856 
24857 
24858 
24859 
24860 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
24861 /*
24862  * CDDL HEADER START
24863  *
24864  * The contents of this file are subject to the terms of the
24865  * Common Development and Distribution License (the "License").
24866  * You may not use this file except in compliance with the License.
24867  *
24868  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24869  * or http://www.opensolaris.org/os/licensing.
24870  * See the License for the specific language governing permissions
24871  * and limitations under the License.
24872  *
24873  * When distributing Covered Code, include this CDDL HEADER in each
24874  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24875  * If applicable, add the following below this CDDL HEADER, with the
24876  * fields enclosed by brackets "[]" replaced with your own identifying
24877  * information: Portions Copyright [yyyy] [name of copyright owner]
24878  *
24879  * CDDL HEADER END
24880  */
24881 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
24882 /*	  All Rights Reserved  	*/
24883 
24884 
24885 /*
24886  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24887  * Use is subject to license terms.
24888  *
24889  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24890  * Copyright 2016 Joyent, Inc.
24891  */
24892 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h" 2
24893 
24894 /*
24895  * I/O parameter information.  A uio structure describes the I/O which
24896  * is to be performed by an operation.  Typically the data movement will
24897  * be performed by a routine such as uiomove(), which updates the uio
24898  * structure to reflect what was done.
24899  */
24900 
24901 
24902 
24903 
24904 
24905 
24906 
24907 typedef struct iovec {
24908  caddr_t iov_base;
24909 
24910 
24911 
24912  long iov_len;
24913 
24914 } iovec_t;
24915 # 90 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24916 /*
24917  * Segment flag values.
24918  */
24919 typedef enum uio_seg { UIO_USERSPACE, UIO_SYSSPACE, UIO_USERISPACE } uio_seg_t;
24920 
24921 typedef struct uio {
24922  iovec_t *uio_iov; /* pointer to array of iovecs */
24923  int uio_iovcnt; /* number of iovecs */
24924  lloff_t _uio_offset; /* file offset */
24925  uio_seg_t uio_segflg; /* address space (kernel or user) */
24926  uint16_t uio_fmode; /* file mode flags */
24927  uint16_t uio_extflg; /* extended flags */
24928  lloff_t _uio_limit; /* u-limit (maximum byte offset) */
24929  ssize_t uio_resid; /* residual count */
24930 } uio_t;
24931 
24932 /*
24933  * Extended uio_t uioa_t used for asynchronous uio.
24934  *
24935  * Note: UIOA_IOV_MAX is defined and used as it is in "fs/vncalls.c"
24936  *	 as there isn't a formal definition of IOV_MAX for the kernel.
24937  */
24938 
24939 
24940 typedef struct uioa_page_s { /* locked uio_iov state */
24941  int uioa_pfncnt; /* count of pfn_t(s) in *uioa_ppp */
24942  void **uioa_ppp; /* page_t or pfn_t arrary */
24943  caddr_t uioa_base; /* address base */
24944  size_t uioa_len; /* span length */
24945 } uioa_page_t;
24946 
24947 typedef struct uioa_s {
24948  iovec_t *uio_iov; /* pointer to array of iovecs */
24949  int uio_iovcnt; /* number of iovecs */
24950  lloff_t _uio_offset; /* file offset */
24951  uio_seg_t uio_segflg; /* address space (kernel or user) */
24952  uint16_t uio_fmode; /* file mode flags */
24953  uint16_t uio_extflg; /* extended flags */
24954  lloff_t _uio_limit; /* u-limit (maximum byte offset) */
24955  ssize_t uio_resid; /* residual count */
24956  /*
24957 	 * uioa extended members.
24958 	 */
24959  uint32_t uioa_state; /* state of asynch i/o */
24960  ssize_t uioa_mbytes; /* bytes that have been uioamove()ed */
24961  uioa_page_t *uioa_lcur; /* pointer into uioa_locked[] */
24962  void **uioa_lppp; /* pointer into lcur->uioa_ppp[] */
24963  void *uioa_hwst[4]; /* opaque hardware state */
24964  uioa_page_t uioa_locked[16]; /* Per iov locked pages */
24965 } uioa_t;
24966 
24967 /*
24968  * uio extensions
24969  *
24970  * PSARC 2009/478: Copy Reduction Interfaces
24971  */
24972 typedef enum xuio_type {
24973  UIOTYPE_ASYNCIO,
24974  UIOTYPE_ZEROCOPY
24975 } xuio_type_t;
24976 
24977 typedef struct xuio {
24978  uio_t xu_uio; /* Embedded UIO structure */
24979 
24980  /* Extended uio fields */
24981  enum xuio_type xu_type; /* What kind of uio structure? */
24982  union {
24983   /* Async I/O Support, intend to replace uioa_t. */
24984   struct {
24985    uint32_t xu_a_state; /* state of async i/o */
24986    /* bytes that have been uioamove()ed */
24987    ssize_t xu_a_mbytes;
24988    uioa_page_t *xu_a_lcur; /* pointer into uioa_locked[] */
24989    /* pointer into lcur->uioa_ppp[] */
24990    void **xu_a_lppp;
24991    void *xu_a_hwst[4]; /* opaque hardware state */
24992    /* Per iov locked pages */
24993    uioa_page_t xu_a_locked[16];
24994   } xu_aio;
24995 
24996   /*
24997 		 * Copy Reduction Support -- facilate loaning / returning of
24998 		 * filesystem cache buffers.
24999 		 */
25000   struct {
25001    int xu_zc_rw; /* read or write buffer */
25002    void *xu_zc_priv; /* fs specific */
25003   } xu_zc;
25004  } xu_ext;
25005 } xuio_t;
25006 # 207 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
25007 /*
25008  * I/O direction.
25009  */
25010 typedef enum uio_rw { UIO_READ, UIO_WRITE } uio_rw_t;
25011 
25012 /*
25013  * uio_extflg: extended flags
25014  *
25015  * NOTE: This flag will be used in uiomove to determine if non-temporal
25016  * access, ie, access bypassing caches, should be used.  Filesystems that
25017  * don't initialize this field could experience suboptimal performance due to
25018  * the random data the field contains.
25019  *
25020  * NOTE: This flag is also used by uioasync callers to pass an extended
25021  * uio_t (uioa_t), to uioasync enabled consumers. Unlike above all
25022  * consumers of a uioa_t require the uio_extflg to be initialized.
25023  */
25024 
25025 
25026 
25027 
25028 
25029 
25030 /*
25031  * Global uioasync capability shadow state.
25032  */
25033 typedef struct uioasync_s {
25034  boolean_t enabled; /* Is uioasync enabled? */
25035  size_t mincnt; /* Minimum byte count for use of */
25036 } uioasync_t;
25037 # 257 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
25038 extern ssize_t readv(int, const struct iovec *, int);
25039 extern ssize_t writev(int, const struct iovec *, int);
25040 
25041 /*
25042  * When in the large file compilation environment,
25043  * map preadv/pwritev to their 64 bit offset versions
25044  */
25045 
25046 
25047 
25048 # 266 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
25049 #pragma redefine_extname preadv preadv64
25050 # 266 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
25051 
25052 
25053 # 267 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
25054 #pragma redefine_extname pwritev pwritev64
25055 # 267 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
25056 
25057 
25058 
25059 
25060 
25061 
25062 
25063 /* In the LP64 compilation environment, the APIs are already large file */
25064 # 285 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
25065 extern ssize_t preadv(int, const struct iovec *, int, off_t);
25066 extern ssize_t pwritev(int, const struct iovec *, int, off_t);
25067 
25068 /*
25069  * preadv64 and pwritev64 should be defined when:
25070  * - Using the transitional compilation environment, and not
25071  *     the large file compilation environment.
25072  */
25073 
25074 
25075 extern ssize_t preadv64(int, const struct iovec *, int, off64_t);
25076 extern ssize_t pwritev64(int, const struct iovec *, int, off64_t);
25077 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25078 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
25079 /*
25080  * CDDL HEADER START
25081  *
25082  * The contents of this file are subject to the terms of the
25083  * Common Development and Distribution License (the "License").
25084  * You may not use this file except in compliance with the License.
25085  *
25086  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25087  * or http://www.opensolaris.org/os/licensing.
25088  * See the License for the specific language governing permissions
25089  * and limitations under the License.
25090  *
25091  * When distributing Covered Code, include this CDDL HEADER in each
25092  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25093  * If applicable, add the following below this CDDL HEADER, with the
25094  * fields enclosed by brackets "[]" replaced with your own identifying
25095  * information: Portions Copyright [yyyy] [name of copyright owner]
25096  *
25097  * CDDL HEADER END
25098  */
25099 
25100 /*
25101  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
25102  * Copyright 2016 Joyent, Inc.
25103  *
25104  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25105  * Use is subject to license terms.
25106  */
25107 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25108 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 1
25109 /*
25110  * CDDL HEADER START
25111  *
25112  * The contents of this file are subject to the terms of the
25113  * Common Development and Distribution License (the "License").
25114  * You may not use this file except in compliance with the License.
25115  *
25116  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25117  * or http://www.opensolaris.org/os/licensing.
25118  * See the License for the specific language governing permissions
25119  * and limitations under the License.
25120  *
25121  * When distributing Covered Code, include this CDDL HEADER in each
25122  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25123  * If applicable, add the following below this CDDL HEADER, with the
25124  * fields enclosed by brackets "[]" replaced with your own identifying
25125  * information: Portions Copyright [yyyy] [name of copyright owner]
25126  *
25127  * CDDL HEADER END
25128  */
25129 /*
25130  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25131  * Use is subject to license terms.
25132  */
25133 
25134 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
25135 /*	  All Rights Reserved	*/
25136 
25137 /*
25138  * Portions of this source code were derived from Berkeley 4.3 BSD
25139  * under license from the Regents of the University of California.
25140  */
25141 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25142 
25143 
25144 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/netconfig.h" 1
25145 /*
25146  * CDDL HEADER START
25147  *
25148  * The contents of this file are subject to the terms of the
25149  * Common Development and Distribution License, Version 1.0 only
25150  * (the "License").  You may not use this file except in compliance
25151  * with the License.
25152  *
25153  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25154  * or http://www.opensolaris.org/os/licensing.
25155  * See the License for the specific language governing permissions
25156  * and limitations under the License.
25157  *
25158  * When distributing Covered Code, include this CDDL HEADER in each
25159  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25160  * If applicable, add the following below this CDDL HEADER, with the
25161  * fields enclosed by brackets "[]" replaced with your own identifying
25162  * information: Portions Copyright [yyyy] [name of copyright owner]
25163  *
25164  * CDDL HEADER END
25165  */
25166 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
25167 /*	  All Rights Reserved  	*/
25168 
25169 
25170 /*
25171  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
25172  *
25173  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
25174  * Use is subject to license terms.
25175  */
25176 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/netconfig.h"
25177 struct netconfig {
25178  char *nc_netid; /* network identifier		*/
25179  unsigned int nc_semantics; /* defined below		*/
25180  unsigned int nc_flag; /* defined below		*/
25181  char *nc_protofmly; /* protocol family name		*/
25182  char *nc_proto; /* protocol name		*/
25183  char *nc_device; /* device name for network id	*/
25184  unsigned int nc_nlookups; /* # of entries in nc_lookups	*/
25185  char **nc_lookups; /* list of lookup directories	*/
25186  unsigned int nc_unused[8]; /* borrowed for lockd etc.	*/
25187 };
25188 
25189 typedef struct {
25190  struct netconfig **nc_head;
25191  struct netconfig **nc_curr;
25192 } NCONF_HANDLE;
25193 
25194 /*
25195  *	Values of nc_semantics
25196  */
25197 
25198 
25199 
25200 
25201 
25202 /*
25203  * NOT FOR PUBLIC USE, Solaris internal only.
25204  * This value of nc_semantics is strictly for use of Remote Direct
25205  * Memory Access provider interfaces in Solaris only and not for
25206  * general use. Do not use this value for general purpose user or
25207  * kernel programming. If used the behavior is undefined.
25208  * This is a PRIVATE interface to be used by Solaris kRPC only.
25209  */
25210 
25211 
25212 /*
25213  *	Values of nc_flag
25214  */
25215 
25216 
25217 
25218 
25219 
25220 /*
25221  *	Values of nc_protofmly
25222  */
25223 # 114 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/netconfig.h"
25224 /*
25225  * NOT FOR PUBLIC USE, Solaris internal only.
25226  * This value of nc_semantics is strictly for use of Remote Direct
25227  * Memory Access provider interfaces in Solaris only and not for
25228  * general use. Do not use this value for general purpose user or
25229  * kernel programming. If used the behavior is undefined.
25230  * This is a PRIVATE interface to be used by Solaris kRPC only.
25231  */
25232 
25233 
25234 /*
25235  *	Values for nc_proto
25236  */
25237 
25238 
25239 
25240 
25241 
25242 
25243 /*
25244  * 	Values for nc_proto for "rdma" protofmly
25245  */
25246 
25247 
25248 
25249 
25250 extern void *setnetconfig(void);
25251 extern int endnetconfig(void *);
25252 extern struct netconfig *getnetconfig(void *);
25253 extern struct netconfig *getnetconfigent(const char *);
25254 extern void freenetconfigent(struct netconfig *);
25255 extern void *setnetpath(void);
25256 extern int endnetpath(void *);
25257 extern struct netconfig *getnetpath(void *);
25258 extern void nc_perror(const char *);
25259 extern char *nc_sperror(void);
25260 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25261 
25262 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 1
25263 /*
25264  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25265  * Use is subject to license terms.
25266  *
25267  * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
25268  */
25269 /*
25270  * Copyright (c) 1982, 1986 Regents of the University of California.
25271  * All rights reserved.
25272  *
25273  * Redistribution and use in source and binary forms are permitted
25274  * provided that this notice is preserved and that due credit is given
25275  * to the University of California at Berkeley. The name of the University
25276  * may not be used to endorse or promote products derived from this
25277  * software without specific prior written permission. This software
25278  * is provided ``as is'' without express or implied warranty.
25279  */
25280 
25281 /*
25282  * Constants and structures defined by the internet system,
25283  * according to following documents
25284  *
25285  * Internet ASSIGNED NUMBERS (RFC1700) and its successors:
25286  *	http://www.iana.org/assignments/protocol-numbers
25287  *	http://www.iana.org/assignments/port-numbers
25288  * Basic Socket Interface Extensions for IPv6 (RFC2133 and its successors)
25289  *
25290  */
25291 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25292 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25293 /*
25294  * Definitions related to sockets: types, address families, options.
25295  */
25296 # 94 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25297 /*
25298  * Types
25299  */
25300 # 110 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25301 /*
25302  * Flags for socket() and accept4()
25303  */
25304 
25305 
25306 
25307 
25308 /*
25309  * Option flags per-socket.
25310  */
25311 # 132 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25312 /*
25313  * Socket options are passed using a signed integer, but it is also rare
25314  * for more than one to ever be passed at the same time with setsockopt
25315  * and only one at a time can be retrieved with getsockopt.
25316  *
25317  * Since the lower numbers cannot be renumbered for compatibility reasons,
25318  * it would seem that we need to start a new number space (0x40000000 -
25319  * 0x7fffffff) for those that don't need to be stored as a bit flag
25320  * somewhere. This limits the flag options to 30 but that seems to be
25321  * plenty, anyway. 0x40000000 is reserved for future use.
25322  */
25323 # 159 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25324 /*
25325  * N.B.: The following definition is present only for compatibility
25326  * with release 3.0.  It will disappear in later releases.
25327  */
25328 
25329 
25330 /*
25331  * Additional options, not kept in so_options.
25332  */
25333 # 183 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25334 /* "Socket"-level control message types: */
25335 # 200 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25336 /*
25337  * Socket filter options
25338  */
25339 
25340 
25341 
25342 
25343 
25344 /*
25345  * Structure returned by FIL_LIST
25346  */
25347 struct fil_info {
25348  int fi_flags; /* see below (FILF_*) */
25349  int fi_pos; /* position (0 is bottom) */
25350  char fi_name[32]; /* filter name */
25351 };
25352 # 237 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25353 /*
25354  * Structure used for manipulating linger option.
25355  */
25356 struct linger {
25357  int l_onoff; /* option on/off */
25358  int l_linger; /* linger time */
25359 };
25360 
25361 /*
25362  * Levels for (get/set)sockopt() that don't apply to a specific protocol.
25363  */
25364 
25365 
25366 
25367 
25368 
25369 
25370 
25371 /*
25372  * Address families.
25373  *
25374  * Some of these constant names are copied for the DTrace IP provider in
25375  * usr/src/lib/libdtrace/common/{ip.d.in, ip.sed.in}, which should be kept
25376  * in sync.
25377  */
25378 # 300 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25379 /*
25380  * Protocol families, same as address families for now.
25381  */
25382 # 341 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25383 /*
25384  * Maximum queue length specifiable by listen.
25385  */
25386 
25387 
25388 /*
25389  * Message header for recvmsg and sendmsg calls.
25390  */
25391 struct msghdr {
25392  void *msg_name; /* optional address */
25393  socklen_t msg_namelen; /* size of address */
25394  struct iovec *msg_iov; /* scatter/gather array */
25395  int msg_iovlen; /* # elements in msg_iov */
25396 
25397 
25398 
25399 
25400 
25401 
25402  caddr_t msg_accrights; /* access rights sent/received */
25403  int msg_accrightslen;
25404 
25405 };
25406 # 412 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25407 /* Added for XPGv2 compliance */
25408 
25409 
25410 
25411 
25412 
25413      /* with left over data */
25414 /* End of XPGv2 compliance */
25415 # 438 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25416 /* Added for XPGv2 compliance */
25417 
25418 
25419 
25420 
25421 struct cmsghdr {
25422  socklen_t cmsg_len; /* data byte count, including hdr */
25423  int cmsg_level; /* originating protocol */
25424  int cmsg_type; /* protocol-specific type */
25425 };
25426 # 528 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25427 extern int accept(int, struct sockaddr *, Psocklen_t);
25428 extern int accept4(int, struct sockaddr *, Psocklen_t, int);
25429 extern int bind(int, const struct sockaddr *, socklen_t);
25430 extern int connect(int, const struct sockaddr *, socklen_t);
25431 extern int getpeername(int, struct sockaddr *, Psocklen_t);
25432 extern int getsockname(int, struct sockaddr *, Psocklen_t);
25433 extern int getsockopt(int, int, int, void *, Psocklen_t);
25434 extern int listen(int, int); /* XXX - fixme???  where do I go */
25435 extern int socketpair(int, int, int, int *);
25436 extern ssize_t recv(int, void *, size_t, int);
25437 extern ssize_t recvfrom(int, void *, size_t, int,
25438  struct sockaddr *, Psocklen_t);
25439 extern ssize_t recvmsg(int, struct msghdr *, int);
25440 extern ssize_t send(int, const void *, size_t, int);
25441 extern ssize_t sendmsg(int, const struct msghdr *, int);
25442 extern ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *,
25443  socklen_t);
25444 extern int setsockopt(int, int, int, const void *, socklen_t);
25445 extern int shutdown(int, int);
25446 extern int socket(int, int, int);
25447 
25448 
25449 extern int sockatmark(int);
25450 # 80 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
25451 
25452 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
25453 /*
25454  * CDDL HEADER START
25455  *
25456  * The contents of this file are subject to the terms of the
25457  * Common Development and Distribution License (the "License").
25458  * You may not use this file except in compliance with the License.
25459  *
25460  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25461  * or http://www.opensolaris.org/os/licensing.
25462  * See the License for the specific language governing permissions
25463  * and limitations under the License.
25464  *
25465  * When distributing Covered Code, include this CDDL HEADER in each
25466  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25467  * If applicable, add the following below this CDDL HEADER, with the
25468  * fields enclosed by brackets "[]" replaced with your own identifying
25469  * information: Portions Copyright [yyyy] [name of copyright owner]
25470  *
25471  * CDDL HEADER END
25472  */
25473 
25474 /*
25475  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
25476  * Copyright 2016 Joyent, Inc.
25477  *
25478  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25479  * Use is subject to license terms.
25480  */
25481 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
25482 # 96 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25483 struct hostent {
25484  char *h_name; /* official name of host */
25485  char **h_aliases; /* alias list */
25486  int h_addrtype; /* host address type */
25487  int h_length; /* length of address */
25488  char **h_addr_list; /* list of addresses from name server */
25489 
25490 };
25491 
25492 
25493 /*
25494  * addrinfo introduced with IPv6 for Protocol-Independent Hostname
25495  * and Service Name Translation.
25496  */
25497 
25498 
25499 struct addrinfo {
25500  int ai_flags; /* AI_PASSIVE, AI_CANONNAME, ... */
25501  int ai_family; /* PF_xxx */
25502  int ai_socktype; /* SOCK_xxx */
25503  int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
25504 
25505 
25506 
25507  socklen_t ai_addrlen;
25508  char *ai_canonname; /* canonical name for hostname */
25509  struct sockaddr *ai_addr; /* binary address */
25510  struct addrinfo *ai_next; /* next structure in linked list */
25511 };
25512 
25513 /*
25514  * The flag 0x8000 is currently reserved for private use between libnsl and
25515  * libsocket. See lib/libsocket/inet/getaddrinfo.c for more information.
25516  */
25517 /* addrinfo flags */
25518 
25519 
25520 
25521 
25522 
25523 /* getipnodebyname() flags */
25524 
25525 
25526 
25527 
25528 
25529 /*
25530  * These were defined in RFC 2553 but not SUSv3
25531  * or RFC 3493 which obsoleted 2553.
25532  */
25533 
25534 
25535 
25536 /* addrinfo errors */
25537 # 166 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25538 /* getnameinfo flags */
25539 
25540 
25541 
25542 
25543 
25544 
25545 
25546 /* Not listed in any standards document */
25547 
25548 
25549 
25550 /* getnameinfo max sizes as defined in RFC 2553 obsoleted in RFC 3493 */
25551 
25552 
25553 
25554 
25555 
25556 /*
25557  * Scope delimit character
25558  */
25559 
25560 
25561 
25562 /*
25563  * Algorithm entry for /etc/inet/ipsecalgs which defines IPsec protocols
25564  * and algorithms.
25565  */
25566 
25567 typedef struct ipsecalgent {
25568  char **a_names; /* algorithm names */
25569  int a_proto_num; /* protocol number */
25570  int a_alg_num; /* algorithm number */
25571  char *a_mech_name; /* encryption framework mechanism name */
25572  int *a_block_sizes; /* supported block sizes */
25573  int *a_key_sizes; /* supported key sizes */
25574  int a_key_increment; /* key size increment */
25575  int *a_mech_params; /* mechanism specific parameters */
25576  int a_alg_flags; /* algorithm flags */
25577 } ipsecalgent_t;
25578 
25579 /* well-known IPsec protocol numbers */
25580 
25581 
25582 
25583 
25584 
25585 /*
25586  * Assumption here is that a network number
25587  * fits in 32 bits -- probably a poor one.
25588  */
25589 struct netent {
25590  char *n_name; /* official name of net */
25591  char **n_aliases; /* alias list */
25592  int n_addrtype; /* net address type */
25593  in_addr_t n_net; /* network # */
25594 };
25595 
25596 struct protoent {
25597  char *p_name; /* official protocol name */
25598  char **p_aliases; /* alias list */
25599  int p_proto; /* protocol # */
25600 };
25601 
25602 struct servent {
25603  char *s_name; /* official service name */
25604  char **s_aliases; /* alias list */
25605  int s_port; /* port # */
25606  char *s_proto; /* protocol to use */
25607 };
25608 
25609 
25610 struct hostent *gethostbyname_r
25611  (const char *, struct hostent *, char *, int, int *h_errnop);
25612 struct hostent *gethostbyaddr_r
25613  (const char *, int, int, struct hostent *, char *, int, int *h_errnop);
25614 struct hostent *getipnodebyname(const char *, int, int, int *);
25615 struct hostent *getipnodebyaddr(const void *, size_t, int, int *);
25616 void freehostent(struct hostent *);
25617 struct hostent *gethostent_r(struct hostent *, char *, int, int *h_errnop);
25618 
25619 struct servent *getservbyname_r
25620  (const char *name, const char *, struct servent *, char *, int);
25621 struct servent *getservbyport_r
25622  (int port, const char *, struct servent *, char *, int);
25623 struct servent *getservent_r(struct servent *, char *, int);
25624 
25625 struct netent *getnetbyname_r
25626  (const char *, struct netent *, char *, int);
25627 struct netent *getnetbyaddr_r(long, int, struct netent *, char *, int);
25628 struct netent *getnetent_r(struct netent *, char *, int);
25629 
25630 struct protoent *getprotobyname_r
25631  (const char *, struct protoent *, char *, int);
25632 struct protoent *getprotobynumber_r
25633  (int, struct protoent *, char *, int);
25634 struct protoent *getprotoent_r(struct protoent *, char *, int);
25635 
25636 int getnetgrent_r(char **, char **, char **, char *, int);
25637 int innetgr(const char *, const char *, const char *, const char *);
25638 
25639 
25640 /* Old interfaces that return a pointer to a static area;  MT-unsafe */
25641 struct hostent *gethostbyname(const char *);
25642 struct hostent *gethostent(void);
25643 struct netent *getnetbyaddr(in_addr_t, int);
25644 struct netent *getnetbyname(const char *);
25645 struct netent *getnetent(void);
25646 struct protoent *getprotobyname(const char *);
25647 struct protoent *getprotobynumber(int);
25648 struct protoent *getprotoent(void);
25649 struct servent *getservbyname(const char *, const char *);
25650 struct servent *getservbyport(int, const char *);
25651 struct servent *getservent(void);
25652 
25653 /* gethostbyaddr() second argument is a size_t only in unix95/unix98 */
25654 
25655 struct hostent *gethostbyaddr(const void *, socklen_t, int);
25656 
25657 
25658 
25659 
25660 
25661 int endhostent(void);
25662 int endnetent(void);
25663 int endprotoent(void);
25664 int endservent(void);
25665 int sethostent(int);
25666 int setnetent(int);
25667 int setprotoent(int);
25668 int setservent(int);
25669 # 318 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25670 int getaddrinfo(const char *,
25671    const char *,
25672    const struct addrinfo *,
25673    struct addrinfo **);
25674 void freeaddrinfo(struct addrinfo *);
25675 const char *gai_strerror(int);
25676 int getnameinfo(const struct sockaddr *,
25677    socklen_t, char *, socklen_t,
25678    char *, socklen_t, int);
25679 
25680 
25681 
25682 int getnetgrent(char **, char **, char **);
25683 int setnetgrent(const char *);
25684 int endnetgrent(void);
25685 int rcmd(char **, unsigned short,
25686  const char *, const char *, const char *, int *);
25687 int rcmd_af(char **, unsigned short,
25688  const char *, const char *, const char *, int *, int);
25689 int rresvport_af(int *, int);
25690 int rresvport_addr(int *, struct sockaddr_storage *);
25691 int rexec(char **, unsigned short,
25692  const char *, const char *, const char *, int *);
25693 int rexec_af(char **, unsigned short,
25694  const char *, const char *, const char *, int *, int);
25695 int rresvport(int *);
25696 int ruserok(const char *, int, const char *, const char *);
25697 /* BIND */
25698 struct hostent *gethostbyname2(const char *, int);
25699 void herror(const char *);
25700 const char *hstrerror(int);
25701 /* End BIND */
25702 
25703 /* IPsec algorithm prototype definitions */
25704 struct ipsecalgent *getipsecalgbyname(const char *, int, int *);
25705 struct ipsecalgent *getipsecalgbynum(int, int, int *);
25706 int getipsecprotobyname(const char *doi_name);
25707 char *getipsecprotobynum(int doi_domain);
25708 void freeipsecalgent(struct ipsecalgent *ptr);
25709 /* END IPsec algorithm prototype definitions */
25710 
25711 
25712 
25713 /*
25714  * Error return codes from gethostbyname() and gethostbyaddr()
25715  * (when using the resolver)
25716  */
25717 
25718 extern int h_errno;
25719 # 377 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25720 /*
25721  * Error return codes from gethostbyname() and gethostbyaddr()
25722  * (left in extern int h_errno).
25723  */
25724 # 389 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25725 /* BIND */
25726 
25727 
25728 /* End BIND */
25729 # 46 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
25730 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 1
25731 /*
25732  * CDDL HEADER START
25733  *
25734  * The contents of this file are subject to the terms of the
25735  * Common Development and Distribution License, Version 1.0 only
25736  * (the "License").  You may not use this file except in compliance
25737  * with the License.
25738  *
25739  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25740  * or http://www.opensolaris.org/os/licensing.
25741  * See the License for the specific language governing permissions
25742  * and limitations under the License.
25743  *
25744  * When distributing Covered Code, include this CDDL HEADER in each
25745  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25746  * If applicable, add the following below this CDDL HEADER, with the
25747  * fields enclosed by brackets "[]" replaced with your own identifying
25748  * information: Portions Copyright [yyyy] [name of copyright owner]
25749  *
25750  * CDDL HEADER END
25751  */
25752 /*
25753  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25754  * Use is subject to license terms.
25755  */
25756 
25757 
25758 
25759 
25760 #pragma ident "%Z%%M%	%I%	%E% SMI"
25761 
25762 
25763 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
25764 /*
25765  * CDDL HEADER START
25766  *
25767  * The contents of this file are subject to the terms of the
25768  * Common Development and Distribution License (the "License").
25769  * You may not use this file except in compliance with the License.
25770  *
25771  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25772  * or http://www.opensolaris.org/os/licensing.
25773  * See the License for the specific language governing permissions
25774  * and limitations under the License.
25775  *
25776  * When distributing Covered Code, include this CDDL HEADER in each
25777  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25778  * If applicable, add the following below this CDDL HEADER, with the
25779  * fields enclosed by brackets "[]" replaced with your own identifying
25780  * information: Portions Copyright [yyyy] [name of copyright owner]
25781  *
25782  * CDDL HEADER END
25783  */
25784 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
25785 /*	  All Rights Reserved  	*/
25786 
25787 
25788 /*
25789  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25790  * Use is subject to license terms.
25791  *
25792  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
25793  * Copyright 2016 Joyent, Inc.
25794  */
25795 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 2
25796 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h" 1
25797 /*
25798  * CDDL HEADER START
25799  *
25800  * The contents of this file are subject to the terms of the
25801  * Common Development and Distribution License, Version 1.0 only
25802  * (the "License").  You may not use this file except in compliance
25803  * with the License.
25804  *
25805  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25806  * or http://www.opensolaris.org/os/licensing.
25807  * See the License for the specific language governing permissions
25808  * and limitations under the License.
25809  *
25810  * When distributing Covered Code, include this CDDL HEADER in each
25811  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25812  * If applicable, add the following below this CDDL HEADER, with the
25813  * fields enclosed by brackets "[]" replaced with your own identifying
25814  * information: Portions Copyright [yyyy] [name of copyright owner]
25815  *
25816  * CDDL HEADER END
25817  */
25818 /*
25819  * Copyright 2000 Sun Microsystems, Inc.  All rights reserved.
25820  * Use is subject to license terms.
25821  */
25822 
25823 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
25824 /*	  All Rights Reserved  	*/
25825 
25826 /*
25827  * University Copyright- Copyright (c) 1982, 1986, 1988
25828  * The Regents of the University of California
25829  * All Rights Reserved
25830  *
25831  * University Acknowledgment- Portions of this document are derived from
25832  * software developed by the University of California, Berkeley, and its
25833  * contributors.
25834  */
25835 
25836 
25837 
25838 
25839 #pragma ident "%Z%%M%	%I%	%E% SMI"
25840 
25841 
25842 
25843 
25844 
25845 /*
25846  * Error codes
25847  */
25848 # 102 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25849 /* Filesystem Quotas */
25850 
25851 
25852 /* Convergent Error Returns */
25853 # 116 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25854 /* Interprocess Robust Locks */
25855 
25856 
25857 
25858 /* stream problems */
25859 # 136 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25860 /* Interprocess Robust Locks */
25861 # 148 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25862 /* shared library problems */
25863 # 162 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25864 /* BSD Networking Software */
25865  /* argument errors */
25866 # 174 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25867     /* protocol family */
25868 
25869 
25870  /* operational errors */
25871 
25872 
25873 
25874     /* of reset */
25875 
25876 
25877 
25878 
25879 
25880 /* XENIX has 135 - 142 */
25881 # 198 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25882 /* SUN Network File System */
25883 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 2
25884 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/parseURL.h" 1
25885 /*
25886  * CDDL HEADER START
25887  *
25888  * The contents of this file are subject to the terms of the
25889  * Common Development and Distribution License, Version 1.0 only
25890  * (the "License").  You may not use this file except in compliance
25891  * with the License.
25892  *
25893  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25894  * or http://www.opensolaris.org/os/licensing.
25895  * See the License for the specific language governing permissions
25896  * and limitations under the License.
25897  *
25898  * When distributing Covered Code, include this CDDL HEADER in each
25899  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25900  * If applicable, add the following below this CDDL HEADER, with the
25901  * fields enclosed by brackets "[]" replaced with your own identifying
25902  * information: Portions Copyright [yyyy] [name of copyright owner]
25903  *
25904  * CDDL HEADER END
25905  */
25906 /*
25907  * Copyright 2002-2003 Sun Microsystems, Inc.  All rights reserved.
25908  * Use is subject to license terms.
25909  */
25910 
25911 
25912 
25913 
25914 #pragma ident "%Z%%M%	%I%	%E% SMI"
25915 
25916 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 1
25917 /*
25918  * CDDL HEADER START
25919  *
25920  * The contents of this file are subject to the terms of the
25921  * Common Development and Distribution License (the "License").
25922  * You may not use this file except in compliance with the License.
25923  *
25924  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25925  * or http://www.opensolaris.org/os/licensing.
25926  * See the License for the specific language governing permissions
25927  * and limitations under the License.
25928  *
25929  * When distributing Covered Code, include this CDDL HEADER in each
25930  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25931  * If applicable, add the following below this CDDL HEADER, with the
25932  * fields enclosed by brackets "[]" replaced with your own identifying
25933  * information: Portions Copyright [yyyy] [name of copyright owner]
25934  *
25935  * CDDL HEADER END
25936  */
25937 
25938 /*
25939  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
25940  * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
25941  */
25942 
25943 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
25944 /*	  All Rights Reserved  	*/
25945 
25946 /*
25947  * University Copyright- Copyright (c) 1982, 1986, 1988
25948  * The Regents of the University of California
25949  * All Rights Reserved
25950  *
25951  * University Acknowledgment- Portions of this document are derived from
25952  * software developed by the University of California, Berkeley, and its
25953  * contributors.
25954  */
25955 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/parseURL.h" 2
25956 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/parseURL.h"
25957 typedef struct {
25958  char hostname[256];
25959  ushort_t port;
25960 } url_hport_t;
25961 
25962 typedef struct {
25963  boolean_t https;
25964  url_hport_t hport;
25965  char abspath[1024];
25966 } url_t;
25967 
25968 extern int url_parse_hostport(const char *, url_hport_t *, ushort_t);
25969 extern int url_parse(const char *, url_t *);
25970 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 2
25971 
25972 
25973 
25974 
25975 
25976 /* State information returned by http_conn_info() */
25977 typedef struct {
25978  url_t uri; /* URI last loaded */
25979  url_hport_t proxy; /* proxy, if any being used */
25980  boolean_t keepalive; /* Keepalive setting being used */
25981  uint_t read_timeout; /* Timeout to use for socket reads */
25982 } http_conninfo_t;
25983 
25984 
25985 /* Structure for version of the http file */
25986 typedef struct {
25987  uint_t maj_ver; /* Major version */
25988  uint_t min_ver; /* Minor version */
25989  uint_t micro_ver; /* Micro version */
25990 } boot_http_ver_t;
25991 
25992 /* Internal Libhttp errors */
25993 
25994 
25995 
25996     /* necessarily the underlying transport */
25997     /* connection). */
25998 
25999     /* error. */
26000 
26001 
26002 
26003     /* No matching entry */
26004 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h"
26005 /* Sources of errors */
26006 
26007 
26008 
26009 
26010 
26011 
26012 
26013 typedef struct {
26014  uint_t code; /* status code */
26015  char *statusmsg; /* status message */
26016  uint_t nresphdrs; /* number of response headers */
26017 } http_respinfo_t;
26018 
26019 
26020 typedef void *http_handle_t;
26021 
26022 boot_http_ver_t const *http_get_version(void);
26023 void http_set_p12_format(int);
26024 void http_set_verbose(boolean_t);
26025 int http_set_cipher_list(const char *);
26026 http_handle_t http_srv_init(const url_t *);
26027 int http_set_proxy(http_handle_t, const url_hport_t *);
26028 int http_set_keepalive(http_handle_t, boolean_t);
26029 int http_set_socket_read_timeout(http_handle_t, uint_t);
26030 int http_set_basic_auth(http_handle_t, const char *, const char *);
26031 int http_set_random_file(http_handle_t, const char *);
26032 int http_set_certificate_authority_file(const char *);
26033 int http_set_client_certificate_file(http_handle_t, const char *);
26034 int http_set_password(http_handle_t, const char *);
26035 int http_set_key_file_password(http_handle_t, const char *);
26036 int http_set_private_key_file(http_handle_t, const char *);
26037 
26038 int http_srv_connect(http_handle_t);
26039 int http_head_request(http_handle_t, const char *);
26040 int http_get_request(http_handle_t, const char *);
26041 int http_get_range_request(http_handle_t, const char *, offset_t, offset_t);
26042 void http_free_respinfo(http_respinfo_t *);
26043 int http_process_headers(http_handle_t, http_respinfo_t **);
26044 int http_process_part_headers(http_handle_t, http_respinfo_t **);
26045 char *http_get_header_value(http_handle_t, const char *);
26046 char *http_get_response_header(http_handle_t, uint_t);
26047 int http_read_body(http_handle_t, char *, size_t);
26048 int http_srv_disconnect(http_handle_t);
26049 int http_srv_close(http_handle_t);
26050 http_conninfo_t *http_get_conn_info(http_handle_t);
26051 int http_conn_is_https(http_handle_t, boolean_t *);
26052 ulong_t http_get_lasterr(http_handle_t, uint_t *);
26053 void http_decode_err(ulong_t, int *, int *, int *);
26054 char const *http_errorstr(uint_t, ulong_t);
26055 # 47 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
26056 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkgerr.h" 1
26057 /*
26058  * CDDL HEADER START
26059  *
26060  * The contents of this file are subject to the terms of the
26061  * Common Development and Distribution License (the "License").
26062  * You may not use this file except in compliance with the License.
26063  *
26064  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26065  * or http://www.opensolaris.org/os/licensing.
26066  * See the License for the specific language governing permissions
26067  * and limitations under the License.
26068  *
26069  * When distributing Covered Code, include this CDDL HEADER in each
26070  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26071  * If applicable, add the following below this CDDL HEADER, with the
26072  * fields enclosed by brackets "[]" replaced with your own identifying
26073  * information: Portions Copyright [yyyy] [name of copyright owner]
26074  *
26075  * CDDL HEADER END
26076  */
26077 
26078 /*
26079  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
26080  * Use is subject to license terms.
26081  */
26082 
26083 
26084 
26085 
26086 
26087 /*
26088  * Module:	pkgerr.h
26089  * Description:
26090  *
26091  *   Implements error routines to handle the creation,
26092  *   management, and destruction of error objects, which
26093  *   hold error messages and codes returned from libpkg
26094  *   routines that support the objects defined herein.
26095  */
26096 
26097 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
26098 /*
26099  * CDDL HEADER START
26100  *
26101  * The contents of this file are subject to the terms of the
26102  * Common Development and Distribution License (the "License").
26103  * You may not use this file except in compliance with the License.
26104  *
26105  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26106  * or http://www.opensolaris.org/os/licensing.
26107  * See the License for the specific language governing permissions
26108  * and limitations under the License.
26109  *
26110  * When distributing Covered Code, include this CDDL HEADER in each
26111  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26112  * If applicable, add the following below this CDDL HEADER, with the
26113  * fields enclosed by brackets "[]" replaced with your own identifying
26114  * information: Portions Copyright [yyyy] [name of copyright owner]
26115  *
26116  * CDDL HEADER END
26117  */
26118 
26119 /*
26120  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
26121  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
26122  */
26123 
26124 /*	Copyright (c) 1988 AT&T	*/
26125 /*	  All Rights Reserved  	*/
26126 
26127 /*
26128  * User-visible pieces of the ANSI C standard I/O package.
26129  */
26130 # 42 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkgerr.h" 2
26131 
26132 
26133 
26134 
26135 
26136 /*
26137  * Public Definitions
26138  */
26139 
26140 typedef enum {
26141  PKGERR_OK = 0,
26142  PKGERR_EXIST,
26143  PKGERR_READ,
26144  PKGERR_CORRUPT,
26145  PKGERR_PARSE,
26146  PKGERR_BADPASS,
26147  PKGERR_BADALIAS,
26148  PKGERR_INTERNAL,
26149  PKGERR_UNSUP,
26150  PKGERR_NOALIAS,
26151  PKGERR_NOALIASMATCH,
26152  PKGERR_MULTIPLE,
26153  PKGERR_INCOMPLETE,
26154  PKGERR_NOPRIVKEY,
26155  PKGERR_NOPUBKEY,
26156  PKGERR_NOCACERT,
26157  PKGERR_NOMEM,
26158  PKGERR_CHAIN,
26159  PKGERR_LOCKED,
26160  PKGERR_WRITE,
26161  PKGERR_UNLOCK,
26162  PKGERR_TIME,
26163  PKGERR_DUPLICATE,
26164  PKGERR_WEB,
26165  PKGERR_VERIFY
26166 } PKG_ERR_CODE;
26167 
26168 /*
26169  * Public Structures
26170  */
26171 
26172 /* external reference to PKG_ERR object (contents private) */
26173 typedef PKG_ERR_CODE pkg_err_t;
26174 
26175 typedef struct _pkg_err_struct PKG_ERR;
26176 
26177 /*
26178  * Public Methods
26179  */
26180 
26181 PKG_ERR *pkgerr_new();
26182 void pkgerr_add(PKG_ERR *, PKG_ERR_CODE, char *, ...);
26183 void pkgerr_clear(PKG_ERR *);
26184 int pkgerr_dump(PKG_ERR *, FILE *);
26185 int pkgerr_num(PKG_ERR *);
26186 char *pkgerr_get(PKG_ERR *, int);
26187 void pkgerr_free(PKG_ERR *);
26188 # 48 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
26189 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 1
26190 /*
26191  * CDDL HEADER START
26192  *
26193  * The contents of this file are subject to the terms of the
26194  * Common Development and Distribution License (the "License").
26195  * You may not use this file except in compliance with the License.
26196  *
26197  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26198  * or http://www.opensolaris.org/os/licensing.
26199  * See the License for the specific language governing permissions
26200  * and limitations under the License.
26201  *
26202  * When distributing Covered Code, include this CDDL HEADER in each
26203  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26204  * If applicable, add the following below this CDDL HEADER, with the
26205  * fields enclosed by brackets "[]" replaced with your own identifying
26206  * information: Portions Copyright [yyyy] [name of copyright owner]
26207  *
26208  * CDDL HEADER END
26209  */
26210 
26211 /*
26212  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
26213  * Use is subject to license terms.
26214  */
26215 
26216 
26217 
26218 
26219 
26220 /*
26221  * Module:	keystore.h
26222  * Description:	This module contains the structure definitions for processing
26223  *		package keystore files.
26224  */
26225 
26226 
26227 
26228 
26229 
26230 # 1 "/usr/include/openssl/evp.h" 1 3 4
26231 /* crypto/evp/evp.h */
26232 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
26233  * All rights reserved.
26234  *
26235  * This package is an SSL implementation written
26236  * by Eric Young (eay@cryptsoft.com).
26237  * The implementation was written so as to conform with Netscapes SSL.
26238  *
26239  * This library is free for commercial and non-commercial use as long as
26240  * the following conditions are aheared to.  The following conditions
26241  * apply to all code found in this distribution, be it the RC4, RSA,
26242  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
26243  * included with this distribution is covered by the same copyright terms
26244  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
26245  *
26246  * Copyright remains Eric Young's, and as such any Copyright notices in
26247  * the code are not to be removed.
26248  * If this package is used in a product, Eric Young should be given attribution
26249  * as the author of the parts of the library used.
26250  * This can be in the form of a textual message at program startup or
26251  * in documentation (online or textual) provided with the package.
26252  *
26253  * Redistribution and use in source and binary forms, with or without
26254  * modification, are permitted provided that the following conditions
26255  * are met:
26256  * 1. Redistributions of source code must retain the copyright
26257  *    notice, this list of conditions and the following disclaimer.
26258  * 2. Redistributions in binary form must reproduce the above copyright
26259  *    notice, this list of conditions and the following disclaimer in the
26260  *    documentation and/or other materials provided with the distribution.
26261  * 3. All advertising materials mentioning features or use of this software
26262  *    must display the following acknowledgement:
26263  *    "This product includes cryptographic software written by
26264  *     Eric Young (eay@cryptsoft.com)"
26265  *    The word 'cryptographic' can be left out if the rouines from the library
26266  *    being used are not cryptographic related :-).
26267  * 4. If you include any Windows specific code (or a derivative thereof) from
26268  *    the apps directory (application code) you must include an acknowledgement:
26269  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
26270  *
26271  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
26272  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26273  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26274  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26275  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26276  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26277  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26278  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26279  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26280  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26281  * SUCH DAMAGE.
26282  *
26283  * The licence and distribution terms for any publically available version or
26284  * derivative of this code cannot be changed.  i.e. this code cannot simply be
26285  * copied and put under another distribution licence
26286  * [including the GNU Public Licence.]
26287  */
26288 # 42 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 2
26289 # 1 "/usr/include/openssl/x509.h" 1 3 4
26290 /* crypto/x509/x509.h */
26291 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
26292  * All rights reserved.
26293  *
26294  * This package is an SSL implementation written
26295  * by Eric Young (eay@cryptsoft.com).
26296  * The implementation was written so as to conform with Netscapes SSL.
26297  *
26298  * This library is free for commercial and non-commercial use as long as
26299  * the following conditions are aheared to.  The following conditions
26300  * apply to all code found in this distribution, be it the RC4, RSA,
26301  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
26302  * included with this distribution is covered by the same copyright terms
26303  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
26304  *
26305  * Copyright remains Eric Young's, and as such any Copyright notices in
26306  * the code are not to be removed.
26307  * If this package is used in a product, Eric Young should be given attribution
26308  * as the author of the parts of the library used.
26309  * This can be in the form of a textual message at program startup or
26310  * in documentation (online or textual) provided with the package.
26311  *
26312  * Redistribution and use in source and binary forms, with or without
26313  * modification, are permitted provided that the following conditions
26314  * are met:
26315  * 1. Redistributions of source code must retain the copyright
26316  *    notice, this list of conditions and the following disclaimer.
26317  * 2. Redistributions in binary form must reproduce the above copyright
26318  *    notice, this list of conditions and the following disclaimer in the
26319  *    documentation and/or other materials provided with the distribution.
26320  * 3. All advertising materials mentioning features or use of this software
26321  *    must display the following acknowledgement:
26322  *    "This product includes cryptographic software written by
26323  *     Eric Young (eay@cryptsoft.com)"
26324  *    The word 'cryptographic' can be left out if the rouines from the library
26325  *    being used are not cryptographic related :-).
26326  * 4. If you include any Windows specific code (or a derivative thereof) from
26327  *    the apps directory (application code) you must include an acknowledgement:
26328  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
26329  *
26330  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
26331  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26332  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26333  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26334  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26335  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26336  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26337  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26338  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26339  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26340  * SUCH DAMAGE.
26341  *
26342  * The licence and distribution terms for any publically available version or
26343  * derivative of this code cannot be changed.  i.e. this code cannot simply be
26344  * copied and put under another distribution licence
26345  * [including the GNU Public Licence.]
26346  */
26347 /* ====================================================================
26348  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
26349  * ECDH support in OpenSSL originally developed by
26350  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
26351  */
26352 # 43 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 2
26353 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkgerr.h" 1
26354 /*
26355  * CDDL HEADER START
26356  *
26357  * The contents of this file are subject to the terms of the
26358  * Common Development and Distribution License (the "License").
26359  * You may not use this file except in compliance with the License.
26360  *
26361  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26362  * or http://www.opensolaris.org/os/licensing.
26363  * See the License for the specific language governing permissions
26364  * and limitations under the License.
26365  *
26366  * When distributing Covered Code, include this CDDL HEADER in each
26367  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26368  * If applicable, add the following below this CDDL HEADER, with the
26369  * fields enclosed by brackets "[]" replaced with your own identifying
26370  * information: Portions Copyright [yyyy] [name of copyright owner]
26371  *
26372  * CDDL HEADER END
26373  */
26374 
26375 /*
26376  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
26377  * Use is subject to license terms.
26378  */
26379 # 44 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 2
26380 
26381 /* keystore structures */
26382 
26383 /* this opaque type represents a keystore */
26384 typedef void *keystore_handle_t;
26385 
26386 /* flags passed to open_keystore */
26387 
26388 /* opens keystore read-only.  Attempts to modify results in an error */
26389 
26390 
26391 /* opens keystore read-write */
26392 
26393 
26394 /*
26395  * tells open_keystore to fall back to app-generic paths in the case that
26396  * the app-specific paths do not exist.
26397  */
26398 
26399 
26400 /*
26401  * tells open_keystore to use the app-specific paths no matter what,
26402  * failing if they cannot be used for any reason.
26403  */
26404 
26405 
26406 /* masks off various types of flags */
26407 
26408 
26409 
26410 /* default is read-only, soft */
26411 
26412 
26413 
26414 /*
26415  * possible encoding formats used by the library, used
26416  * by print_cert
26417  */
26418 typedef enum {
26419  KEYSTORE_FORMAT_PEM,
26420  KEYSTORE_FORMAT_DER,
26421  KEYSTORE_FORMAT_TEXT
26422 } keystore_encoding_format_t;
26423 
26424 /*
26425  * structure passed back to password callback for determining how
26426  * to prompt for passphrase, and where to record errors
26427  */
26428 typedef struct {
26429  PKG_ERR *err;
26430 } keystore_passphrase_data;
26431 
26432 
26433 /* max length of a passphrase.  One could use a short story! */
26434 
26435 
26436 /* callback for collecting passphrase when open_keystore() is called */
26437 typedef int keystore_passphrase_cb(char *, int, int, void *);
26438 
26439 /* names of the individual files within the keystore path */
26440 
26441 
26442 
26443 
26444 /* keystore.c */
26445 extern int open_keystore(PKG_ERR *, char *, char *,
26446     keystore_passphrase_cb, long flags, keystore_handle_t *);
26447 
26448 extern int print_certs(PKG_ERR *, keystore_handle_t, char *,
26449     keystore_encoding_format_t, FILE *);
26450 
26451 extern int check_cert(PKG_ERR *, X509 *);
26452 
26453 extern int check_cert_and_key(PKG_ERR *, X509 *, EVP_PKEY *);
26454 
26455 extern int print_cert(PKG_ERR *, X509 *,
26456     keystore_encoding_format_t, char *, boolean_t, FILE *);
26457 
26458 extern int close_keystore(PKG_ERR *, keystore_handle_t,
26459     keystore_passphrase_cb);
26460 
26461 extern int merge_ca_cert(PKG_ERR *, X509 *, keystore_handle_t);
26462 extern int merge_cert_and_key(PKG_ERR *, X509 *, EVP_PKEY *,
26463     char *, keystore_handle_t);
26464 
26465 extern int delete_cert_and_keys(PKG_ERR *, keystore_handle_t,
26466     char *);
26467 
26468 extern int find_key_cert_pair(PKG_ERR *, keystore_handle_t,
26469     char *, EVP_PKEY **, X509 **);
26470 
26471 extern int find_ca_certs(PKG_ERR *, keystore_handle_t,
26472     struct stack_st_X509 **);
26473 
26474 extern int find_cl_certs(PKG_ERR *, keystore_handle_t,
26475     struct stack_st_X509 **);
26476 # 49 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
26477 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/cfext.h" 1
26478 /*
26479  * CDDL HEADER START
26480  *
26481  * The contents of this file are subject to the terms of the
26482  * Common Development and Distribution License (the "License").
26483  * You may not use this file except in compliance with the License.
26484  *
26485  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26486  * or http://www.opensolaris.org/os/licensing.
26487  * See the License for the specific language governing permissions
26488  * and limitations under the License.
26489  *
26490  * When distributing Covered Code, include this CDDL HEADER in each
26491  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26492  * If applicable, add the following below this CDDL HEADER, with the
26493  * fields enclosed by brackets "[]" replaced with your own identifying
26494  * information: Portions Copyright [yyyy] [name of copyright owner]
26495  *
26496  * CDDL HEADER END
26497  */
26498 
26499 /*
26500  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26501  * Use is subject to license terms.
26502  */
26503 # 35 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/cfext.h"
26504 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
26505 /*
26506  * CDDL HEADER START
26507  *
26508  * The contents of this file are subject to the terms of the
26509  * Common Development and Distribution License (the "License").
26510  * You may not use this file except in compliance with the License.
26511  *
26512  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26513  * or http://www.opensolaris.org/os/licensing.
26514  * See the License for the specific language governing permissions
26515  * and limitations under the License.
26516  *
26517  * When distributing Covered Code, include this CDDL HEADER in each
26518  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26519  * If applicable, add the following below this CDDL HEADER, with the
26520  * fields enclosed by brackets "[]" replaced with your own identifying
26521  * information: Portions Copyright [yyyy] [name of copyright owner]
26522  *
26523  * CDDL HEADER END
26524  */
26525 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
26526 /*	  All Rights Reserved  	*/
26527 
26528 /*
26529  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
26530  * Use is subject to license terms.
26531  */
26532 # 36 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/cfext.h" 2
26533 
26534 struct mergstat {
26535  unsigned setuid:1; /* pkgmap entry has setuid */
26536  unsigned setgid:1; /* ... and/or setgid bit set */
26537  unsigned contchg:1; /* contents of the files different */
26538  unsigned attrchg:1; /* attributes are different */
26539  unsigned shared:1; /* > 1 pkg associated with this */
26540  unsigned osetuid:1; /* installed set[ug]id process ... */
26541  unsigned osetgid:1; /* ... being overwritten by pkg. */
26542  unsigned rogue:1; /* conflicting file not owned by a package */
26543  unsigned dir2nondir:1; /* was a directory & now a non-directory */
26544  unsigned replace:1; /* merge makes no sense for this object pair */
26545  unsigned denied:1; /* for some reason this was not allowed in */
26546  unsigned preloaded:1; /* already checked in a prior pkg op */
26547  unsigned processed:1; /* already installed or removed */
26548  unsigned parentsyml2dir:1;
26549  /* parent directory changed from symlink to a directory */
26550 };
26551 
26552 /*
26553  * This is information required by pkgadd for fast operation. A
26554  * cfextra struct is tagged to each cfent structure requiring
26555  * processing. This is how we avoid some unneeded repetition. The
26556  * entries incorporating the word 'local' refer to the path that
26557  * gets us to the delivered package file. In other words, to install
26558  * a file we usually copy from 'local' to 'path' below. In the case
26559  * of a link, where no actual copying takes place, local is the source
26560  * of the link. Note that environment variables are not evaluated in
26561  * the locals unless they are links since the literal path is how
26562  * pkgadd finds the entry under the reloc directory.
26563  */
26564 struct cfextra {
26565  struct cfent cf_ent; /* basic contents file entry */
26566  struct mergstat mstat; /* merge status for installs */
26567  uint32_t fsys_value; /* fstab[] entry index */
26568  uint32_t fsys_base; /* actual base filesystem in fs_tab[] */
26569  char *client_path; /* the client-relative path */
26570  char *server_path; /* the server-relative path */
26571  char *map_path; /* as read from the pkgmap */
26572  char *client_local; /* client_relative local */
26573  char *server_local; /* server relative local */
26574 };
26575 # 50 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
26576 
26577 /*
26578  * The contents database file interface.
26579  */
26580 
26581 typedef struct pkg_server *PKGserver;
26582 
26583 /* Some commands modify the internal database: add them here */
26584 # 82 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26585 typedef enum {
26586  INVALID, /* Not initialized */
26587  NEVER, /* Don't start, does check if it is running. */
26588  FLUSH_LOG, /* Run it once to incorporate the log. */
26589  RUN_ONCE, /* Run until the current client stops. */
26590  TIMEOUT, /* Run until a timeout occurs. */
26591  PERMANENT, /* Run until it is externally terminated. */
26592  DEFAULTMODE = TIMEOUT /* The default mode, must come last */
26593 } start_mode_t;
26594 
26595 typedef struct pkgcmd {
26596  int cmd;
26597  char buf[1];
26598 } pkgcmd_t;
26599 
26600 typedef struct pkgfilter {
26601  int cmd;
26602  int len;
26603  char buf[1];
26604 } pkgfilter_t;
26605 
26606 /*
26607  * Virtual File Protocol definitions
26608  */
26609 
26610 /*
26611  * flags associated with virtual file protocol operations; note that these flags
26612  * may only occupy the low order 16 bits of the 32-bit unsigned flag.
26613  */
26614 
26615 typedef unsigned long VFPFLAGS_T;
26616 # 121 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26617 /* virtual file protocol object */
26618 
26619 typedef struct _vfp VFP_T;
26620 
26621 /* structure behind the virtual file protocol object */
26622 
26623 struct _vfp {
26624  FILE *_vfpFile; /* -> opened FILE */
26625  char *_vfpCurr; /* -> current byte to read/write */
26626  char *_vfpHighWater; /* -> last byte modified */
26627  char *_vfpEnd; /* -> last data byte */
26628  char *_vfpPath; /* -> path associated with FILE */
26629  char *_vfpStart; /* -> first data byte */
26630  void *_vfpExtra; /* undefined */
26631  size_t _vfpSize; /* size of mapped/allocated area */
26632  size_t _vfpMapSize; /* # mapped bytes */
26633  VFPFLAGS_T _vfpFlags; /* flags associated with vfp/data */
26634  int _vfpOverflow; /* non-zero if buffer write overflow */
26635  blkcnt_t _vfpCkStBlocks; /* checkpoint # blocks */
26636  dev_t _vfpCkDev; /* checkpoint device i.d. */
26637  ino_t _vfpCkIno; /* checkpoint inode # */
26638  off_t _vfpCkSize; /* checkpoint size */
26639  time_t _vfpCkMtime; /* checkpoint modification time */
26640 };
26641 
26642 /*
26643  * get highest modified byte (length) contained in vfp
26644  *
26645  * determine number of bytes to write - it will be the highest of:
26646  *  -- the current pointer into the file - this is updated whenever
26647  *	the location of the file is changed by a single byte
26648  *  -- the last "high water mark" - the last known location that
26649  *	was written to the file - updated only when the location
26650  *	of the file is directly changed - e.g. vfpSetCurrCharPtr,
26651  *	vfpTruncate, vfpRewind.
26652  * this reduces the "bookkeeping" that needs to be done to know
26653  * how many bytes to write out to the file - typically a file is
26654  * written sequentially so the current file pointer is sufficient
26655  * to determine how many bytes to write out.
26656  */
26657 # 169 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26658 /*
26659  * increment current pointer by specified delta
26660  * if the delta exceeds the buffer size, set pointer to buffer end
26661  */
26662 # 185 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26663 /* get the path associated with the vfp */
26664 
26665 
26666 /* get a string from the vfp into a fixed size buffer */
26667 # 207 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26668 /* get number of bytes remaining to read */
26669 
26670 
26671 
26672 
26673 /* get number of bytes remaining to write */
26674 
26675 
26676 
26677 
26678 /* put current character and increment to next */
26679 
26680 
26681 
26682 
26683 
26684 
26685 /* put integer to current character and increment */
26686 
26687 
26688 /* put long to current character and increment */
26689 
26690 
26691 /* get current character and increment to next */
26692 
26693 
26694 /* get current character - do not increment */
26695 
26696 
26697 /* get pointer to current character */
26698 
26699 
26700 /* increment current character pointer */
26701 
26702 
26703 /* decrement current character pointer */
26704 
26705 
26706 /* get pointer to first data byte in buffer */
26707 
26708 
26709 /* get pointer to last data byte in buffer */
26710 
26711 
26712 /* set pointer to current character */
26713 
26714 
26715 
26716 
26717 
26718 
26719 /* set pointer to last data byte in buffer */
26720 # 267 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26721 /* seek to end of file - one past last data byte in file */
26722 
26723 
26724 /* get number of bytes between current char and specified char */
26725 
26726 
26727 
26728 /* put string to current character and increment */
26729 # 284 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26730 /* put fixed number of bytes to current character and increment */
26731 # 298 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26732 /* put format one arg to current character and increment */
26733 
26734 
26735 
26736 
26737 
26738 
26739 
26740 struct dm_buf {
26741  char *text_buffer; /* start of allocated buffer */
26742  int offset; /* number of bytes into the text_buffer */
26743  int allocation; /* size of buffer in bytes */
26744 };
26745 
26746 /* This structure is used to hold a dynamically growing string */
26747 
26748 struct dstr {
26749  char *pc;
26750  int len;
26751  int max;
26752 };
26753 
26754 /* setmapmode() defines */
26755 # 330 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26756 /* max length for printed attributes */
26757 
26758 
26759 /*
26760  * These three defines indicate that the prototype file contains a '?'
26761  * meaning do not specify this data in the pkgmap entry.
26762  */
26763 # 366 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26764 /* Settings for network admin defaults */
26765 # 377 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26766 /* package header magic tokens */
26767 
26768 
26769 
26770 /* name of security files */
26771 
26772 
26773 
26774 
26775 
26776 
26777 /*
26778  * The next three mean that no mode, owner or group was specified or that the
26779  * one specified is invalid for some reason. Sometimes this is an error in
26780  * which case it is generally converted to CUR* with a warning. Other times
26781  * it means "look it up" by stating the existing file system object pointred
26782  * to in the prototype file.
26783  */
26784 
26785 
26786 
26787 
26788 /* string comparitor abbreviators */
26789 
26790 
26791 
26792 
26793 
26794 
26795 extern FILE *epopen(char *cmd, char *mode);
26796 extern char **gpkglist(char *dir, char **pkg, char **catg);
26797 extern int is_not_valid_length(char **category);
26798 extern int is_not_valid_category(char **category, char *progname);
26799 extern int is_same_CATEGORY(char **category, char *installed_category);
26800 extern char **get_categories(char *catg_arg);
26801 
26802 extern void pkglist_cont(char *keyword);
26803 extern char **pkgalias(char *pkg);
26804 extern char *get_prog_name(void);
26805 extern char *set_prog_name(char *name);
26806 extern int averify(int fix, char *ftype, char *path, struct ainfo *ainfo);
26807 extern int ckparam(char *param, char *value);
26808 extern int ckvolseq(char *dir, int part, int nparts);
26809 extern int cverify(int fix, char *ftype, char *path, struct cinfo *cinfo,
26810    int allow_checksum);
26811 extern unsigned long compute_checksum(int *r_cksumerr, char *a_path);
26812 extern int fverify(int fix, char *ftype, char *path, struct ainfo *ainfo,
26813       struct cinfo *cinfo);
26814 extern char *getErrbufAddr(void);
26815 extern int getErrbufSize(void);
26816 extern char *getErrstr(void);
26817 extern void setErrstr(char *errstr);
26818 extern int devtype(char *alias, struct pkgdev *devp);
26819 extern int ds_totread; /* total number of parts read */
26820 extern int ds_close(int pkgendflg);
26821 extern int ds_findpkg(char *device, char *pkg);
26822 extern int ds_getinfo(char *string);
26823 extern int ds_getpkg(char *device, int n, char *dstdir);
26824 extern int ds_ginit(char *device);
26825 extern boolean_t ds_fd_open(void);
26826 extern int ds_init(char *device, char **pkg, char *norewind);
26827 extern int BIO_ds_dump_header(PKG_ERR *, BIO *);
26828 extern int BIO_ds_dump(PKG_ERR *, char *, BIO *);
26829 extern int BIO_dump_cmd(char *cmd, BIO *bio);
26830 extern int ds_next(char *, char *);
26831 extern int ds_readbuf(char *device);
26832 extern int epclose(FILE *pp);
26833 extern int esystem(char *cmd, int ifd, int ofd);
26834 extern int e_ExecCmdArray(int *r_status, char **r_results,
26835    char *a_inputFile, char *a_cmd, char **a_args);
26836 extern int e_ExecCmdList(int *r_status, char **r_results,
26837    char *a_inputFile, char *a_cmd, ...);
26838 extern int gpkgmap(struct cfent *ept, FILE *fp);
26839 extern int gpkgmapvfp(struct cfent *ept, VFP_T *fpv);
26840 extern void setmapmode(int mode_no);
26841 extern int isFdRemote(int a_fd);
26842 extern int isFstypeRemote(char *a_fstype);
26843 extern int isPathRemote(char *a_path);
26844 extern int iscpio(char *path, int *iscomp);
26845 extern int isdir(char *path);
26846 extern int isfile(char *dir, char *file);
26847 extern int fmkdir(char *a_path, int a_mode);
26848 extern int pkgexecl(char *filein, char *fileout, char *uname, char *gname,
26849    ...);
26850 extern int pkgexecv(char *filein, char *fileout, char *uname, char *gname,
26851    char *arg[]);
26852 extern int pkghead(char *device);
26853 extern int pkgmount(struct pkgdev *devp, char *pkg, int part, int nparts,
26854    int getvolflg);
26855 extern int pkgtrans(char *device1, char *device2, char **pkg,
26856    int options, keystore_handle_t, char *);
26857 extern int pkgumount(struct pkgdev *devp);
26858 extern int ppkgmap(struct cfent *ept, FILE *fp);
26859 extern int putcfile(struct cfent *ept, FILE *fp);
26860 extern int putcvfpfile(struct cfent *ept, VFP_T *vfp);
26861 extern int rrmdir(char *path);
26862 extern void set_memalloc_failure_func(void (*)(int));
26863 extern void *xmalloc(size_t size);
26864 extern void *xrealloc(void *ptr, size_t size);
26865 extern char *xstrdup(char *str);
26866 extern void set_passphrase_prompt(char *);
26867 extern void set_passphrase_passarg(char *);
26868 extern int pkg_passphrase_cb(char *, int, int, void *);
26869 
26870 extern int srchcfile(struct cfent *ept, char *path, PKGserver server);
26871 extern struct group *cgrgid(gid_t gid);
26872 extern struct group *cgrnam(char *nam);
26873 extern struct passwd *cpwnam(char *nam);
26874 extern struct passwd *cpwuid(uid_t uid);
26875 extern struct group *clgrgid(gid_t gid);
26876 extern struct group *clgrnam(char *nam);
26877 extern struct passwd *clpwnam(char *nam);
26878 extern struct passwd *clpwuid(uid_t uid);
26879 extern void basepath(char *path, char *basedir, char *ir);
26880 extern void canonize(char *file);
26881 extern void canonize_slashes(char *file);
26882 extern void checksum_off(void);
26883 extern void checksum_on(void);
26884 extern void cvtpath(char *path, char *copy);
26885 extern void ds_order(char *list[]);
26886 extern void ds_putinfo(char *buf, size_t);
26887 extern void ds_skiptoend(char *device);
26888 extern void ecleanup(void);
26889 /*PRINTFLIKE1*/
26890 extern void logerr(char *fmt, ...);
26891 extern int mappath(int flag, char *path);
26892 extern int mapvar(int flag, char *varname);
26893 /*PRINTFLIKE1*/
26894 extern void progerr(char *fmt, ...);
26895 extern void pkgerr(PKG_ERR *);
26896 extern void rpterr(void);
26897 extern void tputcfent(struct cfent *ept, FILE *fp);
26898 extern void set_nonABI_symlinks(void);
26899 extern int nonABI_symlinks(void);
26900 extern void disable_attribute_check(void);
26901 extern int get_disable_attribute_check(void);
26902 
26903 /* security.c */
26904 extern void sec_init(void);
26905 extern char *get_subject_display_name(X509 *);
26906 extern char *get_issuer_display_name(X509 *);
26907 extern char *get_serial_num(X509 *);
26908 extern char *get_fingerprint(X509 *, const EVP_MD *);
26909 extern int get_cert_chain(PKG_ERR *, X509 *, struct stack_st_X509 *,
26910     struct stack_st_X509 *, struct stack_st_X509 **);
26911 
26912 /* pkgstr.c */
26913 void pkgstrConvertUllToTimeString_r(unsigned long long a_time,
26914    char *a_buf, int a_bufLen);
26915 char *pkgstrConvertPathToBasename(char *a_path);
26916 char *pkgstrConvertPathToDirname(char *a_path);
26917 char *pkgstrDup(char *a_str);
26918 char *pkgstrLocatePathBasename(char *a_path);
26919 void pkgstrScaleNumericString(char *a_buf, unsigned long long scale);
26920 void pkgstrAddToken(char **a_old, char *a_new, char a_separator);
26921 boolean_t pkgstrContainsToken(char *a_string, char *a_token,
26922    char *a_separators);
26923 void pkgstrExpandTokens(char **a_old, char *a_string,
26924    char a_separator, char *a_separators);
26925 char *pkgstrGetToken(char *r_sep, char *a_string, int a_index,
26926    char *a_separators);
26927 void pkgstrGetToken_r(char *r_sep, char *a_string, int a_index,
26928    char *a_separators, char *a_buf, int a_bufLen);
26929 unsigned long pkgstrNumTokens(char *a_string, char *a_separators);
26930 char *pkgstrPrintf(char *a_format, ...);
26931 void pkgstrPrintf_r(char *a_buf, int a_bufLen, char *a_format, ...);
26932 void pkgstrRemoveToken(char **r_string, char *a_token,
26933    char *a_separators, int a_index);
26934 void pkgstrRemoveLeadingWhitespace(char **a_str);
26935 /* vfpops.c */
26936 extern int vfpCheckpointFile(VFP_T **r_destVfp, VFP_T **a_vfp,
26937    char *a_path);
26938 extern int vfpCheckpointOpen(VFP_T **a_cvfp, VFP_T **r_vfp, char *a_path,
26939    char *a_mode, VFPFLAGS_T a_flags);
26940 extern int vfpClearModified(VFP_T *a_vfp);
26941 extern int vfpClose(VFP_T **r_vfp);
26942 extern int vfpGetModified(VFP_T *a_vfp);
26943 extern int vfpOpen(VFP_T **r_vfp, char *a_path, char *a_mode,
26944    VFPFLAGS_T a_flags);
26945 extern void vfpRewind(VFP_T *a_vfp);
26946 extern ssize_t vfpSafePwrite(int a_fildes, void *a_buf,
26947    size_t a_nbyte, off_t a_offset);
26948 extern ssize_t vfpSafeWrite(int a_fildes, void *a_buf, size_t a_nbyte);
26949 extern int vfpSetFlags(VFP_T *a_vfp, VFPFLAGS_T a_flags);
26950 extern int vfpSetModified(VFP_T *a_vfp);
26951 extern int vfpSetSize(VFP_T *a_vfp, size_t a_size);
26952 extern void vfpTruncate(VFP_T *a_vfp);
26953 extern int vfpWriteToFile(VFP_T *a_vfp, char *a_path);
26954 
26955 /* handlelocalfs.c */
26956 boolean_t enable_local_fs(void);
26957 boolean_t restore_local_fs(void);
26958 
26959 /* pkgserv.c */
26960 extern PKGserver pkgopenserver(const char *, const char *, boolean_t);
26961 extern void pkgcloseserver(PKGserver);
26962 extern int pkgcmd(PKGserver, void *, size_t, char **, size_t *,
26963     int *);
26964 extern boolean_t pkgsync_needed(const char *, const char *, boolean_t);
26965 extern int pkgsync(const char *, const char *, boolean_t);
26966 extern int pkgservercommitfile(VFP_T *, PKGserver);
26967 extern int pkgopenfilter(PKGserver server, const char *pkginst);
26968 extern void pkgclosefilter(PKGserver);
26969 extern char *pkggetentry(PKGserver, int *, int *);
26970 extern char *pkggetentry_named(PKGserver, const char *, int *,
26971     int *);
26972 extern void pkgserversetmode(start_mode_t);
26973 extern start_mode_t pkgservergetmode(void);
26974 extern start_mode_t pkgparsemode(const char *);
26975 extern char *pkgmodeargument(start_mode_t);
26976 # 51 "sortmap.c" 2
26977 # 1 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 1
26978 /*
26979  * CDDL HEADER START
26980  *
26981  * The contents of this file are subject to the terms of the
26982  * Common Development and Distribution License (the "License").
26983  * You may not use this file except in compliance with the License.
26984  *
26985  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26986  * or http://www.opensolaris.org/os/licensing.
26987  * See the License for the specific language governing permissions
26988  * and limitations under the License.
26989  *
26990  * When distributing Covered Code, include this CDDL HEADER in each
26991  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26992  * If applicable, add the following below this CDDL HEADER, with the
26993  * fields enclosed by brackets "[]" replaced with your own identifying
26994  * information: Portions Copyright [yyyy] [name of copyright owner]
26995  *
26996  * CDDL HEADER END
26997  */
26998 
26999 /*
27000  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
27001  * Use is subject to license terms.
27002  */
27003 
27004 
27005 
27006 
27007 
27008 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
27009 /*
27010  * CDDL HEADER START
27011  *
27012  * The contents of this file are subject to the terms of the
27013  * Common Development and Distribution License (the "License").
27014  * You may not use this file except in compliance with the License.
27015  *
27016  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27017  * or http://www.opensolaris.org/os/licensing.
27018  * See the License for the specific language governing permissions
27019  * and limitations under the License.
27020  *
27021  * When distributing Covered Code, include this CDDL HEADER in each
27022  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27023  * If applicable, add the following below this CDDL HEADER, with the
27024  * fields enclosed by brackets "[]" replaced with your own identifying
27025  * information: Portions Copyright [yyyy] [name of copyright owner]
27026  *
27027  * CDDL HEADER END
27028  */
27029 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
27030 /*	  All Rights Reserved  	*/
27031 
27032 
27033 /*
27034  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
27035  * Use is subject to license terms.
27036  *
27037  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
27038  * Copyright 2016 Joyent, Inc.
27039  */
27040 # 32 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27041 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/vtoc.h" 1
27042 /*
27043  * CDDL HEADER START
27044  *
27045  * The contents of this file are subject to the terms of the
27046  * Common Development and Distribution License (the "License").
27047  * You may not use this file except in compliance with the License.
27048  *
27049  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27050  * or http://www.opensolaris.org/os/licensing.
27051  * See the License for the specific language governing permissions
27052  * and limitations under the License.
27053  *
27054  * When distributing Covered Code, include this CDDL HEADER in each
27055  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27056  * If applicable, add the following below this CDDL HEADER, with the
27057  * fields enclosed by brackets "[]" replaced with your own identifying
27058  * information: Portions Copyright [yyyy] [name of copyright owner]
27059  *
27060  * CDDL HEADER END
27061  */
27062 
27063 /*
27064  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
27065  *
27066  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
27067  * Use is subject to license terms.
27068  * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
27069  * Copyright 2016 Toomas Soome <tsoome@me.com>
27070  */
27071 
27072 
27073 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
27074 /*	  All Rights Reserved  	*/
27075 
27076 
27077 
27078 
27079 
27080 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h" 1
27081 /*
27082  * CDDL HEADER START
27083  *
27084  * The contents of this file are subject to the terms of the
27085  * Common Development and Distribution License (the "License").
27086  * You may not use this file except in compliance with the License.
27087  *
27088  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27089  * or http://www.opensolaris.org/os/licensing.
27090  * See the License for the specific language governing permissions
27091  * and limitations under the License.
27092  *
27093  * When distributing Covered Code, include this CDDL HEADER in each
27094  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27095  * If applicable, add the following below this CDDL HEADER, with the
27096  * fields enclosed by brackets "[]" replaced with your own identifying
27097  * information: Portions Copyright [yyyy] [name of copyright owner]
27098  *
27099  * CDDL HEADER END
27100  */
27101 
27102 /*
27103  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
27104  * Use is subject to license terms.
27105  */
27106 
27107 
27108 
27109 
27110 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
27111 /*
27112  * CDDL HEADER START
27113  *
27114  * The contents of this file are subject to the terms of the
27115  * Common Development and Distribution License (the "License").
27116  * You may not use this file except in compliance with the License.
27117  *
27118  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27119  * or http://www.opensolaris.org/os/licensing.
27120  * See the License for the specific language governing permissions
27121  * and limitations under the License.
27122  *
27123  *
27124  * When distributing Covered Code, include this CDDL HEADER in each
27125  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27126  * If applicable, add the following below this CDDL HEADER, with the
27127  * fields enclosed by brackets "[]" replaced with your own identifying
27128  * information: Portions Copyright [yyyy] [name of copyright owner]
27129  *
27130  * CDDL HEADER END
27131  */
27132 
27133 /*
27134  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
27135  * Use is subject to license terms.
27136  * Copyright 2016 Joyent, Inc.
27137  */
27138 # 31 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h" 2
27139 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types32.h" 1
27140 /*
27141  * CDDL HEADER START
27142  *
27143  * The contents of this file are subject to the terms of the
27144  * Common Development and Distribution License (the "License").
27145  * You may not use this file except in compliance with the License.
27146  *
27147  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27148  * or http://www.opensolaris.org/os/licensing.
27149  * See the License for the specific language governing permissions
27150  * and limitations under the License.
27151  *
27152  * When distributing Covered Code, include this CDDL HEADER in each
27153  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27154  * If applicable, add the following below this CDDL HEADER, with the
27155  * fields enclosed by brackets "[]" replaced with your own identifying
27156  * information: Portions Copyright [yyyy] [name of copyright owner]
27157  *
27158  * CDDL HEADER END
27159  */
27160 /*
27161  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
27162  * Use is subject to license terms.
27163  * Copyright 2015 Nexenta Systems, Inc.
27164  */
27165 
27166 
27167 
27168 
27169 #pragma ident "%Z%%M%	%I%	%E% SMI"
27170 
27171 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
27172 /*
27173  * CDDL HEADER START
27174  *
27175  * The contents of this file are subject to the terms of the
27176  * Common Development and Distribution License, Version 1.0 only
27177  * (the "License").  You may not use this file except in compliance
27178  * with the License.
27179  *
27180  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27181  * or http://www.opensolaris.org/os/licensing.
27182  * See the License for the specific language governing permissions
27183  * and limitations under the License.
27184  *
27185  * When distributing Covered Code, include this CDDL HEADER in each
27186  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27187  * If applicable, add the following below this CDDL HEADER, with the
27188  * fields enclosed by brackets "[]" replaced with your own identifying
27189  * information: Portions Copyright [yyyy] [name of copyright owner]
27190  *
27191  * CDDL HEADER END
27192  */
27193 /*
27194  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
27195  *
27196  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
27197  * Use is subject to license terms.
27198  */
27199 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types32.h" 2
27200 
27201 
27202 
27203 
27204 
27205 /*
27206  * Interoperability types for programs. Used for:
27207  *
27208  * Crossing between 32-bit and 64-bit domains.
27209  *
27210  * On disk data formats such as filesystem meta data
27211  * and disk label.
27212  *
27213  * Note: Applications should never include this
27214  *       header file.
27215  */
27216 typedef uint32_t caddr32_t;
27217 typedef int32_t daddr32_t;
27218 typedef int32_t off32_t;
27219 typedef uint32_t ino32_t;
27220 typedef int32_t blkcnt32_t;
27221 typedef uint32_t fsblkcnt32_t;
27222 typedef uint32_t fsfilcnt32_t;
27223 typedef int32_t id32_t;
27224 typedef uint32_t major32_t;
27225 typedef uint32_t minor32_t;
27226 typedef int32_t key32_t;
27227 typedef uint32_t mode32_t;
27228 typedef uint32_t uid32_t;
27229 typedef uint32_t gid32_t;
27230 typedef uint32_t nlink32_t;
27231 typedef uint32_t dev32_t;
27232 typedef int32_t pid32_t;
27233 typedef uint32_t size32_t;
27234 typedef int32_t ssize32_t;
27235 typedef int32_t time32_t;
27236 typedef int32_t clock32_t;
27237 typedef uint32_t uintptr32_t;
27238 typedef int32_t intptr32_t;
27239 
27240 struct timeval32 {
27241  time32_t tv_sec; /* seconds */
27242  int32_t tv_usec; /* and microseconds */
27243 };
27244 
27245 typedef struct timespec32 {
27246  time32_t tv_sec; /* seconds */
27247  int32_t tv_nsec; /* and nanoseconds */
27248 } timespec32_t;
27249 
27250 typedef struct timespec32 timestruc32_t;
27251 
27252 typedef struct itimerspec32 {
27253  struct timespec32 it_interval;
27254  struct timespec32 it_value;
27255 } itimerspec32_t;
27256 # 32 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h" 2
27257 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
27258 /*
27259  * CDDL HEADER START
27260  *
27261  * The contents of this file are subject to the terms of the
27262  * Common Development and Distribution License (the "License").
27263  * You may not use this file except in compliance with the License.
27264  *
27265  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27266  * or http://www.opensolaris.org/os/licensing.
27267  * See the License for the specific language governing permissions
27268  * and limitations under the License.
27269  *
27270  *
27271  * When distributing Covered Code, include this CDDL HEADER in each
27272  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27273  * If applicable, add the following below this CDDL HEADER, with the
27274  * fields enclosed by brackets "[]" replaced with your own identifying
27275  * information: Portions Copyright [yyyy] [name of copyright owner]
27276  *
27277  * CDDL HEADER END
27278  */
27279 
27280 /*
27281  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
27282  * Use is subject to license terms.
27283  * Copyright 2016 Joyent, Inc.
27284  */
27285 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h" 2
27286 
27287 
27288 
27289 
27290 
27291 /*
27292  * Miscellaneous defines
27293  */
27294 # 59 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h"
27295 /*
27296  * Reserve two cylinders on SCSI disks.
27297  * One is for the backup disk label and the other is for the deviceid.
27298  *
27299  * IPI disks only reserve one cylinder, but they will go away soon.
27300  * CDROMs do not reserve any cylinders.
27301  */
27302 
27303 
27304 /*
27305  * Format of a Sun disk label.
27306  * Resides in cylinder 0, head 0, sector 0.
27307  *
27308  * sizeof (struct dk_label) should be 512 (the current sector size),
27309  * but should the sector size increase, this structure should remain
27310  * at the beginning of the sector.
27311  */
27312 
27313 
27314 
27315 
27316 
27317 
27318 
27319 typedef daddr_t blkaddr_t;
27320 typedef daddr32_t blkaddr32_t;
27321 
27322 
27323 
27324 /*
27325  * partition headers:  section 1
27326  * Returned in struct dk_allmap by ioctl DKIOC[SG]APART (dkio(7I))
27327  */
27328 struct dk_map {
27329  blkaddr_t dkl_cylno; /* starting cylinder */
27330  blkaddr_t dkl_nblk; /* number of blocks;  if == 0, */
27331      /* partition is undefined */
27332 };
27333 
27334 /*
27335  * partition headers:  section 1
27336  * Fixed size for on-disk dk_label
27337  */
27338 struct dk_map32 {
27339  blkaddr32_t dkl_cylno; /* starting cylinder */
27340  blkaddr32_t dkl_nblk; /* number of blocks;  if == 0, */
27341      /* partition is undefined */
27342 };
27343 
27344 /*
27345  * partition headers:  section 2,
27346  * brought over from AT&T SVr4 vtoc structure.
27347  */
27348 struct dk_map2 {
27349  uint16_t p_tag; /* ID tag of partition */
27350  uint16_t p_flag; /* permission flag */
27351 };
27352 
27353 struct dkl_partition {
27354  uint16_t p_tag; /* ID tag of partition */
27355  uint16_t p_flag; /* permision flags */
27356  blkaddr32_t p_start; /* start sector no of partition */
27357  blkaddr32_t p_size; /* # of blocks in partition */
27358 };
27359 
27360 
27361 /*
27362  * VTOC inclusions from AT&T SVr4
27363  * Fixed sized types for on-disk VTOC
27364  */
27365 
27366 struct dk_vtoc {
27367 
27368  uint32_t v_bootinfo[3]; /* info for mboot (unsupported) */
27369  uint32_t v_sanity; /* to verify vtoc sanity */
27370  uint32_t v_version; /* layout version */
27371  char v_volume[8]; /* volume name */
27372  uint16_t v_sectorsz; /* sector size in bytes */
27373  uint16_t v_nparts; /* number of partitions */
27374  uint32_t v_reserved[10]; /* free space */
27375  struct dkl_partition v_part[16]; /* partition headers */
27376  time32_t timestamp[16]; /* partition timestamp (unsupported) */
27377  char v_asciilabel[128]; /* for compatibility    */
27378 # 154 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h"
27379 };
27380 
27381 /*
27382  * define the amount of disk label padding needed to make
27383  * the entire structure occupy 512 bytes.
27384  */
27385 # 178 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h"
27386 struct dk_label {
27387 
27388  struct dk_vtoc dkl_vtoc; /* vtoc inclusions from AT&T SVr4 */
27389  uint32_t dkl_pcyl; /* # of physical cylinders */
27390  uint32_t dkl_ncyl; /* # of data cylinders */
27391  uint16_t dkl_acyl; /* # of alternate cylinders */
27392  uint16_t dkl_bcyl; /* cyl offset (for fixed head area) */
27393  uint32_t dkl_nhead; /* # of heads */
27394  uint32_t dkl_nsect; /* # of data sectors per track */
27395  uint16_t dkl_intrlv; /* interleave factor */
27396  uint16_t dkl_skew; /* skew factor */
27397  uint16_t dkl_apc; /* alternates per cyl (SCSI only)   */
27398  uint16_t dkl_rpm; /* revolutions per minute */
27399  uint16_t dkl_write_reinstruct; /* # sectors to skip, writes */
27400  uint16_t dkl_read_reinstruct; /* # sectors to skip, reads  */
27401  uint16_t dkl_extra[4]; /* for compatible expansion */
27402  char dkl_pad[(512 - ((sizeof (struct dk_vtoc) + (4 * sizeof (uint32_t)) + (12 * sizeof (uint16_t)) + (2 * (sizeof (uint16_t))))))]; /* unused part of 512 bytes */
27403 # 217 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h"
27404  uint16_t dkl_magic; /* identifies this label format */
27405  uint16_t dkl_cksum; /* xor checksum of sector */
27406 };
27407 # 238 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/dklabel.h"
27408 struct fk_label { /* DOS floppy label */
27409  uchar_t fkl_type;
27410  uchar_t fkl_magich;
27411  uchar_t fkl_magicl;
27412  uchar_t filler;
27413 };
27414 
27415 /*
27416  * Layout of stored fabricated device id  (on-disk)
27417  */
27418 
27419 
27420 
27421 
27422 
27423 struct dk_devid {
27424  uchar_t dkd_rev_hi; /* revision (MSB) */
27425  uchar_t dkd_rev_lo; /* revision (LSB) */
27426  uchar_t dkd_flags; /* flags (not used yet) */
27427  uchar_t dkd_devid[((512) - ((sizeof (uchar_t) * 7)))]; /* devid stored here */
27428  uchar_t dkd_checksum3; /* checksum (MSB) */
27429  uchar_t dkd_checksum2;
27430  uchar_t dkd_checksum1;
27431  uchar_t dkd_checksum0; /* checksum (LSB) */
27432 };
27433 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/vtoc.h" 2
27434 
27435 
27436 
27437 
27438 
27439 /*
27440  *	Note:  the VTOC is not implemented fully, nor in the manner
27441  *	that AT&T implements it.  AT&T puts the vtoc structure
27442  *	into a sector, usually the second sector (pdsector is first).
27443  *
27444  *	Sun incorporates the tag, flag, version, and volume vtoc fields into
27445  *	its Disk Label, which already has some vtoc-equivalent fields.
27446  *	Upon reading the vtoc with read_vtoc(), the following exceptions
27447  *	occur:
27448  *		v_bootinfo [all]	returned as zero
27449  *		v_sanity		returned as VTOC_SANE
27450  *						if Disk Label was sane
27451  *		v_sectorsz		returned as 512
27452  *		v_reserved [all]	retunred as zero
27453  *		timestamp [all]		returned as zero
27454  *
27455  *	See  dklabel.h, read_vtoc(), and write_vtoc().
27456  */
27457 
27458 
27459      /* (from dkio.h) */
27460 
27461 
27462 
27463 
27464 
27465 /*
27466  * Partition identification tags
27467  */
27468 # 86 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/vtoc.h"
27469 /* Tags for EFI/GPT labels */
27470 
27471 
27472 
27473 
27474 
27475 
27476 /*
27477  * Partition permission flags
27478  */
27479 
27480 
27481 
27482 /*
27483  * error codes for reading & writing vtoc
27484  */
27485 
27486 
27487 
27488 
27489 
27490 
27491 
27492 struct partition {
27493  ushort_t p_tag; /* ID tag of partition */
27494  ushort_t p_flag; /* permission flags */
27495  daddr_t p_start; /* start sector no of partition */
27496  long p_size; /* # of blocks in partition */
27497 };
27498 
27499 struct vtoc {
27500  unsigned long v_bootinfo[3]; /* info needed by mboot (unsupported) */
27501  unsigned long v_sanity; /* to verify vtoc sanity */
27502  unsigned long v_version; /* layout version */
27503  char v_volume[8]; /* volume name */
27504  ushort_t v_sectorsz; /* sector size in bytes */
27505  ushort_t v_nparts; /* number of partitions */
27506  unsigned long v_reserved[10]; /* free space */
27507  struct partition v_part[16]; /* partition headers */
27508  time_t timestamp[16]; /* partition timestamp (unsupported) */
27509  char v_asciilabel[128]; /* for compatibility */
27510 };
27511 
27512 struct extpartition {
27513  ushort_t p_tag; /* ID tag of partition */
27514  ushort_t p_flag; /* permission flags */
27515  ushort_t p_pad[2];
27516  diskaddr_t p_start; /* start sector no of partition */
27517  diskaddr_t p_size; /* # of blocks in partition */
27518 };
27519 
27520 
27521 struct extvtoc {
27522  uint64_t v_bootinfo[3]; /* info needed by mboot (unsupported) */
27523  uint64_t v_sanity; /* to verify vtoc sanity */
27524  uint64_t v_version; /* layout version */
27525  char v_volume[8]; /* volume name */
27526  ushort_t v_sectorsz; /* sector size in bytes */
27527  ushort_t v_nparts; /* number of partitions */
27528  ushort_t pad[2];
27529  uint64_t v_reserved[10];
27530  struct extpartition v_part[16]; /* partition headers */
27531  uint64_t timestamp[16]; /* partition timestamp (unsupported) */
27532  char v_asciilabel[128]; /* for compatibility */
27533 };
27534 # 334 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/vtoc.h"
27535 /*
27536  * These defines are the mode parameter for the checksum routines.
27537  */
27538 
27539 
27540 
27541 extern int read_vtoc(int, struct vtoc *);
27542 extern int write_vtoc(int, struct vtoc *);
27543 extern int read_extvtoc(int, struct extvtoc *);
27544 extern int write_extvtoc(int, struct extvtoc *);
27545 # 33 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27546 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 1
27547 /*
27548  * CDDL HEADER START
27549  *
27550  * The contents of this file are subject to the terms of the
27551  * Common Development and Distribution License (the "License").
27552  * You may not use this file except in compliance with the License.
27553  *
27554  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27555  * or http://www.opensolaris.org/os/licensing.
27556  * See the License for the specific language governing permissions
27557  * and limitations under the License.
27558  *
27559  * When distributing Covered Code, include this CDDL HEADER in each
27560  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27561  * If applicable, add the following below this CDDL HEADER, with the
27562  * fields enclosed by brackets "[]" replaced with your own identifying
27563  * information: Portions Copyright [yyyy] [name of copyright owner]
27564  *
27565  * CDDL HEADER END
27566  */
27567 
27568 /*
27569  * Copyright (c) 2013 Gary Mills
27570  *
27571  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
27572  * Use is subject to license terms.
27573  */
27574 
27575 /*	Copyright (c) 1988 AT&T	*/
27576 /*	  All Rights Reserved  	*/
27577 # 34 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27578 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
27579 /*
27580  * CDDL HEADER START
27581  *
27582  * The contents of this file are subject to the terms of the
27583  * Common Development and Distribution License (the "License").
27584  * You may not use this file except in compliance with the License.
27585  *
27586  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27587  * or http://www.opensolaris.org/os/licensing.
27588  * See the License for the specific language governing permissions
27589  * and limitations under the License.
27590  *
27591  * When distributing Covered Code, include this CDDL HEADER in each
27592  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27593  * If applicable, add the following below this CDDL HEADER, with the
27594  * fields enclosed by brackets "[]" replaced with your own identifying
27595  * information: Portions Copyright [yyyy] [name of copyright owner]
27596  *
27597  * CDDL HEADER END
27598  */
27599 
27600 /*
27601  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
27602  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
27603  */
27604 
27605 /*	Copyright (c) 1988 AT&T	*/
27606 /*	  All Rights Reserved  	*/
27607 
27608 /*
27609  * User-visible pieces of the ANSI C standard I/O package.
27610  */
27611 # 35 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27612 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
27613 /*
27614  * CDDL HEADER START
27615  *
27616  * The contents of this file are subject to the terms of the
27617  * Common Development and Distribution License (the "License").
27618  * You may not use this file except in compliance with the License.
27619  *
27620  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27621  * or http://www.opensolaris.org/os/licensing.
27622  * See the License for the specific language governing permissions
27623  * and limitations under the License.
27624  *
27625  * When distributing Covered Code, include this CDDL HEADER in each
27626  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27627  * If applicable, add the following below this CDDL HEADER, with the
27628  * fields enclosed by brackets "[]" replaced with your own identifying
27629  * information: Portions Copyright [yyyy] [name of copyright owner]
27630  *
27631  * CDDL HEADER END
27632  */
27633 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
27634 /*	  All Rights Reserved  	*/
27635 
27636 /*
27637  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
27638  * Use is subject to license terms.
27639  */
27640 # 36 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27641 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkginfo.h" 1
27642 /*
27643  * CDDL HEADER START
27644  *
27645  * The contents of this file are subject to the terms of the
27646  * Common Development and Distribution License, Version 1.0 only
27647  * (the "License").  You may not use this file except in compliance
27648  * with the License.
27649  *
27650  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27651  * or http://www.opensolaris.org/os/licensing.
27652  * See the License for the specific language governing permissions
27653  * and limitations under the License.
27654  *
27655  * When distributing Covered Code, include this CDDL HEADER in each
27656  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27657  * If applicable, add the following below this CDDL HEADER, with the
27658  * fields enclosed by brackets "[]" replaced with your own identifying
27659  * information: Portions Copyright [yyyy] [name of copyright owner]
27660  *
27661  * CDDL HEADER END
27662  */
27663 /*
27664  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
27665  */
27666 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
27667 /*	  All Rights Reserved  	*/
27668 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkginfo.h"
27669 struct pkginfo {
27670  char *pkginst;
27671  char *name;
27672  char *arch;
27673  char *version;
27674  char *vendor;
27675  char *basedir;
27676  char *catg;
27677  char status;
27678 };
27679 
27680 extern char *pkgdir;
27681 
27682 extern char *pkgparam(char *, char *);
27683 extern int pkginfo(struct pkginfo *, char *, ...),
27684   pkgnmchk(char *, char *, int);
27685 # 37 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27686 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/valtools.h" 1
27687 /*
27688  * CDDL HEADER START
27689  *
27690  * The contents of this file are subject to the terms of the
27691  * Common Development and Distribution License, Version 1.0 only
27692  * (the "License").  You may not use this file except in compliance
27693  * with the License.
27694  *
27695  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27696  * or http://www.opensolaris.org/os/licensing.
27697  * See the License for the specific language governing permissions
27698  * and limitations under the License.
27699  *
27700  * When distributing Covered Code, include this CDDL HEADER in each
27701  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27702  * If applicable, add the following below this CDDL HEADER, with the
27703  * fields enclosed by brackets "[]" replaced with your own identifying
27704  * information: Portions Copyright [yyyy] [name of copyright owner]
27705  *
27706  * CDDL HEADER END
27707  */
27708 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
27709 /*	  All Rights Reserved  	*/
27710 
27711 
27712 
27713 
27714 
27715 #pragma ident "%Z%%M%	%I%	%E% SMI"
27716 
27717 
27718 
27719 
27720 
27721 struct _choice_ {
27722  char *token;
27723  char *text;
27724  struct _choice_ *next;
27725 };
27726 
27727 struct _menu_ {
27728  char *label;
27729  int attr;
27730  short longest;
27731  short nchoices;
27732  struct _choice_
27733   *choice;
27734  char **invis;
27735 };
27736 
27737 typedef struct _menu_ CKMENU;
27738 # 38 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27739 # 1 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h" 1
27740 /*
27741  * CDDL HEADER START
27742  *
27743  * The contents of this file are subject to the terms of the
27744  * Common Development and Distribution License (the "License").
27745  * You may not use this file except in compliance with the License.
27746  *
27747  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
27748  * or http://www.opensolaris.org/os/licensing.
27749  * See the License for the specific language governing permissions
27750  * and limitations under the License.
27751  *
27752  * When distributing Covered Code, include this CDDL HEADER in each
27753  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
27754  * If applicable, add the following below this CDDL HEADER, with the
27755  * fields enclosed by brackets "[]" replaced with your own identifying
27756  * information: Portions Copyright [yyyy] [name of copyright owner]
27757  *
27758  * CDDL HEADER END
27759  */
27760 
27761 /*
27762  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
27763  * Use is subject to license terms.
27764  */
27765 
27766 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
27767 /* All Rights Reserved */
27768 # 39 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h" 2
27769 # 47 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libadm.h"
27770 /*
27771  * ckdate.c
27772  */
27773 extern int ckdate_err (char *fmt, char *error);
27774 extern int ckdate_hlp (char *fmt, char *help);
27775 extern int ckdate_val (char *fmt, char *input);
27776 extern int ckdate (char *date, char *fmt, char *defstr, char *error, char *help, char *prompt);
27777 
27778 
27779 /*
27780  * ckgid.c
27781  */
27782 extern int ckgid_dsp (void);
27783 extern int ckgid_val (char *grpnm);
27784 extern int ckgrpfile (void);
27785 extern void ckgid_err (int disp, char *error);
27786 extern void ckgid_hlp (int disp, char *help);
27787 extern int ckgid (char *gid, short disp, char *defstr, char *error, char *help, char *prompt);
27788 
27789 
27790 /*
27791  * ckint.c
27792  */
27793 extern int ckint_val (char *value, short base);
27794 extern void ckint_err (short base, char *error);
27795 extern void ckint_hlp (short base, char *help);
27796 extern int ckint (long *intval, short base, char *defstr, char *error, char *help, char *prompt);
27797 
27798 
27799 /*
27800  * ckitem.c
27801  */
27802 extern CKMENU *allocmenu (char *label, int attr);
27803 extern void ckitem_err (CKMENU *menup, char *error);
27804 extern void ckitem_hlp (CKMENU *menup, char *help);
27805 extern int ckitem (CKMENU *menup, char *item[], short max, char *defstr, char *error, char *help, char *prompt);
27806 
27807 
27808 extern int setitem (CKMENU *menup, char *choice);
27809 extern int setinvis (CKMENU *menup, char *choice);
27810 extern void printmenu (CKMENU *menup);
27811 
27812 /*
27813  * ckkeywd.c
27814  */
27815 extern int ckkeywd (char *strval, char *keyword[], char *defstr, char *error, char *help, char *prompt);
27816 
27817 
27818 /*
27819  * ckpath.c
27820  */
27821 extern int ckpath_stx (int pflags);
27822 extern int ckpath_val (char *path, int pflags);
27823 extern void ckpath_err (int pflags, char *error, char *input);
27824 extern void ckpath_hlp (int pflags, char *help);
27825 extern int ckpath (char *pathval, int pflags, char *defstr, char *error, char *help, char *prompt);
27826 
27827 
27828 /*
27829  * ckrange.c
27830  */
27831 extern void ckrange_err (long lower, long upper, int base, char *error);
27832 
27833 extern void ckrange_hlp (long lower, long upper, int base, char *help);
27834 extern int ckrange_val (long lower, long upper, int base, char *input);
27835 
27836 extern int ckrange (long *rngval, long lower, long upper, short base, char *defstr, char *error, char *help, char *prompt);
27837 
27838 
27839 
27840 /*
27841  * ckstr.c
27842  */
27843 extern int ckstr_val (char *regexp[], int length, char *input);
27844 extern void ckstr_err (char *regexp[], int length, char *error, char *input);
27845 
27846 extern void ckstr_hlp (char *regexp[], int length, char *help);
27847 extern int ckstr (char *strval, char *regexp[], int length, char *defstr, char *error, char *help, char *prompt);
27848 
27849 
27850 
27851 /*
27852  * cktime.c
27853  */
27854 extern int cktime_val (char *fmt, char *input);
27855 extern int cktime_err (char *fmt, char *error);
27856 extern int cktime_hlp (char *fmt, char *help);
27857 extern int fmtcheck (char *fmt);
27858 extern int cktime (char *tod, char *fmt, char *defstr, char *error, char *help, char *prompt);
27859 
27860 
27861 /*
27862  * ckuid.c
27863  */
27864 extern int ckuid_dsp (void);
27865 extern int ckuid_val (char *usrnm);
27866 extern int ckpwdfile (void);
27867 extern void ckuid_err (short disp, char *error);
27868 extern void ckuid_hlp (int disp, char *help);
27869 extern int ckuid (char *uid, short disp, char *defstr, char *error, char *help, char *prompt);
27870 
27871 
27872 /*
27873  * ckyorn.c
27874  */
27875 extern int ckyorn_val (char *str);
27876 extern void ckyorn_err (char *error);
27877 extern void ckyorn_hlp (char *help);
27878 extern int ckyorn (char *yorn, char *defstr, char *error, char *help, char *prompt);
27879 
27880 
27881 /*
27882  * devattr.c
27883  */
27884 extern char *devattr (char *device, char *attribute);
27885 
27886 /*
27887  * devreserv.c
27888  */
27889 extern char *_rsvtabpath (void);
27890 extern int _openlkfile (void);
27891 extern int _closelkfile (void);
27892 extern int unreserv (long key, char *device);
27893 extern char **devreserv (long key, char **rsvlst[]);
27894 extern int devfree (long key, char *device);
27895 extern struct reservdev **reservdev (void);
27896 
27897 /*
27898  * devtab.c
27899  */
27900 extern void _setdevtab (void);
27901 extern void _enddevtab (void);
27902 extern char *_devtabpath (void);
27903 extern int _opendevtab (char *mode);
27904 extern int _validalias (char *alias);
27905 extern struct devtabent *_getdevtabent (void);
27906 extern void _freedevtabent (struct devtabent *ent);
27907 extern struct devtabent *_getdevrec (char *device);
27908 
27909 /*
27910  * dgrpent.c
27911  */
27912 extern void _setdgrptab (void);
27913 extern void _enddgrptab (void);
27914 extern char *_dgrptabpath (void);
27915 extern int _opendgrptab (char *mode);
27916 extern struct dgrptabent *_getdgrptabent (void);
27917 extern void _freedgrptabent (struct dgrptabent *ent);
27918 extern struct dgrptabent *_getdgrprec (char *dgroup);
27919 
27920 /*
27921  * fulldevnm.c
27922  */
27923 extern char *getfullblkname (char *cp);
27924 extern char *getfullrawname (char *cp);
27925 
27926 /*
27927  * getdev.c
27928  */
27929 extern char **getdev (char **devices, char **criteria, int options);
27930 
27931 /*
27932  * getdgrp.c
27933  */
27934 extern char **getdgrp (char **dgroups, char **criteria, int options);
27935 
27936 /*
27937  * getinput.c
27938  */
27939 extern int getinput (char *s);
27940 
27941 /*
27942  * getvol.c
27943  */
27944 extern int getvol (char *device, char *label, int options, char *prompt);
27945 
27946 extern int _getvol (char *device, char *label, int options, char *prompt, char *norewind);
27947 
27948 extern void doremovecmd (char *device, int echo);
27949 
27950 /*
27951  * listdev.c
27952  */
27953 extern char **listdev (char *device);
27954 
27955 /*
27956  * listdgrp.c
27957  */
27958 extern char **listdgrp (char *dgroup);
27959 
27960 /*
27961  * memory.c
27962  */
27963 extern long sysmem (void);
27964 extern long asysmem (void);
27965 
27966 /*
27967  * pkginfo.c
27968  */
27969 extern int pkginfo (struct pkginfo *info, char *pkginst, ...);
27970 extern int fpkginfo (struct pkginfo *info, char *pkginst);
27971 extern char *fpkginst (char *pkg, ...);
27972 
27973 /*
27974  * pkgnmchk.c
27975  */
27976 extern int pkgnmchk (register char *pkg, register char *spec, int presvr4flg);
27977 
27978 extern void set_ABI_namelngth (void);
27979 extern int get_ABI_namelngth (void);
27980 
27981 /*
27982  * pkgparam.c
27983  */
27984 extern char *fpkgparam (FILE *fp, char *param);
27985 extern char *pkgparam (char *pkg, char *param);
27986 extern void set_PKGpaths (char *path);
27987 extern char *get_PKGLOC (void);
27988 extern char *get_PKGADM (void);
27989 extern void set_PKGADM(char *newpath);
27990 extern void set_PKGLOC(char *newpath);
27991 
27992 /*
27993  * putdev.c
27994  */
27995 extern int _putdevtabrec (FILE *stream, struct devtabent *rec);
27996 extern int _adddevtabrec (char *alias, char **attrval);
27997 extern int _moddevtabrec (char *device, char **attrval);
27998 extern int _rmdevtabrec (char *device);
27999 extern int _rmdevtabattrs (char *device, char **attributes, char ***notfounds);
28000 
28001 
28002 /*
28003  * putdgrp.c
28004  */
28005 extern int _putdgrptabrec (FILE *stream, struct dgrptabent *rec);
28006 extern int _adddgrptabrec (char *dgrp, char **members);
28007 extern int _rmdgrptabrec (char *dgrp);
28008 extern int _rmdgrpmems (char *dgrp, char **mems, char ***notfounds);
28009 
28010 /*
28011  * puterror.c
28012  */
28013 extern void puterror (FILE *fp, char *defmesg, char *error);
28014 
28015 /*
28016  * puthelp.c
28017  */
28018 extern void puthelp (FILE *fp, char *defmesg, char *help);
28019 
28020 /*
28021  * putprmpt.c
28022  */
28023 extern void putprmpt (FILE *fp, char *prompt, char *choices[], char *defstr);
28024 
28025 
28026 /*
28027  * puttext.c
28028  */
28029 extern int puttext (FILE *fp, char *str, int lmarg, int rmarg);
28030 
28031 /*
28032  * rdwr_vtoc.c
28033  */
28034 extern int read_vtoc (int fd, struct vtoc *vtoc);
28035 extern int write_vtoc (int fd, struct vtoc *vtoc);
28036 # 52 "sortmap.c" 2
28037 # 1 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 1
28038 /*
28039  * CDDL HEADER START
28040  *
28041  * The contents of this file are subject to the terms of the
28042  * Common Development and Distribution License (the "License").
28043  * You may not use this file except in compliance with the License.
28044  *
28045  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28046  * or http://www.opensolaris.org/os/licensing.
28047  * See the License for the specific language governing permissions
28048  * and limitations under the License.
28049  *
28050  * When distributing Covered Code, include this CDDL HEADER in each
28051  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28052  * If applicable, add the following below this CDDL HEADER, with the
28053  * fields enclosed by brackets "[]" replaced with your own identifying
28054  * information: Portions Copyright [yyyy] [name of copyright owner]
28055  *
28056  * CDDL HEADER END
28057  */
28058 
28059 /*
28060  * Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
28061  */
28062 # 34 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h"
28063 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
28064 /*
28065  * CDDL HEADER START
28066  *
28067  * The contents of this file are subject to the terms of the
28068  * Common Development and Distribution License (the "License").
28069  * You may not use this file except in compliance with the License.
28070  *
28071  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28072  * or http://www.opensolaris.org/os/licensing.
28073  * See the License for the specific language governing permissions
28074  * and limitations under the License.
28075  *
28076  * When distributing Covered Code, include this CDDL HEADER in each
28077  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28078  * If applicable, add the following below this CDDL HEADER, with the
28079  * fields enclosed by brackets "[]" replaced with your own identifying
28080  * information: Portions Copyright [yyyy] [name of copyright owner]
28081  *
28082  * CDDL HEADER END
28083  */
28084 
28085 /*
28086  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
28087  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
28088  */
28089 
28090 /*	Copyright (c) 1988 AT&T	*/
28091 /*	  All Rights Reserved  	*/
28092 
28093 /*
28094  * User-visible pieces of the ANSI C standard I/O package.
28095  */
28096 # 35 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
28097 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h" 1
28098 /*
28099  * CDDL HEADER START
28100  *
28101  * The contents of this file are subject to the terms of the
28102  * Common Development and Distribution License (the "License").
28103  * You may not use this file except in compliance with the License.
28104  *
28105  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28106  * or http://www.opensolaris.org/os/licensing.
28107  * See the License for the specific language governing permissions
28108  * and limitations under the License.
28109  *
28110  * When distributing Covered Code, include this CDDL HEADER in each
28111  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28112  * If applicable, add the following below this CDDL HEADER, with the
28113  * fields enclosed by brackets "[]" replaced with your own identifying
28114  * information: Portions Copyright [yyyy] [name of copyright owner]
28115  *
28116  * CDDL HEADER END
28117  */
28118 
28119 /*
28120  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
28121  *
28122  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
28123  * Use is subject to license terms.
28124  */
28125 
28126 /*	Copyright (c) 1988 AT&T	*/
28127 /*	  All Rights Reserved  	*/
28128 
28129 
28130 
28131 
28132 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
28133 /*
28134  * CDDL HEADER START
28135  *
28136  * The contents of this file are subject to the terms of the
28137  * Common Development and Distribution License (the "License").
28138  * You may not use this file except in compliance with the License.
28139  *
28140  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28141  * or http://www.opensolaris.org/os/licensing.
28142  * See the License for the specific language governing permissions
28143  * and limitations under the License.
28144  *
28145  * When distributing Covered Code, include this CDDL HEADER in each
28146  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28147  * If applicable, add the following below this CDDL HEADER, with the
28148  * fields enclosed by brackets "[]" replaced with your own identifying
28149  * information: Portions Copyright [yyyy] [name of copyright owner]
28150  *
28151  * CDDL HEADER END
28152  */
28153 
28154 /*
28155  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
28156  * Copyright 2016 Joyent, Inc.
28157  *
28158  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
28159  * Use is subject to license terms.
28160  */
28161 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h" 2
28162 
28163 
28164 
28165 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
28166 /*
28167  * CDDL HEADER START
28168  *
28169  * The contents of this file are subject to the terms of the
28170  * Common Development and Distribution License (the "License").
28171  * You may not use this file except in compliance with the License.
28172  *
28173  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28174  * or http://www.opensolaris.org/os/licensing.
28175  * See the License for the specific language governing permissions
28176  * and limitations under the License.
28177  *
28178  * When distributing Covered Code, include this CDDL HEADER in each
28179  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28180  * If applicable, add the following below this CDDL HEADER, with the
28181  * fields enclosed by brackets "[]" replaced with your own identifying
28182  * information: Portions Copyright [yyyy] [name of copyright owner]
28183  *
28184  * CDDL HEADER END
28185  */
28186 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28187 /*	  All Rights Reserved  	*/
28188 
28189 
28190 /*
28191  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
28192  * Use is subject to license terms.
28193  *
28194  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
28195  * Copyright 2016 Joyent, Inc.
28196  */
28197 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h" 2
28198 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h" 1
28199 /*
28200  * CDDL HEADER START
28201  *
28202  * The contents of this file are subject to the terms of the
28203  * Common Development and Distribution License (the "License").
28204  * You may not use this file except in compliance with the License.
28205  *
28206  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28207  * or http://www.opensolaris.org/os/licensing.
28208  * See the License for the specific language governing permissions
28209  * and limitations under the License.
28210  *
28211  * When distributing Covered Code, include this CDDL HEADER in each
28212  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28213  * If applicable, add the following below this CDDL HEADER, with the
28214  * fields enclosed by brackets "[]" replaced with your own identifying
28215  * information: Portions Copyright [yyyy] [name of copyright owner]
28216  *
28217  * CDDL HEADER END
28218  */
28219 
28220 /*
28221  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
28222  */
28223 
28224 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28225 /*	  All Rights Reserved  	*/
28226 
28227 /*
28228  * University Copyright- Copyright (c) 1982, 1986, 1988
28229  * The Regents of the University of California
28230  * All Rights Reserved
28231  *
28232  * University Acknowledgment- Portions of this document are derived from
28233  * software developed by the University of California, Berkeley, and its
28234  * contributors.
28235  */
28236 
28237 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
28238 /* Copyright 2015, Joyent, Inc. */
28239 
28240 
28241 
28242 
28243 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
28244 /*
28245  * CDDL HEADER START
28246  *
28247  * The contents of this file are subject to the terms of the
28248  * Common Development and Distribution License (the "License").
28249  * You may not use this file except in compliance with the License.
28250  *
28251  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28252  * or http://www.opensolaris.org/os/licensing.
28253  * See the License for the specific language governing permissions
28254  * and limitations under the License.
28255  *
28256  * When distributing Covered Code, include this CDDL HEADER in each
28257  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28258  * If applicable, add the following below this CDDL HEADER, with the
28259  * fields enclosed by brackets "[]" replaced with your own identifying
28260  * information: Portions Copyright [yyyy] [name of copyright owner]
28261  *
28262  * CDDL HEADER END
28263  */
28264 
28265 /*
28266  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
28267  * Copyright 2016 Joyent, Inc.
28268  *
28269  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
28270  * Use is subject to license terms.
28271  */
28272 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h" 2
28273 
28274 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
28275 /*
28276  * CDDL HEADER START
28277  *
28278  * The contents of this file are subject to the terms of the
28279  * Common Development and Distribution License (the "License").
28280  * You may not use this file except in compliance with the License.
28281  *
28282  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28283  * or http://www.opensolaris.org/os/licensing.
28284  * See the License for the specific language governing permissions
28285  * and limitations under the License.
28286  *
28287  * When distributing Covered Code, include this CDDL HEADER in each
28288  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28289  * If applicable, add the following below this CDDL HEADER, with the
28290  * fields enclosed by brackets "[]" replaced with your own identifying
28291  * information: Portions Copyright [yyyy] [name of copyright owner]
28292  *
28293  * CDDL HEADER END
28294  */
28295 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28296 /*	  All Rights Reserved  	*/
28297 
28298 
28299 /*
28300  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
28301  * Use is subject to license terms.
28302  *
28303  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
28304  * Copyright 2016 Joyent, Inc.
28305  */
28306 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h" 2
28307 
28308 
28309 
28310 
28311 
28312 /*
28313  * Flag values accessible to open(2) and fcntl(2)
28314  * The first five can only be set (exclusively) by open(2).
28315  */
28316 # 71 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28317     /* defines read/write file integrity */
28318 
28319 
28320 
28321 
28322 
28323 
28324 /*
28325  * Flag values accessible only to open(2).
28326  */
28327 # 93 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28328 /*
28329  * fcntl(2) requests
28330  *
28331  * N.B.: values are not necessarily assigned sequentially below.
28332  */
28333 
28334 
28335 
28336 
28337 
28338 
28339 
28340 /*
28341  * Applications that read /dev/mem must be built like the kernel.  A
28342  * new symbol "_KMEMUSER" is defined for this purpose.
28343  */
28344 # 128 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28345      /* EINVAL is fildes matches arg1 */
28346 # 137 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28347 /*
28348  * Numbers 20-22 have been removed and should not be reused.
28349  */
28350 
28351 
28352 
28353 
28354 
28355     /* manager */
28356 
28357 /*
28358  * Commands that refer to flock structures.  The argument types differ between
28359  * the large and small file environments; therefore, the #defined values must
28360  * as well.
28361  * The NBMAND forms are private and should not be used.
28362  * The FLOCK forms are also private and should not be used.
28363  */
28364 # 171 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28365 /* ILP32 large file application compilation environment version */
28366 # 190 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28367 /*
28368  * transitional large file interface version
28369  * These are only valid in a 32 bit application compiled with large files
28370  * option, for source compatibility, the 64-bit versions are mapped back
28371  * to the native versions.
28372  */
28373 # 233 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28374 /*
28375  * File segment locking set data type - information passed to system by user.
28376  */
28377 
28378 /* regular version, for both small and large file compilation environment */
28379 typedef struct flock {
28380  short l_type;
28381  short l_whence;
28382  off_t l_start;
28383  off_t l_len; /* len == 0 means until end of file */
28384  int l_sysid;
28385  pid_t l_pid;
28386  long l_pad[4]; /* reserve area */
28387 } flock_t;
28388 # 264 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28389 /* transitional large file interface version */
28390 
28391 
28392 
28393 typedef struct flock64 {
28394  short l_type;
28395  short l_whence;
28396  off64_t l_start;
28397  off64_t l_len; /* len == 0 means until end of file */
28398  int l_sysid;
28399  pid_t l_pid;
28400  long l_pad[4]; /* reserve area */
28401 } flock64_t;
28402 # 328 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28403 /*
28404  * File segment locking types.
28405  */
28406 
28407 
28408 
28409 
28410 
28411 /*
28412  * POSIX constants
28413  */
28414 
28415 /* Mask for file access modes */
28416 
28417 
28418 
28419 /*
28420  * DIRECTIO
28421  */
28422 
28423 
28424 
28425 
28426 /*
28427  * File share reservation type
28428  */
28429 typedef struct fshare {
28430  short f_access;
28431  short f_deny;
28432  int f_id;
28433 } fshare_t;
28434 
28435 /*
28436  * f_access values
28437  */
28438 
28439 
28440 
28441 
28442 
28443 
28444 /*
28445  * f_deny values
28446  */
28447 # 381 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28448 /*
28449  * Special flags for functions such as openat(), fstatat()....
28450  */
28451 
28452 
28453  /* || defined(_XPG7) */
28454 # 396 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/fcntl.h"
28455 /* advice for posix_fadvise */
28456 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h" 2
28457 # 74 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28458 /* large file compilation environment setup */
28459 
28460 
28461 
28462 # 77 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28463 #pragma redefine_extname open open64
28464 # 77 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28465 
28466 
28467 # 78 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28468 #pragma redefine_extname creat creat64
28469 # 78 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28470 
28471 
28472 
28473 # 80 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28474 #pragma redefine_extname posix_fadvise posix_fadvise64
28475 # 80 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28476 
28477 
28478 # 81 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28479 #pragma redefine_extname posix_fallocate posix_fallocate64
28480 # 81 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28481 
28482 
28483 
28484 
28485 
28486 # 85 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28487 #pragma redefine_extname openat openat64
28488 # 85 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28489 
28490 
28491 # 86 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28492 #pragma redefine_extname attropen attropen64
28493 # 86 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28494 # 131 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/fcntl.h"
28495 extern int fcntl(int, int, ...);
28496 extern int open(const char *, int, ...);
28497 extern int creat(const char *, mode_t);
28498 
28499 extern int posix_fadvise(int, off_t, off_t, int);
28500 extern int posix_fallocate(int, off_t, off_t);
28501 
28502 
28503 
28504 extern int openat(int, const char *, int, ...);
28505 extern int attropen(const char *, const char *, int, ...);
28506 
28507 
28508 extern int directio(int, int);
28509 
28510 
28511 /* transitional large file interface versions */
28512 
28513 
28514 extern int open64(const char *, int, ...);
28515 extern int creat64(const char *, mode_t);
28516 
28517 extern int posix_fadvise64(int, off64_t, off64_t, int);
28518 extern int posix_fallocate64(int, off64_t, off64_t);
28519 
28520 
28521 
28522 extern int openat64(int, const char *, int, ...);
28523 extern int attropen64(const char *, const char *, int, ...);
28524 # 36 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
28525 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
28526 /*
28527  * CDDL HEADER START
28528  *
28529  * The contents of this file are subject to the terms of the
28530  * Common Development and Distribution License (the "License").
28531  * You may not use this file except in compliance with the License.
28532  *
28533  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28534  * or http://www.opensolaris.org/os/licensing.
28535  * See the License for the specific language governing permissions
28536  * and limitations under the License.
28537  *
28538  * When distributing Covered Code, include this CDDL HEADER in each
28539  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28540  * If applicable, add the following below this CDDL HEADER, with the
28541  * fields enclosed by brackets "[]" replaced with your own identifying
28542  * information: Portions Copyright [yyyy] [name of copyright owner]
28543  *
28544  * CDDL HEADER END
28545  */
28546 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28547 /*	  All Rights Reserved  	*/
28548 
28549 
28550 /*
28551  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
28552  * Use is subject to license terms.
28553  *
28554  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
28555  * Copyright 2016 Joyent, Inc.
28556  */
28557 # 37 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
28558 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h" 1
28559 /*
28560  * CDDL HEADER START
28561  *
28562  * The contents of this file are subject to the terms of the
28563  * Common Development and Distribution License (the "License").
28564  * You may not use this file except in compliance with the License.
28565  *
28566  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28567  * or http://www.opensolaris.org/os/licensing.
28568  * See the License for the specific language governing permissions
28569  * and limitations under the License.
28570  *
28571  * When distributing Covered Code, include this CDDL HEADER in each
28572  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28573  * If applicable, add the following below this CDDL HEADER, with the
28574  * fields enclosed by brackets "[]" replaced with your own identifying
28575  * information: Portions Copyright [yyyy] [name of copyright owner]
28576  *
28577  * CDDL HEADER END
28578  */
28579 
28580 /*
28581  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
28582  * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
28583  */
28584 
28585 /*	Copyright (c) 1990, 1991 UNIX System Laboratories, Inc.	*/
28586 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T	*/
28587 /*	All Rights Reserved	*/
28588 
28589 
28590 
28591 
28592 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
28593 /*
28594  * CDDL HEADER START
28595  *
28596  * The contents of this file are subject to the terms of the
28597  * Common Development and Distribution License (the "License").
28598  * You may not use this file except in compliance with the License.
28599  *
28600  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28601  * or http://www.opensolaris.org/os/licensing.
28602  * See the License for the specific language governing permissions
28603  * and limitations under the License.
28604  *
28605  * When distributing Covered Code, include this CDDL HEADER in each
28606  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28607  * If applicable, add the following below this CDDL HEADER, with the
28608  * fields enclosed by brackets "[]" replaced with your own identifying
28609  * information: Portions Copyright [yyyy] [name of copyright owner]
28610  *
28611  * CDDL HEADER END
28612  */
28613 
28614 /*
28615  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
28616  * Copyright 2016 Joyent, Inc.
28617  *
28618  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
28619  * Use is subject to license terms.
28620  */
28621 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h" 2
28622 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
28623 /*
28624  * CDDL HEADER START
28625  *
28626  * The contents of this file are subject to the terms of the
28627  * Common Development and Distribution License (the "License").
28628  * You may not use this file except in compliance with the License.
28629  *
28630  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28631  * or http://www.opensolaris.org/os/licensing.
28632  * See the License for the specific language governing permissions
28633  * and limitations under the License.
28634  *
28635  * When distributing Covered Code, include this CDDL HEADER in each
28636  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28637  * If applicable, add the following below this CDDL HEADER, with the
28638  * fields enclosed by brackets "[]" replaced with your own identifying
28639  * information: Portions Copyright [yyyy] [name of copyright owner]
28640  *
28641  * CDDL HEADER END
28642  */
28643 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28644 /*	  All Rights Reserved  	*/
28645 
28646 
28647 /*
28648  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
28649  * Use is subject to license terms.
28650  *
28651  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
28652  * Copyright 2016 Joyent, Inc.
28653  */
28654 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h" 2
28655 
28656 
28657 
28658 
28659 
28660 /*
28661  * The implementation specific header <sys/time_impl.h> includes a
28662  * definition for timestruc_t needed by the stat structure.  However,
28663  * including either <time.h>, which includes <sys/time_impl.h>, or
28664  * including <sys/time_impl.h> directly will break both X/Open and
28665  * POSIX namespace. Preceeding tag, structure, and structure member
28666  * names with underscores eliminates the namespace breakage and at the
28667  * same time, with unique type names, eliminates the possibility of
28668  * timespec_t or timestruct_t naming conflicts that could otherwise
28669  * result based on the order of inclusion of <sys/stat.h> and
28670  * <sys/time.h>.  The header <sys/time_std_impl.h> contains the
28671  * standards namespace safe versions of these definitions.
28672  */
28673 
28674 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h" 1
28675 /*
28676  * CDDL HEADER START
28677  *
28678  * The contents of this file are subject to the terms of the
28679  * Common Development and Distribution License, Version 1.0 only
28680  * (the "License").  You may not use this file except in compliance
28681  * with the License.
28682  *
28683  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28684  * or http://www.opensolaris.org/os/licensing.
28685  * See the License for the specific language governing permissions
28686  * and limitations under the License.
28687  *
28688  * When distributing Covered Code, include this CDDL HEADER in each
28689  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28690  * If applicable, add the following below this CDDL HEADER, with the
28691  * fields enclosed by brackets "[]" replaced with your own identifying
28692  * information: Portions Copyright [yyyy] [name of copyright owner]
28693  *
28694  * CDDL HEADER END
28695  */
28696 /*
28697  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
28698  * Use is subject to license terms.
28699  */
28700 
28701 /*
28702  * Implementation-private.  This header should not be included
28703  * directly by an application.  The application should instead
28704  * include <time.h> which includes this header conditionally
28705  * depending on which feature test macros are defined. By default,
28706  * this header is included by <time.h>.  X/Open and POSIX
28707  * standards requirements result in this header being included
28708  * by <time.h> only under a restricted set of conditions.
28709  */
28710 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h" 2
28711 
28712 
28713 
28714 
28715 
28716 
28717 /*
28718  * stat structure, used by stat(2) and fstat(2)
28719  */
28720 # 155 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28721 /*
28722  * large file compilation environment setup
28723  */
28724 
28725 
28726 
28727 # 160 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28728 #pragma redefine_extname fstat fstat64
28729 # 160 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28730 
28731 
28732 # 161 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28733 #pragma redefine_extname stat stat64
28734 # 161 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28735 
28736 
28737 
28738 
28739 # 164 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28740 #pragma redefine_extname fstatat fstatat64
28741 # 164 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28742 
28743 
28744 
28745 
28746 
28747 # 168 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28748 #pragma redefine_extname lstat lstat64
28749 # 168 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28750 # 183 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28751 /*
28752  * In the LP64 compilation environment, map large file interfaces
28753  * back to native versions where possible.
28754  */
28755 # 211 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28756 /*
28757  * User level stat structure definitions.
28758  */
28759 # 242 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28760 struct stat {
28761  dev_t st_dev;
28762  long st_pad1[3]; /* reserved for network id */
28763  ino_t st_ino;
28764  mode_t st_mode;
28765  nlink_t st_nlink;
28766  uid_t st_uid;
28767  gid_t st_gid;
28768  dev_t st_rdev;
28769  long st_pad2[2];
28770  off_t st_size;
28771 
28772 
28773 
28774 
28775  timestruc_t st_atim;
28776  timestruc_t st_mtim;
28777  timestruc_t st_ctim;
28778 
28779 
28780 
28781 
28782 
28783  blksize_t st_blksize;
28784  blkcnt_t st_blocks;
28785  char st_fstype[16];
28786  long st_pad4[8]; /* expansion area */
28787 };
28788 
28789 
28790 
28791 /* transitional large file interface version */
28792 # 303 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28793 struct stat64 {
28794  dev_t st_dev;
28795  long st_pad1[3]; /* reserved for network id */
28796  ino64_t st_ino;
28797  mode_t st_mode;
28798  nlink_t st_nlink;
28799  uid_t st_uid;
28800  gid_t st_gid;
28801  dev_t st_rdev;
28802  long st_pad2[2];
28803  off64_t st_size;
28804 
28805  timestruc_t st_atim;
28806  timestruc_t st_mtim;
28807  timestruc_t st_ctim;
28808 
28809 
28810 
28811 
28812 
28813  blksize_t st_blksize;
28814  blkcnt64_t st_blocks;
28815  char st_fstype[16];
28816  long st_pad4[8]; /* expansion area */
28817 };
28818 # 401 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28819 /* MODE MASKS */
28820 
28821 /* de facto standard definitions */
28822 
28823 
28824 
28825 
28826 
28827 
28828 /* XENIX definitions are not relevant to Solaris */
28829 # 428 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28830 /* the following macros are for POSIX conformance */
28831 # 454 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28832 /* POSIX.4 macros */
28833 
28834 
28835 
28836 
28837 
28838 
28839 /*
28840  * A version number is included in the x86 SVR4 stat and mknod interfaces
28841  * so that SVR4 binaries can be supported.  An LP64 kernel that supports
28842  * the i386 ABI need to be aware of this too.
28843  */
28844 # 476 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28845  /* || defined(_XPG7) */
28846 /* for use with futimens() and utimensat() */
28847 # 486 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h"
28848 extern int fchmod(int, mode_t);
28849 
28850 
28851 extern int chmod(const char *, mode_t);
28852 extern int mkdir(const char *, mode_t);
28853 extern int mkfifo(const char *, mode_t);
28854 extern mode_t umask(mode_t);
28855 
28856 /* transitional large file interfaces */
28857 
28858 
28859 extern int fstat64(int, struct stat64 *);
28860 extern int stat64(const char *, struct stat64 *);
28861 extern int lstat64(const char *, struct stat64 *);
28862 
28863 
28864 extern int fstatat64(int, const char *, struct stat64 *, int);
28865 
28866 
28867 
28868 
28869 
28870  /* || defined(_XPG7) */
28871 extern int mkdirat(int, const char *, mode_t);
28872 extern int mkfifoat(int, const char *, mode_t);
28873 extern int mknodat(int, const char *, mode_t, dev_t);
28874 extern int fchmodat(int, const char *, mode_t, int);
28875 extern int futimens(int, const struct timespec[2]);
28876 extern int utimensat(int, const char *, const struct timespec[2], int);
28877 
28878 
28879 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat_impl.h" 1
28880 /*
28881  * CDDL HEADER START
28882  *
28883  * The contents of this file are subject to the terms of the
28884  * Common Development and Distribution License (the "License").
28885  * You may not use this file except in compliance with the License.
28886  *
28887  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28888  * or http://www.opensolaris.org/os/licensing.
28889  * See the License for the specific language governing permissions
28890  * and limitations under the License.
28891  *
28892  * When distributing Covered Code, include this CDDL HEADER in each
28893  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28894  * If applicable, add the following below this CDDL HEADER, with the
28895  * fields enclosed by brackets "[]" replaced with your own identifying
28896  * information: Portions Copyright [yyyy] [name of copyright owner]
28897  *
28898  * CDDL HEADER END
28899  */
28900 
28901 /*
28902  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
28903  * Use is subject to license terms.
28904  */
28905 
28906 
28907 
28908 
28909 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
28910 /*
28911  * CDDL HEADER START
28912  *
28913  * The contents of this file are subject to the terms of the
28914  * Common Development and Distribution License (the "License").
28915  * You may not use this file except in compliance with the License.
28916  *
28917  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28918  * or http://www.opensolaris.org/os/licensing.
28919  * See the License for the specific language governing permissions
28920  * and limitations under the License.
28921  *
28922  * When distributing Covered Code, include this CDDL HEADER in each
28923  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28924  * If applicable, add the following below this CDDL HEADER, with the
28925  * fields enclosed by brackets "[]" replaced with your own identifying
28926  * information: Portions Copyright [yyyy] [name of copyright owner]
28927  *
28928  * CDDL HEADER END
28929  */
28930 
28931 /*
28932  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
28933  * Copyright 2016 Joyent, Inc.
28934  *
28935  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
28936  * Use is subject to license terms.
28937  */
28938 # 31 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat_impl.h" 2
28939 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
28940 /*
28941  * CDDL HEADER START
28942  *
28943  * The contents of this file are subject to the terms of the
28944  * Common Development and Distribution License (the "License").
28945  * You may not use this file except in compliance with the License.
28946  *
28947  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
28948  * or http://www.opensolaris.org/os/licensing.
28949  * See the License for the specific language governing permissions
28950  * and limitations under the License.
28951  *
28952  * When distributing Covered Code, include this CDDL HEADER in each
28953  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
28954  * If applicable, add the following below this CDDL HEADER, with the
28955  * fields enclosed by brackets "[]" replaced with your own identifying
28956  * information: Portions Copyright [yyyy] [name of copyright owner]
28957  *
28958  * CDDL HEADER END
28959  */
28960 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28961 /*	  All Rights Reserved  	*/
28962 
28963 
28964 /*
28965  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
28966  * Use is subject to license terms.
28967  *
28968  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
28969  * Copyright 2016 Joyent, Inc.
28970  */
28971 # 32 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat_impl.h" 2
28972 
28973 
28974 
28975 
28976 
28977 /*
28978  * The implementation specific header for <sys/stat.h>
28979  */
28980 
28981 
28982 
28983 
28984 
28985 extern int fstat(int, struct stat *);
28986 extern int stat(const char *, struct stat *);
28987 
28988 
28989 
28990 extern int fstatat(int, const char *, struct stat *, int);
28991 
28992 
28993 
28994 extern int lstat(const char *, struct stat *);
28995 extern int mknod(const char *, mode_t, dev_t);
28996 # 518 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stat.h" 2
28997 # 38 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
28998 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
28999 /*
29000  * CDDL HEADER START
29001  *
29002  * The contents of this file are subject to the terms of the
29003  * Common Development and Distribution License (the "License").
29004  * You may not use this file except in compliance with the License.
29005  *
29006  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
29007  * or http://www.opensolaris.org/os/licensing.
29008  * See the License for the specific language governing permissions
29009  * and limitations under the License.
29010  *
29011  * When distributing Covered Code, include this CDDL HEADER in each
29012  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
29013  * If applicable, add the following below this CDDL HEADER, with the
29014  * fields enclosed by brackets "[]" replaced with your own identifying
29015  * information: Portions Copyright [yyyy] [name of copyright owner]
29016  *
29017  * CDDL HEADER END
29018  */
29019 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
29020 /*	  All Rights Reserved  	*/
29021 
29022 /*
29023  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
29024  * Use is subject to license terms.
29025  */
29026 # 39 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
29027 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkginfo.h" 1
29028 /*
29029  * CDDL HEADER START
29030  *
29031  * The contents of this file are subject to the terms of the
29032  * Common Development and Distribution License, Version 1.0 only
29033  * (the "License").  You may not use this file except in compliance
29034  * with the License.
29035  *
29036  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
29037  * or http://www.opensolaris.org/os/licensing.
29038  * See the License for the specific language governing permissions
29039  * and limitations under the License.
29040  *
29041  * When distributing Covered Code, include this CDDL HEADER in each
29042  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
29043  * If applicable, add the following below this CDDL HEADER, with the
29044  * fields enclosed by brackets "[]" replaced with your own identifying
29045  * information: Portions Copyright [yyyy] [name of copyright owner]
29046  *
29047  * CDDL HEADER END
29048  */
29049 /*
29050  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
29051  */
29052 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
29053 /*	  All Rights Reserved  	*/
29054 # 40 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
29055 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 1
29056 /*
29057  * CDDL HEADER START
29058  *
29059  * The contents of this file are subject to the terms of the
29060  * Common Development and Distribution License (the "License").
29061  * You may not use this file except in compliance with the License.
29062  *
29063  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
29064  * or http://www.opensolaris.org/os/licensing.
29065  * See the License for the specific language governing permissions
29066  * and limitations under the License.
29067  *
29068  * When distributing Covered Code, include this CDDL HEADER in each
29069  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
29070  * If applicable, add the following below this CDDL HEADER, with the
29071  * fields enclosed by brackets "[]" replaced with your own identifying
29072  * information: Portions Copyright [yyyy] [name of copyright owner]
29073  *
29074  * CDDL HEADER END
29075  */
29076 
29077 /*
29078  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
29079  * Use is subject to license terms.
29080  */
29081 
29082 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
29083 /* All Rights Reserved */
29084 # 41 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
29085 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/cfext.h" 1
29086 /*
29087  * CDDL HEADER START
29088  *
29089  * The contents of this file are subject to the terms of the
29090  * Common Development and Distribution License (the "License").
29091  * You may not use this file except in compliance with the License.
29092  *
29093  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
29094  * or http://www.opensolaris.org/os/licensing.
29095  * See the License for the specific language governing permissions
29096  * and limitations under the License.
29097  *
29098  * When distributing Covered Code, include this CDDL HEADER in each
29099  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
29100  * If applicable, add the following below this CDDL HEADER, with the
29101  * fields enclosed by brackets "[]" replaced with your own identifying
29102  * information: Portions Copyright [yyyy] [name of copyright owner]
29103  *
29104  * CDDL HEADER END
29105  */
29106 
29107 /*
29108  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
29109  * Use is subject to license terms.
29110  */
29111 # 42 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
29112 # 1 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/install.h" 1
29113 /*
29114  * CDDL HEADER START
29115  *
29116  * The contents of this file are subject to the terms of the
29117  * Common Development and Distribution License (the "License").
29118  * You may not use this file except in compliance with the License.
29119  *
29120  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
29121  * or http://www.opensolaris.org/os/licensing.
29122  * See the License for the specific language governing permissions
29123  * and limitations under the License.
29124  *
29125  * When distributing Covered Code, include this CDDL HEADER in each
29126  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
29127  * If applicable, add the following below this CDDL HEADER, with the
29128  * fields enclosed by brackets "[]" replaced with your own identifying
29129  * information: Portions Copyright [yyyy] [name of copyright owner]
29130  *
29131  * CDDL HEADER END
29132  */
29133 
29134 /*
29135  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
29136  * Use is subject to license terms.
29137  */
29138 
29139 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
29140 /* All Rights Reserved */
29141 # 43 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h" 2
29142 
29143 
29144 
29145 
29146 
29147 /* signal handler function definition */
29148 
29149 typedef void (sighdlrFunc_t)(int);
29150 
29151 /* maximum parameter length */
29152 
29153 
29154 
29155 /* flag for check_applicability */
29156 
29157 typedef unsigned long CAF_T;
29158 
29159 /* flags for check_applicability */
29160 
29161 
29162 
29163 
29164 
29165 /* path to the request file in the package directory */
29166 
29167 
29168 
29169 /* path to the copyright file in the package directory */
29170 
29171 
29172 
29173 /* path to the depend file in the package directory */
29174 
29175 
29176 
29177 /*
29178  * name of environment variable set to non-global zone name being installed:
29179  * pkgadd/pkginstall expects this name and passes it on to any scripts that
29180  * are run if it is set.
29181  */
29182 
29183 
29184 
29185 /*
29186  * name of environment variable set to indicate this package should be installed
29187  * in the current zone only - see PSARC/2004/789 - New Pkginfo(4) attributes
29188  * for zones
29189  */
29190 
29191 
29192 
29193 /*
29194  * name of environment variable set to indicate this package should be installed
29195  * in all zones, and only from the global zone - see PSARC/2003/460
29196  */
29197 
29198 
29199 
29200 /*
29201  * name of environment variable set to indicate this package should be installed
29202  * hollow (db update only) when installed in nonglobal zone - see PSARC/2003/460
29203  */
29204 
29205 
29206 
29207 /*
29208  * General purpose return codes used for functions which don't return a basic
29209  * success or failure. For those functions wherein a yes/no result is
29210  * possible, then 1 means OK and 0 means FAIL.
29211  */
29212 
29213 
29214 
29215 
29216 /* These are the file status indicators for the contents file */
29217 # 128 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h"
29218 /* control bits for pkgdbmerg() */
29219 
29220 
29221 
29222 /* control bits for file verification by class */
29223 
29224 
29225 
29226 
29227 /* control bit for path type to pass to CAS */
29228 
29229 
29230 
29231 /* findscripts() argument */
29232 
29233 
29234 
29235 struct cl_attr {
29236  char name[64 +1]; /* name of class */
29237  char *inst_script; /* install class action script */
29238  char *rem_script; /* remove class action script */
29239  unsigned src_verify:3; /* source verification level */
29240  unsigned dst_verify:4; /* destination verification level */
29241  unsigned relpath_2_CAS:1; /* CAS gets relative paths */
29242 };
29243 
29244 
29245 
29246 
29247 
29248 
29249 
29250 /* Common quit declaration used across many package commands */
29251 extern void quit(int) __attribute__((__noreturn__));
29252 
29253 
29254 /* listmgr.c */
29255 extern int bl_create (int count_per_block, int struct_size, char *desc);
29256 
29257 extern char *bl_next_avail (int list_handle);
29258 extern char *bl_get_record (int list_handle, int recno);
29259 extern void bl_free (int list_handle);
29260 extern int ar_create (int count_per_block, int struct_size, char *desc);
29261 
29262 extern char **ar_next_avail (int list_handle);
29263 extern char **ar_get_head (int list_handle);
29264 extern int ar_delete (int list_handle, int index);
29265 extern void ar_free (int list_handle);
29266 
29267 /* doulimit.c */
29268 extern int set_ulimit (char *script, char *err_msg);
29269 extern int clr_ulimit (void);
29270 extern int assign_ulimit (char *fslimit);
29271 
29272 /* dryrun.c */
29273 extern void set_continue_not_ok (void);
29274 extern int continue_is_ok (void);
29275 extern int in_dryrun_mode (void);
29276 extern int in_continue_mode (void);
29277 extern void init_dryrunfile (char *dr_dir);
29278 extern void init_contfile (char *cn_dir);
29279 extern void set_dr_exitmsg (char *value);
29280 extern void set_dr_info (int type, int value);
29281 extern void write_dryrun_file (struct cfextra **extlist);
29282 
29283 /* instvol.c */
29284 extern void regfiles_free (void);
29285 
29286 /* lockinst.c */
29287 extern int lockinst (char *util_name, char *pkg_name, char *place);
29288 extern void lockupd (char *place);
29289 extern void unlockinst (void);
29290 
29291 extern char *pathdup (char *s);
29292 extern char *pathalloc (int n);
29293 extern char *fixpath (char *path);
29294 extern char *get_info_basedir (void);
29295 extern char *get_basedir (void);
29296 extern char *get_client_basedir (void);
29297 extern int set_basedirs (int reloc, char *adm_basedir, char *pkginst, int nointeract);
29298 
29299 extern int eval_path (char **server_ptr, char **client_ptr, char **map_ptr, char *path);
29300 
29301 extern int get_orig_offset (void);
29302 extern char *get_inst_root (void);
29303 extern char *get_mount_point (uint32_t n);
29304 extern char *get_remote_path (uint32_t n);
29305 extern void set_env_cbdir (void);
29306 extern int set_inst_root (char *path);
29307 extern void put_path_params (void);
29308 extern int mkpath (char *p);
29309 extern void mkbasedir (int flag, char *path);
29310 extern int is_an_inst_root (void);
29311 extern int is_a_basedir (void);
29312 extern int is_a_cl_basedir (void);
29313 extern int is_relocatable (void);
29314 extern char *orig_path (char *path);
29315 extern char *orig_path_ptr (char *path);
29316 extern char *qreason (int caller, int retcode, int started, int includeZonename);
29317 
29318 extern char *qstrdup (char *s);
29319 extern char *srcpath (char *d, char *p, int part, int nparts);
29320 extern char *trans_srcp_pi (char *local_path);
29321 extern int copyf (char *from, char *to, time_t mytime);
29322 extern int copyFile (int, int, char *, char *, struct stat *, long);
29323 extern int openLocal (char *a_path, int a_oflag, char *a_tmpdir);
29324 extern int dockdeps (char *depfile, int removeFlag, boolean_t a_preinstallCheck);
29325 
29326 extern int finalck (struct cfent *ept, int attrchg, int contchg, boolean_t a_warning);
29327 
29328 
29329 /* dockdeps.c */
29330 extern void setUpdate (void);
29331 extern int isUpdate (void);
29332 
29333 /* mntinfo.c */
29334 extern int get_mntinfo (int map_client, char *vfstab_file);
29335 extern uint32_t fsys (char *path);
29336 extern struct fstable *get_fs_entry (uint32_t n);
29337 extern int mount_client (void);
29338 extern int unmount_client (void);
29339 extern uint32_t resolved_fsys (char *path);
29340 extern char *get_server_host (uint32_t n);
29341 extern char *server_map (char *path, uint32_t fsys_value);
29342 extern int use_srvr_map (char *path, uint32_t *fsys_value);
29343 extern int use_srvr_map_n (uint32_t n);
29344 extern int is_fs_writeable (char *path, uint32_t *fsys_value);
29345 extern int is_remote_fs (char *path, uint32_t *fsys_value);
29346 extern int is_served (char *path, uint32_t *fsys_value);
29347 extern int is_mounted (char *path, uint32_t *fsys_value);
29348 extern int is_fs_writeable_n (uint32_t n);
29349 extern int is_remote_fs_n (uint32_t n);
29350 extern int is_served_n (uint32_t n);
29351 extern int is_mounted_n (uint32_t n);
29352 extern fsblkcnt_t get_blk_size_n (uint32_t n);
29353 extern fsblkcnt_t get_frag_size_n (uint32_t n);
29354 extern fsblkcnt_t get_blk_used_n (uint32_t n);
29355 extern fsblkcnt_t get_blk_free_n (uint32_t n);
29356 extern fsblkcnt_t get_inode_used_n (uint32_t n);
29357 extern fsblkcnt_t get_inode_free_n (uint32_t n);
29358 extern void set_blk_used_n (uint32_t n, fsblkcnt_t value);
29359 extern char *get_source_name_n (uint32_t n);
29360 extern char *get_fs_name_n (uint32_t n);
29361 extern int load_fsentry (struct fstable *fs_entry, char *name, char *fstype, char *remote_name);
29362 
29363 extern int isreloc (char *pkginstdir);
29364 extern int is_local_host (char *hostname);
29365 extern void fs_tab_free (void);
29366 
29367 /* pkgdbmerg.c */
29368 extern int pkgdbmerg (PKGserver server, VFP_T *tmpvfp, struct cfextra **extlist);
29369 
29370 extern int files_installed (void);
29371 
29372 /* ocfile.c */
29373 extern int trunc_tcfile (int fd);
29374 extern int ocfile (PKGserver *serverp, VFP_T **tmpvfp, fsblkcnt_t map_blks);
29375 
29376 extern int swapcfile (PKGserver server, VFP_T **a_tmpvfp, char *pkginst, int dbchg);
29377 
29378 extern int set_cfdir (char *cfdir);
29379 extern int socfile (PKGserver *server, boolean_t quiet);
29380 extern int relslock (void);
29381 extern int pkgWlock (int verbose);
29382 extern int iscfile (void);
29383 extern int vcfile (void);
29384 
29385 extern fsblkcnt_t nblk (fsblkcnt_t size, ulong_t bsize, ulong_t frsize);
29386 
29387 extern struct cfent **procmap (VFP_T *vfp, int mapflag, char *ir);
29388 extern void repl_cfent (struct cfent *new, struct cfent *old);
29389 extern struct cfextra **pkgobjmap (VFP_T *vfp, int mapflag, char *ir);
29390 extern void pkgobjinit (void);
29391 extern int seed_pkgobjmap (struct cfextra *ext_entry, char *path, char *local);
29392 
29393 extern int init_pkgobjspace (void);
29394 
29395 /* eptstat.c */
29396 extern void pinfo_free (void);
29397 extern struct pinfo *eptstat (struct cfent *entry, char *pkg, char c);
29398 
29399 /* echo.c */
29400 /*PRINTFLIKE1*/
29401 extern void echo (char *a_fmt, ...);
29402 /*PRINTFLIKE1*/
29403 extern void echoDebug (char *a_fmt, ...);
29404 extern boolean_t echoGetFlag (void);
29405 extern boolean_t echoDebugGetFlag (void);
29406 extern boolean_t echoSetFlag (boolean_t a_debugFlag);
29407 extern boolean_t echoDebugSetFlag (boolean_t a_debugFlag);
29408 
29409 /* ptext.c */
29410 /*PRINTFLIKE2*/
29411 extern void ptext (FILE *fp, char *fmt, ...);
29412 
29413 /* putparam.c */
29414 extern void putparam (char *param, char *value);
29415 extern void getuserlocale (void);
29416 extern void putuserlocale (void);
29417 extern void putConditionInfo (char *, char *);
29418 
29419 /* setadmin.c */
29420 extern void setadminFile (char *file);
29421 extern char *setadminSetting (char *a_paramName, char *a_paramValue);
29422 
29423 extern char *set_keystore_admin (void);
29424 extern boolean_t get_proxy_port_admin (char **, ushort_t *);
29425 extern boolean_t check_keystore_admin (char **);
29426 extern int web_ck_retries (void);
29427 extern int web_ck_timeout (void);
29428 extern int web_ck_authentication (void);
29429 
29430 /* setlist.c */
29431 extern char *cl_iscript (int idx);
29432 extern char *cl_rscript (int idx);
29433 extern void find_CAS (int CAS_type, char *bin_ptr, char *inst_ptr);
29434 extern int setlist (struct cl_attr ***plist, char *slist);
29435 extern void addlist (struct cl_attr ***plist, char *item);
29436 extern char *cl_nam (int cl_idx);
29437 extern char *flex_device(char *device_name, int dev_ok);
29438 extern int cl_getn (void);
29439 extern int cl_idx (char *cl_nam);
29440 extern void cl_sets (char *slist);
29441 extern void cl_setl (struct cl_attr **cl_lst);
29442 extern void cl_putl (char *parm_name, struct cl_attr **list);
29443 extern int cl_deliscript (int i);
29444 extern unsigned cl_svfy (int i);
29445 extern unsigned cl_dvfy (int i);
29446 extern unsigned cl_pthrel (int i);
29447 
29448 /* passwd.c */
29449 extern int pkg_passphrase_cb (char *, int, int, void *);
29450 extern void set_passarg (char *);
29451 extern void set_prompt (char *);
29452 
29453 /* fixpath.c */
29454 extern void export_client_env(char *);
29455 extern void set_partial_inst(void);
29456 extern int is_partial_inst(void);
29457 extern void set_depend_pkginfo_DB(boolean_t a_setting);
29458 extern boolean_t is_depend_pkginfo_DB(void);
29459 extern void disable_spool_create(void);
29460 extern int is_spool_create(void);
29461 
29462 /* open_package_datastream.c */
29463 extern boolean_t open_package_datastream(int a_argc, char **a_argv,
29464     char *a_spoolto, char *a_device,
29465     int *r_repeat, char **r_idsName,
29466     char *a_tmpdir, struct pkgdev *a_pkgdev,
29467     int a_optind);
29468 
29469 /* setup_temporary_directory.c */
29470 extern boolean_t setup_temporary_directory(char **r_dirname,
29471     char *a_tmpdir, char *a_suffix);
29472 
29473 /* unpack_package_from_stream.c */
29474 extern boolean_t unpack_package_from_stream(char *a_idsName,
29475     char *a_pkginst, char *a_tempDir);
29476 
29477 /* pkgops.c */
29478 
29479 extern boolean_t pkgAddPackageToGzonlyList(char *a_pkgInst,
29480     char *a_rootPath);
29481 extern void pkgAddThisZonePackage(char *a_pkgInst);
29482 extern boolean_t pkgRemovePackageFromGzonlyList(char *a_rootPath,
29483     char *a_pkgInst);
29484 extern FILE *pkgOpenInGzOnlyFile(char *a_rootPath);
29485 extern void pkginfoFree(struct pkginfo **r_info);
29486 extern boolean_t pkginfoIsPkgInstalled(struct pkginfo **r_pinfo,
29487     char *a_pkgInst);
29488 extern boolean_t pkgIsPkgInGzOnly(char *a_rootPath, char *a_pkgInst);
29489 extern boolean_t pkgIsPkgInGzOnlyFP(FILE *a_fp, char *a_pkgInst);
29490 extern boolean_t pkginfoParamTruth(FILE *a_fp, char *a_param,
29491     char *a_value, boolean_t a_default);
29492 extern int pkgGetPackageList(char ***r_pkgList, char **a_argv,
29493     int a_optind, char *a_categories,
29494     char **a_categoryList, struct pkgdev *a_pkgdev);
29495 extern void pkgLocateHighestInst(char *r_path, int r_pathLen,
29496     char *r_pkgInst, int r_pkgInstLen,
29497     char *a_rootPath, char *a_pkgInst);
29498 extern boolean_t pkgPackageIsThisZone(char *a_pkgInst);
29499 extern char *pkgGetGzOnlyPath(void);
29500 extern boolean_t pkgTestInstalled(char *a_packageName, char *a_rootPath);
29501 
29502 /* depchk.c */
29503 
29504 struct depckErrorRecord {
29505  int ier_numZones;
29506  char *ier_packageName;
29507  char **ier_zones;
29508  char **ier_values;
29509 };
29510 
29511 typedef struct depckErrorRecord depckErrorRecord_t;
29512 
29513 struct depckError {
29514  int er_numEntries;
29515  depckErrorRecord_t *er_theEntries;
29516 };
29517 
29518 typedef struct depckError depckError_t;
29519 
29520 typedef int (depcklFunc_t)(char *a_msg, char *a_pkg);
29521 
29522 /*
29523  * ignore_values:
29524  *	== NULL - record one message for each instance of "name" found
29525  *	== "" - record multiple instances
29526  *	!= "" - record multiple instances if value not in ignore_values
29527  */
29528 
29529 struct depckl_struct {
29530  char *name;
29531  char *ignore_values;
29532  char **err_msg;
29533  depcklFunc_t *depcklFunc;
29534  depckError_t *record;
29535 };
29536 
29537 typedef struct depckl_struct depckl_t;
29538 
29539 extern int depchkReportErrors(depckl_t *depckl);
29540 extern void depchkRecordError(depckError_t *a_erc,
29541     char *a_pkginst, char *a_zoneName,
29542     char *a_value);
29543 
29544 /* log.c */
29545 
29546 /* types of log messages we recognize */
29547 typedef enum {
29548  LOG_MSG_ERR,
29549  LOG_MSG_WRN,
29550  LOG_MSG_INFO,
29551  LOG_MSG_DEBUG
29552 } LogMsgType;
29553 
29554 /*PRINTFLIKE2*/
29555 extern void log_msg(LogMsgType, const char *, ...);
29556 extern void log_set_verbose(boolean_t);
29557 extern boolean_t log_get_verbose(void);
29558 
29559 /*
29560  * typedef for the 'ckreturn' function
29561  */
29562 typedef void (ckreturnFunc_t)(int a_retcode);
29563 
29564 /* sml.c */
29565 
29566 /* null reference to SML_TAG object */
29567 
29568 
29569 
29570 /* null reference to SML_TAG * object */
29571 
29572 
29573 
29574 /* is reference to SML_TAG object valid? */
29575 
29576 
29577 
29578 /* is indirect reference to SML_TAG object valid? */
29579 
29580 
29581 
29582 
29583 /* definitions for sml passed from pkginstall to pkgcond */
29584 # 505 "/home/git3/dehawe/titanic_53/usr/src/cmd/svr4pkg/hdrs/libinst.h"
29585 typedef struct _sml_tag_struct SML_TAG;
29586 typedef struct _sml_parameter_struct SML_PARAM;
29587 
29588 struct _sml_tag_struct {
29589  char *name; /* tag name */
29590  int params_num; /* # params in *params */
29591  SML_PARAM *params; /* tag parameters */
29592  int tags_num; /* # subtags in *tags */
29593  SML_TAG *tags; /* tag subtags */
29594 };
29595 
29596 struct _sml_parameter_struct {
29597  char *name; /* tag name */
29598  char *value; /* parameters */
29599 };
29600 
29601 SML_TAG *smlAddTag(SML_TAG **r_tag, int a_index,
29602    SML_TAG *a_subTag);
29603 boolean_t smlFstatCompareEq(struct stat *statbuf,
29604     SML_TAG *tag, char *path);
29605 char *smlConvertTagToString(SML_TAG *tag);
29606 /*PRINTFLIKE2*/
29607 void smlDbgPrintTag(SML_TAG *a_tag, char *a_format, ...);
29608 void smlDelTag(SML_TAG *tag, SML_TAG *sub_tag);
29609 void smlDelParam(SML_TAG *tag, char *name);
29610 SML_TAG *smlDup(SML_TAG *tag);
29611 boolean_t smlFindAndDelTag(SML_TAG *tag, char *findTag);
29612 void smlFreeTag(SML_TAG *tag);
29613 char *smlGetElementName(SML_TAG *a_tag);
29614 int smlGetNumParams(SML_TAG *a_tag);
29615 char *smlGetParam(SML_TAG *tag, char *name);
29616 /*PRINTFLIKE2*/
29617 char *smlGetParamF(SML_TAG *tag, char *format, ...);
29618 void smlGetParam_r(SML_TAG *tag, char *name, char *buf,
29619    int bufLen);
29620 char *smlGetParamByTag(SML_TAG *tag, int index,
29621    char *tagName, char *parmName);
29622 char *smlGetParamByTagParam(SML_TAG *tag, int index,
29623    char *tagName, char *parmName, char *parmValue,
29624    char *parmReturn);
29625 char *smlGetParamName(SML_TAG *tag, int index);
29626 SML_TAG *smlGetTag(SML_TAG *tag, int index);
29627 SML_TAG *smlGetTagByName(SML_TAG *tag, int index, char *name);
29628 SML_TAG *smlGetTagByTagParam(SML_TAG *tag, int index,
29629    char *tagName, char *paramName, char *paramValue);
29630 boolean_t smlGetVerbose(void);
29631 int smlLoadTagFromFile(SML_TAG **r_tag, char *a_fileName);
29632 SML_TAG *smlNewTag(char *name);
29633 boolean_t smlParamEq(SML_TAG *tag, char *findTag,
29634    char *findParam, char *str);
29635 /*PRINTFLIKE4*/
29636 boolean_t smlParamEqF(SML_TAG *tag, char *findTag, char *findParam,
29637    char *format, ...);
29638 void smlPrintTag(SML_TAG *tag);
29639 int smlReadOneTag(SML_TAG **r_tag, char *a_str);
29640 int smlConvertStringToTag(SML_TAG **r_tag, char *str);
29641 void smlSetFileStatInfo(SML_TAG **tag,
29642     struct stat *statbuf, char *path);
29643 void smlSetParam(SML_TAG *tag, char *name, char *value);
29644 /*PRINTFLIKE3*/
29645 void smlSetParamF(SML_TAG *tag, char *name, char *format, ...);
29646 void smlSetVerbose(boolean_t a_setting);
29647 int smlWriteTagToFd(SML_TAG *tag, int fd);
29648 int smlWriteTagToFile(SML_TAG *tag, char *filename);
29649 /*PRINTFLIKE3*/
29650 void sml_strPrintf_r(char *a_buf, int a_bufLen, char *a_format, ...);
29651 /*PRINTFLIKE1*/
29652 char *sml_strPrintf(char *a_format, ...);
29653 char *sml_XmlEncodeString(char *a_plainTextString);
29654 char *sml_XmlDecodeString(char *a_xmlEncodedString);
29655 # 53 "sortmap.c" 2
29656 
29657 /* libinst/ocfile.c */
29658 extern int dbchg;
29659 
29660 static int client_refer(struct cfextra **ext);
29661 static int server_refer(struct cfextra **ext);
29662 
29663 int
29664 sortmap(struct cfextra ***extlist, VFP_T *pkgmapVfp,
29665     PKGserver pkgserver, VFP_T *tmpvfp, char *a_zoneName)
29666 {
29667  int i, n, nparts;
29668  char *db_mrg = "unable to merge package and system information";
29669 
29670  if (a_zoneName == (char *)0) {
29671   echo(gettext("## Processing package information."));
29672  } else {
29673   echo(gettext("## Processing package information in zone <%s>."),
29674       a_zoneName);
29675  }
29676 
29677  /*
29678 	 * The following instruction puts the client-relative basedir
29679 	 * into the environment iff it's a relocatable package and
29680 	 * we're installing to a client. Otherwise, it uses the regular
29681 	 * basedir. The only reason for this is so that mappath() upon
29682 	 * finding $BASEDIR in a path will properly resolve it to the
29683 	 * client-relative path. This way eval_path() can properly
29684 	 * construct the server-relative path.
29685 	 */
29686  if (is_relocatable() && is_an_inst_root())
29687   putparam("BASEDIR", get_info_basedir());
29688 
29689  /*
29690 	 * read the pkgmap provided by this package into
29691 	 * memory; map parameters specified in the pathname
29692 	 * and sort in memory by pathname
29693 	 */
29694 
29695  vfpRewind(pkgmapVfp); /* rewind input file */
29696 
29697  *extlist = pkgobjmap(pkgmapVfp, 2, 0);
29698 
29699  if (*extlist == 0) {
29700   progerr(gettext("unable to process pkgmap"));
29701   quit(99);
29702  }
29703 
29704  /* Make all paths client-relative if necessary. */
29705  if (is_an_inst_root()) {
29706   (void) client_refer(*extlist);
29707  }
29708 
29709  if (a_zoneName == (char *)0) {
29710   echo(gettext("## Processing system information."));
29711  } else {
29712   echo(gettext("## Processing system information in zone <%s>."),
29713       a_zoneName);
29714  }
29715 
29716  /*
29717 	 * calculate the number of parts in this package
29718 	 * by locating the entry with the largest "volno"
29719 	 * associated with it
29720 	 */
29721  nparts = 0;
29722  if (is_depend_pkginfo_DB() == B_FALSE) {
29723   for (i = 0; (*extlist)[i]; i++) {
29724    n = (*extlist)[i]->cf_ent.volno;
29725    if (n > nparts)
29726     nparts = n;
29727   }
29728 
29729   vfpTruncate(tmpvfp);
29730 
29731   dbchg = pkgdbmerg(pkgserver, tmpvfp, *extlist);
29732   if (dbchg < 0) {
29733    progerr(gettext(db_mrg));
29734    quit(99);
29735   }
29736  }
29737 
29738  /* Restore the original BASEDIR. */
29739  if (is_relocatable() && is_an_inst_root())
29740   putparam("BASEDIR", get_basedir());
29741 
29742  if (is_an_inst_root()) {
29743   (void) server_refer(*extlist);
29744  }
29745 
29746  return (nparts);
29747 }
29748 
29749 static int
29750 client_refer(struct cfextra **ext)
29751 {
29752  int count;
29753 
29754  for (count = 0; ext[count] != (struct cfextra *)0; count++) {
29755   ext[count]->cf_ent.path = ext[count]->client_path;
29756   ext[count]->cf_ent.ainfo.local = ext[count]->client_local;
29757  }
29758 
29759  return (1);
29760 }
29761 
29762 static int
29763 server_refer(struct cfextra **ext)
29764 {
29765  int count;
29766 
29767  for (count = 0; ext[count] != (struct cfextra *)0; count++) {
29768   ext[count]->cf_ent.path = ext[count]->server_path;
29769   ext[count]->cf_ent.ainfo.local = ext[count]->server_local;
29770  }
29771 
29772  return (1);
29773 }
29774