1 # 1 "cmdexec.c"
2 # 1 "<built-in>"
3 # 1 "<command-line>"
4 # 1 "cmdexec.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 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
36 /*
37  * CDDL HEADER START
38  *
39  * The contents of this file are subject to the terms of the
40  * Common Development and Distribution License (the "License").
41  * You may not use this file except in compliance with the License.
42  *
43  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
44  * or http://www.opensolaris.org/os/licensing.
45  * See the License for the specific language governing permissions
46  * and limitations under the License.
47  *
48  * When distributing Covered Code, include this CDDL HEADER in each
49  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
50  * If applicable, add the following below this CDDL HEADER, with the
51  * fields enclosed by brackets "[]" replaced with your own identifying
52  * information: Portions Copyright [yyyy] [name of copyright owner]
53  *
54  * CDDL HEADER END
55  */
56 
57 /*
58  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
59  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
60  */
61 
62 /*	Copyright (c) 1988 AT&T	*/
63 /*	  All Rights Reserved  	*/
64 
65 /*
66  * User-visible pieces of the ANSI C standard I/O package.
67  */
68 
69 
70 
71 
72 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
73 /*
74  * CDDL HEADER START
75  *
76  * The contents of this file are subject to the terms of the
77  * Common Development and Distribution License (the "License").
78  * You may not use this file except in compliance with the License.
79  *
80  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
81  * or http://www.opensolaris.org/os/licensing.
82  * See the License for the specific language governing permissions
83  * and limitations under the License.
84  *
85  * When distributing Covered Code, include this CDDL HEADER in each
86  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
87  * If applicable, add the following below this CDDL HEADER, with the
88  * fields enclosed by brackets "[]" replaced with your own identifying
89  * information: Portions Copyright [yyyy] [name of copyright owner]
90  *
91  * CDDL HEADER END
92  */
93 
94 /*
95  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
96  * Copyright 2016 Joyent, Inc.
97  *
98  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
99  * Use is subject to license terms.
100  */
101 
102 
103 
104 
105 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h" 1
106 /*
107  * CDDL HEADER START
108  *
109  * The contents of this file are subject to the terms of the
110  * Common Development and Distribution License, Version 1.0 only
111  * (the "License").  You may not use this file except in compliance
112  * with the License.
113  *
114  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
115  * or http://www.opensolaris.org/os/licensing.
116  * See the License for the specific language governing permissions
117  * and limitations under the License.
118  *
119  * When distributing Covered Code, include this CDDL HEADER in each
120  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
121  * If applicable, add the following below this CDDL HEADER, with the
122  * fields enclosed by brackets "[]" replaced with your own identifying
123  * information: Portions Copyright [yyyy] [name of copyright owner]
124  *
125  * CDDL HEADER END
126  */
127 /*
128  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
129  * Use is subject to license terms.
130  */
131 /*
132  * Copyright 2015 EveryCity Ltd. All rights reserved.
133  */
134 
135 
136 
137 
138 /*
139  * This file contains definitions designed to enable different compilers
140  * to be used harmoniously on Solaris systems.
141  */
142 
143 
144 
145 
146 
147 /*
148  * Allow for version tests for compiler bugs and features.
149  */
150 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h"
151 /*
152  * analogous to lint's PRINTFLIKEn
153  */
154 
155 
156 
157 
158 
159 /*
160  * Handle the kernel printf routines that can take '%b' too
161  */
162 # 78 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h"
163 /*
164  * This one's pretty obvious -- the function never returns
165  */
166 
167 
168 /*
169  * The function is 'extern inline' and expects GNU C89 behaviour, not C99
170  * behaviour.
171  *
172  * Should only be used on 'extern inline' definitions for GCC.
173  */
174 
175 
176 
177 
178 
179 
180 /*
181  * The function has control flow such that it may return multiple times (in
182  * the manner of setjmp or vfork)
183  */
184 
185 
186 
187 
188 
189 
190 /*
191  * This is an appropriate label for functions that do not
192  * modify their arguments, e.g. strlen()
193  */
194 
195 
196 /*
197  * This is a stronger form of __pure__. Can be used for functions
198  * that do not modify their arguments and don't depend on global
199  * memory.
200  */
201 
202 
203 
204 
205 /*
206  * This attribute, attached to a variable, means that the variable is meant to
207  * be possibly unused. GCC will not produce a warning for this variable.
208  */
209 # 138 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/ccompile.h"
210 /*
211  * Shorthand versions for readability
212  */
213 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 2
214 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
215 /*
216  * CDDL HEADER START
217  *
218  * The contents of this file are subject to the terms of the
219  * Common Development and Distribution License (the "License").
220  * You may not use this file except in compliance with the License.
221  *
222  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
223  * or http://www.opensolaris.org/os/licensing.
224  * See the License for the specific language governing permissions
225  * and limitations under the License.
226  *
227  *
228  * When distributing Covered Code, include this CDDL HEADER in each
229  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
230  * If applicable, add the following below this CDDL HEADER, with the
231  * fields enclosed by brackets "[]" replaced with your own identifying
232  * information: Portions Copyright [yyyy] [name of copyright owner]
233  *
234  * CDDL HEADER END
235  */
236 
237 /*
238  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
239  * Use is subject to license terms.
240  * Copyright 2016 Joyent, Inc.
241  */
242 
243 
244 
245 
246 /*
247  * This header file serves to group a set of well known defines and to
248  * set these for each instruction set architecture.  These defines may
249  * be divided into two groups;  characteristics of the processor and
250  * implementation choices for Solaris on a processor.
251  *
252  * Processor Characteristics:
253  *
254  * _LITTLE_ENDIAN / _BIG_ENDIAN:
255  *	The natural byte order of the processor.  A pointer to an int points
256  *	to the least/most significant byte of that int.
257  *
258  * _STACK_GROWS_UPWARD / _STACK_GROWS_DOWNWARD:
259  *	The processor specific direction of stack growth.  A push onto the
260  *	stack increases/decreases the stack pointer, so it stores data at
261  *	successively higher/lower addresses.  (Stackless machines ignored
262  *	without regrets).
263  *
264  * _LONG_LONG_HTOL / _LONG_LONG_LTOH:
265  *	A pointer to a long long points to the most/least significant long
266  *	within that long long.
267  *
268  * _BIT_FIELDS_HTOL / _BIT_FIELDS_LTOH:
269  *	The C compiler assigns bit fields from the high/low to the low/high end
270  *	of an int (most to least significant vs. least to most significant).
271  *
272  * _IEEE_754:
273  *	The processor (or supported implementations of the processor)
274  *	supports the ieee-754 floating point standard.  No other floating
275  *	point standards are supported (or significant).  Any other supported
276  *	floating point formats are expected to be cased on the ISA processor
277  *	symbol.
278  *
279  * _CHAR_IS_UNSIGNED / _CHAR_IS_SIGNED:
280  *	The C Compiler implements objects of type `char' as `unsigned' or
281  *	`signed' respectively.  This is really an implementation choice of
282  *	the compiler writer, but it is specified in the ABI and tends to
283  *	be uniform across compilers for an instruction set architecture.
284  *	Hence, it has the properties of a processor characteristic.
285  *
286  * _CHAR_ALIGNMENT / _SHORT_ALIGNMENT / _INT_ALIGNMENT / _LONG_ALIGNMENT /
287  * _LONG_LONG_ALIGNMENT / _DOUBLE_ALIGNMENT / _LONG_DOUBLE_ALIGNMENT /
288  * _POINTER_ALIGNMENT / _FLOAT_ALIGNMENT:
289  *	The ABI defines alignment requirements of each of the primitive
290  *	object types.  Some, if not all, may be hardware requirements as
291  * 	well.  The values are expressed in "byte-alignment" units.
292  *
293  * _MAX_ALIGNMENT:
294  *	The most stringent alignment requirement as specified by the ABI.
295  *	Equal to the maximum of all the above _XXX_ALIGNMENT values.
296  *
297  * _MAX_ALIGNMENT_TYPE:
298  * 	The name of the C type that has the value descried in _MAX_ALIGNMENT.
299  *
300  * _ALIGNMENT_REQUIRED:
301  *	True or false (1 or 0) whether or not the hardware requires the ABI
302  *	alignment.
303  *
304  * _LONG_LONG_ALIGNMENT_32
305  *	The 32-bit ABI supported by a 64-bit kernel may have different
306  *	alignment requirements for primitive object types.  The value of this
307  *	identifier is expressed in "byte-alignment" units.
308  *
309  * _HAVE_CPUID_INSN
310  *	This indicates that the architecture supports the 'cpuid'
311  *	instruction as defined by Intel.  (Intel allows other vendors
312  *	to extend the instruction for their own purposes.)
313  *
314  *
315  * Implementation Choices:
316  *
317  * _ILP32 / _LP64:
318  *	This specifies the compiler data type implementation as specified in
319  *	the relevant ABI.  The choice between these is strongly influenced
320  *	by the underlying hardware, but is not absolutely tied to it.
321  *	Currently only two data type models are supported:
322  *
323  *	_ILP32:
324  *		Int/Long/Pointer are 32 bits.  This is the historical UNIX
325  *		and Solaris implementation.  Due to its historical standing,
326  *		this is the default case.
327  *
328  *	_LP64:
329  *		Long/Pointer are 64 bits, Int is 32 bits.  This is the chosen
330  *		implementation for 64-bit ABIs such as SPARC V9.
331  *
332  *	_I32LPx:
333  *		A compilation environment where 'int' is 32-bit, and
334  *		longs and pointers are simply the same size.
335  *
336  *	In all cases, Char is 8 bits and Short is 16 bits.
337  *
338  * _SUNOS_VTOC_8 / _SUNOS_VTOC_16 / _SVR4_VTOC_16:
339  *	This specifies the form of the disk VTOC (or label):
340  *
341  *	_SUNOS_VTOC_8:
342  *		This is a VTOC form which is upwardly compatible with the
343  *		SunOS 4.x disk label and allows 8 partitions per disk.
344  *
345  *	_SUNOS_VTOC_16:
346  *		In this format the incore vtoc image matches the ondisk
347  *		version.  It allows 16 slices per disk, and is not
348  *		compatible with the SunOS 4.x disk label.
349  *
350  *	Note that these are not the only two VTOC forms possible and
351  *	additional forms may be added.  One possible form would be the
352  *	SVr4 VTOC form.  The symbol for that is reserved now, although
353  *	it is not implemented.
354  *
355  *	_SVR4_VTOC_16:
356  *		This VTOC form is compatible with the System V Release 4
357  *		VTOC (as implemented on the SVr4 Intel and 3b ports) with
358  *		16 partitions per disk.
359  *
360  *
361  * _DMA_USES_PHYSADDR / _DMA_USES_VIRTADDR
362  *	This describes the type of addresses used by system DMA:
363  *
364  *	_DMA_USES_PHYSADDR:
365  *		This type of DMA, used in the x86 implementation,
366  *		requires physical addresses for DMA buffers.  The 24-bit
367  *		addresses used by some legacy boards is the source of the
368  *		"low-memory" (<16MB) requirement for some devices using DMA.
369  *
370  *	_DMA_USES_VIRTADDR:
371  *		This method of DMA allows the use of virtual addresses for
372  *		DMA transfers.
373  *
374  * _FIRMWARE_NEEDS_FDISK / _NO_FDISK_PRESENT
375  *      This indicates the presence/absence of an fdisk table.
376  *
377  *      _FIRMWARE_NEEDS_FDISK
378  *              The fdisk table is required by system firmware.  If present,
379  *              it allows a disk to be subdivided into multiple fdisk
380  *              partitions, each of which is equivalent to a separate,
381  *              virtual disk.  This enables the co-existence of multiple
382  *              operating systems on a shared hard disk.
383  *
384  *      _NO_FDISK_PRESENT
385  *              If the fdisk table is absent, it is assumed that the entire
386  *              media is allocated for a single operating system.
387  *
388  * _HAVE_TEM_FIRMWARE
389  *	Defined if this architecture has the (fallback) option of
390  *	using prom_* calls for doing I/O if a suitable kernel driver
391  *	is not available to do it.
392  *
393  * _DONT_USE_1275_GENERIC_NAMES
394  *		Controls whether or not device tree node names should
395  *		comply with the IEEE 1275 "Generic Names" Recommended
396  *		Practice. With _DONT_USE_GENERIC_NAMES, device-specific
397  *		names identifying the particular device will be used.
398  *
399  * __i386_COMPAT
400  *	This indicates whether the i386 ABI is supported as a *non-native*
401  *	mode for the platform.  When this symbol is defined:
402  *	-	32-bit xstat-style system calls are enabled
403  *	-	32-bit xmknod-style system calls are enabled
404  *	-	32-bit system calls use i386 sizes -and- alignments
405  *
406  *	Note that this is NOT defined for the i386 native environment!
407  *
408  * __x86
409  *	This is ONLY a synonym for defined(__i386) || defined(__amd64)
410  *	which is useful only insofar as these two architectures share
411  *	common attributes.  Analogous to __sparc.
412  *
413  * _PSM_MODULES
414  *	This indicates whether or not the implementation uses PSM
415  *	modules for processor support, reading /etc/mach from inside
416  *	the kernel to extract a list.
417  *
418  * _RTC_CONFIG
419  *	This indicates whether or not the implementation uses /etc/rtc_config
420  *	to configure the real-time clock in the kernel.
421  *
422  * _UNIX_KRTLD
423  *	This indicates that the implementation uses a dynamically
424  *	linked unix + krtld to form the core kernel image at boot
425  *	time, or (in the absence of this symbol) a prelinked kernel image.
426  *
427  * _OBP
428  *	This indicates the firmware interface is OBP.
429  *
430  * _SOFT_HOSTID
431  *	This indicates that the implementation obtains the hostid
432  *	from the file /etc/hostid, rather than from hardware.
433  */
434 
435 
436 
437 
438 
439 /*
440  * The following set of definitions characterize Solaris on AMD's
441  * 64-bit systems.
442  */
443 # 305 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h"
444 /*
445  * Define the appropriate "processor characteristics"
446  */
447 # 333 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h"
448 /*
449  * Define the appropriate "implementation choices".
450  */
451 # 351 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h"
452 /*
453  * The following set of definitions characterize the Solaris on SPARC systems.
454  *
455  * The symbol __sparc indicates any of the SPARC family of processor
456  * architectures.  This includes SPARC V7, SPARC V8 and SPARC V9.
457  *
458  * The symbol __sparcv8 indicates the 32-bit SPARC V8 architecture as defined
459  * by Version 8 of the SPARC Architecture Manual.  (SPARC V7 is close enough
460  * to SPARC V8 for the former to be subsumed into the latter definition.)
461  *
462  * The symbol __sparcv9 indicates the 64-bit SPARC V9 architecture as defined
463  * by Version 9 of the SPARC Architecture Manual.
464  *
465  * The symbols __sparcv8 and __sparcv9 are mutually exclusive, and are only
466  * relevant when the symbol __sparc is defined.
467  */
468 /*
469  * XXX Due to the existence of 5110166, "defined(__sparcv9)" needs to be added
470  * to support backwards builds.  This workaround should be removed in s10_71.
471  */
472 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 2
473 
474 
475 
476 
477 
478 /*
479  * Values of _POSIX_C_SOURCE
480  *
481  *		undefined   not a POSIX compilation
482  *		1	    POSIX.1-1990 compilation
483  *		2	    POSIX.2-1992 compilation
484  *		199309L	    POSIX.1b-1993 compilation (Real Time)
485  *		199506L	    POSIX.1c-1995 compilation (POSIX Threads)
486  *		200112L	    POSIX.1-2001 compilation (Austin Group Revision)
487  *		200809L     POSIX.1-2008 compilation
488  */
489 
490 
491 
492 
493 /*
494  * The feature test macros __XOPEN_OR_POSIX, _STRICT_STDC, _STRICT_SYMBOLS,
495  * and _STDC_C99 are Sun implementation specific macros created in order to
496  * compress common standards specified feature test macros for easier reading.
497  * These macros should not be used by the application developer as
498  * unexpected results may occur. Instead, the user should reference
499  * standards(5) for correct usage of the standards feature test macros.
500  *
501  * __XOPEN_OR_POSIX     Used in cases where a symbol is defined by both
502  *                      X/Open or POSIX or in the negative, when neither
503  *                      X/Open or POSIX defines a symbol.
504  *
505  * _STRICT_STDC         __STDC__ is specified by the C Standards and defined
506  *                      by the compiler. For Sun compilers the value of
507  *                      __STDC__ is either 1, 0, or not defined based on the
508  *                      compilation mode (see cc(1)). When the value of
509  *                      __STDC__ is 1 and in the absence of any other feature
510  *                      test macros, the namespace available to the application
511  *                      is limited to only those symbols defined by the C
512  *                      Standard. _STRICT_STDC provides a more readable means
513  *                      of identifying symbols defined by the standard, or in
514  *                      the negative, symbols that are extensions to the C
515  *                      Standard. See additional comments for GNU C differences.
516  *
517  * _STDC_C99            __STDC_VERSION__ is specified by the C standards and
518  *                      defined by the compiler and indicates the version of
519  *                      the C standard. A value of 199901L indicates a
520  *                      compiler that complies with ISO/IEC 9899:1999, other-
521  *                      wise known as the C99 standard.
522  *
523  * _STDC_C11		Like _STDC_C99 except that the value of __STDC_VERSION__
524  *                      is 201112L indicating a compiler that compiles with
525  *                      ISO/IEXC 9899:2011, otherwise known as the C11 standard.
526  *
527  * _STRICT_SYMBOLS	Used in cases where symbol visibility is restricted
528  *                      by the standards, and the user has not explicitly
529  *                      relaxed the strictness via __EXTENSIONS__.
530  */
531 
532 
533 
534 
535 
536 /*
537  * ISO/IEC 9899:1990 and it's revisions, ISO/IEC 9899:1999 and ISO/IEC
538  * 99899:2011 specify the following predefined macro name:
539  *
540  * __STDC__	The integer constant 1, intended to indicate a conforming
541  *		implementation.
542  *
543  * Furthermore, a strictly conforming program shall use only those features
544  * of the language and library specified in these standards. A conforming
545  * implementation shall accept any strictly conforming program.
546  *
547  * Based on these requirements, Sun's C compiler defines __STDC__ to 1 for
548  * strictly conforming environments and __STDC__ to 0 for environments that
549  * use ANSI C semantics but allow extensions to the C standard. For non-ANSI
550  * C semantics, Sun's C compiler does not define __STDC__.
551  *
552  * The GNU C project interpretation is that __STDC__ should always be defined
553  * to 1 for compilation modes that accept ANSI C syntax regardless of whether
554  * or not extensions to the C standard are used. Violations of conforming
555  * behavior are conditionally flagged as warnings via the use of the
556  * -pedantic option. In addition to defining __STDC__ to 1, the GNU C
557  * compiler also defines __STRICT_ANSI__ as a means of specifying strictly
558  * conforming environments using the -ansi or -std=<standard> options.
559  *
560  * In the absence of any other compiler options, Sun and GNU set the value
561  * of __STDC__ as follows when using the following options:
562  *
563  *				Value of __STDC__  __STRICT_ANSI__
564  *
565  * cc -Xa (default)			0	      undefined
566  * cc -Xt (transitional)		0             undefined
567  * cc -Xc (strictly conforming)		1	      undefined
568  * cc -Xs (K&R C)		    undefined	      undefined
569  *
570  * gcc (default)			1	      undefined
571  * gcc -ansi, -std={c89, c99,...)  	1              defined
572  * gcc -traditional (K&R)	    undefined	      undefined
573  *
574  * The default compilation modes for Sun C compilers versus GNU C compilers
575  * results in a differing value for __STDC__ which results in a more
576  * restricted namespace when using Sun compilers. To allow both GNU and Sun
577  * interpretations to peacefully co-exist, we use the following Sun
578  * implementation _STRICT_STDC_ macro:
579  */
580 # 150 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
581 /*
582  * Compiler complies with ISO/IEC 9899:1999 or ISO/IEC 9989:2011
583  */
584 # 162 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
585 /*
586  * Use strict symbol visibility.
587  */
588 
589 
590 
591 
592 
593 /*
594  * Large file interfaces:
595  *
596  *	_LARGEFILE_SOURCE
597  *		1		large file-related additions to POSIX
598  *				interfaces requested (fseeko, etc.)
599  *	_LARGEFILE64_SOURCE
600  *		1		transitional large-file-related interfaces
601  *				requested (seek64, stat64, etc.)
602  *
603  * The corresponding announcement macros are respectively:
604  *	_LFS_LARGEFILE
605  *	_LFS64_LARGEFILE
606  * (These are set in <unistd.h>.)
607  *
608  * Requesting _LARGEFILE64_SOURCE implies requesting _LARGEFILE_SOURCE as
609  * well.
610  *
611  * The large file interfaces are made visible regardless of the initial values
612  * of the feature test macros under certain circumstances:
613  *    -	If no explicit standards-conforming environment is requested (neither
614  *	of _POSIX_SOURCE nor _XOPEN_SOURCE is defined and the value of
615  *	__STDC__ does not imply standards conformance).
616  *    -	Extended system interfaces are explicitly requested (__EXTENSIONS__
617  * 	is defined).
618  *    -	Access to in-kernel interfaces is requested (_KERNEL or _KMEMUSER is
619  *	defined).  (Note that this dependency is an artifact of the current
620  *	kernel implementation and may change in future releases.)
621  */
622 # 210 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
623 /*
624  * Large file compilation environment control:
625  *
626  * The setting of _FILE_OFFSET_BITS controls the size of various file-related
627  * types and governs the mapping between file-related source function symbol
628  * names and the corresponding binary entry points.
629  *
630  * In the 32-bit environment, the default value is 32; if not set, set it to
631  * the default here, to simplify tests in other headers.
632  *
633  * In the 64-bit compilation environment, the only value allowed is 64.
634  */
635 # 238 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
636 /*
637  * Use of _XOPEN_SOURCE
638  *
639  * The following X/Open specifications are supported:
640  *
641  * X/Open Portability Guide, Issue 3 (XPG3)
642  * X/Open CAE Specification, Issue 4 (XPG4)
643  * X/Open CAE Specification, Issue 4, Version 2 (XPG4v2)
644  * X/Open CAE Specification, Issue 5 (XPG5)
645  * Open Group Technical Standard, Issue 6 (XPG6), also referred to as
646  *    IEEE Std. 1003.1-2001 and ISO/IEC 9945:2002.
647  * Open Group Technical Standard, Issue 7 (XPG7), also referred to as
648  *    IEEE Std. 1003.1-2008 and ISO/IEC 9945:2009.
649  *
650  * XPG4v2 is also referred to as UNIX 95 (SUS or SUSv1).
651  * XPG5 is also referred to as UNIX 98 or the Single Unix Specification,
652  *     Version 2 (SUSv2)
653  * XPG6 is the result of a merge of the X/Open and POSIX specifications
654  *     and as such is also referred to as IEEE Std. 1003.1-2001 in
655  *     addition to UNIX 03 and SUSv3.
656  * XPG7 is also referred to as UNIX 08 and SUSv4.
657  *
658  * When writing a conforming X/Open application, as per the specification
659  * requirements, the appropriate feature test macros must be defined at
660  * compile time. These are as follows. For more info, see standards(5).
661  *
662  * Feature Test Macro				     Specification
663  * ------------------------------------------------  -------------
664  * _XOPEN_SOURCE                                         XPG3
665  * _XOPEN_SOURCE && _XOPEN_VERSION = 4                   XPG4
666  * _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED = 1           XPG4v2
667  * _XOPEN_SOURCE = 500                                   XPG5
668  * _XOPEN_SOURCE = 600  (or POSIX_C_SOURCE=200112L)      XPG6
669  * _XOPEN_SOURCE = 700  (or POSIX_C_SOURCE=200809L)      XPG7
670  *
671  * In order to simplify the guards within the headers, the following
672  * implementation private test macros have been created. Applications
673  * must NOT use these private test macros as unexpected results will
674  * occur.
675  *
676  * Note that in general, the use of these private macros is cumulative.
677  * For example, the use of _XPG3 with no other restrictions on the X/Open
678  * namespace will make the symbols visible for XPG3 through XPG6
679  * compilation environments. The use of _XPG4_2 with no other X/Open
680  * namespace restrictions indicates that the symbols were introduced in
681  * XPG4v2 and are therefore visible for XPG4v2 through XPG6 compilation
682  * environments, but not for XPG3 or XPG4 compilation environments.
683  *
684  * _XPG3    X/Open Portability Guide, Issue 3 (XPG3)
685  * _XPG4    X/Open CAE Specification, Issue 4 (XPG4)
686  * _XPG4_2  X/Open CAE Specification, Issue 4, Version 2 (XPG4v2/UNIX 95/SUS)
687  * _XPG5    X/Open CAE Specification, Issue 5 (XPG5/UNIX 98/SUSv2)
688  * _XPG6    Open Group Technical Standard, Issue 6 (XPG6/UNIX 03/SUSv3)
689  * _XPG7    Open Group Technical Standard, Issue 7 (XPG7/UNIX 08/SUSv4)
690  */
691 
692 /* X/Open Portability Guide, Issue 3 */
693 # 341 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
694 /*
695  * _XOPEN_VERSION is defined by the X/Open specifications and is not
696  * normally defined by the application, except in the case of an XPG4
697  * application.  On the implementation side, _XOPEN_VERSION defined with
698  * the value of 3 indicates an XPG3 application. _XOPEN_VERSION defined
699  * with the value of 4 indicates an XPG4 or XPG4v2 (UNIX 95) application.
700  * _XOPEN_VERSION  defined with a value of 500 indicates an XPG5 (UNIX 98)
701  * application and with a value of 600 indicates an XPG6 (UNIX 03)
702  * application and with a value of 700 indicates an XPG7 (UNIX 08).
703  * The appropriate version is determined by the use of the
704  * feature test macros described earlier.  The value of _XOPEN_VERSION
705  * defaults to 3 otherwise indicating support for XPG3 applications.
706  */
707 # 368 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
708 /*
709  * ANSI C and ISO 9899:1990 say the type long long doesn't exist in strictly
710  * conforming environments.  ISO 9899:1999 says it does.
711  *
712  * The presence of _LONGLONG_TYPE says "long long exists" which is therefore
713  * defined in all but strictly conforming environments that disallow it.
714  */
715 # 388 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h"
716 /*
717  * The following macro defines a value for the ISO C99 restrict
718  * keyword so that _RESTRICT_KYWD resolves to "restrict" if
719  * an ISO C99 compiler is used, "__restrict" for c++ and "" (null string)
720  * if any other compiler is used. This allows for the use of single
721  * prototype declarations regardless of compiler version.
722  */
723 # 410 "/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 C11 _Noreturn
726  * keyword so that _NORETURN_KYWD resolves to "_Noreturn" if
727  * an ISO C11 compiler is used and "" (null string) if any other
728  * compiler is used. This allows for the use of single prototype
729  * declarations regardless of compiler version.
730  */
731 
732 
733 
734 
735 
736 
737 
738 /*
739  * The following macro indicates header support for the ANSI C++
740  * standard.  The ISO/IEC designation for this is ISO/IEC FDIS 14882.
741  */
742 
743 
744 /*
745  * The following macro indicates header support for the C99 standard,
746  * ISO/IEC 9899:1999, Programming Languages - C.
747  */
748 
749 
750 /*
751  * The following macro indicates header support for the C99 standard,
752  * ISO/IEC 9899:2011, Programming Languages - C.
753  */
754 
755 
756 /*
757  * The following macro indicates header support for DTrace. The value is an
758  * integer that corresponds to the major version number for DTrace.
759  */
760 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 2
761 
762 
763 
764 
765 
766 /*
767  * Do all of our 'redefine_extname' processing before
768  * declarations of the associated functions are seen.
769  * This is necessary to keep gcc happy.
770  */
771 
772 
773 /* large file compilation environment setup */
774 
775 
776 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
777 #pragma redefine_extname fopen fopen64
778 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
779 
780 
781 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
782 #pragma redefine_extname freopen freopen64
783 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
784 
785 
786 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
787 #pragma redefine_extname tmpfile tmpfile64
788 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
789 
790 
791 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
792 #pragma redefine_extname fgetpos fgetpos64
793 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
794 
795 
796 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
797 #pragma redefine_extname fsetpos fsetpos64
798 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
799 
800 
801 
802 # 58 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
803 #pragma redefine_extname fseeko fseeko64
804 # 58 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
805 
806 
807 # 59 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
808 #pragma redefine_extname ftello ftello64
809 # 59 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
810 
811 
812 
813 
814 /* In the LP64 compilation environment, all APIs are already large file */
815 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
816 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 1
817 /*
818  * CDDL HEADER START
819  *
820  * The contents of this file are subject to the terms of the
821  * Common Development and Distribution License, Version 1.0 only
822  * (the "License").  You may not use this file except in compliance
823  * with the License.
824  *
825  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
826  * or http://www.opensolaris.org/os/licensing.
827  * See the License for the specific language governing permissions
828  * and limitations under the License.
829  *
830  * When distributing Covered Code, include this CDDL HEADER in each
831  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
832  * If applicable, add the following below this CDDL HEADER, with the
833  * fields enclosed by brackets "[]" replaced with your own identifying
834  * information: Portions Copyright [yyyy] [name of copyright owner]
835  *
836  * CDDL HEADER END
837  */
838 /*
839  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
840  * Copyright 2014 PALO, Richard.
841  *
842  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
843  * Use is subject to license terms.
844  */
845 
846 /*	Copyright (c) 1988 AT&T	*/
847 /*	  All Rights Reserved  	*/
848 
849 /*
850  * An application should not include this header directly.  Instead it
851  * should be included only through the inclusion of other Sun headers.
852  *
853  * The contents of this header is limited to identifiers specified in the
854  * C Standard.  Any new identifiers specified in future amendments to the
855  * C Standard must be placed in this header.  If these new identifiers
856  * are required to also be in the C++ Standard "std" namespace, then for
857  * anything other than macro definitions, corresponding "using" directives
858  * must also be added to <stdio.h>.
859  */
860 
861 /*
862  * User-visible pieces of the ANSI C standard I/O package.
863  */
864 
865 
866 
867 
868 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
869 /*
870  * CDDL HEADER START
871  *
872  * The contents of this file are subject to the terms of the
873  * Common Development and Distribution License (the "License").
874  * You may not use this file except in compliance with the License.
875  *
876  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
877  * or http://www.opensolaris.org/os/licensing.
878  * See the License for the specific language governing permissions
879  * and limitations under the License.
880  *
881  * When distributing Covered Code, include this CDDL HEADER in each
882  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
883  * If applicable, add the following below this CDDL HEADER, with the
884  * fields enclosed by brackets "[]" replaced with your own identifying
885  * information: Portions Copyright [yyyy] [name of copyright owner]
886  *
887  * CDDL HEADER END
888  */
889 
890 /*
891  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
892  * Copyright 2016 Joyent, Inc.
893  *
894  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
895  * Use is subject to license terms.
896  */
897 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
898 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
899 /*
900  * This file and its contents are supplied under the terms of the
901  * Common Development and Distribution License ("CDDL"), version 1.0.
902  * You may only use this file in accordance with the terms of version
903  * 1.0 of the CDDL.
904  *
905  * A full copy of the text of the CDDL should have accompanied this
906  * source.  A copy of the CDDL is also available via the Internet at
907  * http://www.illumos.org/license/CDDL.
908  */
909 
910 /*
911  * Copyright 2014-2016 PALO, Richard.
912  */
913 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
914 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h" 1
915 /*
916  * CDDL HEADER START
917  *
918  * The contents of this file are subject to the terms of the
919  * Common Development and Distribution License, Version 1.0 only
920  * (the "License").  You may not use this file except in compliance
921  * with the License.
922  *
923  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
924  * or http://www.opensolaris.org/os/licensing.
925  * See the License for the specific language governing permissions
926  * and limitations under the License.
927  *
928  * When distributing Covered Code, include this CDDL HEADER in each
929  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
930  * If applicable, add the following below this CDDL HEADER, with the
931  * fields enclosed by brackets "[]" replaced with your own identifying
932  * information: Portions Copyright [yyyy] [name of copyright owner]
933  *
934  * CDDL HEADER END
935  */
936 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
937 /*	  All Rights Reserved	*/
938 
939 
940 /*
941  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
942  *
943  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
944  * Use is subject to license terms.
945  */
946 
947 
948 
949 
950 /*
951  * An application should not include this header directly.  Instead it
952  * should be included only through the inclusion of other Sun headers.
953  *
954  * The purpose of this header is to provide the type definitions for
955  * the va_list argument used by a number of printf and printf like
956  * functions. The headers that define these various function prototypes
957  * #include this header directly. These include but are not necessarily
958  * limited to <stdio.h>, <stdio_iso.h>, <wchar_iso.h>, <strlog.h> and
959  * <syslog.h>. The type definitions included in this header are for
960  * the benefit of consumers of va_list.
961  *
962  * Any application that accepts variable argument lists must as documented,
963  * include either <varargs.h> or the preferred <stdarg.h>. Doing so will
964  * pull in the appropriate compiler protocols defined in <sys/va_impl.h>
965  * which is in turn is included by <varargs.h> and <stdarg.h>. See comments
966  * in <sys/va_impl.h> for more detailed information regarding implementation
967  * and compiler specific protocols.
968  */
969 
970 /*
971  * The common definitions exported by this header or compilers using
972  * this header are:
973  *
974  * the identifier __builtin_va_alist for the variable list pseudo parameter
975  * the type __va_alist_type for the variable list pseudo parameter
976  * the type __va_list defining the type of the variable list iterator
977  *
978  * The feature macros (e.g. __BUILTIN_VA_STRUCT) and compiler macros
979  * (__GNUC__) and processor macros (e.g. __amd64) are intended to be
980  * defined by the compilation system, not the user of the system.
981  */
982 
983 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
984 /*
985  * CDDL HEADER START
986  *
987  * The contents of this file are subject to the terms of the
988  * Common Development and Distribution License (the "License").
989  * You may not use this file except in compliance with the License.
990  *
991  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
992  * or http://www.opensolaris.org/os/licensing.
993  * See the License for the specific language governing permissions
994  * and limitations under the License.
995  *
996  *
997  * When distributing Covered Code, include this CDDL HEADER in each
998  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
999  * If applicable, add the following below this CDDL HEADER, with the
1000  * fields enclosed by brackets "[]" replaced with your own identifying
1001  * information: Portions Copyright [yyyy] [name of copyright owner]
1002  *
1003  * CDDL HEADER END
1004  */
1005 
1006 /*
1007  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
1008  * Use is subject to license terms.
1009  * Copyright 2016 Joyent, Inc.
1010  */
1011 # 70 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h" 2
1012 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h"
1013 typedef __builtin_va_list __gnuc_va_list;
1014 /*
1015  * XX64 This seems unnecessary .. but is needed because vcmn_err is
1016  *	defined with __va_list instead of plain old va_list.
1017  *	Perhaps that should be fixed!
1018  */
1019 typedef __builtin_va_list __va_list;
1020 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
1021 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_tag.h" 1
1022 /*
1023  * CDDL HEADER START
1024  *
1025  * The contents of this file are subject to the terms of the
1026  * Common Development and Distribution License, Version 1.0 only
1027  * (the "License").  You may not use this file except in compliance
1028  * with the License.
1029  *
1030  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1031  * or http://www.opensolaris.org/os/licensing.
1032  * See the License for the specific language governing permissions
1033  * and limitations under the License.
1034  *
1035  * When distributing Covered Code, include this CDDL HEADER in each
1036  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1037  * If applicable, add the following below this CDDL HEADER, with the
1038  * fields enclosed by brackets "[]" replaced with your own identifying
1039  * information: Portions Copyright [yyyy] [name of copyright owner]
1040  *
1041  * CDDL HEADER END
1042  */
1043 /*
1044  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1045  * Use is subject to license terms.
1046  */
1047 
1048 
1049 
1050 
1051 #pragma ident "%Z%%M%	%I%	%E% SMI"
1052 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_tag.h"
1053 typedef struct __FILE __FILE;
1054 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
1055 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_impl.h" 1
1056 /*
1057  * CDDL HEADER START
1058  *
1059  * The contents of this file are subject to the terms of the
1060  * Common Development and Distribution License (the "License").
1061  * You may not use this file except in compliance with the License.
1062  *
1063  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1064  * or http://www.opensolaris.org/os/licensing.
1065  * See the License for the specific language governing permissions
1066  * and limitations under the License.
1067  *
1068  * When distributing Covered Code, include this CDDL HEADER in each
1069  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1070  * If applicable, add the following below this CDDL HEADER, with the
1071  * fields enclosed by brackets "[]" replaced with your own identifying
1072  * information: Portions Copyright [yyyy] [name of copyright owner]
1073  *
1074  * CDDL HEADER END
1075  */
1076 
1077 /*
1078  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
1079  * Use is subject to license terms.
1080  */
1081 
1082 
1083 
1084 
1085 #pragma ident "%Z%%M%	%I%	%E% SMI"
1086 
1087 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
1088 /*
1089  * CDDL HEADER START
1090  *
1091  * The contents of this file are subject to the terms of the
1092  * Common Development and Distribution License (the "License").
1093  * You may not use this file except in compliance with the License.
1094  *
1095  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1096  * or http://www.opensolaris.org/os/licensing.
1097  * See the License for the specific language governing permissions
1098  * and limitations under the License.
1099  *
1100  *
1101  * When distributing Covered Code, include this CDDL HEADER in each
1102  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1103  * If applicable, add the following below this CDDL HEADER, with the
1104  * fields enclosed by brackets "[]" replaced with your own identifying
1105  * information: Portions Copyright [yyyy] [name of copyright owner]
1106  *
1107  * CDDL HEADER END
1108  */
1109 
1110 /*
1111  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
1112  * Use is subject to license terms.
1113  * Copyright 2016 Joyent, Inc.
1114  */
1115 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_impl.h" 2
1116 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio_impl.h"
1117 struct __FILE /* needs to be binary-compatible with old versions */
1118 {
1119 
1120 
1121 
1122 
1123  int _cnt; /* number of available characters in buffer */
1124  unsigned char *_ptr; /* next character from/to here in buffer */
1125 
1126  unsigned char *_base; /* the buffer */
1127  unsigned char _flag; /* the state of the stream */
1128  unsigned char _magic; /* Old home of the file descriptor */
1129     /* Only fileno(3C) can retrieve the value now */
1130  unsigned __orientation:2; /* the orientation of the stream */
1131  unsigned __ionolock:1; /* turn off implicit locking */
1132  unsigned __seekable:1; /* is file seekable? */
1133  unsigned __extendedfd:1; /* enable extended FILE */
1134  unsigned __xf_nocheck:1; /* no extended FILE runtime check */
1135  unsigned __filler:10;
1136 };
1137 # 57 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h" 2
1138 
1139 /*
1140  * If feature test macros are set that enable interfaces that use types
1141  * defined in <sys/types.h>, get those types by doing the include.
1142  *
1143  * Note that in asking for the interfaces associated with this feature test
1144  * macro one also asks for definitions of the POSIX types.
1145  */
1146 
1147 
1148 
1149 
1150 
1151 
1152 /*
1153  * The following typedefs are adopted from ones in <sys/types.h> (with leading
1154  * underscores added to avoid polluting the ANSI C name space).  See the
1155  * commentary there for further explanation.
1156  */
1157 
1158 typedef long long __longlong_t;
1159 # 93 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1160 typedef __FILE FILE;
1161 
1162 
1163 
1164 
1165 
1166 
1167 
1168 typedef unsigned int size_t; /* (historical version) */
1169 
1170 
1171 
1172 
1173 
1174 
1175 typedef __longlong_t fpos_t;
1176 # 117 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1177 /*
1178  * The value of _NFILE is defined in the Processor Specific ABI.  The value
1179  * is chosen for historical reasons rather than for truly processor related
1180  * attribute.  Note that the SPARC Processor Specific ABI uses the common
1181  * UNIX historical value of 20 so it is allowed to fall through.
1182  */
1183 # 156 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1184 extern __FILE __iob[60];
1185 # 191 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_iso.h"
1186 extern int remove(const char *);
1187 extern int rename(const char *, const char *);
1188 extern FILE *tmpfile(void);
1189 extern char *tmpnam(char *);
1190 extern int fclose(FILE *);
1191 extern int fflush(FILE *);
1192 extern FILE *fopen(const char *, const char *);
1193 extern FILE *freopen(const char *,
1194    const char *, FILE *);
1195 extern void setbuf(FILE *, char *);
1196 extern int setvbuf(FILE *, char *, int,
1197    size_t);
1198 /* PRINTFLIKE2 */
1199 extern int fprintf(FILE *, const char *, ...);
1200 /* SCANFLIKE2 */
1201 extern int fscanf(FILE *, const char *, ...);
1202 /* PRINTFLIKE1 */
1203 extern int printf(const char *, ...);
1204 /* SCANFLIKE1 */
1205 extern int scanf(const char *, ...);
1206 /* PRINTFLIKE2 */
1207 extern int sprintf(char *, const char *, ...);
1208 /* SCANFLIKE2 */
1209 extern int sscanf(const char *,
1210    const char *, ...);
1211 extern int vfprintf(FILE *, const char *,
1212    __va_list);
1213 extern int vprintf(const char *, __va_list);
1214 extern int vsprintf(char *, const char *,
1215    __va_list);
1216 extern int fgetc(FILE *);
1217 extern char *fgets(char *, int, FILE *);
1218 extern int fputc(int, FILE *);
1219 extern int fputs(const char *, FILE *);
1220 
1221 
1222 extern int getc(FILE *);
1223 extern int putc(int, FILE *);
1224 
1225 
1226 
1227 extern int getchar(void);
1228 extern int putchar(int);
1229 
1230 
1231 /*
1232  * ISO/IEC C11 removed gets from the standard library. Therefore if a strict C11
1233  * environment has been requested, we remove it.
1234  */
1235 
1236 extern char *gets(char *);
1237 
1238 extern int puts(const char *);
1239 extern int ungetc(int, FILE *);
1240 extern size_t fread(void *, size_t, size_t,
1241  FILE *);
1242 extern size_t fwrite(const void *, size_t, size_t,
1243  FILE *);
1244 
1245 extern int fgetpos(FILE *, fpos_t *);
1246 extern int fsetpos(FILE *, const fpos_t *);
1247 
1248 extern int fseek(FILE *, long, int);
1249 extern long ftell(FILE *);
1250 extern void rewind(FILE *);
1251 
1252 
1253 extern void clearerr(FILE *);
1254 extern int feof(FILE *);
1255 extern int ferror(FILE *);
1256 
1257 extern void perror(const char *);
1258 
1259 
1260 extern int __filbuf(FILE *);
1261 extern int __flsbuf(int, FILE *);
1262 # 83 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 2
1263 
1264 /*
1265  * If feature test macros are set that enable interfaces that use types
1266  * defined in <sys/types.h>, get those types by doing the include.
1267  *
1268  * Note that in asking for the interfaces associated with this feature test
1269  * macro one also asks for definitions of the POSIX types.
1270  */
1271 
1272 /*
1273  * Allow global visibility for symbols defined in
1274  * C++ "std" namespace in <iso/stdio_iso.h>.
1275  */
1276 # 147 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1277 /*
1278  * This header needs to be included here because it relies on the global
1279  * visibility of FILE and size_t in the C++ environment.
1280  */
1281 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_c99.h" 1
1282 /*
1283  * CDDL HEADER START
1284  *
1285  * The contents of this file are subject to the terms of the
1286  * Common Development and Distribution License, Version 1.0 only
1287  * (the "License").  You may not use this file except in compliance
1288  * with the License.
1289  *
1290  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1291  * or http://www.opensolaris.org/os/licensing.
1292  * See the License for the specific language governing permissions
1293  * and limitations under the License.
1294  *
1295  * When distributing Covered Code, include this CDDL HEADER in each
1296  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1297  * If applicable, add the following below this CDDL HEADER, with the
1298  * fields enclosed by brackets "[]" replaced with your own identifying
1299  * information: Portions Copyright [yyyy] [name of copyright owner]
1300  *
1301  * CDDL HEADER END
1302  */
1303 /*
1304  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1305  *
1306  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1307  * Use is subject to license terms.
1308  */
1309 
1310 /*
1311  * An application should not include this header directly.  Instead it
1312  * should be included only through the inclusion of other Sun headers.
1313  *
1314  * The contents of this header is limited to identifiers specified in
1315  * the C99 standard and in conflict with the C++ implementation of the
1316  * standard header.  The C++ standard may adopt the C99 standard at
1317  * which point it is expected that the symbols included here will
1318  * become part of the C++ std namespace.
1319  */
1320 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_c99.h"
1321 /*
1322  * The following have been added as a result of the ISO/IEC 9899:1999
1323  * standard. For a strictly conforming C application, visibility is
1324  * contingent on the value of __STDC_VERSION__ (see sys/feature_tests.h).
1325  * For non-strictly conforming C applications, there are no restrictions
1326  * on the C namespace.
1327  */
1328 # 74 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdio_c99.h"
1329 extern int vfscanf(FILE *, const char *, __va_list);
1330 extern int vscanf(const char *, __va_list);
1331 extern int vsscanf(const char *, const char *,
1332   __va_list);
1333 
1334 
1335 
1336 
1337 extern int snprintf(char *, size_t, const char *,
1338  ...);
1339 extern int vsnprintf(char *, size_t, const char *,
1340  __va_list);
1341 # 152 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 2
1342 # 163 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1343 typedef __longlong_t off_t;
1344 
1345 
1346 
1347 
1348 
1349 typedef __longlong_t off64_t;
1350 # 179 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1351 typedef __longlong_t fpos64_t;
1352 
1353 
1354 
1355 /*
1356  * XPG4 requires that va_list be defined in <stdio.h> "as described in
1357  * <stdarg.h>".  ANSI-C and POSIX require that the namespace of <stdio.h>
1358  * not be polluted with this name.
1359  */
1360 # 198 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1361 /* Marked LEGACY in SUSv2 and removed in SUSv3 */
1362 # 213 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1363 extern unsigned char _sibuf[], _sobuf[];
1364 
1365 
1366 /* large file compilation environment setup */
1367 # 237 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1368 extern unsigned char *_bufendtab[];
1369 extern FILE *_lastbuf;
1370 
1371 
1372 /* In the LP64 compilation environment, all APIs are already large file */
1373 # 261 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1374 typedef int ssize_t; /* (historical version) */
1375 
1376 
1377 
1378 
1379 
1380 
1381 extern char *tmpnam_r(char *);
1382 
1383 
1384 
1385 
1386 extern int fcloseall(void);
1387 extern void setbuffer(FILE *, char *, size_t);
1388 extern int setlinebuf(FILE *);
1389 /* PRINTFLIKE2 */
1390 extern int asprintf(char **, const char *, ...);
1391 /* PRINTFLIKE2 */
1392 extern int vasprintf(char **, const char *, __va_list);
1393 
1394 
1395 
1396 
1397  /* || defined(_XPG7) */
1398 extern ssize_t getdelim(char **, size_t *,
1399  int, FILE *);
1400 extern ssize_t getline(char **, size_t *,
1401  FILE *);
1402 
1403 
1404 /*
1405  * The following are known to POSIX and XOPEN, but not to ANSI-C.
1406  */
1407 
1408 
1409 
1410 extern FILE *fdopen(int, const char *);
1411 extern char *ctermid(char *);
1412 extern int fileno(FILE *);
1413 
1414 
1415 
1416 /*
1417  * The following are known to POSIX.1c, but not to ANSI-C or XOPEN.
1418  */
1419 # 318 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h"
1420 /*
1421  * The following are known to XOPEN, but not to ANSI-C or POSIX.
1422  */
1423 
1424 
1425 extern FILE *popen(const char *, const char *);
1426 extern char *tempnam(const char *, const char *);
1427 extern int pclose(FILE *);
1428 
1429 extern int getsubopt(char **, char *const *, char **);
1430 
1431 
1432 /* Marked LEGACY in SUSv2 and removed in SUSv3 */
1433 
1434 extern char *cuserid(char *);
1435 extern int getopt(int, char *const *, const char *);
1436 extern char *optarg;
1437 extern int optind, opterr, optopt;
1438 extern int getw(FILE *);
1439 extern int putw(int, FILE *);
1440 
1441 
1442 
1443 
1444 /*
1445  * The following are defined as part of the Large File Summit interfaces.
1446  */
1447 
1448 extern int fseeko(FILE *, off_t, int);
1449 extern off_t ftello(FILE *);
1450 
1451 
1452 /*
1453  * The following are defined as part of the transitional Large File Summit
1454  * interfaces.
1455  */
1456 
1457 
1458 extern FILE *fopen64(const char *, const char *);
1459 extern FILE *freopen64(const char *, const char *, FILE *);
1460 extern FILE *tmpfile64(void);
1461 extern int fgetpos64(FILE *, fpos64_t *);
1462 extern int fsetpos64(FILE *, const fpos64_t *);
1463 extern int fseeko64(FILE *, off64_t, int);
1464 extern off64_t ftello64(FILE *);
1465 
1466 
1467 /*
1468  * XPG7 symbols
1469  */
1470 
1471 extern FILE *fmemopen(void *, size_t,
1472       const char *);
1473 extern FILE *open_memstream(char **, size_t *);
1474 # 32 "cmdexec.c" 2
1475 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ctype.h" 1
1476 /*
1477  * CDDL HEADER START
1478  *
1479  * The contents of this file are subject to the terms of the
1480  * Common Development and Distribution License, Version 1.0 only
1481  * (the "License").  You may not use this file except in compliance
1482  * with the License.
1483  *
1484  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1485  * or http://www.opensolaris.org/os/licensing.
1486  * See the License for the specific language governing permissions
1487  * and limitations under the License.
1488  *
1489  * When distributing Covered Code, include this CDDL HEADER in each
1490  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1491  * If applicable, add the following below this CDDL HEADER, with the
1492  * fields enclosed by brackets "[]" replaced with your own identifying
1493  * information: Portions Copyright [yyyy] [name of copyright owner]
1494  *
1495  * CDDL HEADER END
1496  */
1497 /*	Copyright (c) 1988 AT&T	*/
1498 /*	  All Rights Reserved  	*/
1499 
1500 
1501 /*
1502  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1503  *
1504  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1505  * Use is subject to license terms.
1506  */
1507 
1508 
1509 
1510 
1511 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/ctype_iso.h" 1
1512 /*
1513  * CDDL HEADER START
1514  *
1515  * The contents of this file are subject to the terms of the
1516  * Common Development and Distribution License, Version 1.0 only
1517  * (the "License").  You may not use this file except in compliance
1518  * with the License.
1519  *
1520  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1521  * or http://www.opensolaris.org/os/licensing.
1522  * See the License for the specific language governing permissions
1523  * and limitations under the License.
1524  *
1525  * When distributing Covered Code, include this CDDL HEADER in each
1526  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1527  * If applicable, add the following below this CDDL HEADER, with the
1528  * fields enclosed by brackets "[]" replaced with your own identifying
1529  * information: Portions Copyright [yyyy] [name of copyright owner]
1530  *
1531  * CDDL HEADER END
1532  */
1533 /*	Copyright (c) 1988 AT&T	*/
1534 /*	  All Rights Reserved  	*/
1535 
1536 /*
1537  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1538  *
1539  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1540  * Use is subject to license terms.
1541  */
1542 
1543 /*
1544  * An application should not include this header directly.  Instead it
1545  * should be included only through the inclusion of other Sun headers.
1546  *
1547  * The contents of this header is limited to identifiers specified in the
1548  * C Standard.  Any new identifiers specified in future amendments to the
1549  * C Standard must be placed in this header.  If these new identifiers
1550  * are required to also be in the C++ Standard "std" namespace, then for
1551  * anything other than macro definitions, corresponding "using" directives
1552  * must also be added to <ctype.h>.
1553  */
1554 
1555 
1556 
1557 
1558 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
1559 /*
1560  * CDDL HEADER START
1561  *
1562  * The contents of this file are subject to the terms of the
1563  * Common Development and Distribution License (the "License").
1564  * You may not use this file except in compliance with the License.
1565  *
1566  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1567  * or http://www.opensolaris.org/os/licensing.
1568  * See the License for the specific language governing permissions
1569  * and limitations under the License.
1570  *
1571  * When distributing Covered Code, include this CDDL HEADER in each
1572  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1573  * If applicable, add the following below this CDDL HEADER, with the
1574  * fields enclosed by brackets "[]" replaced with your own identifying
1575  * information: Portions Copyright [yyyy] [name of copyright owner]
1576  *
1577  * CDDL HEADER END
1578  */
1579 
1580 /*
1581  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
1582  * Copyright 2016 Joyent, Inc.
1583  *
1584  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
1585  * Use is subject to license terms.
1586  */
1587 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/ctype_iso.h" 2
1588 # 75 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/ctype_iso.h"
1589 extern unsigned char __ctype[];
1590 extern unsigned int *__ctype_mask;
1591 extern int *__trans_upper;
1592 extern int *__trans_lower;
1593 
1594 
1595 
1596 
1597 
1598 /*
1599  * These used to be macros, which while more efficient, precludes operation
1600  * with thread specific locales.  The old macros will still work, but new
1601  * code compiles to use functions.  This is specifically permitted by the
1602  * various standards.  Only _tolower and _toupper were required to be
1603  * delivered in macro form.
1604  */
1605 extern int isalnum(int);
1606 extern int isalpha(int);
1607 extern int iscntrl(int);
1608 extern int isdigit(int);
1609 extern int isgraph(int);
1610 extern int islower(int);
1611 extern int isprint(int);
1612 extern int ispunct(int);
1613 extern int isspace(int);
1614 extern int isupper(int);
1615 extern int isxdigit(int);
1616 
1617 extern int isblank(int);
1618 
1619 
1620 extern int tolower(int);
1621 extern int toupper(int);
1622 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ctype.h" 2
1623 
1624 /*
1625  * Allow global visibility for symbols defined in
1626  * C++ "std" namespace in <iso/ctype_iso.h>.
1627  */
1628 # 70 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ctype.h"
1629 extern int isascii(int);
1630 extern int toascii(int);
1631 extern int _tolower(int);
1632 extern int _toupper(int);
1633 # 95 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ctype.h"
1634 typedef struct _locale *locale_t;
1635 
1636 
1637 extern int isalnum_l(int, locale_t);
1638 extern int isalpha_l(int, locale_t);
1639 extern int isblank_l(int, locale_t);
1640 extern int iscntrl_l(int, locale_t);
1641 extern int isdigit_l(int, locale_t);
1642 extern int isgraph_l(int, locale_t);
1643 extern int islower_l(int, locale_t);
1644 extern int isprint_l(int, locale_t);
1645 extern int ispunct_l(int, locale_t);
1646 extern int isspace_l(int, locale_t);
1647 extern int isupper_l(int, locale_t);
1648 extern int isxdigit_l(int, locale_t);
1649 extern int tolower_l(int, locale_t);
1650 extern int toupper_l(int, locale_t);
1651 # 33 "cmdexec.c" 2
1652 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/string.h" 1
1653 /*
1654  * CDDL HEADER START
1655  *
1656  * The contents of this file are subject to the terms of the
1657  * Common Development and Distribution License (the "License").
1658  * You may not use this file except in compliance with the License.
1659  *
1660  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1661  * or http://www.opensolaris.org/os/licensing.
1662  * See the License for the specific language governing permissions
1663  * and limitations under the License.
1664  *
1665  * When distributing Covered Code, include this CDDL HEADER in each
1666  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1667  * If applicable, add the following below this CDDL HEADER, with the
1668  * fields enclosed by brackets "[]" replaced with your own identifying
1669  * information: Portions Copyright [yyyy] [name of copyright owner]
1670  *
1671  * CDDL HEADER END
1672  */
1673 
1674 /*
1675  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1676  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
1677  */
1678 
1679 /*	Copyright (c) 1988 AT&T	*/
1680 /*	  All Rights Reserved  	*/
1681 
1682 
1683 
1684 
1685 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h" 1
1686 /*
1687  * CDDL HEADER START
1688  *
1689  * The contents of this file are subject to the terms of the
1690  * Common Development and Distribution License, Version 1.0 only
1691  * (the "License").  You may not use this file except in compliance
1692  * with the License.
1693  *
1694  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1695  * or http://www.opensolaris.org/os/licensing.
1696  * See the License for the specific language governing permissions
1697  * and limitations under the License.
1698  *
1699  * When distributing Covered Code, include this CDDL HEADER in each
1700  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1701  * If applicable, add the following below this CDDL HEADER, with the
1702  * fields enclosed by brackets "[]" replaced with your own identifying
1703  * information: Portions Copyright [yyyy] [name of copyright owner]
1704  *
1705  * CDDL HEADER END
1706  */
1707 /*	Copyright (c) 1988 AT&T	*/
1708 /*	  All Rights Reserved  	*/
1709 
1710 
1711 /*
1712  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1713  * Copyright 2014 PALO, Richard.
1714  *
1715  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
1716  * Use is subject to license terms.
1717  */
1718 
1719 /*
1720  * An application should not include this header directly.  Instead it
1721  * should be included only through the inclusion of other Sun headers.
1722  *
1723  * The contents of this header is limited to identifiers specified in the
1724  * C Standard.  Any new identifiers specified in future amendments to the
1725  * C Standard must be placed in this header.  If these new identifiers
1726  * are required to also be in the C++ Standard "std" namespace, then for
1727  * anything other than macro definitions, corresponding "using" directives
1728  * must also be added to <string.h>.
1729  */
1730 
1731 
1732 
1733 
1734 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
1735 /*
1736  * CDDL HEADER START
1737  *
1738  * The contents of this file are subject to the terms of the
1739  * Common Development and Distribution License (the "License").
1740  * You may not use this file except in compliance with the License.
1741  *
1742  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1743  * or http://www.opensolaris.org/os/licensing.
1744  * See the License for the specific language governing permissions
1745  * and limitations under the License.
1746  *
1747  * When distributing Covered Code, include this CDDL HEADER in each
1748  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1749  * If applicable, add the following below this CDDL HEADER, with the
1750  * fields enclosed by brackets "[]" replaced with your own identifying
1751  * information: Portions Copyright [yyyy] [name of copyright owner]
1752  *
1753  * CDDL HEADER END
1754  */
1755 
1756 /*
1757  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
1758  * Copyright 2016 Joyent, Inc.
1759  *
1760  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
1761  * Use is subject to license terms.
1762  */
1763 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h" 2
1764 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
1765 /*
1766  * This file and its contents are supplied under the terms of the
1767  * Common Development and Distribution License ("CDDL"), version 1.0.
1768  * You may only use this file in accordance with the terms of version
1769  * 1.0 of the CDDL.
1770  *
1771  * A full copy of the text of the CDDL should have accompanied this
1772  * source.  A copy of the CDDL is also available via the Internet at
1773  * http://www.illumos.org/license/CDDL.
1774  */
1775 
1776 /*
1777  * Copyright 2014-2016 PALO, Richard.
1778  */
1779 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h" 2
1780 # 69 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h"
1781 extern int memcmp(const void *, const void *, size_t);
1782 extern void *memcpy(void *, const void *, size_t);
1783 extern void *memmove(void *, const void *, size_t);
1784 extern void *memset(void *, int, size_t);
1785 extern char *strcat(char *, const char *);
1786 extern int strcmp(const char *, const char *);
1787 extern char *strcpy(char *, const char *);
1788 extern int strcoll(const char *, const char *);
1789 extern size_t strcspn(const char *, const char *);
1790 extern char *strerror(int);
1791 extern size_t strlen(const char *);
1792 extern char *strncat(char *, const char *, size_t);
1793 extern int strncmp(const char *, const char *, size_t);
1794 extern char *strncpy(char *, const char *, size_t);
1795 extern size_t strspn(const char *, const char *);
1796 extern char *strtok(char *, const char *);
1797 extern size_t strxfrm(char *, const char *, size_t);
1798 
1799 /*
1800  * The C++ Standard (ISO/IEC 14882:1998) specifies that each of the
1801  * function signatures for the following functions be replaced by
1802  * two declarations, both of which have the same behavior.
1803  */
1804 # 139 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/string_iso.h"
1805 extern void *memchr(const void *, int, size_t);
1806 extern char *strchr(const char *, int);
1807 extern char *strpbrk(const char *, const char *);
1808 extern char *strrchr(const char *, int);
1809 extern char *strstr(const char *, const char *);
1810 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/string.h" 2
1811 
1812 /*
1813  * Allow global visibility for symbols defined in
1814  * C++ "std" namespace in <iso/string_iso.h>.
1815  */
1816 # 72 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/string.h"
1817 extern int strerror_r(int, char *, size_t);
1818 
1819 
1820 
1821 
1822 
1823 extern char *strtok_r(char *, const char *,
1824  char **);
1825 
1826 
1827 
1828 
1829 extern void *memccpy(void *, const void *,
1830   int, size_t);
1831 
1832 
1833 
1834 
1835 extern char *stpcpy(char *, const char *);
1836 extern char *stpncpy(char *, const char *, size_t);
1837 extern char *strndup(const char *, size_t);
1838 extern size_t strnlen(const char *, size_t);
1839 extern char *strsignal(int);
1840 
1841 
1842 
1843 
1844 
1845 
1846 extern int strcoll_l(const char *, const char *, locale_t);
1847 extern size_t strxfrm_l(char *, const char *,
1848     size_t, locale_t);
1849 extern int strcasecmp_l(const char *, const char *, locale_t);
1850 extern int strncasecmp_l(const char *, const char *, size_t, locale_t);
1851 extern char *strerror_l(int, locale_t);
1852 
1853 
1854 
1855 
1856 
1857 /* Note that some of these are also declared in strings.h for XPG4_2+ */
1858 extern void explicit_bzero(void *, size_t);
1859 extern int uucopy(const void *, void *, size_t);
1860 extern int uucopystr(const void *, void *, size_t);
1861 extern int ffs(int);
1862 extern int ffsl(long);
1863 extern int ffsll(long long);
1864 extern int fls(int);
1865 extern int flsl(long);
1866 extern int flsll(long long);
1867 extern void *memmem(const void *, size_t, const void *, size_t);
1868 extern char *strcasestr(const char *, const char *);
1869 extern char *strnstr(const char *, const char *, size_t);
1870 extern size_t strlcpy(char *, const char *, size_t);
1871 extern size_t strlcat(char *, const char *, size_t);
1872 extern char *strsep(char **stringp, const char *delim);
1873 extern char *strchrnul(const char *, int);
1874 extern char *strcasestr_l(const char *, const char *, locale_t);
1875 extern int strcasecmp(const char *, const char *);
1876 extern int strncasecmp(const char *, const char *, size_t);
1877 
1878 
1879 
1880 
1881 
1882 extern char *strdup(const char *);
1883 
1884 
1885 
1886 
1887 
1888 
1889 /*
1890  * gcc provides this inlining facility but Studio C does not.
1891  * We should use it exclusively once Studio C also provides it.
1892  */
1893 extern void *__builtin_alloca(size_t);
1894 # 34 "cmdexec.c" 2
1895 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h" 1
1896 /*
1897  * CDDL HEADER START
1898  *
1899  * The contents of this file are subject to the terms of the
1900  * Common Development and Distribution License, Version 1.0 only
1901  * (the "License").  You may not use this file except in compliance
1902  * with the License.
1903  *
1904  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1905  * or http://www.opensolaris.org/os/licensing.
1906  * See the License for the specific language governing permissions
1907  * and limitations under the License.
1908  *
1909  * When distributing Covered Code, include this CDDL HEADER in each
1910  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1911  * If applicable, add the following below this CDDL HEADER, with the
1912  * fields enclosed by brackets "[]" replaced with your own identifying
1913  * information: Portions Copyright [yyyy] [name of copyright owner]
1914  *
1915  * CDDL HEADER END
1916  */
1917 /*
1918  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
1919  * Use is subject to license terms.
1920  */
1921 
1922 /*
1923  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1924  *
1925  * Portions of this file developed by Garrett D'Amore are licensed
1926  * under the terms of the Common Development and Distribution License (CDDL)
1927  * version 1.0 only.  The use of subsequent versions of the License are
1928  * is specifically prohibited unless those terms are not in conflict with
1929  * version 1.0 of the License.  You can find this license on-line at
1930  * http://www.illumos.org/license/CDDL
1931  */
1932 
1933 
1934 
1935 
1936 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h" 1
1937 /*
1938  * CDDL HEADER START
1939  *
1940  * The contents of this file are subject to the terms of the
1941  * Common Development and Distribution License, Version 1.0 only
1942  * (the "License").  You may not use this file except in compliance
1943  * with the License.
1944  *
1945  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1946  * or http://www.opensolaris.org/os/licensing.
1947  * See the License for the specific language governing permissions
1948  * and limitations under the License.
1949  *
1950  * When distributing Covered Code, include this CDDL HEADER in each
1951  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1952  * If applicable, add the following below this CDDL HEADER, with the
1953  * fields enclosed by brackets "[]" replaced with your own identifying
1954  * information: Portions Copyright [yyyy] [name of copyright owner]
1955  *
1956  * CDDL HEADER END
1957  */
1958 /*
1959  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
1960  * Copyright 2014 PALO, Richard.
1961  *
1962  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
1963  * Use is subject to license terms.
1964  */
1965 
1966 /*	Copyright (c) 1988 AT&T	*/
1967 /*	  All Rights Reserved  	*/
1968 
1969 
1970 /*
1971  * An application should not include this header directly.  Instead it
1972  * should be included only through the inclusion of other Sun headers.
1973  *
1974  * The contents of this header is limited to identifiers specified in the
1975  * C Standard.  Any new identifiers specified in future amendments to the
1976  * C Standard must be placed in this header.  If these new identifiers
1977  * are required to also be in the C++ Standard "std" namespace, then for
1978  * anything other than macro definitions, corresponding "using" directives
1979  * must also be added to <locale.h>.
1980  */
1981 
1982 
1983 
1984 
1985 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
1986 /*
1987  * CDDL HEADER START
1988  *
1989  * The contents of this file are subject to the terms of the
1990  * Common Development and Distribution License (the "License").
1991  * You may not use this file except in compliance with the License.
1992  *
1993  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1994  * or http://www.opensolaris.org/os/licensing.
1995  * See the License for the specific language governing permissions
1996  * and limitations under the License.
1997  *
1998  * When distributing Covered Code, include this CDDL HEADER in each
1999  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2000  * If applicable, add the following below this CDDL HEADER, with the
2001  * fields enclosed by brackets "[]" replaced with your own identifying
2002  * information: Portions Copyright [yyyy] [name of copyright owner]
2003  *
2004  * CDDL HEADER END
2005  */
2006 
2007 /*
2008  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2009  * Copyright 2016 Joyent, Inc.
2010  *
2011  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2012  * Use is subject to license terms.
2013  */
2014 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h" 2
2015 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
2016 /*
2017  * This file and its contents are supplied under the terms of the
2018  * Common Development and Distribution License ("CDDL"), version 1.0.
2019  * You may only use this file in accordance with the terms of version
2020  * 1.0 of the CDDL.
2021  *
2022  * A full copy of the text of the CDDL should have accompanied this
2023  * source.  A copy of the CDDL is also available via the Internet at
2024  * http://www.illumos.org/license/CDDL.
2025  */
2026 
2027 /*
2028  * Copyright 2014-2016 PALO, Richard.
2029  */
2030 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h" 2
2031 # 60 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h"
2032 struct lconv {
2033  char *decimal_point;
2034  char *thousands_sep;
2035  char *grouping;
2036  char *int_curr_symbol;
2037  char *currency_symbol;
2038  char *mon_decimal_point;
2039  char *mon_thousands_sep;
2040  char *mon_grouping;
2041  char *positive_sign;
2042  char *negative_sign;
2043  char int_frac_digits;
2044  char frac_digits;
2045  char p_cs_precedes;
2046  char p_sep_by_space;
2047  char n_cs_precedes;
2048  char n_sep_by_space;
2049  char p_sign_posn;
2050  char n_sign_posn;
2051 
2052 /*
2053  * New in IEEE Std 1003.1-2001 for alignment with the ISO/IEC 9899:1999
2054  * standard.  Namespace and binary compatibility dictate that visibility
2055  * of these new members be limited.  Visibility is limited to a strictly
2056  * conforming ANSI C environment (-Xc) or if _LCONV_C99 is defined.
2057  */
2058 # 94 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h"
2059 };
2060 # 104 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/locale_iso.h"
2061 extern char *setlocale(int, const char *);
2062 extern struct lconv *localeconv(void);
2063 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h" 2
2064 
2065 
2066 
2067 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h" 1
2068 /*
2069  * CDDL HEADER START
2070  *
2071  * The contents of this file are subject to the terms of the
2072  * Common Development and Distribution License (the "License").
2073  * You may not use this file except in compliance with the License.
2074  *
2075  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2076  * or http://www.opensolaris.org/os/licensing.
2077  * See the License for the specific language governing permissions
2078  * and limitations under the License.
2079  *
2080  * When distributing Covered Code, include this CDDL HEADER in each
2081  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2082  * If applicable, add the following below this CDDL HEADER, with the
2083  * fields enclosed by brackets "[]" replaced with your own identifying
2084  * information: Portions Copyright [yyyy] [name of copyright owner]
2085  *
2086  * CDDL HEADER END
2087  */
2088 /*
2089  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2090  *
2091  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
2092  * Use is subject to license terms.
2093  */
2094 
2095 
2096 
2097 
2098 
2099 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
2100 /*
2101  * CDDL HEADER START
2102  *
2103  * The contents of this file are subject to the terms of the
2104  * Common Development and Distribution License (the "License").
2105  * You may not use this file except in compliance with the License.
2106  *
2107  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2108  * or http://www.opensolaris.org/os/licensing.
2109  * See the License for the specific language governing permissions
2110  * and limitations under the License.
2111  *
2112  *
2113  * When distributing Covered Code, include this CDDL HEADER in each
2114  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2115  * If applicable, add the following below this CDDL HEADER, with the
2116  * fields enclosed by brackets "[]" replaced with your own identifying
2117  * information: Portions Copyright [yyyy] [name of copyright owner]
2118  *
2119  * CDDL HEADER END
2120  */
2121 
2122 /*
2123  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
2124  * Use is subject to license terms.
2125  * Copyright 2016 Joyent, Inc.
2126  */
2127 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h" 2
2128 
2129 
2130 
2131 
2132 
2133 /*
2134  * wchar_t is a built-in type in standard C++ and as such is not
2135  * defined here when using standard C++. However, the GNU compiler
2136  * fixincludes utility nonetheless creates its own version of this
2137  * header for use by gcc and g++. In that version it adds a redundant
2138  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
2139  * header we need to include the following magic comment:
2140  *
2141  * we must use the C++ compiler's type
2142  *
2143  * The above comment should not be removed or changed until GNU
2144  * gcc/fixinc/inclhack.def is updated to bypass this header.
2145  */
2146 
2147 
2148 
2149 
2150 
2151 
2152 typedef long wchar_t;
2153 # 67 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h"
2154 extern char *dcgettext(const char *, const char *, const int);
2155 extern char *dgettext(const char *, const char *);
2156 extern char *gettext(const char *);
2157 extern char *textdomain(const char *);
2158 extern char *bindtextdomain(const char *, const char *);
2159 
2160 /*
2161  * LI18NUX 2000 Globalization Specification Version 1.0
2162  * with Amendment 2
2163  */
2164 extern char *dcngettext(const char *, const char *,
2165  const char *, unsigned long int, int);
2166 extern char *dngettext(const char *, const char *,
2167  const char *, unsigned long int);
2168 extern char *ngettext(const char *, const char *, unsigned long int);
2169 extern char *bind_textdomain_codeset(const char *, const char *);
2170 
2171 /* Word handling functions --- requires dynamic linking */
2172 /* Warning: these are experimental and subject to change. */
2173 extern int wdinit(void);
2174 extern int wdchkind(wchar_t);
2175 extern int wdbindf(wchar_t, wchar_t, int);
2176 extern wchar_t *wddelim(wchar_t, wchar_t, int);
2177 extern wchar_t mcfiller(void);
2178 extern int mcwrap(void);
2179 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h" 2
2180 
2181 
2182 /*
2183  * Allow global visibility for symbols defined in
2184  * C++ "std" namespace in <iso/locale_iso.h>.
2185  */
2186 # 71 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h"
2187 /*
2188  * These were added in POSIX 2008 as part of the newlocale() specification.
2189  */
2190 # 87 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/locale.h"
2191 extern locale_t duplocale(locale_t);
2192 extern void freelocale(locale_t);
2193 extern locale_t newlocale(int, const char *, locale_t);
2194 extern locale_t uselocale(locale_t);
2195 
2196 
2197 extern locale_t __global_locale(void);
2198 # 35 "cmdexec.c" 2
2199 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/libintl.h" 1
2200 /*
2201  * CDDL HEADER START
2202  *
2203  * The contents of this file are subject to the terms of the
2204  * Common Development and Distribution License (the "License").
2205  * You may not use this file except in compliance with the License.
2206  *
2207  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2208  * or http://www.opensolaris.org/os/licensing.
2209  * See the License for the specific language governing permissions
2210  * and limitations under the License.
2211  *
2212  * When distributing Covered Code, include this CDDL HEADER in each
2213  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2214  * If applicable, add the following below this CDDL HEADER, with the
2215  * fields enclosed by brackets "[]" replaced with your own identifying
2216  * information: Portions Copyright [yyyy] [name of copyright owner]
2217  *
2218  * CDDL HEADER END
2219  */
2220 /*
2221  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2222  *
2223  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
2224  * Use is subject to license terms.
2225  */
2226 # 36 "cmdexec.c" 2
2227 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 1
2228 /*
2229  * CDDL HEADER START
2230  *
2231  * The contents of this file are subject to the terms of the
2232  * Common Development and Distribution License (the "License").
2233  * You may not use this file except in compliance with the License.
2234  *
2235  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2236  * or http://www.opensolaris.org/os/licensing.
2237  * See the License for the specific language governing permissions
2238  * and limitations under the License.
2239  *
2240  * When distributing Covered Code, include this CDDL HEADER in each
2241  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2242  * If applicable, add the following below this CDDL HEADER, with the
2243  * fields enclosed by brackets "[]" replaced with your own identifying
2244  * information: Portions Copyright [yyyy] [name of copyright owner]
2245  *
2246  * CDDL HEADER END
2247  */
2248 
2249 /*
2250  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2251  * Copyright (c) 2013 Gary Mills
2252  *
2253  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
2254  */
2255 
2256 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
2257 
2258 /*	Copyright (c) 1988 AT&T	*/
2259 /*	  All Rights Reserved  	*/
2260 
2261 
2262 
2263 
2264 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h" 1
2265 /*
2266  * CDDL HEADER START
2267  *
2268  * The contents of this file are subject to the terms of the
2269  * Common Development and Distribution License, Version 1.0 only
2270  * (the "License").  You may not use this file except in compliance
2271  * with the License.
2272  *
2273  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2274  * or http://www.opensolaris.org/os/licensing.
2275  * See the License for the specific language governing permissions
2276  * and limitations under the License.
2277  *
2278  * When distributing Covered Code, include this CDDL HEADER in each
2279  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2280  * If applicable, add the following below this CDDL HEADER, with the
2281  * fields enclosed by brackets "[]" replaced with your own identifying
2282  * information: Portions Copyright [yyyy] [name of copyright owner]
2283  *
2284  * CDDL HEADER END
2285  */
2286 /*
2287  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2288  * Copyright 2014 PALO, Richard.
2289  *
2290  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
2291  * Use is subject to license terms.
2292  */
2293 
2294 /*	Copyright (c) 1988 AT&T	*/
2295 /*	  All Rights Reserved  	*/
2296 
2297 
2298 /*
2299  * An application should not include this header directly.  Instead it
2300  * should be included only through the inclusion of other Sun headers.
2301  *
2302  * The contents of this header is limited to identifiers specified in the
2303  * C Standard.  Any new identifiers specified in future amendments to the
2304  * C Standard must be placed in this header.  If these new identifiers
2305  * are required to also be in the C++ Standard "std" namespace, then for
2306  * anything other than macro definitions, corresponding "using" directives
2307  * must also be added to <locale.h>.
2308  */
2309 
2310 
2311 
2312 
2313 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2314 /*
2315  * CDDL HEADER START
2316  *
2317  * The contents of this file are subject to the terms of the
2318  * Common Development and Distribution License (the "License").
2319  * You may not use this file except in compliance with the License.
2320  *
2321  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2322  * or http://www.opensolaris.org/os/licensing.
2323  * See the License for the specific language governing permissions
2324  * and limitations under the License.
2325  *
2326  * When distributing Covered Code, include this CDDL HEADER in each
2327  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2328  * If applicable, add the following below this CDDL HEADER, with the
2329  * fields enclosed by brackets "[]" replaced with your own identifying
2330  * information: Portions Copyright [yyyy] [name of copyright owner]
2331  *
2332  * CDDL HEADER END
2333  */
2334 
2335 /*
2336  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2337  * Copyright 2016 Joyent, Inc.
2338  *
2339  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2340  * Use is subject to license terms.
2341  */
2342 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h" 2
2343 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
2344 /*
2345  * This file and its contents are supplied under the terms of the
2346  * Common Development and Distribution License ("CDDL"), version 1.0.
2347  * You may only use this file in accordance with the terms of version
2348  * 1.0 of the CDDL.
2349  *
2350  * A full copy of the text of the CDDL should have accompanied this
2351  * source.  A copy of the CDDL is also available via the Internet at
2352  * http://www.illumos.org/license/CDDL.
2353  */
2354 
2355 /*
2356  * Copyright 2014-2016 PALO, Richard.
2357  */
2358 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h" 2
2359 
2360 
2361 
2362 
2363 
2364 unsigned char __mb_cur_max(void);
2365 # 65 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h"
2366 typedef struct {
2367  int quot;
2368  int rem;
2369 } div_t;
2370 
2371 typedef struct {
2372  long quot;
2373  long rem;
2374 } ldiv_t;
2375 # 88 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h"
2376 /*
2377  * wchar_t is a built-in type in standard C++ and as such is not
2378  * defined here when using standard C++. However, the GNU compiler
2379  * fixincludes utility nonetheless creates its own version of this
2380  * header for use by gcc and g++. In that version it adds a redundant
2381  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
2382  * header we need to include the following magic comment:
2383  *
2384  * we must use the C++ compiler's type
2385  *
2386  * The above comment should not be removed or changed until GNU
2387  * gcc/fixinc/inclhack.def is updated to bypass this header.
2388  */
2389 # 120 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_iso.h"
2390 extern void abort(void) __attribute__((__noreturn__));
2391 extern int abs(int);
2392 extern int atexit(void (*)(void));
2393 extern double atof(const char *);
2394 extern int atoi(const char *);
2395 extern long int atol(const char *);
2396 extern void *bsearch(const void *, const void *, size_t, size_t,
2397  int (*)(const void *, const void *));
2398 
2399 
2400 
2401 
2402 
2403 
2404 extern void *calloc(size_t, size_t);
2405 extern div_t div(int, int);
2406 extern void exit(int)
2407  __attribute__((__noreturn__));
2408 extern void free(void *);
2409 extern char *getenv(const char *);
2410 extern long int labs(long);
2411 extern ldiv_t ldiv(long, long);
2412 extern void *malloc(size_t);
2413 extern int mblen(const char *, size_t);
2414 extern size_t mbstowcs(wchar_t *, const char *,
2415  size_t);
2416 extern int mbtowc(wchar_t *, const char *, size_t);
2417 extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
2418 
2419 
2420 
2421 
2422 
2423 extern int rand(void);
2424 extern void *realloc(void *, size_t);
2425 extern void srand(unsigned int);
2426 extern double strtod(const char *, char **);
2427 extern long int strtol(const char *, char **, int);
2428 extern unsigned long int strtoul(const char *,
2429  char **, int);
2430 extern int system(const char *);
2431 extern int wctomb(char *, wchar_t);
2432 extern size_t wcstombs(char *, const wchar_t *,
2433  size_t);
2434 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
2435 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c99.h" 1
2436 /*
2437  * CDDL HEADER START
2438  *
2439  * The contents of this file are subject to the terms of the
2440  * Common Development and Distribution License, Version 1.0 only
2441  * (the "License").  You may not use this file except in compliance
2442  * with the License.
2443  *
2444  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2445  * or http://www.opensolaris.org/os/licensing.
2446  * See the License for the specific language governing permissions
2447  * and limitations under the License.
2448  *
2449  * When distributing Covered Code, include this CDDL HEADER in each
2450  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2451  * If applicable, add the following below this CDDL HEADER, with the
2452  * fields enclosed by brackets "[]" replaced with your own identifying
2453  * information: Portions Copyright [yyyy] [name of copyright owner]
2454  *
2455  * CDDL HEADER END
2456  */
2457 /*
2458  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2459  *
2460  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
2461  * Use is subject to license terms.
2462  */
2463 
2464 /*
2465  * An application should not include this header directly.  Instead it
2466  * should be included only through the inclusion of other Sun headers.
2467  *
2468  * The contents of this header is limited to identifiers specified in
2469  * the C99 standard and in conflict with the C++ implementation of the
2470  * standard header.  The C++ standard may adopt the C99 standard at
2471  * which point it is expected that the symbols included here will
2472  * become part of the C++ std namespace.
2473  */
2474 
2475 
2476 
2477 
2478 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2479 /*
2480  * CDDL HEADER START
2481  *
2482  * The contents of this file are subject to the terms of the
2483  * Common Development and Distribution License (the "License").
2484  * You may not use this file except in compliance with the License.
2485  *
2486  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2487  * or http://www.opensolaris.org/os/licensing.
2488  * See the License for the specific language governing permissions
2489  * and limitations under the License.
2490  *
2491  * When distributing Covered Code, include this CDDL HEADER in each
2492  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2493  * If applicable, add the following below this CDDL HEADER, with the
2494  * fields enclosed by brackets "[]" replaced with your own identifying
2495  * information: Portions Copyright [yyyy] [name of copyright owner]
2496  *
2497  * CDDL HEADER END
2498  */
2499 
2500 /*
2501  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2502  * Copyright 2016 Joyent, Inc.
2503  *
2504  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2505  * Use is subject to license terms.
2506  */
2507 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c99.h" 2
2508 
2509 
2510 
2511 
2512 
2513 /*
2514  * The following have been added as a result of the ISO/IEC 9899:1999
2515  * standard. For a strictly conforming C application, visibility is
2516  * contingent on the value of __STDC_VERSION__ (see sys/feature_tests.h).
2517  * For non-strictly conforming C applications, there are no restrictions
2518  * on the C namespace.
2519  */
2520 
2521 
2522 typedef struct {
2523  long long quot;
2524  long long rem;
2525 } lldiv_t;
2526 # 75 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c99.h"
2527 extern void _Exit(int);
2528 extern float strtof(const char *, char **);
2529 extern long double strtold(const char *, char **);
2530 
2531 
2532 extern long long atoll(const char *);
2533 extern long long llabs(long long);
2534 extern lldiv_t lldiv(long long, long long);
2535 extern long long strtoll(const char *, char **,
2536  int);
2537 extern unsigned long long strtoull(const char *,
2538  char **, int);
2539 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
2540 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h" 1
2541 /*
2542  * This file and its contents are supplied under the terms of the
2543  * Common Development and Distribution License ("CDDL"), version 1.0.
2544  * You may only use this file in accordance with the terms of version
2545  * 1.0 of the CDDL.
2546  *
2547  * A full copy of the text of the CDDL should have accompanied this
2548  * source.  A copy of the CDDL is also available via the Internet at
2549  * http://www.illumos.org/license/CDDL.
2550  */
2551 
2552 /*
2553  * Copyright 2016 Joyent, Inc.
2554  */
2555 
2556 /*
2557  * An application should not include this header directly.  Instead it
2558  * should be included only through the inclusion of other illumos headers.
2559  *
2560  * The contents of this header is limited to identifiers specified in
2561  * the C11 standard and in conflict with the C++ implementation of the
2562  * standard header.  The C++ standard may adopt the C11 standard at
2563  * which point it is expected that the symbols included here will
2564  * become part of the C++ std namespace.
2565  */
2566 
2567 
2568 
2569 
2570 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2571 /*
2572  * CDDL HEADER START
2573  *
2574  * The contents of this file are subject to the terms of the
2575  * Common Development and Distribution License (the "License").
2576  * You may not use this file except in compliance with the License.
2577  *
2578  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2579  * or http://www.opensolaris.org/os/licensing.
2580  * See the License for the specific language governing permissions
2581  * and limitations under the License.
2582  *
2583  * When distributing Covered Code, include this CDDL HEADER in each
2584  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2585  * If applicable, add the following below this CDDL HEADER, with the
2586  * fields enclosed by brackets "[]" replaced with your own identifying
2587  * information: Portions Copyright [yyyy] [name of copyright owner]
2588  *
2589  * CDDL HEADER END
2590  */
2591 
2592 /*
2593  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2594  * Copyright 2016 Joyent, Inc.
2595  *
2596  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2597  * Use is subject to license terms.
2598  */
2599 # 31 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h" 2
2600 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h"
2601 /*
2602  * The following have been added as a result of the ISO/IEC 9899:2011
2603  * standard. For a strictly conforming C application, visibility is
2604  * contingent on the value of __STDC_VERSION__ (see sys/feature_tests.h).
2605  * For non-strictly conforming C applications, there are no restrictions
2606  * on the C namespace.
2607  */
2608 
2609 /*
2610  * Work around fix-includes and other bad actors with using multiple headers.
2611  */
2612 # 60 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdlib_c11.h"
2613 extern void *aligned_alloc(size_t, size_t);
2614 extern int at_quick_exit(void (*)(void));
2615 extern void quick_exit(int);
2616 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
2617 
2618 
2619 
2620 
2621 
2622 /*
2623  * Allow global visibility for symbols defined in
2624  * C++ "std" namespace in <iso/stdlib_iso.h>.
2625  */
2626 # 83 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2627 /*
2628  * Allow global visibility for symbols defined in
2629  * C++ "std" namespace in <iso/stdlib_c11.h>.
2630  */
2631 # 101 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2632 typedef unsigned int uid_t; /* UID type		*/
2633 
2634 
2635 /* large file compilation environment setup */
2636 
2637 
2638 
2639 
2640 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2641 #pragma redefine_extname mkstemp mkstemp64
2642 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2643 
2644 
2645 # 109 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2646 #pragma redefine_extname mkstemps mkstemps64
2647 # 109 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2648 
2649 
2650 # 110 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2651 #pragma redefine_extname mkostemp mkostemp64
2652 # 110 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2653 
2654 
2655 # 111 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2656 #pragma redefine_extname mkostemps mkostemps64
2657 # 111 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2658 # 121 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2659 /* In the LP64 compilation environment, all APIs are already large file */
2660 # 141 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2661 extern int rand_r(unsigned int *);
2662 
2663 
2664 extern void _exithandle(void);
2665 
2666 
2667 
2668 
2669 extern double drand48(void);
2670 extern double erand48(unsigned short *);
2671 extern long jrand48(unsigned short *);
2672 extern void lcong48(unsigned short *);
2673 extern long lrand48(void);
2674 extern long mrand48(void);
2675 extern long nrand48(unsigned short *);
2676 extern unsigned short *seed48(unsigned short *);
2677 extern void srand48(long);
2678 extern int putenv(char *);
2679 extern void setkey(const char *);
2680 
2681 
2682 /*
2683  * swab() has historically been in <stdlib.h> as delivered from AT&T
2684  * and continues to be visible in the default compilation environment.
2685  * As of Issue 4 of the X/Open Portability Guides, swab() was declared
2686  * in <unistd.h>. As a result, with respect to X/Open namespace the
2687  * swab() declaration in this header is only visible for the XPG3
2688  * environment.
2689  */
2690 # 182 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2691 extern void swab(const char *, char *, ssize_t);
2692 
2693 
2694 
2695 
2696 
2697 extern int mkstemp(char *);
2698 
2699 extern int mkstemps(char *, int);
2700 
2701 
2702 
2703 
2704 
2705 extern int mkstemp64(char *);
2706 
2707 extern int mkstemps64(char *, int);
2708 
2709 
2710 
2711 
2712 extern char *mkdtemp(char *);
2713 
2714 
2715 
2716 extern int mkostemp(char *, int);
2717 extern int mkostemps(char *, int, int);
2718 
2719 
2720 extern int mkostemp64(char *, int);
2721 extern int mkostemps64(char *, int, int);
2722 
2723 
2724 
2725 
2726 
2727 
2728 extern long a64l(const char *);
2729 extern char *ecvt(double, int, int *, int *);
2730 extern char *fcvt(double, int, int *, int *);
2731 extern char *gcvt(double, int, char *);
2732 extern int getsubopt(char **, char *const *, char **);
2733 extern int grantpt(int);
2734 extern char *initstate(unsigned, char *, size_t);
2735 extern char *l64a(long);
2736 extern char *mktemp(char *);
2737 extern char *ptsname(int);
2738 extern long random(void);
2739 extern char *realpath(const char *, char *);
2740 extern char *setstate(const char *);
2741 extern void srandom(unsigned);
2742 extern int unlockpt(int);
2743 /* Marked LEGACY in SUSv2 and removed in SUSv3 */
2744 
2745 extern int ttyslot(void);
2746 extern void *valloc(size_t);
2747 
2748 
2749 
2750 
2751 
2752 
2753 extern int posix_memalign(void **, size_t, size_t);
2754 extern int posix_openpt(int);
2755 extern int setenv(const char *, const char *, int);
2756 extern int unsetenv(const char *);
2757 
2758 
2759 
2760 
2761 extern char *canonicalize_file_name(const char *);
2762 extern int clearenv(void);
2763 extern void closefrom(int);
2764 extern int daemon(int, int);
2765 extern int dup2(int, int);
2766 extern int dup3(int, int, int);
2767 extern int fdwalk(int (*)(void *, int), void *);
2768 extern char *qecvt(long double, int, int *, int *);
2769 extern char *qfcvt(long double, int, int *, int *);
2770 extern char *qgcvt(long double, int, char *);
2771 extern char *getcwd(char *, size_t);
2772 extern const char *getexecname(void);
2773 
2774 
2775 
2776 
2777 
2778 
2779 # 269 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2780 #pragma redefine_extname getlogin getloginx
2781 # 269 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h"
2782 
2783 
2784 
2785 
2786 
2787 
2788 extern char *getlogin(void);
2789 
2790 
2791 extern int getopt(int, char *const *, const char *);
2792 extern char *optarg;
2793 extern int optind, opterr, optopt;
2794 extern char *getpass(const char *);
2795 extern char *getpassphrase(const char *);
2796 extern int getpw(uid_t, char *);
2797 extern int isatty(int);
2798 extern void *memalign(size_t, size_t);
2799 extern char *ttyname(int);
2800 extern char *mkdtemp(char *);
2801 extern const char *getprogname(void);
2802 extern void setprogname(const char *);
2803 
2804 
2805 extern char *lltostr(long long, char *);
2806 extern char *ulltostr(unsigned long long, char *);
2807 
2808 
2809 
2810 
2811 /* OpenBSD compatibility functions */
2812 
2813 
2814 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 1
2815 /*
2816  * CDDL HEADER START
2817  *
2818  * The contents of this file are subject to the terms of the
2819  * Common Development and Distribution License, Version 1.0 only
2820  * (the "License").  You may not use this file except in compliance
2821  * with the License.
2822  *
2823  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2824  * or http://www.opensolaris.org/os/licensing.
2825  * See the License for the specific language governing permissions
2826  * and limitations under the License.
2827  *
2828  * When distributing Covered Code, include this CDDL HEADER in each
2829  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2830  * If applicable, add the following below this CDDL HEADER, with the
2831  * fields enclosed by brackets "[]" replaced with your own identifying
2832  * information: Portions Copyright [yyyy] [name of copyright owner]
2833  *
2834  * CDDL HEADER END
2835  */
2836 /*
2837  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2838  *
2839  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
2840  * Use is subject to license terms.
2841  */
2842 
2843 
2844 
2845 
2846 /*
2847  * This file, <inttypes.h>, is specified by the ISO C standard,
2848  * standard, ISO/IEC 9899:1999 Programming language - C and is
2849  * also defined by SUSv3.
2850  *
2851  * ISO	  International Organization for Standardization.
2852  * SUSv3  Single Unix Specification, Version 3
2853  */
2854 
2855 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2856 /*
2857  * CDDL HEADER START
2858  *
2859  * The contents of this file are subject to the terms of the
2860  * Common Development and Distribution License (the "License").
2861  * You may not use this file except in compliance with the License.
2862  *
2863  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2864  * or http://www.opensolaris.org/os/licensing.
2865  * See the License for the specific language governing permissions
2866  * and limitations under the License.
2867  *
2868  * When distributing Covered Code, include this CDDL HEADER in each
2869  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2870  * If applicable, add the following below this CDDL HEADER, with the
2871  * fields enclosed by brackets "[]" replaced with your own identifying
2872  * information: Portions Copyright [yyyy] [name of copyright owner]
2873  *
2874  * CDDL HEADER END
2875  */
2876 
2877 /*
2878  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2879  * Copyright 2016 Joyent, Inc.
2880  *
2881  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2882  * Use is subject to license terms.
2883  */
2884 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 2
2885 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 1
2886 /*
2887  * CDDL HEADER START
2888  *
2889  * The contents of this file are subject to the terms of the
2890  * Common Development and Distribution License, Version 1.0 only
2891  * (the "License").  You may not use this file except in compliance
2892  * with the License.
2893  *
2894  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2895  * or http://www.opensolaris.org/os/licensing.
2896  * See the License for the specific language governing permissions
2897  * and limitations under the License.
2898  *
2899  * When distributing Covered Code, include this CDDL HEADER in each
2900  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2901  * If applicable, add the following below this CDDL HEADER, with the
2902  * fields enclosed by brackets "[]" replaced with your own identifying
2903  * information: Portions Copyright [yyyy] [name of copyright owner]
2904  *
2905  * CDDL HEADER END
2906  */
2907 /*
2908  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
2909  * Use is subject to license terms.
2910  */
2911 
2912 
2913 
2914 
2915 #pragma ident "%Z%%M%	%I%	%E% SMI"
2916 
2917 /*
2918  * This header, <sys/inttypes.h>, contains (through nested inclusion) the
2919  * vast majority of the facilities specified for <inttypes.h> as defined
2920  * by the ISO C Standard, ISO/IEC 9899:1999 Programming language - C.
2921  *
2922  * Kernel/Driver developers are encouraged to include this file to access
2923  * the fixed size types, limits and utility macros. Application developers
2924  * should use the standard defined header <inttypes.h>.
2925  */
2926 
2927 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
2928 /*
2929  * CDDL HEADER START
2930  *
2931  * The contents of this file are subject to the terms of the
2932  * Common Development and Distribution License (the "License").
2933  * You may not use this file except in compliance with the License.
2934  *
2935  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2936  * or http://www.opensolaris.org/os/licensing.
2937  * See the License for the specific language governing permissions
2938  * and limitations under the License.
2939  *
2940  * When distributing Covered Code, include this CDDL HEADER in each
2941  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2942  * If applicable, add the following below this CDDL HEADER, with the
2943  * fields enclosed by brackets "[]" replaced with your own identifying
2944  * information: Portions Copyright [yyyy] [name of copyright owner]
2945  *
2946  * CDDL HEADER END
2947  */
2948 
2949 /*
2950  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
2951  * Copyright 2016 Joyent, Inc.
2952  *
2953  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2954  * Use is subject to license terms.
2955  */
2956 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
2957 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
2958 /*
2959  * CDDL HEADER START
2960  *
2961  * The contents of this file are subject to the terms of the
2962  * Common Development and Distribution License, Version 1.0 only
2963  * (the "License").  You may not use this file except in compliance
2964  * with the License.
2965  *
2966  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2967  * or http://www.opensolaris.org/os/licensing.
2968  * See the License for the specific language governing permissions
2969  * and limitations under the License.
2970  *
2971  * When distributing Covered Code, include this CDDL HEADER in each
2972  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2973  * If applicable, add the following below this CDDL HEADER, with the
2974  * fields enclosed by brackets "[]" replaced with your own identifying
2975  * information: Portions Copyright [yyyy] [name of copyright owner]
2976  *
2977  * CDDL HEADER END
2978  */
2979 /*
2980  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
2981  *
2982  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
2983  * Use is subject to license terms.
2984  */
2985 
2986 
2987 
2988 
2989 /*
2990  * This file, <sys/int_types.h>, is part of the Sun Microsystems implementation
2991  * of <inttypes.h> defined in the ISO C standard, ISO/IEC 9899:1999
2992  * Programming language - C.
2993  *
2994  * Programs/Modules should not directly include this file.  Access to the
2995  * types defined in this file should be through the inclusion of one of the
2996  * following files:
2997  *
2998  *	<sys/types.h>		Provides only the "_t" types defined in this
2999  *				file which is a subset of the contents of
3000  *				<inttypes.h>.  (This can be appropriate for
3001  *				all programs/modules except those claiming
3002  *				ANSI-C conformance.)
3003  *
3004  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
3005  *				components of <inttypes.h>.
3006  *
3007  *	<inttypes.h>		For use by applications.
3008  *
3009  * See these files for more details.
3010  */
3011 
3012 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3013 /*
3014  * CDDL HEADER START
3015  *
3016  * The contents of this file are subject to the terms of the
3017  * Common Development and Distribution License (the "License").
3018  * You may not use this file except in compliance with the License.
3019  *
3020  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3021  * or http://www.opensolaris.org/os/licensing.
3022  * See the License for the specific language governing permissions
3023  * and limitations under the License.
3024  *
3025  * When distributing Covered Code, include this CDDL HEADER in each
3026  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3027  * If applicable, add the following below this CDDL HEADER, with the
3028  * fields enclosed by brackets "[]" replaced with your own identifying
3029  * information: Portions Copyright [yyyy] [name of copyright owner]
3030  *
3031  * CDDL HEADER END
3032  */
3033 
3034 /*
3035  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3036  * Copyright 2016 Joyent, Inc.
3037  *
3038  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3039  * Use is subject to license terms.
3040  */
3041 # 56 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 2
3042 
3043 
3044 
3045 
3046 
3047 /*
3048  * Basic / Extended integer types
3049  *
3050  * The following defines the basic fixed-size integer types.
3051  *
3052  * Implementations are free to typedef them to Standard C integer types or
3053  * extensions that they support. If an implementation does not support one
3054  * of the particular integer data types below, then it should not define the
3055  * typedefs and macros corresponding to that data type.  Note that int8_t
3056  * is not defined in -Xs mode on ISAs for which the ABI specifies "char"
3057  * as an unsigned entity because there is no way to define an eight bit
3058  * signed integral.
3059  */
3060 
3061 typedef char int8_t;
3062 
3063 
3064 
3065 typedef short int16_t;
3066 typedef int int32_t;
3067 
3068 
3069 
3070 
3071 
3072 
3073 typedef long long int64_t;
3074 
3075 
3076 
3077 typedef unsigned char uint8_t;
3078 typedef unsigned short uint16_t;
3079 typedef unsigned int uint32_t;
3080 
3081 
3082 
3083 
3084 typedef unsigned long long uint64_t;
3085 
3086 
3087 
3088 /*
3089  * intmax_t and uintmax_t are to be the longest (in number of bits) signed
3090  * and unsigned integer types supported by the implementation.
3091  */
3092 
3093 typedef int64_t intmax_t;
3094 typedef uint64_t uintmax_t;
3095 
3096 
3097 
3098 
3099 
3100 /*
3101  * intptr_t and uintptr_t are signed and unsigned integer types large enough
3102  * to hold any data pointer; that is, data pointers can be assigned into or
3103  * from these integer types without losing precision.
3104  */
3105 
3106 
3107 
3108 
3109 typedef int intptr_t;
3110 typedef unsigned int uintptr_t;
3111 
3112 
3113 /*
3114  * The following define the fastest integer types that can hold the
3115  * specified number of bits.
3116  */
3117 
3118 typedef char int_fast8_t;
3119 
3120 
3121 
3122 typedef int int_fast16_t;
3123 typedef int int_fast32_t;
3124 
3125 
3126 
3127 
3128 typedef long long int_fast64_t;
3129 
3130 
3131 
3132 typedef unsigned char uint_fast8_t;
3133 typedef unsigned int uint_fast16_t;
3134 typedef unsigned int uint_fast32_t;
3135 
3136 
3137 
3138 
3139 typedef unsigned long long uint_fast64_t;
3140 
3141 
3142 
3143 /*
3144  * The following define the smallest integer types that can hold the
3145  * specified number of bits.
3146  */
3147 
3148 typedef char int_least8_t;
3149 
3150 
3151 
3152 typedef short int_least16_t;
3153 typedef int int_least32_t;
3154 
3155 
3156 
3157 
3158 typedef long long int_least64_t;
3159 
3160 
3161 
3162 /*
3163  * If these are changed, please update char16_t and char32_t in head/uchar.h.
3164  */
3165 typedef unsigned char uint_least8_t;
3166 typedef unsigned short uint_least16_t;
3167 typedef unsigned int uint_least32_t;
3168 
3169 
3170 
3171 
3172 typedef unsigned long long uint_least64_t;
3173 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3174 
3175 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h" 1
3176 /*
3177  * CDDL HEADER START
3178  *
3179  * The contents of this file are subject to the terms of the
3180  * Common Development and Distribution License, Version 1.0 only
3181  * (the "License").  You may not use this file except in compliance
3182  * with the License.
3183  *
3184  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3185  * or http://www.opensolaris.org/os/licensing.
3186  * See the License for the specific language governing permissions
3187  * and limitations under the License.
3188  *
3189  * When distributing Covered Code, include this CDDL HEADER in each
3190  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3191  * If applicable, add the following below this CDDL HEADER, with the
3192  * fields enclosed by brackets "[]" replaced with your own identifying
3193  * information: Portions Copyright [yyyy] [name of copyright owner]
3194  *
3195  * CDDL HEADER END
3196  */
3197 /*
3198  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3199  *
3200  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3201  * Use is subject to license terms.
3202  */
3203 
3204 
3205 
3206 
3207 /*
3208  * This file, <sys/int_limits.h>, is part of the Sun Microsystems implementation
3209  * of <inttypes.h> as defined in the ISO C standard, ISO/IEC 9899:1999
3210  * Programming language - C.
3211  *
3212  * Programs/Modules should not directly include this file.  Access to the
3213  * types defined in this file should be through the inclusion of one of the
3214  * following files:
3215  *
3216  *	<limits.h>		This nested inclusion is disabled for strictly
3217  *				ANSI-C conforming compilations.  The *_MIN
3218  *				definitions are not visible to POSIX or XPG
3219  *				conforming applications (due to what may be
3220  *				a bug in the specification - this is under
3221  *				investigation)
3222  *
3223  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
3224  *				components of <inttypes.h>.
3225  *
3226  *	<inttypes.h>		For use by applications.
3227  *
3228  * See these files for more details.
3229  */
3230 
3231 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3232 /*
3233  * CDDL HEADER START
3234  *
3235  * The contents of this file are subject to the terms of the
3236  * Common Development and Distribution License (the "License").
3237  * You may not use this file except in compliance with the License.
3238  *
3239  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3240  * or http://www.opensolaris.org/os/licensing.
3241  * See the License for the specific language governing permissions
3242  * and limitations under the License.
3243  *
3244  * When distributing Covered Code, include this CDDL HEADER in each
3245  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3246  * If applicable, add the following below this CDDL HEADER, with the
3247  * fields enclosed by brackets "[]" replaced with your own identifying
3248  * information: Portions Copyright [yyyy] [name of copyright owner]
3249  *
3250  * CDDL HEADER END
3251  */
3252 
3253 /*
3254  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3255  * Copyright 2016 Joyent, Inc.
3256  *
3257  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3258  * Use is subject to license terms.
3259  */
3260 # 57 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h" 2
3261 
3262 
3263 
3264 
3265 
3266 /*
3267  * Limits
3268  *
3269  * The following define the limits for the types defined in <sys/int_types.h>.
3270  *
3271  * INTMAX_MIN (minimum value of the largest supported signed integer type),
3272  * INTMAX_MAX (maximum value of the largest supported signed integer type),
3273  * and UINTMAX_MAX (maximum value of the largest supported unsigned integer
3274  * type) can be set to implementation defined limits.
3275  *
3276  * NOTE : A programmer can test to see whether an implementation supports
3277  * a particular size of integer by testing if the macro that gives the
3278  * maximum for that datatype is defined. For example, if #ifdef UINT64_MAX
3279  * tests false, the implementation does not support unsigned 64 bit integers.
3280  *
3281  * The type of these macros is intentionally unspecified.
3282  *
3283  * The types int8_t, int_least8_t, and int_fast8_t are not defined for ISAs
3284  * where the ABI specifies "char" as unsigned when the translation mode is
3285  * not ANSI-C.
3286  */
3287 # 141 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h"
3288 /*
3289  * The following 2 macros are provided for testing whether the types
3290  * intptr_t and uintptr_t (integers large enough to hold a void *) are
3291  * defined in this header. They are needed in case the architecture can't
3292  * represent a pointer in any standard integral type.
3293  */
3294 # 155 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h"
3295 /* Maximum limits of ptrdiff_t defined in <sys/types.h> */
3296 
3297 
3298 
3299 
3300 
3301 
3302 /*
3303  * Maximum value of a "size_t".  SIZE_MAX was previously defined
3304  * in <limits.h>, however, the standards specify it be defined
3305  * in <stdint.h>. The <stdint.h> headers includes this header as
3306  * does <limits.h>. The value of SIZE_MAX should not deviate
3307  * from the value of ULONG_MAX defined <sys/types.h>.
3308  */
3309 
3310 
3311 
3312 
3313 
3314 
3315 /* Maximum limit of sig_atomic_t defined in <sys/types.h> */
3316 
3317 
3318 
3319 
3320 /*
3321  * Maximum limit of wchar_t. The WCHAR_* macros are also
3322  * defined in <iso/wchar_iso.h>, but inclusion of that header
3323  * will break ISO/IEC C namespace.
3324  */
3325 
3326 
3327 
3328 
3329 /* Maximum limit of wint_t */
3330 
3331 
3332 
3333 
3334 /*
3335  * It is probably a bug in the POSIX specification (IEEE-1003.1-1990) that
3336  * when including <limits.h> that the suffix _MAX is reserved but not the
3337  * suffix _MIN.  However, until that issue is resolved....
3338  */
3339 # 230 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h"
3340 /* Minimum value of a pointer-holding signed integer type */
3341 
3342 
3343 
3344 
3345 
3346 
3347 /* Minimum limits of ptrdiff_t defined in <sys/types.h> */
3348 
3349 
3350 
3351 
3352 
3353 
3354 /* Minimum limit of sig_atomic_t defined in <sys/types.h> */
3355 
3356 
3357 
3358 
3359 /*
3360  * Minimum limit of wchar_t. The WCHAR_* macros are also
3361  * defined in <iso/wchar_iso.h>, but inclusion of that header
3362  * will break ISO/IEC C namespace.
3363  */
3364 
3365 
3366 
3367 
3368 /* Minimum limit of wint_t */
3369 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3370 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h" 1
3371 /*
3372  * CDDL HEADER START
3373  *
3374  * The contents of this file are subject to the terms of the
3375  * Common Development and Distribution License, Version 1.0 only
3376  * (the "License").  You may not use this file except in compliance
3377  * with the License.
3378  *
3379  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3380  * or http://www.opensolaris.org/os/licensing.
3381  * See the License for the specific language governing permissions
3382  * and limitations under the License.
3383  *
3384  * When distributing Covered Code, include this CDDL HEADER in each
3385  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3386  * If applicable, add the following below this CDDL HEADER, with the
3387  * fields enclosed by brackets "[]" replaced with your own identifying
3388  * information: Portions Copyright [yyyy] [name of copyright owner]
3389  *
3390  * CDDL HEADER END
3391  */
3392 /*
3393  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3394  *
3395  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3396  * Use is subject to license terms.
3397  */
3398 
3399 
3400 
3401 
3402 /*
3403  * This file, <sys/int_const.h>, is part of the Sun Microsystems implementation
3404  * of <inttypes.h> as proposed in the ISO/JTC1/SC22/WG14 C committee's working
3405  * draft for the revision of the current ISO C standard, ISO/IEC 9899:1990
3406  * Programming language - C.
3407  *
3408  * Programs/Modules should not directly include this file.  Access to the
3409  * types defined in this file should be through the inclusion of one of the
3410  * following files:
3411  *
3412  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
3413  *				components of <inttypes.h>.
3414  *
3415  *	<inttypes.h>		For use by applications.
3416  *
3417  * See these files for more details.
3418  *
3419  * Use at your own risk.  This file will track the evolution of the revision
3420  * of the current ISO C standard.  As of February 1996, the committee is
3421  * squarely behind the fixed sized types.
3422  */
3423 
3424 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3425 /*
3426  * CDDL HEADER START
3427  *
3428  * The contents of this file are subject to the terms of the
3429  * Common Development and Distribution License (the "License").
3430  * You may not use this file except in compliance with the License.
3431  *
3432  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3433  * or http://www.opensolaris.org/os/licensing.
3434  * See the License for the specific language governing permissions
3435  * and limitations under the License.
3436  *
3437  * When distributing Covered Code, include this CDDL HEADER in each
3438  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3439  * If applicable, add the following below this CDDL HEADER, with the
3440  * fields enclosed by brackets "[]" replaced with your own identifying
3441  * information: Portions Copyright [yyyy] [name of copyright owner]
3442  *
3443  * CDDL HEADER END
3444  */
3445 
3446 /*
3447  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3448  * Copyright 2016 Joyent, Inc.
3449  *
3450  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3451  * Use is subject to license terms.
3452  */
3453 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h" 2
3454 
3455 
3456 
3457 
3458 
3459 /*
3460  * Constants
3461  *
3462  * The following macros create constants of the types defined in
3463  * <sys/int_types.h>. The intent is that:
3464  *	Constants defined using these macros have a specific size and
3465  *	signedness. The suffix used for int64_t and uint64_t (ll and ull)
3466  *	are for examples only. Implementations are permitted to use other
3467  *	suffixes.
3468  *
3469  * The "CSTYLED" comments are flags to an internal code style analysis tool
3470  * telling it to silently accept the line which follows.  This internal
3471  * standard requires a space between arguments, but the historical,
3472  * non-ANSI-C ``method'' of concatenation can't tolerate those spaces.
3473  */
3474 /* CSTYLED */
3475 # 86 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h"
3476 /* CSTYLED */
3477 
3478 
3479 
3480 
3481 /* CSTYLED */
3482 
3483 /* CSTYLED */
3484 
3485 /* CSTYLED */
3486 
3487 
3488 
3489 
3490 
3491 
3492 /* CSTYLED */
3493 # 114 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h"
3494 /* CSTYLED */
3495 
3496 /* CSTYLED */
3497 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3498 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h" 1
3499 /*
3500  * CDDL HEADER START
3501  *
3502  * The contents of this file are subject to the terms of the
3503  * Common Development and Distribution License, Version 1.0 only
3504  * (the "License").  You may not use this file except in compliance
3505  * with the License.
3506  *
3507  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3508  * or http://www.opensolaris.org/os/licensing.
3509  * See the License for the specific language governing permissions
3510  * and limitations under the License.
3511  *
3512  * When distributing Covered Code, include this CDDL HEADER in each
3513  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3514  * If applicable, add the following below this CDDL HEADER, with the
3515  * fields enclosed by brackets "[]" replaced with your own identifying
3516  * information: Portions Copyright [yyyy] [name of copyright owner]
3517  *
3518  * CDDL HEADER END
3519  */
3520 /*
3521  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3522  *
3523  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3524  * Use is subject to license terms.
3525  */
3526 
3527 
3528 
3529 
3530 /*
3531  * This file, <sys/int_fmtio.h>, is part of the Sun Microsystems implementation
3532  * of <inttypes.h> as defined by the ISO C Standard, ISO/IEC 9899:1999
3533  * Programming language - C.
3534  *
3535  * ISO  International Organization for Standardization.
3536  *
3537  * Programs/Modules should not directly include this file.  Access to the
3538  * types defined in this file should be through the inclusion of one of the
3539  * following files:
3540  *
3541  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
3542  *				components of <inttypes.h>.
3543  *
3544  *	<inttypes.h>		For use by applications.
3545  *
3546  * See these files for more details.
3547  */
3548 
3549 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3550 /*
3551  * CDDL HEADER START
3552  *
3553  * The contents of this file are subject to the terms of the
3554  * Common Development and Distribution License (the "License").
3555  * You may not use this file except in compliance with the License.
3556  *
3557  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3558  * or http://www.opensolaris.org/os/licensing.
3559  * See the License for the specific language governing permissions
3560  * and limitations under the License.
3561  *
3562  * When distributing Covered Code, include this CDDL HEADER in each
3563  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3564  * If applicable, add the following below this CDDL HEADER, with the
3565  * fields enclosed by brackets "[]" replaced with your own identifying
3566  * information: Portions Copyright [yyyy] [name of copyright owner]
3567  *
3568  * CDDL HEADER END
3569  */
3570 
3571 /*
3572  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3573  * Copyright 2016 Joyent, Inc.
3574  *
3575  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3576  * Use is subject to license terms.
3577  */
3578 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h" 2
3579 
3580 
3581 
3582 
3583 
3584 /*
3585  * Formatted I/O
3586  *
3587  * The following macros can be used even when an implementation has not
3588  * extended the printf/scanf family of functions.
3589  *
3590  * The form of the names of the macros is either "PRI" for printf specifiers
3591  * or "SCN" for scanf specifiers, followed by the conversion specifier letter
3592  * followed by the datatype size. For example, PRId32 is the macro for
3593  * the printf d conversion specifier with the flags for 32 bit datatype.
3594  *
3595  * An example using one of these macros:
3596  *
3597  *	uint64_t u;
3598  *	printf("u = %016" PRIx64 "\n", u);
3599  *
3600  * For the purpose of example, the definitions of the printf/scanf macros
3601  * below have the values appropriate for a machine with 8 bit shorts, 16
3602  * bit shorts, 32 bit ints, 32 or 64 bit longs depending on compilation
3603  * mode, and 64 bit long longs.
3604  */
3605 
3606 /*
3607  * fprintf macros for signed integers
3608  */
3609 # 139 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3610 /*
3611  * fprintf macros for unsigned integers
3612  */
3613 # 227 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3614 /*
3615  * fprintf macros for pointers
3616  */
3617 # 247 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3618 /*
3619  * fscanf macros for signed integers
3620  */
3621 # 282 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3622 /*
3623  * fscanf macros for unsigned integers
3624  */
3625 # 349 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_fmtio.h"
3626 /*
3627  * The following macros define I/O formats for intmax_t and uintmax_t.
3628  */
3629 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/inttypes.h" 2
3630 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 2
3631 
3632 
3633 
3634 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 1
3635 /*
3636  * CDDL HEADER START
3637  *
3638  * The contents of this file are subject to the terms of the
3639  * Common Development and Distribution License, Version 1.0 only
3640  * (the "License").  You may not use this file except in compliance
3641  * with the License.
3642  *
3643  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3644  * or http://www.opensolaris.org/os/licensing.
3645  * See the License for the specific language governing permissions
3646  * and limitations under the License.
3647  *
3648  * When distributing Covered Code, include this CDDL HEADER in each
3649  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3650  * If applicable, add the following below this CDDL HEADER, with the
3651  * fields enclosed by brackets "[]" replaced with your own identifying
3652  * information: Portions Copyright [yyyy] [name of copyright owner]
3653  *
3654  * CDDL HEADER END
3655  */
3656 /*
3657  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
3658  * Use is subject to license terms.
3659  */
3660 
3661 
3662 
3663 
3664 #pragma ident "%Z%%M%	%I%	%E% SMI"
3665 
3666 /*
3667  * This header is included by <stdint.h> which was introduced by
3668  * the ISO C Standard, ISO/IEC 9899:1999 Programming language - C.
3669  * The header is a subset of the <inttypes.h> header.
3670  */
3671 
3672 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
3673 /*
3674  * CDDL HEADER START
3675  *
3676  * The contents of this file are subject to the terms of the
3677  * Common Development and Distribution License, Version 1.0 only
3678  * (the "License").  You may not use this file except in compliance
3679  * with the License.
3680  *
3681  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3682  * or http://www.opensolaris.org/os/licensing.
3683  * See the License for the specific language governing permissions
3684  * and limitations under the License.
3685  *
3686  * When distributing Covered Code, include this CDDL HEADER in each
3687  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3688  * If applicable, add the following below this CDDL HEADER, with the
3689  * fields enclosed by brackets "[]" replaced with your own identifying
3690  * information: Portions Copyright [yyyy] [name of copyright owner]
3691  *
3692  * CDDL HEADER END
3693  */
3694 /*
3695  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3696  *
3697  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3698  * Use is subject to license terms.
3699  */
3700 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 2
3701 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.h" 1
3702 /*
3703  * CDDL HEADER START
3704  *
3705  * The contents of this file are subject to the terms of the
3706  * Common Development and Distribution License, Version 1.0 only
3707  * (the "License").  You may not use this file except in compliance
3708  * with the License.
3709  *
3710  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3711  * or http://www.opensolaris.org/os/licensing.
3712  * See the License for the specific language governing permissions
3713  * and limitations under the License.
3714  *
3715  * When distributing Covered Code, include this CDDL HEADER in each
3716  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3717  * If applicable, add the following below this CDDL HEADER, with the
3718  * fields enclosed by brackets "[]" replaced with your own identifying
3719  * information: Portions Copyright [yyyy] [name of copyright owner]
3720  *
3721  * CDDL HEADER END
3722  */
3723 /*
3724  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3725  *
3726  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3727  * Use is subject to license terms.
3728  */
3729 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 2
3730 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_const.h" 1
3731 /*
3732  * CDDL HEADER START
3733  *
3734  * The contents of this file are subject to the terms of the
3735  * Common Development and Distribution License, Version 1.0 only
3736  * (the "License").  You may not use this file except in compliance
3737  * with the License.
3738  *
3739  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3740  * or http://www.opensolaris.org/os/licensing.
3741  * See the License for the specific language governing permissions
3742  * and limitations under the License.
3743  *
3744  * When distributing Covered Code, include this CDDL HEADER in each
3745  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3746  * If applicable, add the following below this CDDL HEADER, with the
3747  * fields enclosed by brackets "[]" replaced with your own identifying
3748  * information: Portions Copyright [yyyy] [name of copyright owner]
3749  *
3750  * CDDL HEADER END
3751  */
3752 /*
3753  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3754  *
3755  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
3756  * Use is subject to license terms.
3757  */
3758 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stdint.h" 2
3759 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h" 2
3760 
3761 
3762 
3763 
3764 
3765 
3766 /* Inclusion of <stddef.h> breaks namespace, therefore define wchar_t */
3767 
3768 /*
3769  * wchar_t is a built-in type in standard C++ and as such is not
3770  * defined here when using standard C++. However, the GNU compiler
3771  * fixincludes utility nonetheless creates its own version of this
3772  * header for use by gcc and g++. In that version it adds a redundant
3773  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
3774  * header we need to include the following magic comment:
3775  *
3776  * we must use the C++ compiler's type
3777  *
3778  * The above comment should not be removed or changed until GNU
3779  * gcc/fixinc/inclhack.def is updated to bypass this header.
3780  */
3781 # 81 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h"
3782 typedef struct {
3783  intmax_t quot;
3784  intmax_t rem;
3785 } imaxdiv_t;
3786 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/inttypes.h"
3787 extern intmax_t imaxabs(intmax_t);
3788 extern imaxdiv_t imaxdiv(intmax_t, intmax_t);
3789 extern intmax_t strtoimax(const char *, char **,
3790  int);
3791 extern uintmax_t strtoumax(const char *, char **,
3792  int);
3793 extern intmax_t wcstoimax(const wchar_t *,
3794  wchar_t **, int);
3795 extern uintmax_t wcstoumax(const wchar_t *,
3796  wchar_t **, int);
3797 # 302 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 2
3798 extern uint32_t arc4random(void);
3799 extern void arc4random_buf(void *, size_t);
3800 extern uint32_t arc4random_uniform(uint32_t);
3801 extern void freezero(void *, size_t);
3802 extern void *recallocarray(void *, size_t, size_t, size_t);
3803 # 37 "cmdexec.c" 2
3804 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 1
3805 /*
3806  * CDDL HEADER START
3807  *
3808  * The contents of this file are subject to the terms of the
3809  * Common Development and Distribution License (the "License").
3810  * You may not use this file except in compliance with the License.
3811  *
3812  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3813  * or http://www.opensolaris.org/os/licensing.
3814  * See the License for the specific language governing permissions
3815  * and limitations under the License.
3816  *
3817  * When distributing Covered Code, include this CDDL HEADER in each
3818  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3819  * If applicable, add the following below this CDDL HEADER, with the
3820  * fields enclosed by brackets "[]" replaced with your own identifying
3821  * information: Portions Copyright [yyyy] [name of copyright owner]
3822  *
3823  * CDDL HEADER END
3824  */
3825 
3826 /*
3827  * Copyright 2014 PALO, Richard.
3828  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
3829  * Copyright (c) 2013 Gary Mills
3830  *
3831  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
3832  */
3833 
3834 /*	Copyright (c) 1988 AT&T	*/
3835 /*	  All Rights Reserved  	*/
3836 
3837 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
3838 
3839 
3840 
3841 
3842 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3843 /*
3844  * CDDL HEADER START
3845  *
3846  * The contents of this file are subject to the terms of the
3847  * Common Development and Distribution License (the "License").
3848  * You may not use this file except in compliance with the License.
3849  *
3850  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3851  * or http://www.opensolaris.org/os/licensing.
3852  * See the License for the specific language governing permissions
3853  * and limitations under the License.
3854  *
3855  * When distributing Covered Code, include this CDDL HEADER in each
3856  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3857  * If applicable, add the following below this CDDL HEADER, with the
3858  * fields enclosed by brackets "[]" replaced with your own identifying
3859  * information: Portions Copyright [yyyy] [name of copyright owner]
3860  *
3861  * CDDL HEADER END
3862  */
3863 
3864 /*
3865  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3866  * Copyright 2016 Joyent, Inc.
3867  *
3868  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3869  * Use is subject to license terms.
3870  */
3871 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
3872 
3873 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
3874 /*
3875  * This file and its contents are supplied under the terms of the
3876  * Common Development and Distribution License ("CDDL"), version 1.0.
3877  * You may only use this file in accordance with the terms of version
3878  * 1.0 of the CDDL.
3879  *
3880  * A full copy of the text of the CDDL should have accompanied this
3881  * source.  A copy of the CDDL is also available via the Internet at
3882  * http://www.illumos.org/license/CDDL.
3883  */
3884 
3885 /*
3886  * Copyright 2014-2016 PALO, Richard.
3887  */
3888 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
3889 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
3890 /*
3891  * CDDL HEADER START
3892  *
3893  * The contents of this file are subject to the terms of the
3894  * Common Development and Distribution License (the "License").
3895  * You may not use this file except in compliance with the License.
3896  *
3897  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3898  * or http://www.opensolaris.org/os/licensing.
3899  * See the License for the specific language governing permissions
3900  * and limitations under the License.
3901  *
3902  * When distributing Covered Code, include this CDDL HEADER in each
3903  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3904  * If applicable, add the following below this CDDL HEADER, with the
3905  * fields enclosed by brackets "[]" replaced with your own identifying
3906  * information: Portions Copyright [yyyy] [name of copyright owner]
3907  *
3908  * CDDL HEADER END
3909  */
3910 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
3911 /*	  All Rights Reserved  	*/
3912 
3913 
3914 /*
3915  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3916  * Use is subject to license terms.
3917  *
3918  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
3919  * Copyright 2016 Joyent, Inc.
3920  */
3921 
3922 
3923 
3924 
3925 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
3926 /*
3927  * CDDL HEADER START
3928  *
3929  * The contents of this file are subject to the terms of the
3930  * Common Development and Distribution License (the "License").
3931  * You may not use this file except in compliance with the License.
3932  *
3933  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3934  * or http://www.opensolaris.org/os/licensing.
3935  * See the License for the specific language governing permissions
3936  * and limitations under the License.
3937  *
3938  * When distributing Covered Code, include this CDDL HEADER in each
3939  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3940  * If applicable, add the following below this CDDL HEADER, with the
3941  * fields enclosed by brackets "[]" replaced with your own identifying
3942  * information: Portions Copyright [yyyy] [name of copyright owner]
3943  *
3944  * CDDL HEADER END
3945  */
3946 
3947 /*
3948  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
3949  * Copyright 2016 Joyent, Inc.
3950  *
3951  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3952  * Use is subject to license terms.
3953  */
3954 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
3955 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
3956 /*
3957  * CDDL HEADER START
3958  *
3959  * The contents of this file are subject to the terms of the
3960  * Common Development and Distribution License (the "License").
3961  * You may not use this file except in compliance with the License.
3962  *
3963  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3964  * or http://www.opensolaris.org/os/licensing.
3965  * See the License for the specific language governing permissions
3966  * and limitations under the License.
3967  *
3968  *
3969  * When distributing Covered Code, include this CDDL HEADER in each
3970  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3971  * If applicable, add the following below this CDDL HEADER, with the
3972  * fields enclosed by brackets "[]" replaced with your own identifying
3973  * information: Portions Copyright [yyyy] [name of copyright owner]
3974  *
3975  * CDDL HEADER END
3976  */
3977 
3978 /*
3979  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
3980  * Use is subject to license terms.
3981  * Copyright 2016 Joyent, Inc.
3982  */
3983 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
3984 
3985 /*
3986  * Machine dependent definitions moved to <sys/machtypes.h>.
3987  */
3988 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machtypes.h" 1
3989 /*
3990  * CDDL HEADER START
3991  *
3992  * The contents of this file are subject to the terms of the
3993  * Common Development and Distribution License, Version 1.0 only
3994  * (the "License").  You may not use this file except in compliance
3995  * with the License.
3996  *
3997  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3998  * or http://www.opensolaris.org/os/licensing.
3999  * See the License for the specific language governing permissions
4000  * and limitations under the License.
4001  *
4002  * When distributing Covered Code, include this CDDL HEADER in each
4003  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4004  * If applicable, add the following below this CDDL HEADER, with the
4005  * fields enclosed by brackets "[]" replaced with your own identifying
4006  * information: Portions Copyright [yyyy] [name of copyright owner]
4007  *
4008  * CDDL HEADER END
4009  */
4010 /*
4011  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
4012  * Use is subject to license terms.
4013  */
4014 
4015 
4016 
4017 
4018 #pragma ident "%Z%%M%	%I%	%E% SMI"
4019 
4020 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4021 /*
4022  * CDDL HEADER START
4023  *
4024  * The contents of this file are subject to the terms of the
4025  * Common Development and Distribution License (the "License").
4026  * You may not use this file except in compliance with the License.
4027  *
4028  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4029  * or http://www.opensolaris.org/os/licensing.
4030  * See the License for the specific language governing permissions
4031  * and limitations under the License.
4032  *
4033  * When distributing Covered Code, include this CDDL HEADER in each
4034  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4035  * If applicable, add the following below this CDDL HEADER, with the
4036  * fields enclosed by brackets "[]" replaced with your own identifying
4037  * information: Portions Copyright [yyyy] [name of copyright owner]
4038  *
4039  * CDDL HEADER END
4040  */
4041 
4042 /*
4043  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4044  * Copyright 2016 Joyent, Inc.
4045  *
4046  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4047  * Use is subject to license terms.
4048  */
4049 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machtypes.h" 2
4050 
4051 
4052 
4053 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ia32/sys/machtypes.h" 1
4054 /*
4055  * CDDL HEADER START
4056  *
4057  * The contents of this file are subject to the terms of the
4058  * Common Development and Distribution License (the "License").
4059  * You may not use this file except in compliance with the License.
4060  *
4061  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4062  * or http://www.opensolaris.org/os/licensing.
4063  * See the License for the specific language governing permissions
4064  * and limitations under the License.
4065  *
4066  * When distributing Covered Code, include this CDDL HEADER in each
4067  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4068  * If applicable, add the following below this CDDL HEADER, with the
4069  * fields enclosed by brackets "[]" replaced with your own identifying
4070  * information: Portions Copyright [yyyy] [name of copyright owner]
4071  *
4072  * CDDL HEADER END
4073  */
4074 /*
4075  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
4076  * Use is subject to license terms.
4077  */
4078 
4079 
4080 
4081 
4082 #pragma ident "%Z%%M%	%I%	%E% SMI"
4083 
4084 
4085 
4086 
4087 
4088 /*
4089  * Machine dependent types:
4090  *
4091  *	intel ia32 Version
4092  */
4093 # 61 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/ia32/sys/machtypes.h"
4094 typedef struct _label_t { long val[6]; } label_t;
4095 
4096 
4097 
4098 typedef unsigned char lock_t; /* lock work for busy wait */
4099 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machtypes.h" 2
4100 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
4101 
4102 /*
4103  * Include fixed width type declarations proposed by the ISO/JTC1/SC22/WG14 C
4104  * committee's working draft for the revision of the current ISO C standard,
4105  * ISO/IEC 9899:1990 Programming language - C.  These are not currently
4106  * required by any standard but constitute a useful, general purpose set
4107  * of type definitions which is namespace clean with respect to all standards.
4108  */
4109 
4110 
4111 
4112 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
4113 /*
4114  * CDDL HEADER START
4115  *
4116  * The contents of this file are subject to the terms of the
4117  * Common Development and Distribution License, Version 1.0 only
4118  * (the "License").  You may not use this file except in compliance
4119  * with the License.
4120  *
4121  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4122  * or http://www.opensolaris.org/os/licensing.
4123  * See the License for the specific language governing permissions
4124  * and limitations under the License.
4125  *
4126  * When distributing Covered Code, include this CDDL HEADER in each
4127  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4128  * If applicable, add the following below this CDDL HEADER, with the
4129  * fields enclosed by brackets "[]" replaced with your own identifying
4130  * information: Portions Copyright [yyyy] [name of copyright owner]
4131  *
4132  * CDDL HEADER END
4133  */
4134 /*
4135  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4136  *
4137  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
4138  * Use is subject to license terms.
4139  */
4140 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
4141 # 65 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4142 /*
4143  * Strictly conforming ANSI C environments prior to the 1999
4144  * revision of the C Standard (ISO/IEC 9899:1999) do not have
4145  * the long long data type.
4146  */
4147 
4148 typedef long long longlong_t;
4149 typedef unsigned long long u_longlong_t;
4150 # 85 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4151 /*
4152  * These types (t_{u}scalar_t) exist because the XTI/TPI/DLPI standards had
4153  * to use them instead of int32_t and uint32_t because DEC had
4154  * shipped 64-bit wide.
4155  */
4156 
4157 
4158 
4159 
4160 typedef long t_scalar_t; /* historical versions */
4161 typedef unsigned long t_uscalar_t;
4162 
4163 
4164 /*
4165  * POSIX Extensions
4166  */
4167 typedef unsigned char uchar_t;
4168 typedef unsigned short ushort_t;
4169 typedef unsigned int uint_t;
4170 typedef unsigned long ulong_t;
4171 
4172 typedef char *caddr_t; /* ?<core address> type */
4173 typedef long daddr_t; /* <disk address> type */
4174 typedef short cnt_t; /* ?<count> type */
4175 
4176 
4177 
4178 
4179 
4180 
4181 typedef int ptrdiff_t; /* (historical version) */
4182 
4183 
4184 
4185 /*
4186  * VM-related types
4187  */
4188 typedef ulong_t pfn_t; /* page frame number */
4189 typedef ulong_t pgcnt_t; /* number of pages */
4190 typedef long spgcnt_t; /* signed number of pages */
4191 
4192 typedef uchar_t use_t; /* use count for swap.  */
4193 typedef short sysid_t;
4194 typedef short index_t;
4195 typedef void *timeout_id_t; /* opaque handle from timeout(9F) */
4196 typedef void *bufcall_id_t; /* opaque handle from bufcall(9F) */
4197 
4198 /*
4199  * The size of off_t and related types depends on the setting of
4200  * _FILE_OFFSET_BITS.  (Note that other system headers define other types
4201  * related to those defined here.)
4202  *
4203  * If _LARGEFILE64_SOURCE is defined, variants of these types that are
4204  * explicitly 64 bits wide become available.
4205  */
4206 # 165 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4207 typedef u_longlong_t ino_t; /* expanded inode type	*/
4208 typedef longlong_t blkcnt_t; /* count of file blocks */
4209 typedef u_longlong_t fsblkcnt_t; /* count of file system blocks */
4210 typedef u_longlong_t fsfilcnt_t; /* count of files */
4211 # 178 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4212 typedef u_longlong_t ino64_t; /* expanded inode type	*/
4213 typedef longlong_t blkcnt64_t; /* count of file blocks */
4214 typedef u_longlong_t fsblkcnt64_t; /* count of file system blocks */
4215 typedef u_longlong_t fsfilcnt64_t; /* count of files */
4216 
4217 
4218 
4219 
4220 
4221 
4222 typedef long blksize_t; /* used for block sizes */
4223 
4224 
4225 
4226 
4227 
4228 typedef enum { B_FALSE, B_TRUE } boolean_t;
4229 # 205 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4230 /*
4231  * The {u,}pad64_t types can be used in structures such that those structures
4232  * may be accessed by code produced by compilation environments which don't
4233  * support a 64 bit integral datatype.  The intention is not to allow
4234  * use of these fields in such environments, but to maintain the alignment
4235  * and offsets of the structure.
4236  *
4237  * Similar comments for {u,}pad128_t.
4238  *
4239  * Note that these types do NOT generate any stronger alignment constraints
4240  * than those available in the underlying ABI.  See <sys/isa_defs.h>
4241  */
4242 
4243 typedef int64_t pad64_t;
4244 typedef uint64_t upad64_t;
4245 # 232 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4246 typedef union {
4247  long double _q;
4248  int32_t _l[4];
4249 } pad128_t;
4250 
4251 typedef union {
4252  long double _q;
4253  uint32_t _l[4];
4254 } upad128_t;
4255 
4256 typedef longlong_t offset_t;
4257 typedef u_longlong_t u_offset_t;
4258 typedef u_longlong_t len_t;
4259 typedef u_longlong_t diskaddr_t;
4260 
4261 
4262 
4263 
4264 /*
4265  * Definitions remaining from previous partial support for 64-bit file
4266  * offsets.  This partial support for devices greater than 2gb requires
4267  * compiler support for long long.
4268  */
4269 
4270 typedef union {
4271  offset_t _f; /* Full 64 bit offset value */
4272  struct {
4273   int32_t _l; /* lower 32 bits of offset value */
4274   int32_t _u; /* upper 32 bits of offset value */
4275  } _p;
4276 } lloff_t;
4277 # 276 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4278 typedef union {
4279  longlong_t _f; /* Full 64 bit disk address value */
4280  struct {
4281   int32_t _l; /* lower 32 bits of disk address value */
4282   int32_t _u; /* upper 32 bits of disk address value */
4283  } _p;
4284 } lldaddr_t;
4285 # 295 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4286 typedef uint_t k_fltset_t; /* kernel fault set type */
4287 
4288 /*
4289  * The following type is for various kinds of identifiers.  The
4290  * actual type must be the same for all since some system calls
4291  * (such as sigsend) take arguments that may be any of these
4292  * types.  The enumeration type idtype_t defined in sys/procset.h
4293  * is used to indicate what type of id is being specified --
4294  * a process id, process group id, session id, scheduling class id,
4295  * user id, group id, project id, task id or zone id.
4296  */
4297 
4298 
4299 
4300 typedef long id_t; /* (historical version) */
4301 
4302 
4303 typedef id_t lgrp_id_t; /* lgroup ID */
4304 
4305 /*
4306  * Type useconds_t is an unsigned integral type capable of storing
4307  * values at least in the range of zero to 1,000,000.
4308  */
4309 typedef uint_t useconds_t; /* Time, in microseconds */
4310 
4311 
4312 
4313 typedef long suseconds_t; /* signed # of microseconds */
4314 
4315 
4316 /*
4317  * Typedefs for dev_t components.
4318  */
4319 
4320 
4321 
4322 
4323 typedef ulong_t major_t; /* (historical version) */
4324 typedef ulong_t minor_t; /* (historical version) */
4325 
4326 
4327 /*
4328  * The data type of a thread priority.
4329  */
4330 typedef short pri_t;
4331 
4332 /*
4333  * The data type for a CPU flags field.  (Can be extended to larger unsigned
4334  * types, if needed, limited by ability to update atomically.)
4335  */
4336 typedef ushort_t cpu_flag_t;
4337 
4338 /*
4339  * For compatibility reasons the following typedefs (prefixed o_)
4340  * can't grow regardless of the EFT definition. Although,
4341  * applications should not explicitly use these typedefs
4342  * they may be included via a system header definition.
4343  * WARNING: These typedefs may be removed in a future
4344  * release.
4345  *		ex. the definitions in s5inode.h (now obsoleted)
4346  *			remained small to preserve compatibility
4347  *			in the S5 file system type.
4348  */
4349 typedef ushort_t o_mode_t; /* old file attribute type */
4350 typedef short o_dev_t; /* old device type	*/
4351 typedef ushort_t o_uid_t; /* old UID type		*/
4352 typedef o_uid_t o_gid_t; /* old GID type		*/
4353 typedef short o_nlink_t; /* old file link type	*/
4354 typedef short o_pid_t; /* old process id type	*/
4355 typedef ushort_t o_ino_t; /* old inode type	*/
4356 
4357 
4358 /*
4359  * POSIX and XOPEN Declarations
4360  */
4361 typedef int key_t; /* IPC key type		*/
4362 
4363 
4364 
4365 typedef ulong_t mode_t; /* (historical version) */
4366 
4367 
4368 
4369 
4370 
4371 
4372 
4373 typedef uid_t gid_t; /* GID type		*/
4374 
4375 typedef uint32_t datalink_id_t;
4376 typedef uint32_t vrid_t;
4377 
4378 typedef id_t taskid_t;
4379 typedef id_t projid_t;
4380 typedef id_t poolid_t;
4381 typedef id_t zoneid_t;
4382 typedef id_t ctid_t;
4383 
4384 /*
4385  * POSIX definitions are same as defined in thread.h and synch.h.
4386  * Any changes made to here should be reflected in corresponding
4387  * files as described in comments.
4388  */
4389 typedef uint_t pthread_t; /* = thread_t in thread.h */
4390 typedef uint_t pthread_key_t; /* = thread_key_t in thread.h */
4391 
4392 /* "Magic numbers" tagging synchronization object types */
4393 
4394 
4395 
4396 
4397 
4398 typedef struct _pthread_mutex { /* = mutex_t in synch.h */
4399  struct {
4400   uint16_t __pthread_mutex_flag1;
4401   uint8_t __pthread_mutex_flag2;
4402   uint8_t __pthread_mutex_ceiling;
4403   uint16_t __pthread_mutex_type;
4404   uint16_t __pthread_mutex_magic;
4405  } __pthread_mutex_flags;
4406  union {
4407   struct {
4408    uint8_t __pthread_mutex_pad[8];
4409   } __pthread_mutex_lock64;
4410   struct {
4411    uint32_t __pthread_ownerpid;
4412    uint32_t __pthread_lockword;
4413   } __pthread_mutex_lock32;
4414   upad64_t __pthread_mutex_owner64;
4415  } __pthread_mutex_lock;
4416  upad64_t __pthread_mutex_data;
4417 } pthread_mutex_t;
4418 
4419 typedef struct _pthread_cond { /* = cond_t in synch.h */
4420  struct {
4421   uint8_t __pthread_cond_flag[4];
4422   uint16_t __pthread_cond_type;
4423   uint16_t __pthread_cond_magic;
4424  } __pthread_cond_flags;
4425  upad64_t __pthread_cond_data;
4426 } pthread_cond_t;
4427 
4428 /*
4429  * UNIX 98 Extension
4430  */
4431 typedef struct _pthread_rwlock { /* = rwlock_t in synch.h */
4432  int32_t __pthread_rwlock_readers;
4433  uint16_t __pthread_rwlock_type;
4434  uint16_t __pthread_rwlock_magic;
4435  pthread_mutex_t __pthread_rwlock_mutex;
4436  pthread_cond_t __pthread_rwlock_readercv;
4437  pthread_cond_t __pthread_rwlock_writercv;
4438 } pthread_rwlock_t;
4439 
4440 /*
4441  * SUSV3
4442  */
4443 typedef struct {
4444  uint32_t __pthread_barrier_count;
4445  uint32_t __pthread_barrier_current;
4446  upad64_t __pthread_barrier_cycle;
4447  upad64_t __pthread_barrier_reserved;
4448  pthread_mutex_t __pthread_barrier_lock;
4449  pthread_cond_t __pthread_barrier_cond;
4450 } pthread_barrier_t;
4451 
4452 typedef pthread_mutex_t pthread_spinlock_t;
4453 
4454 /*
4455  * attributes for threads, dynamically allocated by library
4456  */
4457 typedef struct _pthread_attr {
4458  void *__pthread_attrp;
4459 } pthread_attr_t;
4460 
4461 /*
4462  * attributes for mutex, dynamically allocated by library
4463  */
4464 typedef struct _pthread_mutexattr {
4465  void *__pthread_mutexattrp;
4466 } pthread_mutexattr_t;
4467 
4468 /*
4469  * attributes for cond, dynamically allocated by library
4470  */
4471 typedef struct _pthread_condattr {
4472  void *__pthread_condattrp;
4473 } pthread_condattr_t;
4474 
4475 /*
4476  * pthread_once
4477  */
4478 typedef struct _once {
4479  upad64_t __pthread_once_pad[4];
4480 } pthread_once_t;
4481 
4482 /*
4483  * UNIX 98 Extensions
4484  * attributes for rwlock, dynamically allocated by library
4485  */
4486 typedef struct _pthread_rwlockattr {
4487  void *__pthread_rwlockattrp;
4488 } pthread_rwlockattr_t;
4489 
4490 /*
4491  * SUSV3
4492  * attributes for pthread_barrier_t, dynamically allocated by library
4493  */
4494 typedef struct {
4495  void *__pthread_barrierattrp;
4496 } pthread_barrierattr_t;
4497 
4498 typedef ulong_t dev_t; /* expanded device type */
4499 
4500 
4501 
4502 
4503 
4504 typedef ulong_t nlink_t; /* (historical version) */
4505 typedef long pid_t; /* (historical version) */
4506 # 537 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4507 typedef long time_t; /* time of day in seconds */
4508 
4509 
4510 
4511 
4512 typedef long clock_t; /* relative time in a specified resolution */
4513 
4514 
4515 
4516 
4517 typedef int clockid_t; /* clock identifier type */
4518 
4519 
4520 
4521 
4522 typedef int timer_t; /* timer identifier type */
4523 
4524 
4525 
4526 
4527 /* BEGIN CSTYLED */
4528 typedef unsigned char unchar;
4529 typedef unsigned short ushort;
4530 typedef unsigned int uint;
4531 typedef unsigned long ulong;
4532 /* END CSTYLED */
4533 # 605 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4534 /*
4535  * The following is the value of type id_t to use to indicate the
4536  * caller's current id.  See procset.h for the type idtype_t
4537  * which defines which kind of id is being specified.
4538  */
4539 # 620 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h"
4540 /*
4541  * The following value of type pfn_t is used to indicate
4542  * invalid page frame number.
4543  */
4544 
4545 
4546 
4547 /* BEGIN CSTYLED */
4548 typedef unsigned char u_char;
4549 typedef unsigned short u_short;
4550 typedef unsigned int u_int;
4551 typedef unsigned long u_long;
4552 typedef struct _quad { int val[2]; } quad_t; /* used by UFS */
4553 typedef quad_t quad; /* used by UFS */
4554 /* END CSTYLED */
4555 
4556 /*
4557  * Nested include for BSD/sockets source compatibility.
4558  * (The select macros used to be defined here).
4559  */
4560 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 1
4561 /*
4562  * CDDL HEADER START
4563  *
4564  * The contents of this file are subject to the terms of the
4565  * Common Development and Distribution License (the "License").
4566  * You may not use this file except in compliance with the License.
4567  *
4568  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4569  * or http://www.opensolaris.org/os/licensing.
4570  * See the License for the specific language governing permissions
4571  * and limitations under the License.
4572  *
4573  * When distributing Covered Code, include this CDDL HEADER in each
4574  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4575  * If applicable, add the following below this CDDL HEADER, with the
4576  * fields enclosed by brackets "[]" replaced with your own identifying
4577  * information: Portions Copyright [yyyy] [name of copyright owner]
4578  *
4579  * CDDL HEADER END
4580  */
4581 
4582 /*
4583  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4584  *
4585  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
4586  *
4587  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
4588  * Use is subject to license terms.
4589  */
4590 
4591 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
4592 /*	  All Rights Reserved	*/
4593 
4594 /*
4595  * University Copyright- Copyright (c) 1982, 1986, 1988
4596  * The Regents of the University of California
4597  * All Rights Reserved
4598  *
4599  * University Acknowledgment- Portions of this document are derived from
4600  * software developed by the University of California, Berkeley, and its
4601  * contributors.
4602  */
4603 
4604 
4605 
4606 
4607 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4608 /*
4609  * CDDL HEADER START
4610  *
4611  * The contents of this file are subject to the terms of the
4612  * Common Development and Distribution License (the "License").
4613  * You may not use this file except in compliance with the License.
4614  *
4615  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4616  * or http://www.opensolaris.org/os/licensing.
4617  * See the License for the specific language governing permissions
4618  * and limitations under the License.
4619  *
4620  * When distributing Covered Code, include this CDDL HEADER in each
4621  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4622  * If applicable, add the following below this CDDL HEADER, with the
4623  * fields enclosed by brackets "[]" replaced with your own identifying
4624  * information: Portions Copyright [yyyy] [name of copyright owner]
4625  *
4626  * CDDL HEADER END
4627  */
4628 
4629 /*
4630  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4631  * Copyright 2016 Joyent, Inc.
4632  *
4633  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4634  * Use is subject to license terms.
4635  */
4636 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 2
4637 
4638 
4639 
4640 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h" 1
4641 /*
4642  * CDDL HEADER START
4643  *
4644  * The contents of this file are subject to the terms of the
4645  * Common Development and Distribution License, Version 1.0 only
4646  * (the "License").  You may not use this file except in compliance
4647  * with the License.
4648  *
4649  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4650  * or http://www.opensolaris.org/os/licensing.
4651  * See the License for the specific language governing permissions
4652  * and limitations under the License.
4653  *
4654  * When distributing Covered Code, include this CDDL HEADER in each
4655  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4656  * If applicable, add the following below this CDDL HEADER, with the
4657  * fields enclosed by brackets "[]" replaced with your own identifying
4658  * information: Portions Copyright [yyyy] [name of copyright owner]
4659  *
4660  * CDDL HEADER END
4661  */
4662 /*
4663  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
4664  * Use is subject to license terms.
4665  */
4666 
4667 /*
4668  * Implementation-private.  This header should not be included
4669  * directly by an application.  The application should instead
4670  * include <time.h> which includes this header conditionally
4671  * depending on which feature test macros are defined. By default,
4672  * this header is included by <time.h>.  X/Open and POSIX
4673  * standards requirements result in this header being included
4674  * by <time.h> only under a restricted set of conditions.
4675  */
4676 
4677 
4678 
4679 
4680 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4681 /*
4682  * CDDL HEADER START
4683  *
4684  * The contents of this file are subject to the terms of the
4685  * Common Development and Distribution License (the "License").
4686  * You may not use this file except in compliance with the License.
4687  *
4688  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4689  * or http://www.opensolaris.org/os/licensing.
4690  * See the License for the specific language governing permissions
4691  * and limitations under the License.
4692  *
4693  * When distributing Covered Code, include this CDDL HEADER in each
4694  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4695  * If applicable, add the following below this CDDL HEADER, with the
4696  * fields enclosed by brackets "[]" replaced with your own identifying
4697  * information: Portions Copyright [yyyy] [name of copyright owner]
4698  *
4699  * CDDL HEADER END
4700  */
4701 
4702 /*
4703  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4704  * Copyright 2016 Joyent, Inc.
4705  *
4706  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4707  * Use is subject to license terms.
4708  */
4709 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h" 2
4710 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h"
4711 /*
4712  * Time expressed in seconds and nanoseconds
4713  */
4714 
4715 typedef struct timespec { /* definition per POSIX.4 */
4716  time_t tv_sec; /* seconds */
4717  long tv_nsec; /* and nanoseconds */
4718 } timespec_t;
4719 # 81 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h"
4720 typedef struct timespec timestruc_t; /* definition per SVr4 */
4721 
4722 /*
4723  * The following has been left in for backward compatibility. Portable
4724  * applications should not use the structure name timestruc.
4725  */
4726 
4727 
4728 
4729 
4730 
4731 /*
4732  * Timer specification
4733  */
4734 typedef struct itimerspec { /* definition per POSIX.4 */
4735  struct timespec it_interval; /* timer period */
4736  struct timespec it_value; /* timer expiration */
4737 } itimerspec_t;
4738 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 2
4739 
4740 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 1
4741 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
4742 /*	  All Rights Reserved  	*/
4743 
4744 
4745 /*
4746  * Copyright (c) 1982, 1986, 1993 Regents of the University of California.
4747  * All rights reserved.  The Berkeley software License Agreement
4748  * specifies the terms and conditions for redistribution.
4749  */
4750 
4751 /*
4752  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4753  *
4754  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
4755  * Use is subject to license terms.
4756  *
4757  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
4758  */
4759 
4760 /*
4761  * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
4762  */
4763 
4764 
4765 
4766 
4767 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4768 /*
4769  * CDDL HEADER START
4770  *
4771  * The contents of this file are subject to the terms of the
4772  * Common Development and Distribution License (the "License").
4773  * You may not use this file except in compliance with the License.
4774  *
4775  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4776  * or http://www.opensolaris.org/os/licensing.
4777  * See the License for the specific language governing permissions
4778  * and limitations under the License.
4779  *
4780  * When distributing Covered Code, include this CDDL HEADER in each
4781  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4782  * If applicable, add the following below this CDDL HEADER, with the
4783  * fields enclosed by brackets "[]" replaced with your own identifying
4784  * information: Portions Copyright [yyyy] [name of copyright owner]
4785  *
4786  * CDDL HEADER END
4787  */
4788 
4789 /*
4790  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
4791  * Copyright 2016 Joyent, Inc.
4792  *
4793  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
4794  * Use is subject to license terms.
4795  */
4796 # 28 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
4797 
4798 /*
4799  * Structure returned by gettimeofday(2) system call,
4800  * and used in other calls.
4801  */
4802 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4803 struct timeval {
4804  time_t tv_sec; /* seconds */
4805  suseconds_t tv_usec; /* and microseconds */
4806 };
4807 # 84 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4808 struct timezone {
4809  int tz_minuteswest; /* minutes west of Greenwich */
4810  int tz_dsttime; /* type of dst correction */
4811 };
4812 # 96 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4813 /*
4814  * Needed for longlong_t type.  Placement of this due to <sys/types.h>
4815  * including <sys/select.h> which relies on the presense of the itimerval
4816  * structure.
4817  */
4818 
4819 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
4820 /*
4821  * CDDL HEADER START
4822  *
4823  * The contents of this file are subject to the terms of the
4824  * Common Development and Distribution License (the "License").
4825  * You may not use this file except in compliance with the License.
4826  *
4827  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4828  * or http://www.opensolaris.org/os/licensing.
4829  * See the License for the specific language governing permissions
4830  * and limitations under the License.
4831  *
4832  * When distributing Covered Code, include this CDDL HEADER in each
4833  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4834  * If applicable, add the following below this CDDL HEADER, with the
4835  * fields enclosed by brackets "[]" replaced with your own identifying
4836  * information: Portions Copyright [yyyy] [name of copyright owner]
4837  *
4838  * CDDL HEADER END
4839  */
4840 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
4841 /*	  All Rights Reserved  	*/
4842 
4843 
4844 /*
4845  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
4846  * Use is subject to license terms.
4847  *
4848  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
4849  * Copyright 2016 Joyent, Inc.
4850  */
4851 # 103 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
4852 # 123 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4853 /*
4854  * Operations on timevals.
4855  */
4856 # 193 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4857 /*
4858  * Names of the interval timers, and structure
4859  * defining a timer setting.
4860  */
4861 
4862 
4863 
4864     /* time and when system is running on */
4865     /* behalf of the process. */
4866 
4867     /* time profiling of multithreaded */
4868     /* programs. */
4869 
4870 
4871 struct itimerval {
4872  struct timeval it_interval; /* timer interval */
4873  struct timeval it_value; /* current value */
4874 };
4875 # 239 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4876 /*
4877  *	Definitions for commonly used resolutions.
4878  */
4879 # 257 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4880 /*
4881  * Time expressed as a 64-bit nanosecond counter.
4882  */
4883 typedef longlong_t hrtime_t;
4884 # 386 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4885 int adjtime(struct timeval *, struct timeval *);
4886 
4887 
4888 
4889 
4890 int futimesat(int, const char *, const struct timeval *);
4891 
4892 
4893 
4894 
4895 
4896 int getitimer(int, struct itimerval *);
4897 int utimes(const char *, const struct timeval *);
4898 
4899 
4900 
4901 
4902 int setitimer(int, struct itimerval *,
4903  struct itimerval *);
4904 
4905 
4906 
4907 
4908 /*
4909  * gettimeofday() and settimeofday() were included in SVr4 due to their
4910  * common use in BSD based applications.  They were to be included exactly
4911  * as in BSD, with two parameters.  However, AT&T/USL noted that the second
4912  * parameter was unused and deleted it, thereby making a routine included
4913  * for compatibility, incompatible.
4914  *
4915  * XSH4.2 (spec 1170) defines gettimeofday and settimeofday to have two
4916  * parameters.
4917  *
4918  * This has caused general disagreement in the application community as to
4919  * the syntax of these routines.  Solaris defaults to the XSH4.2 definition.
4920  * The flag _SVID_GETTOD may be used to force the SVID version.
4921  */
4922 
4923 
4924 
4925 
4926 
4927 int settimeofday(struct timeval *, void *);
4928 
4929 hrtime_t gethrtime(void);
4930 hrtime_t gethrvtime(void);
4931 # 441 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h"
4932 int gettimeofday(struct timeval *, void *);
4933 
4934 
4935 
4936 
4937 /*
4938  * The inclusion of <time.h> is historical and was added for
4939  * backward compatibility in delta 1.2 when a number of definitions
4940  * were moved out of <sys/time.h>.  More recently, the timespec and
4941  * itimerspec structure definitions, along with the _CLOCK_*, CLOCK_*,
4942  * _TIMER_*, and TIMER_* symbols were moved to <sys/time_impl.h>,
4943  * which is now included by <time.h>.  This change was due to POSIX
4944  * 1003.1b-1993 and X/Open UNIX 98 requirements.  For non-POSIX and
4945  * non-X/Open applications, including this header will still make
4946  * visible these definitions.
4947  */
4948 
4949 
4950 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 1
4951 /*
4952  * CDDL HEADER START
4953  *
4954  * The contents of this file are subject to the terms of the
4955  * Common Development and Distribution License (the "License").
4956  * You may not use this file except in compliance with the License.
4957  *
4958  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4959  * or http://www.opensolaris.org/os/licensing.
4960  * See the License for the specific language governing permissions
4961  * and limitations under the License.
4962  *
4963  * When distributing Covered Code, include this CDDL HEADER in each
4964  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4965  * If applicable, add the following below this CDDL HEADER, with the
4966  * fields enclosed by brackets "[]" replaced with your own identifying
4967  * information: Portions Copyright [yyyy] [name of copyright owner]
4968  *
4969  * CDDL HEADER END
4970  */
4971 /*	Copyright (c) 1988 AT&T	*/
4972 /*	  All Rights Reserved  	*/
4973 
4974 
4975 /*
4976  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
4977  *
4978  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
4979  * Use is subject to license terms.
4980  */
4981 /*
4982  * Copyright 2010 Nexenta Systems, Inc.  Al rights reserved.
4983  * Copyright 2016 Joyent, Inc.
4984  */
4985 
4986 
4987 
4988 
4989 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
4990 /*
4991  * CDDL HEADER START
4992  *
4993  * The contents of this file are subject to the terms of the
4994  * Common Development and Distribution License (the "License").
4995  * You may not use this file except in compliance with the License.
4996  *
4997  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4998  * or http://www.opensolaris.org/os/licensing.
4999  * See the License for the specific language governing permissions
5000  * and limitations under the License.
5001  *
5002  * When distributing Covered Code, include this CDDL HEADER in each
5003  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5004  * If applicable, add the following below this CDDL HEADER, with the
5005  * fields enclosed by brackets "[]" replaced with your own identifying
5006  * information: Portions Copyright [yyyy] [name of copyright owner]
5007  *
5008  * CDDL HEADER END
5009  */
5010 
5011 /*
5012  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
5013  * Copyright 2016 Joyent, Inc.
5014  *
5015  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
5016  * Use is subject to license terms.
5017  */
5018 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
5019 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h" 1
5020 /*
5021  * CDDL HEADER START
5022  *
5023  * The contents of this file are subject to the terms of the
5024  * Common Development and Distribution License, Version 1.0 only
5025  * (the "License").  You may not use this file except in compliance
5026  * with the License.
5027  *
5028  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5029  * or http://www.opensolaris.org/os/licensing.
5030  * See the License for the specific language governing permissions
5031  * and limitations under the License.
5032  *
5033  * When distributing Covered Code, include this CDDL HEADER in each
5034  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5035  * If applicable, add the following below this CDDL HEADER, with the
5036  * fields enclosed by brackets "[]" replaced with your own identifying
5037  * information: Portions Copyright [yyyy] [name of copyright owner]
5038  *
5039  * CDDL HEADER END
5040  */
5041 /*	Copyright (c) 1988 AT&T	*/
5042 /*	  All Rights Reserved  	*/
5043 
5044 /*
5045  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
5046  * Copyright 2014 PALO, Richard.
5047  *
5048  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
5049  * Use is subject to license terms.
5050  */
5051 
5052 /*
5053  * An application should not include this header directly.  Instead it
5054  * should be included only through the inclusion of other Sun headers.
5055  *
5056  * The contents of this header is limited to identifiers specified in the
5057  * C Standard.  Any new identifiers specified in future amendments to the
5058  * C Standard must be placed in this header.  If these new identifiers
5059  * are required to also be in the C++ Standard "std" namespace, then for
5060  * anything other than macro definitions, corresponding "using" directives
5061  * must also be added to <time.h.h>.
5062  */
5063 
5064 
5065 
5066 
5067 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
5068 /*
5069  * CDDL HEADER START
5070  *
5071  * The contents of this file are subject to the terms of the
5072  * Common Development and Distribution License (the "License").
5073  * You may not use this file except in compliance with the License.
5074  *
5075  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5076  * or http://www.opensolaris.org/os/licensing.
5077  * See the License for the specific language governing permissions
5078  * and limitations under the License.
5079  *
5080  * When distributing Covered Code, include this CDDL HEADER in each
5081  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5082  * If applicable, add the following below this CDDL HEADER, with the
5083  * fields enclosed by brackets "[]" replaced with your own identifying
5084  * information: Portions Copyright [yyyy] [name of copyright owner]
5085  *
5086  * CDDL HEADER END
5087  */
5088 
5089 /*
5090  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
5091  * Copyright 2016 Joyent, Inc.
5092  *
5093  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
5094  * Use is subject to license terms.
5095  */
5096 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h" 2
5097 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
5098 /*
5099  * This file and its contents are supplied under the terms of the
5100  * Common Development and Distribution License ("CDDL"), version 1.0.
5101  * You may only use this file in accordance with the terms of version
5102  * 1.0 of the CDDL.
5103  *
5104  * A full copy of the text of the CDDL should have accompanied this
5105  * source.  A copy of the CDDL is also available via the Internet at
5106  * http://www.illumos.org/license/CDDL.
5107  */
5108 
5109 /*
5110  * Copyright 2014-2016 PALO, Richard.
5111  */
5112 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h" 2
5113 # 80 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/time_iso.h"
5114 struct tm { /* see ctime(3) */
5115  int tm_sec;
5116  int tm_min;
5117  int tm_hour;
5118  int tm_mday;
5119  int tm_mon;
5120  int tm_year;
5121  int tm_wday;
5122  int tm_yday;
5123  int tm_isdst;
5124 };
5125 
5126 
5127 extern char *asctime(const struct tm *);
5128 extern clock_t clock(void);
5129 extern char *ctime(const time_t *);
5130 extern double difftime(time_t, time_t);
5131 extern struct tm *gmtime(const time_t *);
5132 extern struct tm *localtime(const time_t *);
5133 extern time_t mktime(struct tm *);
5134 extern time_t time(time_t *);
5135 extern size_t strftime(char *, size_t, const char *,
5136  const struct tm *);
5137 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
5138 /*
5139  * C11 requires sys/time_impl.h for the definition of the struct timespec.
5140  */
5141 
5142 
5143 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
5144 /*
5145  * CDDL HEADER START
5146  *
5147  * The contents of this file are subject to the terms of the
5148  * Common Development and Distribution License (the "License").
5149  * You may not use this file except in compliance with the License.
5150  *
5151  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5152  * or http://www.opensolaris.org/os/licensing.
5153  * See the License for the specific language governing permissions
5154  * and limitations under the License.
5155  *
5156  * When distributing Covered Code, include this CDDL HEADER in each
5157  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5158  * If applicable, add the following below this CDDL HEADER, with the
5159  * fields enclosed by brackets "[]" replaced with your own identifying
5160  * information: Portions Copyright [yyyy] [name of copyright owner]
5161  *
5162  * CDDL HEADER END
5163  */
5164 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
5165 /*	  All Rights Reserved  	*/
5166 
5167 
5168 /*
5169  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
5170  * Use is subject to license terms.
5171  *
5172  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
5173  * Copyright 2016 Joyent, Inc.
5174  */
5175 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
5176 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time_impl.h" 1
5177 /*
5178  * CDDL HEADER START
5179  *
5180  * The contents of this file are subject to the terms of the
5181  * Common Development and Distribution License, Version 1.0 only
5182  * (the "License").  You may not use this file except in compliance
5183  * with the License.
5184  *
5185  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5186  * or http://www.opensolaris.org/os/licensing.
5187  * See the License for the specific language governing permissions
5188  * and limitations under the License.
5189  *
5190  * When distributing Covered Code, include this CDDL HEADER in each
5191  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5192  * If applicable, add the following below this CDDL HEADER, with the
5193  * fields enclosed by brackets "[]" replaced with your own identifying
5194  * information: Portions Copyright [yyyy] [name of copyright owner]
5195  *
5196  * CDDL HEADER END
5197  */
5198 /*
5199  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
5200  * Use is subject to license terms.
5201  */
5202 
5203 /*
5204  * Implementation-private.  This header should not be included
5205  * directly by an application.  The application should instead
5206  * include <time.h> which includes this header conditionally
5207  * depending on which feature test macros are defined. By default,
5208  * this header is included by <time.h>.  X/Open and POSIX
5209  * standards requirements result in this header being included
5210  * by <time.h> only under a restricted set of conditions.
5211  */
5212 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 2
5213 
5214 
5215 /*
5216  * Allow global visibility for symbols defined in
5217  * C++ "std" namespace in <iso/time_iso.h>.
5218  */
5219 # 87 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5220 extern struct tm *gmtime_r(const time_t *,
5221    struct tm *);
5222 extern struct tm *localtime_r(const time_t *,
5223    struct tm *);
5224 # 105 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5225 extern char *strptime(const char *, const char *,
5226   struct tm *);
5227 
5228 
5229 
5230 
5231 
5232 /*
5233  * Neither X/Open nor POSIX allow the inclusion of <signal.h> for the
5234  * definition of the sigevent structure.  Both require the inclusion
5235  * of <signal.h> and <time.h> when using the timer_create() function.
5236  * However, X/Open also specifies that the sigevent structure be defined
5237  * in <time.h> as described in the header <signal.h>.  This prevents
5238  * compiler warnings for applications that only include <time.h> and not
5239  * also <signal.h>.  The sigval union and the sigevent structure is
5240  * therefore defined both here and in <sys/siginfo.h> which gets included
5241  * via inclusion of <signal.h>.
5242  */
5243 
5244 
5245 union sigval {
5246  int sival_int; /* integer value */
5247  void *sival_ptr; /* pointer value */
5248 };
5249 
5250 
5251 
5252 
5253 struct sigevent {
5254  int sigev_notify; /* notification mode */
5255  int sigev_signo; /* signal number */
5256  union sigval sigev_value; /* signal value */
5257  void (*sigev_notify_function)(union sigval);
5258  pthread_attr_t *sigev_notify_attributes;
5259  int __sigev_pad2;
5260 };
5261 
5262 
5263 extern int clock_getres(clockid_t, struct timespec *);
5264 extern int clock_gettime(clockid_t, struct timespec *);
5265 extern int clock_settime(clockid_t, const struct timespec *);
5266 extern int timer_create(clockid_t, struct sigevent *,
5267   timer_t *);
5268 extern int timer_delete(timer_t);
5269 extern int timer_getoverrun(timer_t);
5270 extern int timer_gettime(timer_t, struct itimerspec *);
5271 extern int timer_settime(timer_t, int, const struct itimerspec *,
5272   struct itimerspec *);
5273 
5274 extern int nanosleep(const struct timespec *, struct timespec *);
5275 extern int clock_nanosleep(clockid_t, int,
5276  const struct timespec *, struct timespec *);
5277 
5278 
5279 
5280 
5281 
5282 
5283 extern void tzset(void);
5284 extern char *tzname[2];
5285 
5286 /* CLK_TCK marked as LEGACY in SUSv2 and removed in SUSv3 */
5287 
5288 
5289 extern long _sysconf(int); /* System Private interface to sysconf() */
5290 
5291     /* 3 is _SC_CLK_TCK */
5292 
5293 
5294 
5295 
5296 
5297 extern long timezone;
5298 extern int daylight;
5299 
5300 
5301 
5302 
5303 
5304 
5305 extern time_t timegm(struct tm *);
5306 extern int cftime(char *, char *, const time_t *);
5307 extern int ascftime(char *, const char *, const struct tm *);
5308 extern long altzone;
5309 
5310 
5311 
5312 
5313 extern struct tm *getdate(const char *);
5314 
5315 
5316 
5317 
5318 
5319 extern int getdate_err;
5320 
5321 
5322 
5323 /*
5324  * ctime_r() & asctime_r() prototypes are defined here.
5325  */
5326 
5327 /*
5328  * Previous releases of Solaris, starting at 2.3, provided definitions of
5329  * various functions as specified in POSIX.1c, Draft 6.  For some of these
5330  * functions, the final POSIX 1003.1c standard had a different number of
5331  * arguments and return values.
5332  *
5333  * The following segment of this header provides support for the standard
5334  * interfaces while supporting applications written under earlier
5335  * releases.  The application defines appropriate values of the feature
5336  * test macros _POSIX_C_SOURCE and _POSIX_PTHREAD_SEMANTICS to indicate
5337  * whether it was written to expect the Draft 6 or standard versions of
5338  * these interfaces, before including this header.  This header then
5339  * provides a mapping from the source version of the interface to an
5340  * appropriate binary interface.  Such mappings permit an application
5341  * to be built from libraries and objects which have mixed expectations
5342  * of the definitions of these functions.
5343  *
5344  * For applications using the Draft 6 definitions, the binary symbol is the
5345  * same as the source symbol, and no explicit mapping is needed.  For the
5346  * standard interface, the function func() is mapped to the binary symbol
5347  * _posix_func().  The preferred mechanism for the remapping is a compiler
5348  * #pragma.  If the compiler does not provide such a #pragma, the header file
5349  * defines a static function func() which calls the _posix_func() version;
5350  * this has to be done instead of #define since POSIX specifies that an
5351  * application can #undef the symbol and still be bound to the correct
5352  * implementation.  Unfortunately, the statics confuse lint so we fallback to
5353  * #define in that case.
5354  *
5355  * NOTE: Support for the Draft 6 definitions is provided for compatibility
5356  * only.  New applications/libraries should use the standard definitions.
5357  */
5358 # 280 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5359 extern char *asctime_r(const struct tm *, char *, int);
5360 extern char *ctime_r(const time_t *, char *, int);
5361 # 295 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h"
5362 extern size_t strftime_l(char *, size_t,
5363  const char *, const struct tm *, locale_t);
5364 
5365 
5366 
5367 
5368 
5369 /*
5370  * Note, the C11 standard requires that all the various base values that are
5371  * passed into timespec_get() be non-zero. Hence why TIME_UTC starts at one.
5372  */
5373 
5374 
5375 extern int timespec_get(struct timespec *, int);
5376 # 460 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
5377 
5378 
5379 /*
5380  * The inclusion of <sys/select.h> is needed for the FD_CLR,
5381  * FD_ISSET, FD_SET, and FD_SETSIZE macros as well as the
5382  * select() prototype defined in the XOpen specifications
5383  * beginning with XSH4v2.  Placement required after definition
5384  * for itimerval.
5385  */
5386 
5387 
5388 
5389 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 1
5390 /*
5391  * CDDL HEADER START
5392  *
5393  * The contents of this file are subject to the terms of the
5394  * Common Development and Distribution License (the "License").
5395  * You may not use this file except in compliance with the License.
5396  *
5397  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5398  * or http://www.opensolaris.org/os/licensing.
5399  * See the License for the specific language governing permissions
5400  * and limitations under the License.
5401  *
5402  * When distributing Covered Code, include this CDDL HEADER in each
5403  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5404  * If applicable, add the following below this CDDL HEADER, with the
5405  * fields enclosed by brackets "[]" replaced with your own identifying
5406  * information: Portions Copyright [yyyy] [name of copyright owner]
5407  *
5408  * CDDL HEADER END
5409  */
5410 
5411 /*
5412  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
5413  *
5414  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
5415  *
5416  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
5417  * Use is subject to license terms.
5418  */
5419 
5420 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
5421 /*	  All Rights Reserved	*/
5422 
5423 /*
5424  * University Copyright- Copyright (c) 1982, 1986, 1988
5425  * The Regents of the University of California
5426  * All Rights Reserved
5427  *
5428  * University Acknowledgment- Portions of this document are derived from
5429  * software developed by the University of California, Berkeley, and its
5430  * contributors.
5431  */
5432 # 473 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 2
5433 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h" 2
5434 # 62 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5435 /*
5436  * The sigset_t type is defined in <sys/signal.h> and duplicated
5437  * in <sys/ucontext.h> as a result of XPG4v2 requirements. XPG6
5438  * now allows the visibility of signal.h in this header, however
5439  * an order of inclusion problem occurs as a result of inclusion
5440  * of <sys/select.h> in <signal.h> under certain conditions.
5441  * Rather than include <sys/signal.h> here, we've duplicated
5442  * the sigset_t type instead. This type is required for the XPG6
5443  * introduced pselect() function also declared in this header.
5444  */
5445 
5446 
5447 typedef struct { /* signal set type */
5448  unsigned int __sigbits[4];
5449 } sigset_t;
5450 
5451 
5452 
5453 
5454 /*
5455  * Select uses bit masks of file descriptors in longs.
5456  * These macros manipulate such bit fields.
5457  * FD_SETSIZE may be defined by the user, but the default here
5458  * should be >= NOFILE (param.h).
5459  */
5460 # 108 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5461 typedef long fd_mask;
5462 
5463 typedef long fds_mask;
5464 
5465 /*
5466  *  The value of _NBBY needs to be consistant with the value
5467  *  of NBBY in <sys/param.h>.
5468  */
5469 # 136 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5470 typedef struct fd_set {
5471 
5472 
5473 
5474  long fds_bits[(((1024)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
5475 } fd_set;
5476 # 159 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/select.h"
5477 extern int select(int, fd_set *, fd_set *,
5478  fd_set *, struct timeval *);
5479 
5480 
5481 extern int pselect(int, fd_set *, fd_set *,
5482  fd_set *, const struct timespec *,
5483  const sigset_t *);
5484 # 641 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 2
5485 
5486 
5487 
5488 /*
5489  * _VOID was defined to be either void or char but this is not
5490  * required because previous SunOS compilers have accepted the void
5491  * type. However, because many system header and source files use the
5492  * void keyword, the volatile keyword, and ANSI C function prototypes,
5493  * non-ANSI compilers cannot compile the system anyway. The _VOID macro
5494  * should therefore not be used and remains for source compatibility
5495  * only.
5496  */
5497 /* CSTYLED */
5498 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
5499 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h" 1
5500 /*
5501  * CDDL HEADER START
5502  *
5503  * The contents of this file are subject to the terms of the
5504  * Common Development and Distribution License (the "License").
5505  * You may not use this file except in compliance with the License.
5506  *
5507  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5508  * or http://www.opensolaris.org/os/licensing.
5509  * See the License for the specific language governing permissions
5510  * and limitations under the License.
5511  *
5512  * When distributing Covered Code, include this CDDL HEADER in each
5513  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5514  * If applicable, add the following below this CDDL HEADER, with the
5515  * fields enclosed by brackets "[]" replaced with your own identifying
5516  * information: Portions Copyright [yyyy] [name of copyright owner]
5517  *
5518  * CDDL HEADER END
5519  */
5520 
5521 /*
5522  *	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
5523  *	  All Rights Reserved
5524  *
5525  */
5526 
5527 /*
5528  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
5529  * Use is subject to license terms.
5530  */
5531 
5532 /*
5533  * WARNING: This is an implementation-specific header,
5534  * its contents are not guaranteed. Applications
5535  * should include <unistd.h> and not this header.
5536  */
5537 
5538 
5539 
5540 
5541 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
5542 /*
5543  * CDDL HEADER START
5544  *
5545  * The contents of this file are subject to the terms of the
5546  * Common Development and Distribution License (the "License").
5547  * You may not use this file except in compliance with the License.
5548  *
5549  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5550  * or http://www.opensolaris.org/os/licensing.
5551  * See the License for the specific language governing permissions
5552  * and limitations under the License.
5553  *
5554  * When distributing Covered Code, include this CDDL HEADER in each
5555  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5556  * If applicable, add the following below this CDDL HEADER, with the
5557  * fields enclosed by brackets "[]" replaced with your own identifying
5558  * information: Portions Copyright [yyyy] [name of copyright owner]
5559  *
5560  * CDDL HEADER END
5561  */
5562 
5563 /*
5564  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
5565  * Copyright 2016 Joyent, Inc.
5566  *
5567  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
5568  * Use is subject to license terms.
5569  */
5570 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h" 2
5571 
5572 
5573 
5574 
5575 
5576 /* command names for confstr */
5577 
5578 
5579 
5580 /*
5581  * command names for large file configuration information
5582  */
5583 /* large file compilation environment configuration */
5584 
5585 
5586 
5587 
5588 /* transitional large file interface configuration */
5589 
5590 
5591 
5592 
5593 
5594 /* UNIX 98 */
5595 # 84 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5596 /* UNIX 03 */
5597 # 103 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5598 /* command names for POSIX sysconf */
5599 
5600 /* POSIX.1 names */
5601 # 114 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5602 /* SVR4 names */
5603 
5604 
5605 
5606 
5607 /* 13 reserved for SVr4-ES/MP _SC_NACLS_MAX */
5608 
5609 
5610 
5611 
5612 /* POSIX.4 names */
5613 # 152 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5614 /* XPG4 names */
5615 # 174 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5616 /* additional XSH4/XCU4 command names for sysconf */
5617 
5618 
5619 
5620 /* additional XPG4v2 (UNIX 95) command names */
5621 
5622 
5623 
5624 
5625 
5626 /* defined for XTI (XNS Issue 5) */
5627 
5628 
5629 
5630 
5631 
5632 
5633 
5634 /*
5635  * Hardware specific items
5636  * Note that not all items are supported on all architectures
5637  */
5638 # 214 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5639 /*
5640  * POSIX.1c (pthreads) names. These values are defined above
5641  * the sub-500 range. See psarc case 1995/257.
5642  */
5643 # 235 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5644 /* UNIX 98 */
5645 # 244 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5646 /* UNIX 03 */
5647 # 285 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5648 /* command names for POSIX pathconf */
5649 
5650 /* POSIX.1 names */
5651 # 297 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5652 /* POSIX.4 names */
5653 
5654 
5655 
5656 /* UNIX 03 names */
5657 # 315 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5658 /* UNIX 08 names */
5659 
5660 
5661 /*
5662  * Large File Summit names
5663  *
5664  * This value matches the MIPS ABI choice, but leaves a large gap in the
5665  * value space.
5666  */
5667 
5668 
5669 /*
5670  * Extended attributes
5671  */
5672 
5673 
5674 
5675 /*
5676  * If you add a _PC define above 101, you must change _PC_LAST (and truss).
5677  */
5678 
5679 
5680 /*
5681  * Case sensitivity values (related to _PC_CASE_BEHAVIOR)
5682  */
5683 
5684 
5685 
5686 /*
5687  * The value of 0 is returned when
5688  * ACL's are not supported
5689  */
5690 # 366 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5691 /*
5692  * Marked LEGACY in SUSv2 and removed in SUSv3. Though SUSv3 applications
5693  * should not rely on this value, it has been aligned with the current
5694  * standard to avoid confusion if used.
5695  */
5696 # 408 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h"
5697 /* UNIX 03 names */
5698 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h" 2
5699 
5700 
5701 
5702 
5703 
5704 /* Symbolic constants for the "access" routine: */
5705 # 61 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5706 /* Symbolic constants for the "lseek" routine: */
5707 # 86 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5708 /* Path names: */
5709 
5710 
5711 
5712 
5713 /*
5714  * compile-time symbolic constants,
5715  * Support does not mean the feature is enabled.
5716  * Use pathconf/sysconf to obtain actual configuration value.
5717  */
5718 
5719 /* Values unchanged in UNIX 03 */
5720 
5721 
5722 
5723 
5724 
5725 /*
5726  * POSIX.1b compile-time symbolic constants.
5727  */
5728 # 134 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5729 /*
5730  * POSIX.1c compile-time symbolic constants.
5731  */
5732 # 155 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5733 /* New in UNIX 03 */
5734 # 167 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5735 /*
5736  * Support for the POSIX.1 mutex protocol attribute. For realtime applications
5737  * which need mutexes to support priority inheritance/ceiling.
5738  */
5739 # 187 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5740 /*
5741  * Large File Summit-related announcement macros.  The system supports both
5742  * the additional and transitional Large File Summit interfaces.  (The final
5743  * two macros provide a finer granularity breakdown of _LFS64_LARGEFILE.)
5744  */
5745 
5746 
5747 
5748 
5749 
5750 /* large file compilation environment setup */
5751 
5752 
5753 
5754 # 200 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5755 #pragma redefine_extname ftruncate ftruncate64
5756 # 200 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5757 
5758 
5759 # 201 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5760 #pragma redefine_extname lseek lseek64
5761 # 201 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5762 
5763 
5764 # 202 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5765 #pragma redefine_extname pread pread64
5766 # 202 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5767 
5768 
5769 # 203 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5770 #pragma redefine_extname pwrite pwrite64
5771 # 203 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5772 
5773 
5774 # 204 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5775 #pragma redefine_extname truncate truncate64
5776 # 204 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5777 
5778 
5779 # 205 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5780 #pragma redefine_extname lockf lockf64
5781 # 205 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5782 
5783 
5784 # 206 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5785 #pragma redefine_extname tell tell64
5786 # 206 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5787 # 218 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5788 /* In the LP64 compilation environment, the APIs are already large file */
5789 # 239 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5790 extern int access(const char *, int);
5791 
5792 extern int acct(const char *);
5793 
5794 extern unsigned alarm(unsigned);
5795 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5796 
5797 
5798 extern int brk(void *);
5799 
5800 extern int chdir(const char *);
5801 extern int chown(const char *, uid_t, gid_t);
5802 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5803 
5804 
5805 extern int chroot(const char *);
5806 
5807 extern int close(int);
5808 
5809 
5810 
5811 
5812 
5813 
5814 extern char *ctermid(char *);
5815 
5816 
5817 extern char *ctermid_r(char *);
5818 
5819 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5820 
5821 extern char *cuserid(char *);
5822 
5823 extern int dup(int);
5824 extern int dup2(int, int);
5825 extern int dup3(int, int, int);
5826 
5827 
5828 
5829 
5830 extern void endusershell(void);
5831 
5832 extern int execl(const char *, const char *, ...);
5833 extern int execle(const char *, const char *, ...);
5834 extern int execlp(const char *, const char *, ...);
5835 extern int execv(const char *, char *const *);
5836 extern int execve(const char *, char *const *, char *const *);
5837 extern int execvp(const char *, char *const *);
5838 extern void _exit(int)
5839  __attribute__((__noreturn__));
5840 /*
5841  * The following fattach prototype is duplicated in <stropts.h>. The
5842  * duplication is necessitated by XPG4.2 which requires the prototype
5843  * be defined in <stropts.h>.
5844  */
5845 
5846 extern int fattach(int, const char *);
5847 
5848 
5849 extern int fchdir(int);
5850 extern int fchown(int, uid_t, gid_t);
5851 
5852 
5853 extern int fchroot(int);
5854 
5855 
5856 
5857 extern int fdatasync(int);
5858 
5859 /*
5860  * The following fdetach prototype is duplicated in <stropts.h>. The
5861  * duplication is necessitated by XPG4.2 which requires the prototype
5862  * be defined in <stropts.h>.
5863  */
5864 
5865 extern int fdetach(const char *);
5866 
5867 extern pid_t fork(void);
5868 
5869 extern pid_t fork1(void);
5870 extern pid_t forkall(void);
5871 
5872 extern long fpathconf(int, int);
5873 
5874 
5875 extern int fsync(int);
5876 
5877 
5878 
5879 
5880 extern int ftruncate(int, off_t);
5881 
5882 extern char *getcwd(char *, size_t);
5883 
5884 
5885 extern int getdtablesize(void);
5886 
5887 extern gid_t getegid(void);
5888 extern uid_t geteuid(void);
5889 extern gid_t getgid(void);
5890 extern int getgroups(int, gid_t *);
5891 
5892 extern long gethostid(void);
5893 
5894 
5895 
5896 
5897 extern int gethostname(char *, int);
5898 # 372 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
5899 /* Marked as LEGACY in SUSv2 and removed in SUSv3 */
5900 
5901 extern int getpagesize(void);
5902 
5903 extern pid_t getpgid(pid_t);
5904 
5905 extern pid_t getpid(void);
5906 extern pid_t getppid(void);
5907 extern pid_t getpgrp(void);
5908 
5909 
5910 char *gettxt(const char *, const char *);
5911 
5912 
5913 extern pid_t getsid(pid_t);
5914 
5915 extern uid_t getuid(void);
5916 
5917 extern char *getusershell(void);
5918 
5919 /*
5920  * The following ioctl prototype is duplicated in <stropts.h>. The
5921  * duplication is necessitated by XPG4.2 which requires the prototype
5922  * be defined in <stropts.h>.
5923  */
5924 
5925 extern int ioctl(int, int, ...);
5926 extern int isaexec(const char *, char *const *, char *const *);
5927 extern int issetugid(void);
5928 
5929 extern int isatty(int);
5930 
5931 extern int lchown(const char *, uid_t, gid_t);
5932 
5933 extern int link(const char *, const char *);
5934 
5935 extern offset_t llseek(int, offset_t, int);
5936 
5937 
5938 
5939 
5940 extern int lockf(int, int, off_t);
5941 
5942 extern off_t lseek(int, off_t, int);
5943 
5944 
5945 extern int nice(int);
5946 
5947 
5948 extern int mincore(caddr_t, size_t, char *);
5949 
5950 extern long pathconf(const char *, int);
5951 extern int pause(void);
5952 extern int pipe(int *);
5953 extern int pipe2(int *, int);
5954 
5955 
5956 
5957 extern ssize_t pread(int, void *, size_t, off_t);
5958 
5959 
5960 extern void profil(unsigned short *, size_t, unsigned long, unsigned int);
5961 
5962 /*
5963  * pthread_atfork() is also declared in <pthread.h> as per SUSv3. The
5964  * declarations are identical. A change to either one may also require
5965  * appropriate namespace updates in order to avoid redeclaration
5966  * warnings in the case where both prototypes are exposed via inclusion
5967  * of both <pthread.h> and <unistd.h>.
5968  */
5969 
5970 
5971 
5972 extern int pthread_atfork(void (*) (void), void (*) (void), void (*) (void));
5973 
5974 
5975 
5976 extern int ptrace(int, pid_t, int, int);
5977 
5978 
5979 
5980 
5981 extern ssize_t pwrite(int, const void *, size_t, off_t);
5982 
5983 
5984 /* per RFC 3542; This is also defined in netdb.h */
5985 extern int rcmd_af(char **, unsigned short, const char *, const char *,
5986  const char *, int *, int);
5987 
5988 extern ssize_t read(int, void *, size_t);
5989 
5990 
5991 extern ssize_t readlink(const char *, char *,
5992  size_t);
5993 
5994 
5995 
5996 
5997 
5998 
5999 extern int rename(const char *, const char *);
6000 
6001 
6002 
6003 
6004 
6005 
6006 
6007 extern int resolvepath(const char *, char *, size_t);
6008 /* per RFC 3542; This is also defined in netdb.h */
6009 extern int rexec_af(char **, unsigned short, const char *, const char *,
6010  const char *, int *, int);
6011 
6012 extern int rmdir(const char *);
6013 
6014 /* per RFC 3542; This is also defined in netdb.h */
6015 extern int rresvport_af(int *, int);
6016 
6017 
6018 
6019 
6020 extern void *sbrk(intptr_t);
6021 
6022 
6023 extern int setegid(gid_t);
6024 extern int seteuid(uid_t);
6025 
6026 extern int setgid(gid_t);
6027 
6028 extern int setgroups(int, const gid_t *);
6029 extern int sethostname(char *, int);
6030 
6031 extern int setpgid(pid_t, pid_t);
6032 
6033 extern pid_t setpgrp(void);
6034 extern int setregid(gid_t, gid_t);
6035 extern int setreuid(uid_t, uid_t);
6036 
6037 extern pid_t setsid(void);
6038 extern int setuid(uid_t);
6039 
6040 extern void setusershell(void);
6041 
6042 extern unsigned sleep(unsigned);
6043 
6044 extern int stime(const time_t *);
6045 
6046 
6047 
6048 
6049 
6050 
6051 extern int symlink(const char *, const char *);
6052 extern void sync(void);
6053 # 534 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
6054 extern long sysconf(int);
6055 extern pid_t tcgetpgrp(int);
6056 extern int tcsetpgrp(int, pid_t);
6057 
6058 
6059 
6060 extern off_t tell(int);
6061 
6062 
6063 
6064 
6065 extern int truncate(const char *, off_t);
6066 
6067 extern char *ttyname(int);
6068 
6069 extern useconds_t ualarm(useconds_t, useconds_t);
6070 
6071 extern int unlink(const char *);
6072 
6073 extern char *getwd(char *);
6074 extern int usleep(useconds_t);
6075 extern pid_t vfork(void) __attribute__((__returns_twice__));
6076 #pragma unknown_control_flow(vfork)
6077 
6078 
6079 extern void vhangup(void);
6080 
6081 extern ssize_t write(int, const void *, size_t);
6082 
6083 extern void yield(void);
6084 
6085 
6086 
6087 
6088  /* || defined(_XPG7) */
6089 extern int faccessat(int, const char *, int, int);
6090 extern int fchownat(int, const char *, uid_t, gid_t, int);
6091 extern int linkat(int, const char *, int, const char *, int);
6092 extern ssize_t readlinkat(int, const char *,
6093  char *, size_t);
6094 extern int renameat(int, const char *, int, const char *);
6095 extern int symlinkat(const char *, int, const char *);
6096 extern int unlinkat(int, const char *, int);
6097 
6098 
6099 extern int get_nprocs(void);
6100 extern int get_nprocs_conf(void);
6101 
6102 
6103 /* transitional large file interface versions */
6104 
6105 
6106 extern int ftruncate64(int, off64_t);
6107 extern off64_t lseek64(int, off64_t, int);
6108 extern ssize_t pread64(int, void *, size_t, off64_t);
6109 extern ssize_t pwrite64(int, const void *, size_t, off64_t);
6110 extern off64_t tell64(int);
6111 extern int truncate64(const char *, off64_t);
6112 extern int lockf64(int, int, off64_t);
6113 
6114 
6115 /*
6116  * getlogin_r() & ttyname_r() prototypes are defined here.
6117  */
6118 
6119 /*
6120  * Previous releases of Solaris, starting at 2.3, provided definitions of
6121  * various functions as specified in POSIX.1c, Draft 6.  For some of these
6122  * functions, the final POSIX 1003.1c standard had a different number of
6123  * arguments and return values.
6124  *
6125  * The following segment of this header provides support for the standard
6126  * interfaces while supporting applications written under earlier
6127  * releases.  The application defines appropriate values of the feature
6128  * test macros _POSIX_C_SOURCE and _POSIX_PTHREAD_SEMANTICS to indicate
6129  * whether it was written to expect the Draft 6 or standard versions of
6130  * these interfaces, before including this header.  This header then
6131  * provides a mapping from the source version of the interface to an
6132  * appropriate binary interface.  Such mappings permit an application
6133  * to be built from libraries and objects which have mixed expectations
6134  * of the definitions of these functions.
6135  *
6136  * For applications using the Draft 6 definitions, the binary symbol is the
6137  * same as the source symbol, and no explicit mapping is needed.  For the
6138  * standard interface, the function func() is mapped to the binary symbol
6139  * _posix_func().  The preferred mechanism for the remapping is a compiler
6140  * #pragma.  If the compiler does not provide such a #pragma, the header file
6141  * defines a static function func() which calls the _posix_func() version;
6142  * this has to be done instead of #define since POSIX specifies that an
6143  * application can #undef the symbol and still be bound to the correct
6144  * implementation.  Unfortunately, the statics confuse lint so we fallback to
6145  * #define in that case.
6146  *
6147  * NOTE: Support for the Draft 6 definitions is provided for compatibility
6148  * only.  New applications/libraries should use the standard definitions.
6149  */
6150 # 693 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
6151 
6152 # 693 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
6153 #pragma redefine_extname getlogin_r getloginx_r
6154 # 693 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/unistd.h"
6155 
6156 
6157 
6158 
6159 
6160 
6161 extern char *getlogin_r(char *, int);
6162 
6163 extern char *ttyname_r(int, char *, int);
6164 
6165 
6166 
6167 
6168 
6169 
6170 extern int getentropy(void *, size_t);
6171 # 38 "cmdexec.c" 2
6172 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 1
6173 /*
6174  * CDDL HEADER START
6175  *
6176  * The contents of this file are subject to the terms of the
6177  * Common Development and Distribution License (the "License").
6178  * You may not use this file except in compliance with the License.
6179  *
6180  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6181  * or http://www.opensolaris.org/os/licensing.
6182  * See the License for the specific language governing permissions
6183  * and limitations under the License.
6184  *
6185  * When distributing Covered Code, include this CDDL HEADER in each
6186  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6187  * If applicable, add the following below this CDDL HEADER, with the
6188  * fields enclosed by brackets "[]" replaced with your own identifying
6189  * information: Portions Copyright [yyyy] [name of copyright owner]
6190  *
6191  * CDDL HEADER END
6192  */
6193 
6194 /*
6195  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
6196  * Use is subject to license terms.
6197  */
6198 
6199 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
6200 /* All Rights Reserved */
6201 # 38 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
6202 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.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 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6224 /*	  All Rights Reserved  	*/
6225 
6226 
6227 /*
6228  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
6229  * Use is subject to license terms.
6230  *
6231  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
6232  * Copyright 2016 Joyent, Inc.
6233  */
6234 # 39 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6235 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 1
6236 /*
6237  * CDDL HEADER START
6238  *
6239  * The contents of this file are subject to the terms of the
6240  * Common Development and Distribution License (the "License").
6241  * You may not use this file except in compliance with the License.
6242  *
6243  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6244  * or http://www.opensolaris.org/os/licensing.
6245  * See the License for the specific language governing permissions
6246  * and limitations under the License.
6247  *
6248  * When distributing Covered Code, include this CDDL HEADER in each
6249  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6250  * If applicable, add the following below this CDDL HEADER, with the
6251  * fields enclosed by brackets "[]" replaced with your own identifying
6252  * information: Portions Copyright [yyyy] [name of copyright owner]
6253  *
6254  * CDDL HEADER END
6255  */
6256 
6257 /*
6258  * Copyright (c) 2013 Gary Mills
6259  *
6260  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6261  * Use is subject to license terms.
6262  */
6263 
6264 /*	Copyright (c) 1988 AT&T	*/
6265 /*	  All Rights Reserved  	*/
6266 
6267 
6268 
6269 
6270 
6271 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
6272 /*
6273  * CDDL HEADER START
6274  *
6275  * The contents of this file are subject to the terms of the
6276  * Common Development and Distribution License (the "License").
6277  * You may not use this file except in compliance with the License.
6278  *
6279  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6280  * or http://www.opensolaris.org/os/licensing.
6281  * See the License for the specific language governing permissions
6282  * and limitations under the License.
6283  *
6284  * When distributing Covered Code, include this CDDL HEADER in each
6285  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6286  * If applicable, add the following below this CDDL HEADER, with the
6287  * fields enclosed by brackets "[]" replaced with your own identifying
6288  * information: Portions Copyright [yyyy] [name of copyright owner]
6289  *
6290  * CDDL HEADER END
6291  */
6292 
6293 /*
6294  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
6295  * Copyright 2016 Joyent, Inc.
6296  *
6297  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
6298  * Use is subject to license terms.
6299  */
6300 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
6301 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
6302 /*
6303  * CDDL HEADER START
6304  *
6305  * The contents of this file are subject to the terms of the
6306  * Common Development and Distribution License (the "License").
6307  * You may not use this file except in compliance with the License.
6308  *
6309  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6310  * or http://www.opensolaris.org/os/licensing.
6311  * See the License for the specific language governing permissions
6312  * and limitations under the License.
6313  *
6314  *
6315  * When distributing Covered Code, include this CDDL HEADER in each
6316  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6317  * If applicable, add the following below this CDDL HEADER, with the
6318  * fields enclosed by brackets "[]" replaced with your own identifying
6319  * information: Portions Copyright [yyyy] [name of copyright owner]
6320  *
6321  * CDDL HEADER END
6322  */
6323 
6324 /*
6325  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6326  * Use is subject to license terms.
6327  * Copyright 2016 Joyent, Inc.
6328  */
6329 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
6330 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/limits_iso.h" 1
6331 /*
6332  * CDDL HEADER START
6333  *
6334  * The contents of this file are subject to the terms of the
6335  * Common Development and Distribution License, Version 1.0 only
6336  * (the "License").  You may not use this file except in compliance
6337  * with the License.
6338  *
6339  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6340  * or http://www.opensolaris.org/os/licensing.
6341  * See the License for the specific language governing permissions
6342  * and limitations under the License.
6343  *
6344  * When distributing Covered Code, include this CDDL HEADER in each
6345  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6346  * If applicable, add the following below this CDDL HEADER, with the
6347  * fields enclosed by brackets "[]" replaced with your own identifying
6348  * information: Portions Copyright [yyyy] [name of copyright owner]
6349  *
6350  * CDDL HEADER END
6351  */
6352 /*
6353  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
6354  * Use is subject to license terms.
6355  */
6356 
6357 /*	Copyright (c) 1988 AT&T	*/
6358 /*	  All Rights Reserved  	*/
6359 
6360 
6361 /*
6362  * An application should not include this header directly.  Instead it
6363  * should be included only through the inclusion of other Sun headers.
6364  *
6365  * The contents of this header is limited to identifiers specified in the
6366  * C Standard.  Any new identifiers specified in future amendments to the
6367  * C Standard must be placed in this header.  If these new identifiers
6368  * are required to also be in the C++ Standard "std" namespace, then for
6369  * anything other than macro definitions, corresponding "using" directives
6370  * must also be added to <limits.h>.
6371  */
6372 
6373 
6374 
6375 
6376 #pragma ident "%Z%%M%	%I%	%E% SMI"
6377 
6378 
6379 
6380 
6381 
6382 /*
6383  * Sizes of integral types
6384  */
6385 # 87 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/limits_iso.h"
6386      /* min value of a "long int" */
6387 
6388 
6389 
6390 
6391 
6392      /* min value of a long long */
6393 
6394      /* max value of a long long */
6395 
6396      /* max value of "unsigned long long */
6397 # 39 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
6398 
6399 /*
6400  * Include fixed width type limits as proposed by the ISO/JTC1/SC22/WG14 C
6401  * committee's working draft for the revision of the current ISO C standard,
6402  * ISO/IEC 9899:1990 Programming language - C.  These are not currently
6403  * required by any standard but constitute a useful, general purpose set
6404  * of type definitions and limits which is namespace clean with respect to
6405  * all standards.
6406  */
6407 
6408 
6409 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_limits.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, Version 1.0 only
6415  * (the "License").  You may not use this file except in compliance
6416  * with the License.
6417  *
6418  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6419  * or http://www.opensolaris.org/os/licensing.
6420  * See the License for the specific language governing permissions
6421  * and limitations under the License.
6422  *
6423  * When distributing Covered Code, include this CDDL HEADER in each
6424  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6425  * If applicable, add the following below this CDDL HEADER, with the
6426  * fields enclosed by brackets "[]" replaced with your own identifying
6427  * information: Portions Copyright [yyyy] [name of copyright owner]
6428  *
6429  * CDDL HEADER END
6430  */
6431 /*
6432  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6433  *
6434  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
6435  * Use is subject to license terms.
6436  */
6437 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 2
6438 # 62 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6439 /*
6440  * ARG_MAX is calculated as follows:
6441  * NCARGS - space for other stuff on initial stack
6442  * like aux vectors, saved registers, etc..
6443  */
6444 # 97 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6445 /*
6446  * POSIX conformant definitions - An implementation may define
6447  * other symbols which reflect the actual implementation. Alternate
6448  * definitions may not be as restrictive as the POSIX definitions.
6449  */
6450 # 140 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6451 /* POSIX.1c conformant */
6452 
6453 
6454 
6455 
6456 
6457 /* UNIX 03 conformant */
6458 
6459 
6460 
6461 
6462 
6463 /*
6464  * POSIX.2 and XPG4-XSH4 conformant definitions
6465  */
6466 # 164 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6467 /* UNIX 03 conformant */
6468 # 186 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6469 /*
6470  * For dual definitions for PASS_MAX and sysconf.c
6471  */
6472 # 201 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6473     /* NLS printf() and scanf() */
6474 # 216 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6475 /* Marked as LEGACY in SUSv2 and removed in UNIX 03 */
6476 
6477 
6478 
6479        /* of a double */
6480 
6481 
6482        /* of a "float" */
6483 
6484 
6485 /* Marked as LEGACY in SUSv1 and removed in SUSv2 */
6486 
6487 
6488        /* of a double */
6489 
6490        /* of a float */
6491 # 248 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6492 /*
6493  * POSIX 1003.1a, section 2.9.5, table 2-5 contains [NAME_MAX] and the
6494  * related text states:
6495  *
6496  * A definition of one of the values from Table 2-5 shall be omitted from the
6497  * <limits.h> on specific implementations where the corresponding value is
6498  * equal to or greater than the stated minimum, but where the value can vary
6499  * depending on the file to which it is applied. The actual value supported for
6500  * a specific pathname shall be provided by the pathconf() (5.7.1) function.
6501  *
6502  * This is clear that any machine supporting multiple file system types
6503  * and/or a network can not include this define, regardless of protection
6504  * by the _POSIX_SOURCE and _POSIX_C_SOURCE flags.
6505  *
6506  * #define	NAME_MAX	14
6507  */
6508 # 297 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h"
6509     /* Increased for illumos */
6510 # 40 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6511 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
6512 /*
6513  * CDDL HEADER START
6514  *
6515  * The contents of this file are subject to the terms of the
6516  * Common Development and Distribution License (the "License").
6517  * You may not use this file except in compliance with the License.
6518  *
6519  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6520  * or http://www.opensolaris.org/os/licensing.
6521  * See the License for the specific language governing permissions
6522  * and limitations under the License.
6523  *
6524  * When distributing Covered Code, include this CDDL HEADER in each
6525  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6526  * If applicable, add the following below this CDDL HEADER, with the
6527  * fields enclosed by brackets "[]" replaced with your own identifying
6528  * information: Portions Copyright [yyyy] [name of copyright owner]
6529  *
6530  * CDDL HEADER END
6531  */
6532 
6533 /*
6534  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6535  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
6536  */
6537 
6538 /*	Copyright (c) 1988 AT&T	*/
6539 /*	  All Rights Reserved  	*/
6540 
6541 /*
6542  * User-visible pieces of the ANSI C standard I/O package.
6543  */
6544 # 41 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6545 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgdev.h" 1
6546 /*
6547  * CDDL HEADER START
6548  *
6549  * The contents of this file are subject to the terms of the
6550  * Common Development and Distribution License, Version 1.0 only
6551  * (the "License").  You may not use this file except in compliance
6552  * with the License.
6553  *
6554  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6555  * or http://www.opensolaris.org/os/licensing.
6556  * See the License for the specific language governing permissions
6557  * and limitations under the License.
6558  *
6559  * When distributing Covered Code, include this CDDL HEADER in each
6560  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6561  * If applicable, add the following below this CDDL HEADER, with the
6562  * fields enclosed by brackets "[]" replaced with your own identifying
6563  * information: Portions Copyright [yyyy] [name of copyright owner]
6564  *
6565  * CDDL HEADER END
6566  */
6567 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6568 /*	  All Rights Reserved  	*/
6569 
6570 
6571 
6572 
6573 
6574 #pragma ident "%Z%%M%	%I%	%E% SMI"
6575 
6576 
6577 
6578 
6579 
6580 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
6581 /*
6582  * CDDL HEADER START
6583  *
6584  * The contents of this file are subject to the terms of the
6585  * Common Development and Distribution License (the "License").
6586  * You may not use this file except in compliance with the License.
6587  *
6588  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6589  * or http://www.opensolaris.org/os/licensing.
6590  * See the License for the specific language governing permissions
6591  * and limitations under the License.
6592  *
6593  * When distributing Covered Code, include this CDDL HEADER in each
6594  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6595  * If applicable, add the following below this CDDL HEADER, with the
6596  * fields enclosed by brackets "[]" replaced with your own identifying
6597  * information: Portions Copyright [yyyy] [name of copyright owner]
6598  *
6599  * CDDL HEADER END
6600  */
6601 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6602 /*	  All Rights Reserved  	*/
6603 
6604 
6605 /*
6606  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
6607  * Use is subject to license terms.
6608  *
6609  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
6610  * Copyright 2016 Joyent, Inc.
6611  */
6612 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgdev.h" 2
6613 
6614 struct pkgdev {
6615  int rdonly;
6616  int mntflg;
6617  longlong_t capacity; /* number of 512-blocks on device */
6618  char *name;
6619  char *dirname;
6620  char *pathname;
6621  char *mount;
6622  char *fstyp;
6623  char *cdevice;
6624  char *bdevice;
6625  char *norewind;
6626 };
6627 # 42 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6628 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
6629 /*
6630  * CDDL HEADER START
6631  *
6632  * The contents of this file are subject to the terms of the
6633  * Common Development and Distribution License (the "License").
6634  * You may not use this file except in compliance with the License.
6635  *
6636  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6637  * or http://www.opensolaris.org/os/licensing.
6638  * See the License for the specific language governing permissions
6639  * and limitations under the License.
6640  *
6641  * When distributing Covered Code, include this CDDL HEADER in each
6642  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6643  * If applicable, add the following below this CDDL HEADER, with the
6644  * fields enclosed by brackets "[]" replaced with your own identifying
6645  * information: Portions Copyright [yyyy] [name of copyright owner]
6646  *
6647  * CDDL HEADER END
6648  */
6649 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
6650 /*	  All Rights Reserved  	*/
6651 
6652 /*
6653  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
6654  * Use is subject to license terms.
6655  */
6656 
6657 
6658 
6659 
6660 #pragma ident "%Z%%M%	%I%	%E% SMI"
6661 
6662 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 1
6663 /*
6664  * CDDL HEADER START
6665  *
6666  * The contents of this file are subject to the terms of the
6667  * Common Development and Distribution License (the "License").
6668  * You may not use this file except in compliance with the License.
6669  *
6670  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6671  * or http://www.opensolaris.org/os/licensing.
6672  * See the License for the specific language governing permissions
6673  * and limitations under the License.
6674  *
6675  * When distributing Covered Code, include this CDDL HEADER in each
6676  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6677  * If applicable, add the following below this CDDL HEADER, with the
6678  * fields enclosed by brackets "[]" replaced with your own identifying
6679  * information: Portions Copyright [yyyy] [name of copyright owner]
6680  *
6681  * CDDL HEADER END
6682  */
6683 /*	Copyright (c) 1988 AT&T	*/
6684 /*	  All Rights Reserved  	*/
6685 
6686 
6687 /*
6688  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
6689  *
6690  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
6691  * Use is subject to license terms.
6692  */
6693 /*
6694  * Copyright 2010 Nexenta Systems, Inc.  Al rights reserved.
6695  * Copyright 2016 Joyent, Inc.
6696  */
6697 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 2
6698 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h"
6699 extern char *errstr;
6700 
6701 struct ainfo {
6702  char *local;
6703  mode_t mode;
6704  char owner[64 +1];
6705  char group[64 +1];
6706  major_t major;
6707  minor_t minor;
6708 };
6709 
6710 struct cinfo {
6711  long cksum;
6712  fsblkcnt_t size;
6713  time_t modtime;
6714 };
6715 
6716 struct pinfo {
6717  char status;
6718  char pkg[64 +1];
6719  char editflag;
6720  char aclass[64 +1];
6721  struct pinfo
6722   *next;
6723 };
6724 
6725 struct cfent {
6726  short volno;
6727  char ftype;
6728  char pkg_class[64 +1];
6729  int pkg_class_idx;
6730  char *path;
6731  struct ainfo ainfo;
6732  struct cinfo cinfo;
6733  short npkgs;
6734  struct pinfo
6735   *pinfo;
6736 };
6737 
6738 /* averify() & cverify() error codes */
6739 # 43 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
6740 # 1 "/usr/include/openssl/bio.h" 1 3 4
6741 /* crypto/bio/bio.h */
6742 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
6743  * All rights reserved.
6744  *
6745  * This package is an SSL implementation written
6746  * by Eric Young (eay@cryptsoft.com).
6747  * The implementation was written so as to conform with Netscapes SSL.
6748  *
6749  * This library is free for commercial and non-commercial use as long as
6750  * the following conditions are aheared to.  The following conditions
6751  * apply to all code found in this distribution, be it the RC4, RSA,
6752  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
6753  * included with this distribution is covered by the same copyright terms
6754  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
6755  *
6756  * Copyright remains Eric Young's, and as such any Copyright notices in
6757  * the code are not to be removed.
6758  * If this package is used in a product, Eric Young should be given attribution
6759  * as the author of the parts of the library used.
6760  * This can be in the form of a textual message at program startup or
6761  * in documentation (online or textual) provided with the package.
6762  *
6763  * Redistribution and use in source and binary forms, with or without
6764  * modification, are permitted provided that the following conditions
6765  * are met:
6766  * 1. Redistributions of source code must retain the copyright
6767  *    notice, this list of conditions and the following disclaimer.
6768  * 2. Redistributions in binary form must reproduce the above copyright
6769  *    notice, this list of conditions and the following disclaimer in the
6770  *    documentation and/or other materials provided with the distribution.
6771  * 3. All advertising materials mentioning features or use of this software
6772  *    must display the following acknowledgement:
6773  *    "This product includes cryptographic software written by
6774  *     Eric Young (eay@cryptsoft.com)"
6775  *    The word 'cryptographic' can be left out if the rouines from the library
6776  *    being used are not cryptographic related :-).
6777  * 4. If you include any Windows specific code (or a derivative thereof) from
6778  *    the apps directory (application code) you must include an acknowledgement:
6779  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
6780  *
6781  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
6782  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
6783  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
6784  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
6785  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
6786  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
6787  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
6788  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
6789  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
6790  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
6791  * SUCH DAMAGE.
6792  *
6793  * The licence and distribution terms for any publically available version or
6794  * derivative of this code cannot be changed.  i.e. this code cannot simply be
6795  * copied and put under another distribution licence
6796  * [including the GNU Public Licence.]
6797  */
6798 
6799 
6800 
6801 
6802 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
6803 /* e_os2.h */
6804 /* ====================================================================
6805  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
6806  *
6807  * Redistribution and use in source and binary forms, with or without
6808  * modification, are permitted provided that the following conditions
6809  * are met:
6810  *
6811  * 1. Redistributions of source code must retain the above copyright
6812  *    notice, this list of conditions and the following disclaimer.
6813  *
6814  * 2. Redistributions in binary form must reproduce the above copyright
6815  *    notice, this list of conditions and the following disclaimer in
6816  *    the documentation and/or other materials provided with the
6817  *    distribution.
6818  *
6819  * 3. All advertising materials mentioning features or use of this
6820  *    software must display the following acknowledgment:
6821  *    "This product includes software developed by the OpenSSL Project
6822  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
6823  *
6824  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
6825  *    endorse or promote products derived from this software without
6826  *    prior written permission. For written permission, please contact
6827  *    openssl-core@openssl.org.
6828  *
6829  * 5. Products derived from this software may not be called "OpenSSL"
6830  *    nor may "OpenSSL" appear in their names without prior written
6831  *    permission of the OpenSSL Project.
6832  *
6833  * 6. Redistributions of any form whatsoever must retain the following
6834  *    acknowledgment:
6835  *    "This product includes software developed by the OpenSSL Project
6836  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
6837  *
6838  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
6839  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
6840  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
6841  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
6842  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
6843  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
6844  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
6845  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
6846  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
6847  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
6848  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
6849  * OF THE POSSIBILITY OF SUCH DAMAGE.
6850  * ====================================================================
6851  *
6852  * This product includes cryptographic software written by Eric Young
6853  * (eay@cryptsoft.com).  This product includes software written by Tim
6854  * Hudson (tjh@cryptsoft.com).
6855  *
6856  */
6857 
6858 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
6859 /* opensslconf.h */
6860 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
6861 
6862 
6863 
6864 
6865 /* OpenSSL was configured with the following options: */
6866 # 108 "/usr/include/openssl/opensslconf.h" 3 4
6867 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
6868    asks for it.  This is a transient feature that is provided for those
6869    who haven't had the time to do the appropriate changes in their
6870    applications.  */
6871 # 204 "/usr/include/openssl/opensslconf.h" 3 4
6872 /* crypto/opensslconf.h.in */
6873 
6874 /* Generate 80386 code? */
6875 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
6876 # 65 "/usr/include/openssl/e_os2.h" 3 4
6877 /******************************************************************************
6878  * Detect operating systems.  This probably needs completing.
6879  * The result is that at least one OPENSSL_SYS_os macro should be defined.
6880  * However, if none is defined, Unix is assumed.
6881  **/
6882 
6883 
6884 
6885 /* ---------------------- Macintosh, before MacOS X ----------------------- */
6886 
6887 
6888 
6889 
6890 
6891 /* ---------------------- NetWare ----------------------------------------- */
6892 
6893 
6894 
6895 
6896 
6897 /* --------------------- Microsoft operating systems ---------------------- */
6898 
6899 /*
6900  * Note that MSDOS actually denotes 32-bit environments running on top of
6901  * MS-DOS, such as DJGPP one.
6902  */
6903 
6904 
6905 
6906 
6907 
6908 /*
6909  * For 32 bit environment, there seems to be the CygWin environment and then
6910  * all the others that try to do the same thing Microsoft does...
6911  */
6912 # 129 "/usr/include/openssl/e_os2.h" 3 4
6913 /* Anything that tries to look like Microsoft is "Windows" */
6914 # 138 "/usr/include/openssl/e_os2.h" 3 4
6915 /*
6916  * DLL settings.  This part is a bit tough, because it's up to the
6917  * application implementor how he or she will link the application, so it
6918  * requires some macro to be used.
6919  */
6920 # 152 "/usr/include/openssl/e_os2.h" 3 4
6921 /* ------------------------------- OpenVMS -------------------------------- */
6922 # 166 "/usr/include/openssl/e_os2.h" 3 4
6923 /* -------------------------------- OS/2 ---------------------------------- */
6924 
6925 
6926 
6927 
6928 
6929 /* -------------------------------- Unix ---------------------------------- */
6930 # 207 "/usr/include/openssl/e_os2.h" 3 4
6931 /* -------------------------------- VOS ----------------------------------- */
6932 # 218 "/usr/include/openssl/e_os2.h" 3 4
6933 /* ------------------------------ VxWorks --------------------------------- */
6934 
6935 
6936 
6937 
6938 /* -------------------------------- BeOS ---------------------------------- */
6939 # 234 "/usr/include/openssl/e_os2.h" 3 4
6940 /**
6941  * That's it for OS-specific stuff
6942  *****************************************************************************/
6943 
6944 /* Specials for I/O an exit */
6945 # 247 "/usr/include/openssl/e_os2.h" 3 4
6946 /*-
6947  * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare
6948  * certain global symbols that, with some compilers under VMS, have to be
6949  * defined and declared explicitely with globaldef and globalref.
6950  * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare
6951  * DLL exports and imports for compilers under Win32.  These are a little
6952  * more complicated to use.  Basically, for any library that exports some
6953  * global variables, the following code must be present in the header file
6954  * that declares them, before OPENSSL_EXTERN is used:
6955  *
6956  * #ifdef SOME_BUILD_FLAG_MACRO
6957  * # undef OPENSSL_EXTERN
6958  * # define OPENSSL_EXTERN OPENSSL_EXPORT
6959  * #endif
6960  *
6961  * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL
6962  * have some generally sensible values, and for OPENSSL_EXTERN to have the
6963  * value OPENSSL_IMPORT.
6964  */
6965 # 282 "/usr/include/openssl/e_os2.h" 3 4
6966 /*-
6967  * Macros to allow global variables to be reached through function calls when
6968  * required (if a shared library version requires it, for example.
6969  * The way it's done allows definitions like this:
6970  *
6971  *      // in foobar.c
6972  *      OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)
6973  *      // in foobar.h
6974  *      OPENSSL_DECLARE_GLOBAL(int,foobar);
6975  *      #define foobar OPENSSL_GLOBAL_REF(foobar)
6976  */
6977 # 63 "/usr/include/openssl/bio.h" 2 3 4
6978 
6979 
6980 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
6981 /*
6982  * CDDL HEADER START
6983  *
6984  * The contents of this file are subject to the terms of the
6985  * Common Development and Distribution License (the "License").
6986  * You may not use this file except in compliance with the License.
6987  *
6988  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6989  * or http://www.opensolaris.org/os/licensing.
6990  * See the License for the specific language governing permissions
6991  * and limitations under the License.
6992  *
6993  * When distributing Covered Code, include this CDDL HEADER in each
6994  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6995  * If applicable, add the following below this CDDL HEADER, with the
6996  * fields enclosed by brackets "[]" replaced with your own identifying
6997  * information: Portions Copyright [yyyy] [name of copyright owner]
6998  *
6999  * CDDL HEADER END
7000  */
7001 
7002 /*
7003  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7004  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
7005  */
7006 
7007 /*	Copyright (c) 1988 AT&T	*/
7008 /*	  All Rights Reserved  	*/
7009 
7010 /*
7011  * User-visible pieces of the ANSI C standard I/O package.
7012  */
7013 # 66 "/usr/include/openssl/bio.h" 2 3 4
7014 
7015 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdarg.h" 1 3 4
7016 /*
7017  * CDDL HEADER START
7018  *
7019  * The contents of this file are subject to the terms of the
7020  * Common Development and Distribution License, Version 1.0 only
7021  * (the "License").  You may not use this file except in compliance
7022  * with the License.
7023  *
7024  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7025  * or http://www.opensolaris.org/os/licensing.
7026  * See the License for the specific language governing permissions
7027  * and limitations under the License.
7028  *
7029  * When distributing Covered Code, include this CDDL HEADER in each
7030  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7031  * If applicable, add the following below this CDDL HEADER, with the
7032  * fields enclosed by brackets "[]" replaced with your own identifying
7033  * information: Portions Copyright [yyyy] [name of copyright owner]
7034  *
7035  * CDDL HEADER END
7036  */
7037 /*	Copyright (c) 1988 AT&T	*/
7038 /*	  All Rights Reserved	*/
7039 
7040 /*
7041  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7042  *
7043  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7044  * Use is subject to license terms.
7045  */
7046 
7047 
7048 
7049 
7050 /*
7051  * This header defines the ISO C 1989, ISO C++ 1998, and ISO C 1999
7052  * variable argument definitions.  For legacy support, it also defines
7053  * the pre-standard variable argument definitions.
7054  *
7055  * The varargs definitions within this header are defined in terms of
7056  * implementation definitions.  These implementation definitions reside
7057  * in <sys/va_list.h>.  This organization enables protected use of
7058  * the implementation by other standard headers without introducing
7059  * names into the users' namespace.
7060  */
7061 
7062 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_iso.h" 1 3 4
7063 /*
7064  * CDDL HEADER START
7065  *
7066  * The contents of this file are subject to the terms of the
7067  * Common Development and Distribution License, Version 1.0 only
7068  * (the "License").  You may not use this file except in compliance
7069  * with the License.
7070  *
7071  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7072  * or http://www.opensolaris.org/os/licensing.
7073  * See the License for the specific language governing permissions
7074  * and limitations under the License.
7075  *
7076  * When distributing Covered Code, include this CDDL HEADER in each
7077  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7078  * If applicable, add the following below this CDDL HEADER, with the
7079  * fields enclosed by brackets "[]" replaced with your own identifying
7080  * information: Portions Copyright [yyyy] [name of copyright owner]
7081  *
7082  * CDDL HEADER END
7083  */
7084 /*	Copyright (c) 1988 AT&T	*/
7085 /*	  All Rights Reserved  	*/
7086 
7087 
7088 /*
7089  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7090  * Use is subject to license terms.
7091  */
7092 
7093 /*
7094  * An application should not include this header directly.  Instead it
7095  * should be included only through the inclusion of other Sun headers.
7096  *
7097  * The contents of this header is limited to identifiers specified in the
7098  * C Standard.  Any new identifiers specified in future amendments to the
7099  * C Standard must be placed in this header.  If these new identifiers
7100  * are required to also be in the C++ Standard "std" namespace, then for
7101  * anything other than macro definitions, corresponding "using" directives
7102  * must also be added to <stdarg.h>.
7103  */
7104 
7105 
7106 
7107 
7108 #pragma ident "%Z%%M%	%I%	%E% SMI"
7109 
7110 /*
7111  * This header defines the ISO C 1989 and ISO C++ 1998 variable
7112  * argument definitions.
7113  *
7114  * The varargs definitions within this header are defined in terms of
7115  * implementation definitions.  These implementation definitions reside
7116  * in <sys/va_impl.h>.  This organization enables protected use of
7117  * the implementation by other standard headers without introducing
7118  * names into the users' namespace.
7119  */
7120 
7121 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_impl.h" 1 3 4
7122 /*
7123  * CDDL HEADER START
7124  *
7125  * The contents of this file are subject to the terms of the
7126  * Common Development and Distribution License, Version 1.0 only
7127  * (the "License").  You may not use this file except in compliance
7128  * with the License.
7129  *
7130  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7131  * or http://www.opensolaris.org/os/licensing.
7132  * See the License for the specific language governing permissions
7133  * and limitations under the License.
7134  *
7135  * When distributing Covered Code, include this CDDL HEADER in each
7136  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7137  * If applicable, add the following below this CDDL HEADER, with the
7138  * fields enclosed by brackets "[]" replaced with your own identifying
7139  * information: Portions Copyright [yyyy] [name of copyright owner]
7140  *
7141  * CDDL HEADER END
7142  */
7143 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
7144 /*	  All Rights Reserved	*/
7145 
7146 
7147 /*
7148  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7149  *
7150  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7151  * Use is subject to license terms.
7152  */
7153 
7154 
7155 
7156 
7157 /*
7158  * An application should not include this header directly.  Instead it
7159  * should be included only through the inclusion of other Sun headers,
7160  * specifically <stdarg.h> and <varargs.h>.
7161  *
7162  * This header serves two purposes.
7163  *
7164  * First, it provides a common set of definitions that implementations
7165  * of the various standards for variable argument lists may use.  These
7166  * various standards are implemented in <varargs.h>, <stdarg.h>,
7167  * <iso/stdarg_iso.h>, <iso/stdarg_c99.h>, and <sys/varargs.h>.
7168  *
7169  * Second, it provides varying implementations of the common definitions,
7170  * depending upon the compiler.
7171  */
7172 
7173 /*
7174  * The common definitions exported by this header or compilers using
7175  * this header are:
7176  *
7177  * the macro __va_start(list, name) starting the list iteration
7178  * the macro __va_arg(list, type) getting the current arg and iterating
7179  * the macro __va_copy(to, from) to bookmark the list iteration
7180  * the macro __va_end(list) to end the iteration
7181  *
7182  * In addition, the following are exported via inclusion of <sys/va_list.h>:
7183  *
7184  * the identifier __builtin_va_alist for the variable list pseudo parameter
7185  * the type __va_alist_type for the variable list pseudo parameter
7186  * the type __va_list defining the type of the variable list iterator
7187  */
7188 
7189 /*
7190  * This header uses feature macros (e.g. __BUILTIN_VA_ARG_INCR and
7191  * __BUILTIN_VA_STRUCT), compiler macros (e.g. __GNUC__), and processor
7192  * macros (e.g. __sparc) to determine the protocol appropriate to the
7193  * current compilation.  It is intended that the compilation system
7194  * define the feature, processor, and compiler macros, not the user of
7195  * the system.
7196  */
7197 
7198 /*
7199  * Many compilation systems depend upon the use of special functions
7200  * built into the the compilation system to handle variable argument
7201  * lists.  These built-in symbols may include one or more of the
7202  * following:
7203  *
7204  *      __builtin_va_alist
7205  *      __builtin_va_start
7206  *      __builtin_va_arg_incr
7207  *      __builtin_stdarg_start
7208  *      __builtin_va_end
7209  *      __builtin_va_arg
7210  *      __builtin_va_copy
7211  */
7212 
7213 /*
7214  * The following are defined in <sys/va_list.h>:
7215  *
7216  *      __va_alist_type
7217  *      __va_void()
7218  *      __va_ptr_base
7219  *      ISA definitions via inclusion of <sys/isa_defs.h>
7220  *
7221  * Inclusion of this header also makes visible the symbols in <sys/va_list.h>.
7222  * This header is included in <varargs.h>, <sys/varargs.h> and in <stdarg.h>
7223  * via inclusion of <iso/stdarg_iso.h>.
7224  */
7225 
7226 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_list.h" 1 3 4
7227 /*
7228  * CDDL HEADER START
7229  *
7230  * The contents of this file are subject to the terms of the
7231  * Common Development and Distribution License, Version 1.0 only
7232  * (the "License").  You may not use this file except in compliance
7233  * with the License.
7234  *
7235  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7236  * or http://www.opensolaris.org/os/licensing.
7237  * See the License for the specific language governing permissions
7238  * and limitations under the License.
7239  *
7240  * When distributing Covered Code, include this CDDL HEADER in each
7241  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7242  * If applicable, add the following below this CDDL HEADER, with the
7243  * fields enclosed by brackets "[]" replaced with your own identifying
7244  * information: Portions Copyright [yyyy] [name of copyright owner]
7245  *
7246  * CDDL HEADER END
7247  */
7248 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
7249 /*	  All Rights Reserved	*/
7250 
7251 
7252 /*
7253  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7254  *
7255  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7256  * Use is subject to license terms.
7257  */
7258 # 106 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/va_impl.h" 2 3 4
7259 # 60 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_iso.h" 2 3 4
7260 # 71 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_iso.h" 3 4
7261 typedef __va_list va_list;
7262 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdarg.h" 2 3 4
7263 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_c99.h" 1 3 4
7264 /*
7265  * CDDL HEADER START
7266  *
7267  * The contents of this file are subject to the terms of the
7268  * Common Development and Distribution License, Version 1.0 only
7269  * (the "License").  You may not use this file except in compliance
7270  * with the License.
7271  *
7272  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7273  * or http://www.opensolaris.org/os/licensing.
7274  * See the License for the specific language governing permissions
7275  * and limitations under the License.
7276  *
7277  * When distributing Covered Code, include this CDDL HEADER in each
7278  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7279  * If applicable, add the following below this CDDL HEADER, with the
7280  * fields enclosed by brackets "[]" replaced with your own identifying
7281  * information: Portions Copyright [yyyy] [name of copyright owner]
7282  *
7283  * CDDL HEADER END
7284  */
7285 /*	Copyright (c) 1988 AT&T	*/
7286 /*	  All Rights Reserved	*/
7287 
7288 
7289 /*
7290  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
7291  * Use is subject to license terms.
7292  */
7293 
7294 
7295 
7296 
7297 #pragma ident "%Z%%M%	%I%	%E% SMI"
7298 
7299 /*
7300  * An application should not include this header directly.  Instead it
7301  * should be included only through the inclusion of other Sun headers.
7302  *
7303  * This header defines the va_copy variable argument macro, which is
7304  * new in ISO C 1999, and thus not present in ISO C 1989 and ISO C++
7305  * 1998.  Because this macro is a long-standing Solaris extension, it
7306  * is also permitted in other contexts.
7307  *
7308  * The varargs definitions within this header are defined in terms of
7309  * implementation definitions.  These implementation definitions reside
7310  * in <sys/va_list.h>.  This organization enables protected use of
7311  * the implementation by other standard headers without introducing
7312  * names into the users' namespace.
7313  */
7314 
7315 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1 3 4
7316 /*
7317  * CDDL HEADER START
7318  *
7319  * The contents of this file are subject to the terms of the
7320  * Common Development and Distribution License (the "License").
7321  * You may not use this file except in compliance with the License.
7322  *
7323  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7324  * or http://www.opensolaris.org/os/licensing.
7325  * See the License for the specific language governing permissions
7326  * and limitations under the License.
7327  *
7328  * When distributing Covered Code, include this CDDL HEADER in each
7329  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7330  * If applicable, add the following below this CDDL HEADER, with the
7331  * fields enclosed by brackets "[]" replaced with your own identifying
7332  * information: Portions Copyright [yyyy] [name of copyright owner]
7333  *
7334  * CDDL HEADER END
7335  */
7336 
7337 /*
7338  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
7339  * Copyright 2016 Joyent, Inc.
7340  *
7341  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
7342  * Use is subject to license terms.
7343  */
7344 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stdarg_c99.h" 2 3 4
7345 
7346 
7347 
7348 
7349 
7350 /*
7351  * va_copy was initially a Solaris extension to provide a portable
7352  * way to perform a variable argument list ``bookmarking'' function.
7353  * It is now specified in the ISO/IEC 9899:1999 standard.
7354  */
7355 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdarg.h" 2 3 4
7356 
7357 /*
7358  * Allow global visibility for symbols defined in
7359  * C++ "std" namespace in <iso/stdarg_iso.h>.
7360  */
7361 # 68 "/usr/include/openssl/bio.h" 2 3 4
7362 
7363 # 1 "/usr/include/openssl/crypto.h" 1 3 4
7364 /* crypto/crypto.h */
7365 /* ====================================================================
7366  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
7367  *
7368  * Redistribution and use in source and binary forms, with or without
7369  * modification, are permitted provided that the following conditions
7370  * are met:
7371  *
7372  * 1. Redistributions of source code must retain the above copyright
7373  *    notice, this list of conditions and the following disclaimer.
7374  *
7375  * 2. Redistributions in binary form must reproduce the above copyright
7376  *    notice, this list of conditions and the following disclaimer in
7377  *    the documentation and/or other materials provided with the
7378  *    distribution.
7379  *
7380  * 3. All advertising materials mentioning features or use of this
7381  *    software must display the following acknowledgment:
7382  *    "This product includes software developed by the OpenSSL Project
7383  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
7384  *
7385  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
7386  *    endorse or promote products derived from this software without
7387  *    prior written permission. For written permission, please contact
7388  *    openssl-core@openssl.org.
7389  *
7390  * 5. Products derived from this software may not be called "OpenSSL"
7391  *    nor may "OpenSSL" appear in their names without prior written
7392  *    permission of the OpenSSL Project.
7393  *
7394  * 6. Redistributions of any form whatsoever must retain the following
7395  *    acknowledgment:
7396  *    "This product includes software developed by the OpenSSL Project
7397  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
7398  *
7399  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
7400  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7401  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
7402  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
7403  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7404  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
7405  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
7406  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7407  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
7408  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
7409  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
7410  * OF THE POSSIBILITY OF SUCH DAMAGE.
7411  * ====================================================================
7412  *
7413  * This product includes cryptographic software written by Eric Young
7414  * (eay@cryptsoft.com).  This product includes software written by Tim
7415  * Hudson (tjh@cryptsoft.com).
7416  *
7417  */
7418 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
7419  * All rights reserved.
7420  *
7421  * This package is an SSL implementation written
7422  * by Eric Young (eay@cryptsoft.com).
7423  * The implementation was written so as to conform with Netscapes SSL.
7424  *
7425  * This library is free for commercial and non-commercial use as long as
7426  * the following conditions are aheared to.  The following conditions
7427  * apply to all code found in this distribution, be it the RC4, RSA,
7428  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
7429  * included with this distribution is covered by the same copyright terms
7430  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
7431  *
7432  * Copyright remains Eric Young's, and as such any Copyright notices in
7433  * the code are not to be removed.
7434  * If this package is used in a product, Eric Young should be given attribution
7435  * as the author of the parts of the library used.
7436  * This can be in the form of a textual message at program startup or
7437  * in documentation (online or textual) provided with the package.
7438  *
7439  * Redistribution and use in source and binary forms, with or without
7440  * modification, are permitted provided that the following conditions
7441  * are met:
7442  * 1. Redistributions of source code must retain the copyright
7443  *    notice, this list of conditions and the following disclaimer.
7444  * 2. Redistributions in binary form must reproduce the above copyright
7445  *    notice, this list of conditions and the following disclaimer in the
7446  *    documentation and/or other materials provided with the distribution.
7447  * 3. All advertising materials mentioning features or use of this software
7448  *    must display the following acknowledgement:
7449  *    "This product includes cryptographic software written by
7450  *     Eric Young (eay@cryptsoft.com)"
7451  *    The word 'cryptographic' can be left out if the rouines from the library
7452  *    being used are not cryptographic related :-).
7453  * 4. If you include any Windows specific code (or a derivative thereof) from
7454  *    the apps directory (application code) you must include an acknowledgement:
7455  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
7456  *
7457  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
7458  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7459  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7460  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
7461  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7462  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7463  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7464  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7465  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7466  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7467  * SUCH DAMAGE.
7468  *
7469  * The licence and distribution terms for any publically available version or
7470  * derivative of this code cannot be changed.  i.e. this code cannot simply be
7471  * copied and put under another distribution licence
7472  * [including the GNU Public Licence.]
7473  */
7474 /* ====================================================================
7475  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
7476  * ECDH support in OpenSSL originally developed by
7477  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
7478  */
7479 
7480 
7481 
7482 
7483 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdlib.h" 1 3 4
7484 /*
7485  * CDDL HEADER START
7486  *
7487  * The contents of this file are subject to the terms of the
7488  * Common Development and Distribution License (the "License").
7489  * You may not use this file except in compliance with the License.
7490  *
7491  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7492  * or http://www.opensolaris.org/os/licensing.
7493  * See the License for the specific language governing permissions
7494  * and limitations under the License.
7495  *
7496  * When distributing Covered Code, include this CDDL HEADER in each
7497  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7498  * If applicable, add the following below this CDDL HEADER, with the
7499  * fields enclosed by brackets "[]" replaced with your own identifying
7500  * information: Portions Copyright [yyyy] [name of copyright owner]
7501  *
7502  * CDDL HEADER END
7503  */
7504 
7505 /*
7506  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7507  * Copyright (c) 2013 Gary Mills
7508  *
7509  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
7510  */
7511 
7512 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
7513 
7514 /*	Copyright (c) 1988 AT&T	*/
7515 /*	  All Rights Reserved  	*/
7516 # 121 "/usr/include/openssl/crypto.h" 2 3 4
7517 
7518 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
7519 /* e_os2.h */
7520 /* ====================================================================
7521  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
7522  *
7523  * Redistribution and use in source and binary forms, with or without
7524  * modification, are permitted provided that the following conditions
7525  * are met:
7526  *
7527  * 1. Redistributions of source code must retain the above copyright
7528  *    notice, this list of conditions and the following disclaimer.
7529  *
7530  * 2. Redistributions in binary form must reproduce the above copyright
7531  *    notice, this list of conditions and the following disclaimer in
7532  *    the documentation and/or other materials provided with the
7533  *    distribution.
7534  *
7535  * 3. All advertising materials mentioning features or use of this
7536  *    software must display the following acknowledgment:
7537  *    "This product includes software developed by the OpenSSL Project
7538  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
7539  *
7540  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
7541  *    endorse or promote products derived from this software without
7542  *    prior written permission. For written permission, please contact
7543  *    openssl-core@openssl.org.
7544  *
7545  * 5. Products derived from this software may not be called "OpenSSL"
7546  *    nor may "OpenSSL" appear in their names without prior written
7547  *    permission of the OpenSSL Project.
7548  *
7549  * 6. Redistributions of any form whatsoever must retain the following
7550  *    acknowledgment:
7551  *    "This product includes software developed by the OpenSSL Project
7552  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
7553  *
7554  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
7555  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7556  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
7557  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
7558  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7559  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
7560  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
7561  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7562  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
7563  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
7564  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
7565  * OF THE POSSIBILITY OF SUCH DAMAGE.
7566  * ====================================================================
7567  *
7568  * This product includes cryptographic software written by Eric Young
7569  * (eay@cryptsoft.com).  This product includes software written by Tim
7570  * Hudson (tjh@cryptsoft.com).
7571  *
7572  */
7573 
7574 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
7575 /* opensslconf.h */
7576 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
7577 
7578 
7579 
7580 
7581 /* OpenSSL was configured with the following options: */
7582 # 108 "/usr/include/openssl/opensslconf.h" 3 4
7583 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
7584    asks for it.  This is a transient feature that is provided for those
7585    who haven't had the time to do the appropriate changes in their
7586    applications.  */
7587 # 204 "/usr/include/openssl/opensslconf.h" 3 4
7588 /* crypto/opensslconf.h.in */
7589 
7590 /* Generate 80386 code? */
7591 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
7592 # 123 "/usr/include/openssl/crypto.h" 2 3 4
7593 
7594 
7595 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
7596 /*
7597  * CDDL HEADER START
7598  *
7599  * The contents of this file are subject to the terms of the
7600  * Common Development and Distribution License (the "License").
7601  * You may not use this file except in compliance with the License.
7602  *
7603  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7604  * or http://www.opensolaris.org/os/licensing.
7605  * See the License for the specific language governing permissions
7606  * and limitations under the License.
7607  *
7608  * When distributing Covered Code, include this CDDL HEADER in each
7609  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7610  * If applicable, add the following below this CDDL HEADER, with the
7611  * fields enclosed by brackets "[]" replaced with your own identifying
7612  * information: Portions Copyright [yyyy] [name of copyright owner]
7613  *
7614  * CDDL HEADER END
7615  */
7616 
7617 /*
7618  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
7619  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
7620  */
7621 
7622 /*	Copyright (c) 1988 AT&T	*/
7623 /*	  All Rights Reserved  	*/
7624 
7625 /*
7626  * User-visible pieces of the ANSI C standard I/O package.
7627  */
7628 # 126 "/usr/include/openssl/crypto.h" 2 3 4
7629 
7630 
7631 # 1 "/usr/include/openssl/stack.h" 1 3 4
7632 /* crypto/stack/stack.h */
7633 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
7634  * All rights reserved.
7635  *
7636  * This package is an SSL implementation written
7637  * by Eric Young (eay@cryptsoft.com).
7638  * The implementation was written so as to conform with Netscapes SSL.
7639  *
7640  * This library is free for commercial and non-commercial use as long as
7641  * the following conditions are aheared to.  The following conditions
7642  * apply to all code found in this distribution, be it the RC4, RSA,
7643  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
7644  * included with this distribution is covered by the same copyright terms
7645  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
7646  *
7647  * Copyright remains Eric Young's, and as such any Copyright notices in
7648  * the code are not to be removed.
7649  * If this package is used in a product, Eric Young should be given attribution
7650  * as the author of the parts of the library used.
7651  * This can be in the form of a textual message at program startup or
7652  * in documentation (online or textual) provided with the package.
7653  *
7654  * Redistribution and use in source and binary forms, with or without
7655  * modification, are permitted provided that the following conditions
7656  * are met:
7657  * 1. Redistributions of source code must retain the copyright
7658  *    notice, this list of conditions and the following disclaimer.
7659  * 2. Redistributions in binary form must reproduce the above copyright
7660  *    notice, this list of conditions and the following disclaimer in the
7661  *    documentation and/or other materials provided with the distribution.
7662  * 3. All advertising materials mentioning features or use of this software
7663  *    must display the following acknowledgement:
7664  *    "This product includes cryptographic software written by
7665  *     Eric Young (eay@cryptsoft.com)"
7666  *    The word 'cryptographic' can be left out if the rouines from the library
7667  *    being used are not cryptographic related :-).
7668  * 4. If you include any Windows specific code (or a derivative thereof) from
7669  *    the apps directory (application code) you must include an acknowledgement:
7670  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
7671  *
7672  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
7673  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7674  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7675  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
7676  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7677  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7678  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7679  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7680  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7681  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7682  * SUCH DAMAGE.
7683  *
7684  * The licence and distribution terms for any publically available version or
7685  * derivative of this code cannot be changed.  i.e. this code cannot simply be
7686  * copied and put under another distribution licence
7687  * [including the GNU Public Licence.]
7688  */
7689 # 66 "/usr/include/openssl/stack.h" 3 4
7690 typedef struct stack_st {
7691     int num;
7692     char **data;
7693     int sorted;
7694     int num_alloc;
7695     int (*comp) (const void *, const void *);
7696 } _STACK; /* Use STACK_OF(...) instead */
7697 
7698 
7699 
7700 
7701 int sk_num(const _STACK *);
7702 void *sk_value(const _STACK *, int);
7703 
7704 void *sk_set(_STACK *, int, void *);
7705 
7706 _STACK *sk_new(int (*cmp) (const void *, const void *));
7707 _STACK *sk_new_null(void);
7708 void sk_free(_STACK *);
7709 void sk_pop_free(_STACK *st, void (*func) (void *));
7710 _STACK *sk_deep_copy(_STACK *, void *(*)(void *), void (*)(void *));
7711 int sk_insert(_STACK *sk, void *data, int where);
7712 void *sk_delete(_STACK *st, int loc);
7713 void *sk_delete_ptr(_STACK *st, void *p);
7714 int sk_find(_STACK *st, void *data);
7715 int sk_find_ex(_STACK *st, void *data);
7716 int sk_push(_STACK *st, void *data);
7717 int sk_unshift(_STACK *st, void *data);
7718 void *sk_shift(_STACK *st);
7719 void *sk_pop(_STACK *st);
7720 void sk_zero(_STACK *st);
7721 int (*sk_set_cmp_func(_STACK *sk, int (*c) (const void *, const void *)))
7722  (const void *, const void *);
7723 _STACK *sk_dup(_STACK *st);
7724 void sk_sort(_STACK *st);
7725 int sk_is_sorted(const _STACK *st);
7726 # 129 "/usr/include/openssl/crypto.h" 2 3 4
7727 # 1 "/usr/include/openssl/safestack.h" 1 3 4
7728 /* ====================================================================
7729  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
7730  *
7731  * Redistribution and use in source and binary forms, with or without
7732  * modification, are permitted provided that the following conditions
7733  * are met:
7734  *
7735  * 1. Redistributions of source code must retain the above copyright
7736  *    notice, this list of conditions and the following disclaimer.
7737  *
7738  * 2. Redistributions in binary form must reproduce the above copyright
7739  *    notice, this list of conditions and the following disclaimer in
7740  *    the documentation and/or other materials provided with the
7741  *    distribution.
7742  *
7743  * 3. All advertising materials mentioning features or use of this
7744  *    software must display the following acknowledgment:
7745  *    "This product includes software developed by the OpenSSL Project
7746  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
7747  *
7748  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
7749  *    endorse or promote products derived from this software without
7750  *    prior written permission. For written permission, please contact
7751  *    openssl-core@openssl.org.
7752  *
7753  * 5. Products derived from this software may not be called "OpenSSL"
7754  *    nor may "OpenSSL" appear in their names without prior written
7755  *    permission of the OpenSSL Project.
7756  *
7757  * 6. Redistributions of any form whatsoever must retain the following
7758  *    acknowledgment:
7759  *    "This product includes software developed by the OpenSSL Project
7760  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
7761  *
7762  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
7763  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7764  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
7765  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
7766  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7767  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
7768  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
7769  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7770  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
7771  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
7772  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
7773  * OF THE POSSIBILITY OF SUCH DAMAGE.
7774  * ====================================================================
7775  *
7776  * This product includes cryptographic software written by Eric Young
7777  * (eay@cryptsoft.com).  This product includes software written by Tim
7778  * Hudson (tjh@cryptsoft.com).
7779  *
7780  */
7781 
7782 
7783 
7784 
7785 # 1 "/usr/include/openssl/stack.h" 1 3 4
7786 /* crypto/stack/stack.h */
7787 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
7788  * All rights reserved.
7789  *
7790  * This package is an SSL implementation written
7791  * by Eric Young (eay@cryptsoft.com).
7792  * The implementation was written so as to conform with Netscapes SSL.
7793  *
7794  * This library is free for commercial and non-commercial use as long as
7795  * the following conditions are aheared to.  The following conditions
7796  * apply to all code found in this distribution, be it the RC4, RSA,
7797  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
7798  * included with this distribution is covered by the same copyright terms
7799  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
7800  *
7801  * Copyright remains Eric Young's, and as such any Copyright notices in
7802  * the code are not to be removed.
7803  * If this package is used in a product, Eric Young should be given attribution
7804  * as the author of the parts of the library used.
7805  * This can be in the form of a textual message at program startup or
7806  * in documentation (online or textual) provided with the package.
7807  *
7808  * Redistribution and use in source and binary forms, with or without
7809  * modification, are permitted provided that the following conditions
7810  * are met:
7811  * 1. Redistributions of source code must retain the copyright
7812  *    notice, this list of conditions and the following disclaimer.
7813  * 2. Redistributions in binary form must reproduce the above copyright
7814  *    notice, this list of conditions and the following disclaimer in the
7815  *    documentation and/or other materials provided with the distribution.
7816  * 3. All advertising materials mentioning features or use of this software
7817  *    must display the following acknowledgement:
7818  *    "This product includes cryptographic software written by
7819  *     Eric Young (eay@cryptsoft.com)"
7820  *    The word 'cryptographic' can be left out if the rouines from the library
7821  *    being used are not cryptographic related :-).
7822  * 4. If you include any Windows specific code (or a derivative thereof) from
7823  *    the apps directory (application code) you must include an acknowledgement:
7824  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
7825  *
7826  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
7827  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7828  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7829  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
7830  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7831  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7832  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7833  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7834  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7835  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7836  * SUCH DAMAGE.
7837  *
7838  * The licence and distribution terms for any publically available version or
7839  * derivative of this code cannot be changed.  i.e. this code cannot simply be
7840  * copied and put under another distribution licence
7841  * [including the GNU Public Licence.]
7842  */
7843 # 59 "/usr/include/openssl/safestack.h" 2 3 4
7844 # 69 "/usr/include/openssl/safestack.h" 3 4
7845 /*
7846  * In C++ we get problems because an explicit cast is needed from (void *) we
7847  * use CHECKED_STACK_OF to ensure the correct type is passed in the macros
7848  * below.
7849  */
7850 # 102 "/usr/include/openssl/safestack.h" 3 4
7851 /* nada (obsolete in new safestack approach)*/
7852 
7853 
7854 /*-
7855  * Strings are special: normally an lhash entry will point to a single
7856  * (somewhat) mutable object. In the case of strings:
7857  *
7858  * a) Instead of a single char, there is an array of chars, NUL-terminated.
7859  * b) The string may have be immutable.
7860  *
7861  * So, they need their own declarations. Especially important for
7862  * type-checking tools, such as Deputy.
7863  *
7864  * In practice, however, it appears to be hard to have a const
7865  * string. For now, I'm settling for dealing with the fact it is a
7866  * string at all.
7867  */
7868 typedef char *OPENSSL_STRING;
7869 
7870 typedef const char *OPENSSL_CSTRING;
7871 
7872 /*
7873  * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but
7874  * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned
7875  * above, instead of a single char each entry is a NUL-terminated array of
7876  * chars. So, we have to implement STRING specially for STACK_OF. This is
7877  * dealt with in the autogenerated macros below.
7878  */
7879 
7880 struct stack_st_OPENSSL_STRING { _STACK stack; };
7881 
7882 /*
7883  * Similarly, we sometimes use a block of characters, NOT nul-terminated.
7884  * These should also be distinguished from "normal" stacks.
7885  */
7886 typedef void *OPENSSL_BLOCK;
7887 struct stack_st_OPENSSL_BLOCK { _STACK stack; };
7888 
7889 /*
7890  * SKM_sk_... stack macros are internal to safestack.h: never use them
7891  * directly, use sk_<type>_... instead
7892  */
7893 # 211 "/usr/include/openssl/safestack.h" 3 4
7894 /*
7895  * This block of defines is updated by util/mkstack.pl, please do not touch!
7896  */
7897 # 130 "/usr/include/openssl/crypto.h" 2 3 4
7898 # 1 "/usr/include/openssl/opensslv.h" 1 3 4
7899 
7900 
7901 
7902 
7903 
7904 
7905 
7906 /*-
7907  * Numeric release version identifier:
7908  * MNNFFPPS: major minor fix patch status
7909  * The status nibble has one of the values 0 for development, 1 to e for betas
7910  * 1 to 14, and f for release.  The patch level is exactly that.
7911  * For example:
7912  * 0.9.3-dev      0x00903000
7913  * 0.9.3-beta1    0x00903001
7914  * 0.9.3-beta2-dev 0x00903002
7915  * 0.9.3-beta2    0x00903002 (same as ...beta2-dev)
7916  * 0.9.3          0x0090300f
7917  * 0.9.3a         0x0090301f
7918  * 0.9.4          0x0090400f
7919  * 1.2.3z         0x102031af
7920  *
7921  * For continuity reasons (because 0.9.5 is already out, and is coded
7922  * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level
7923  * part is slightly different, by setting the highest bit.  This means
7924  * that 0.9.5a looks like this: 0x0090581f.  At 0.9.6, we can start
7925  * with 0x0090600S...
7926  *
7927  * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.)
7928  * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
7929  *  major minor fix final patch/beta)
7930  */
7931 # 41 "/usr/include/openssl/opensslv.h" 3 4
7932 /*-
7933  * The macros below are to be used for shared library (.so, .dll, ...)
7934  * versioning.  That kind of versioning works a bit differently between
7935  * operating systems.  The most usual scheme is to set a major and a minor
7936  * number, and have the runtime loader check that the major number is equal
7937  * to what it was at application link time, while the minor number has to
7938  * be greater or equal to what it was at application link time.  With this
7939  * scheme, the version number is usually part of the file name, like this:
7940  *
7941  *      libcrypto.so.0.9
7942  *
7943  * Some unixen also make a softlink with the major verson number only:
7944  *
7945  *      libcrypto.so.0
7946  *
7947  * On Tru64 and IRIX 6.x it works a little bit differently.  There, the
7948  * shared library version is stored in the file, and is actually a series
7949  * of versions, separated by colons.  The rightmost version present in the
7950  * library when linking an application is stored in the application to be
7951  * matched at run time.  When the application is run, a check is done to
7952  * see if the library version stored in the application matches any of the
7953  * versions in the version string of the library itself.
7954  * This version string can be constructed in any way, depending on what
7955  * kind of matching is desired.  However, to implement the same scheme as
7956  * the one used in the other unixen, all compatible versions, from lowest
7957  * to highest, should be part of the string.  Consecutive builds would
7958  * give the following versions strings:
7959  *
7960  *      3.0
7961  *      3.0:3.1
7962  *      3.0:3.1:3.2
7963  *      4.0
7964  *      4.0:4.1
7965  *
7966  * Notice how version 4 is completely incompatible with version, and
7967  * therefore give the breach you can see.
7968  *
7969  * There may be other schemes as well that I haven't yet discovered.
7970  *
7971  * So, here's the way it works here: first of all, the library version
7972  * number doesn't need at all to match the overall OpenSSL version.
7973  * However, it's nice and more understandable if it actually does.
7974  * The current library version is stored in the macro SHLIB_VERSION_NUMBER,
7975  * which is just a piece of text in the format "M.m.e" (Major, minor, edit).
7976  * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways,
7977  * we need to keep a history of version numbers, which is done in the
7978  * macro SHLIB_VERSION_HISTORY.  The numbers are separated by colons and
7979  * should only keep the versions that are binary compatible with the current.
7980  */
7981 # 131 "/usr/include/openssl/crypto.h" 2 3 4
7982 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
7983 /* ====================================================================
7984  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
7985  *
7986  * Redistribution and use in source and binary forms, with or without
7987  * modification, are permitted provided that the following conditions
7988  * are met:
7989  *
7990  * 1. Redistributions of source code must retain the above copyright
7991  *    notice, this list of conditions and the following disclaimer.
7992  *
7993  * 2. Redistributions in binary form must reproduce the above copyright
7994  *    notice, this list of conditions and the following disclaimer in
7995  *    the documentation and/or other materials provided with the
7996  *    distribution.
7997  *
7998  * 3. All advertising materials mentioning features or use of this
7999  *    software must display the following acknowledgment:
8000  *    "This product includes software developed by the OpenSSL Project
8001  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8002  *
8003  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8004  *    endorse or promote products derived from this software without
8005  *    prior written permission. For written permission, please contact
8006  *    openssl-core@openssl.org.
8007  *
8008  * 5. Products derived from this software may not be called "OpenSSL"
8009  *    nor may "OpenSSL" appear in their names without prior written
8010  *    permission of the OpenSSL Project.
8011  *
8012  * 6. Redistributions of any form whatsoever must retain the following
8013  *    acknowledgment:
8014  *    "This product includes software developed by the OpenSSL Project
8015  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8016  *
8017  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8018  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8020  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8021  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8022  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8023  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8024  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8025  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8026  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8027  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8028  * OF THE POSSIBILITY OF SUCH DAMAGE.
8029  * ====================================================================
8030  *
8031  * This product includes cryptographic software written by Eric Young
8032  * (eay@cryptsoft.com).  This product includes software written by Tim
8033  * Hudson (tjh@cryptsoft.com).
8034  *
8035  */
8036 # 62 "/usr/include/openssl/ossl_typ.h" 3 4
8037 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
8038 /* e_os2.h */
8039 /* ====================================================================
8040  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
8041  *
8042  * Redistribution and use in source and binary forms, with or without
8043  * modification, are permitted provided that the following conditions
8044  * are met:
8045  *
8046  * 1. Redistributions of source code must retain the above copyright
8047  *    notice, this list of conditions and the following disclaimer.
8048  *
8049  * 2. Redistributions in binary form must reproduce the above copyright
8050  *    notice, this list of conditions and the following disclaimer in
8051  *    the documentation and/or other materials provided with the
8052  *    distribution.
8053  *
8054  * 3. All advertising materials mentioning features or use of this
8055  *    software must display the following acknowledgment:
8056  *    "This product includes software developed by the OpenSSL Project
8057  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8058  *
8059  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8060  *    endorse or promote products derived from this software without
8061  *    prior written permission. For written permission, please contact
8062  *    openssl-core@openssl.org.
8063  *
8064  * 5. Products derived from this software may not be called "OpenSSL"
8065  *    nor may "OpenSSL" appear in their names without prior written
8066  *    permission of the OpenSSL Project.
8067  *
8068  * 6. Redistributions of any form whatsoever must retain the following
8069  *    acknowledgment:
8070  *    "This product includes software developed by the OpenSSL Project
8071  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8072  *
8073  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8074  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8075  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8076  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8077  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8078  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8079  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8080  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8081  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8082  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8083  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8084  * OF THE POSSIBILITY OF SUCH DAMAGE.
8085  * ====================================================================
8086  *
8087  * This product includes cryptographic software written by Eric Young
8088  * (eay@cryptsoft.com).  This product includes software written by Tim
8089  * Hudson (tjh@cryptsoft.com).
8090  *
8091  */
8092 
8093 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
8094 /* opensslconf.h */
8095 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
8096 
8097 
8098 
8099 
8100 /* OpenSSL was configured with the following options: */
8101 # 108 "/usr/include/openssl/opensslconf.h" 3 4
8102 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
8103    asks for it.  This is a transient feature that is provided for those
8104    who haven't had the time to do the appropriate changes in their
8105    applications.  */
8106 # 204 "/usr/include/openssl/opensslconf.h" 3 4
8107 /* crypto/opensslconf.h.in */
8108 
8109 /* Generate 80386 code? */
8110 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
8111 # 63 "/usr/include/openssl/ossl_typ.h" 2 3 4
8112 # 83 "/usr/include/openssl/ossl_typ.h" 3 4
8113 typedef struct asn1_string_st ASN1_INTEGER;
8114 typedef struct asn1_string_st ASN1_ENUMERATED;
8115 typedef struct asn1_string_st ASN1_BIT_STRING;
8116 typedef struct asn1_string_st ASN1_OCTET_STRING;
8117 typedef struct asn1_string_st ASN1_PRINTABLESTRING;
8118 typedef struct asn1_string_st ASN1_T61STRING;
8119 typedef struct asn1_string_st ASN1_IA5STRING;
8120 typedef struct asn1_string_st ASN1_GENERALSTRING;
8121 typedef struct asn1_string_st ASN1_UNIVERSALSTRING;
8122 typedef struct asn1_string_st ASN1_BMPSTRING;
8123 typedef struct asn1_string_st ASN1_UTCTIME;
8124 typedef struct asn1_string_st ASN1_TIME;
8125 typedef struct asn1_string_st ASN1_GENERALIZEDTIME;
8126 typedef struct asn1_string_st ASN1_VISIBLESTRING;
8127 typedef struct asn1_string_st ASN1_UTF8STRING;
8128 typedef struct asn1_string_st ASN1_STRING;
8129 typedef int ASN1_BOOLEAN;
8130 typedef int ASN1_NULL;
8131 
8132 
8133 typedef struct asn1_object_st ASN1_OBJECT;
8134 
8135 typedef struct ASN1_ITEM_st ASN1_ITEM;
8136 typedef struct asn1_pctx_st ASN1_PCTX;
8137 # 120 "/usr/include/openssl/ossl_typ.h" 3 4
8138 typedef struct bignum_st BIGNUM;
8139 typedef struct bignum_ctx BN_CTX;
8140 typedef struct bn_blinding_st BN_BLINDING;
8141 typedef struct bn_mont_ctx_st BN_MONT_CTX;
8142 typedef struct bn_recp_ctx_st BN_RECP_CTX;
8143 typedef struct bn_gencb_st BN_GENCB;
8144 
8145 typedef struct buf_mem_st BUF_MEM;
8146 
8147 typedef struct evp_cipher_st EVP_CIPHER;
8148 typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
8149 typedef struct env_md_st EVP_MD;
8150 typedef struct env_md_ctx_st EVP_MD_CTX;
8151 typedef struct evp_pkey_st EVP_PKEY;
8152 
8153 typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD;
8154 
8155 typedef struct evp_pkey_method_st EVP_PKEY_METHOD;
8156 typedef struct evp_pkey_ctx_st EVP_PKEY_CTX;
8157 
8158 typedef struct dh_st DH;
8159 typedef struct dh_method DH_METHOD;
8160 
8161 typedef struct dsa_st DSA;
8162 typedef struct dsa_method DSA_METHOD;
8163 
8164 typedef struct rsa_st RSA;
8165 typedef struct rsa_meth_st RSA_METHOD;
8166 
8167 typedef struct rand_meth_st RAND_METHOD;
8168 
8169 typedef struct ecdh_method ECDH_METHOD;
8170 typedef struct ecdsa_method ECDSA_METHOD;
8171 
8172 typedef struct x509_st X509;
8173 typedef struct X509_algor_st X509_ALGOR;
8174 typedef struct X509_crl_st X509_CRL;
8175 typedef struct x509_crl_method_st X509_CRL_METHOD;
8176 typedef struct x509_revoked_st X509_REVOKED;
8177 typedef struct X509_name_st X509_NAME;
8178 typedef struct X509_pubkey_st X509_PUBKEY;
8179 typedef struct x509_store_st X509_STORE;
8180 typedef struct x509_store_ctx_st X509_STORE_CTX;
8181 
8182 typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO;
8183 
8184 typedef struct v3_ext_ctx X509V3_CTX;
8185 typedef struct conf_st CONF;
8186 
8187 typedef struct store_st STORE;
8188 typedef struct store_method_st STORE_METHOD;
8189 
8190 typedef struct ui_st UI;
8191 typedef struct ui_method_st UI_METHOD;
8192 
8193 typedef struct st_ERR_FNS ERR_FNS;
8194 
8195 typedef struct engine_st ENGINE;
8196 typedef struct ssl_st SSL;
8197 typedef struct ssl_ctx_st SSL_CTX;
8198 
8199 typedef struct comp_method_st COMP_METHOD;
8200 
8201 typedef struct X509_POLICY_NODE_st X509_POLICY_NODE;
8202 typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL;
8203 typedef struct X509_POLICY_TREE_st X509_POLICY_TREE;
8204 typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE;
8205 
8206 typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID;
8207 typedef struct DIST_POINT_st DIST_POINT;
8208 typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT;
8209 typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS;
8210 
8211   /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */
8212 
8213 
8214 
8215 typedef struct crypto_ex_data_st CRYPTO_EX_DATA;
8216 /* Callback types for crypto.h */
8217 typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
8218                            int idx, long argl, void *argp);
8219 typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
8220                              int idx, long argl, void *argp);
8221 typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from,
8222                            void *from_d, int idx, long argl, void *argp);
8223 
8224 typedef struct ocsp_req_ctx_st OCSP_REQ_CTX;
8225 typedef struct ocsp_response_st OCSP_RESPONSE;
8226 typedef struct ocsp_responder_id_st OCSP_RESPID;
8227 # 132 "/usr/include/openssl/crypto.h" 2 3 4
8228 
8229 
8230 
8231 
8232 
8233 /*
8234  * Resolve problems on some operating systems with symbol names that clash
8235  * one way or another
8236  */
8237 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
8238 /* ====================================================================
8239  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
8240  *
8241  * Redistribution and use in source and binary forms, with or without
8242  * modification, are permitted provided that the following conditions
8243  * are met:
8244  *
8245  * 1. Redistributions of source code must retain the above copyright
8246  *    notice, this list of conditions and the following disclaimer.
8247  *
8248  * 2. Redistributions in binary form must reproduce the above copyright
8249  *    notice, this list of conditions and the following disclaimer in
8250  *    the documentation and/or other materials provided with the
8251  *    distribution.
8252  *
8253  * 3. All advertising materials mentioning features or use of this
8254  *    software must display the following acknowledgment:
8255  *    "This product includes software developed by the OpenSSL Project
8256  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8257  *
8258  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8259  *    endorse or promote products derived from this software without
8260  *    prior written permission. For written permission, please contact
8261  *    openssl-core@openssl.org.
8262  *
8263  * 5. Products derived from this software may not be called "OpenSSL"
8264  *    nor may "OpenSSL" appear in their names without prior written
8265  *    permission of the OpenSSL Project.
8266  *
8267  * 6. Redistributions of any form whatsoever must retain the following
8268  *    acknowledgment:
8269  *    "This product includes software developed by the OpenSSL Project
8270  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8271  *
8272  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8273  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8274  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8275  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8276  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8277  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8278  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8279  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8280  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8281  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8282  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8283  * OF THE POSSIBILITY OF SUCH DAMAGE.
8284  * ====================================================================
8285  *
8286  * This product includes cryptographic software written by Eric Young
8287  * (eay@cryptsoft.com).  This product includes software written by Tim
8288  * Hudson (tjh@cryptsoft.com).
8289  *
8290  */
8291 
8292 
8293 
8294 
8295 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
8296 /* e_os2.h */
8297 /* ====================================================================
8298  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
8299  *
8300  * Redistribution and use in source and binary forms, with or without
8301  * modification, are permitted provided that the following conditions
8302  * are met:
8303  *
8304  * 1. Redistributions of source code must retain the above copyright
8305  *    notice, this list of conditions and the following disclaimer.
8306  *
8307  * 2. Redistributions in binary form must reproduce the above copyright
8308  *    notice, this list of conditions and the following disclaimer in
8309  *    the documentation and/or other materials provided with the
8310  *    distribution.
8311  *
8312  * 3. All advertising materials mentioning features or use of this
8313  *    software must display the following acknowledgment:
8314  *    "This product includes software developed by the OpenSSL Project
8315  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
8316  *
8317  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
8318  *    endorse or promote products derived from this software without
8319  *    prior written permission. For written permission, please contact
8320  *    openssl-core@openssl.org.
8321  *
8322  * 5. Products derived from this software may not be called "OpenSSL"
8323  *    nor may "OpenSSL" appear in their names without prior written
8324  *    permission of the OpenSSL Project.
8325  *
8326  * 6. Redistributions of any form whatsoever must retain the following
8327  *    acknowledgment:
8328  *    "This product includes software developed by the OpenSSL Project
8329  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
8330  *
8331  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
8332  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
8333  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8334  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
8335  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8336  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
8337  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
8338  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
8339  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
8340  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
8341  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
8342  * OF THE POSSIBILITY OF SUCH DAMAGE.
8343  * ====================================================================
8344  *
8345  * This product includes cryptographic software written by Eric Young
8346  * (eay@cryptsoft.com).  This product includes software written by Tim
8347  * Hudson (tjh@cryptsoft.com).
8348  *
8349  */
8350 
8351 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
8352 /* opensslconf.h */
8353 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
8354 
8355 
8356 
8357 
8358 /* OpenSSL was configured with the following options: */
8359 # 108 "/usr/include/openssl/opensslconf.h" 3 4
8360 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
8361    asks for it.  This is a transient feature that is provided for those
8362    who haven't had the time to do the appropriate changes in their
8363    applications.  */
8364 # 204 "/usr/include/openssl/opensslconf.h" 3 4
8365 /* crypto/opensslconf.h.in */
8366 
8367 /* Generate 80386 code? */
8368 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
8369 # 59 "/usr/include/openssl/symhacks.h" 2 3 4
8370 
8371 /*
8372  * Hacks to solve the problem with linkers incapable of handling very long
8373  * symbol names.  In the case of VMS, the limit is 31 characters on VMS for
8374  * VAX.
8375  */
8376 /*
8377  * Note that this affects util/libeay.num and util/ssleay.num...  you may
8378  * change those manually, but that's not recommended, as those files are
8379  * controlled centrally and updated on Unix, and the central definition may
8380  * disagree with yours, which in turn may come with shareable library
8381  * incompatibilities.
8382  */
8383 # 481 "/usr/include/openssl/symhacks.h" 3 4
8384 /* Case insensitive linking causes problems.... */
8385 # 142 "/usr/include/openssl/crypto.h" 2 3 4
8386 
8387 
8388 
8389 
8390 
8391 /* Backward compatibility to SSLeay */
8392 /*
8393  * This is more to be used to check the correct DLL is being used in the MS
8394  * world.
8395  */
8396 
8397 
8398 /* #define SSLEAY_OPTIONS       1 no longer supported */
8399 
8400 
8401 
8402 
8403 
8404 /* Already declared in ossl_typ.h */
8405 # 174 "/usr/include/openssl/crypto.h" 3 4
8406 /* A generic structure to pass assorted data in a expandable way */
8407 typedef struct openssl_item_st {
8408     int code;
8409     void *value; /* Not used for flag attributes */
8410     size_t value_size; /* Max size of value for output, length for
8411                                  * input */
8412     size_t *value_length; /* Returned length of value for output */
8413 } OPENSSL_ITEM;
8414 
8415 /*
8416  * When changing the CRYPTO_LOCK_* list, be sure to maintin the text lock
8417  * names in cryptlib.c
8418  */
8419 # 256 "/usr/include/openssl/crypto.h" 3 4
8420 /*
8421  * Some applications as well as some parts of OpenSSL need to allocate and
8422  * deallocate locks in a dynamic fashion.  The following typedef makes this
8423  * possible in a type-safe manner.
8424  */
8425 /* struct CRYPTO_dynlock_value has to be defined by the application. */
8426 typedef struct {
8427     int references;
8428     struct CRYPTO_dynlock_value *data;
8429 } CRYPTO_dynlock;
8430 
8431 /*
8432  * The following can be used to detect memory leaks in the SSLeay library. It
8433  * used, it turns on malloc checking
8434  */
8435 
8436 
8437 
8438 
8439 
8440 
8441 /*
8442  * The following are bit values to turn on or off options connected to the
8443  * malloc checking functionality
8444  */
8445 
8446 /* Adds time to the memory checking information */
8447 
8448 /* Adds thread number to the memory checking information */
8449 
8450 
8451 
8452 
8453 /* predec of the BIO type */
8454 typedef struct bio_st BIO_dummy;
8455 
8456 struct crypto_ex_data_st {
8457     struct stack_st_void *sk;
8458     /* gcc is screwing up this data structure :-( */
8459     int dummy;
8460 };
8461 struct stack_st_void { _STACK stack; };
8462 
8463 /*
8464  * This stuff is basically class callback functions The current classes are
8465  * SSL_CTX, SSL, SSL_SESSION, and a few more
8466  */
8467 
8468 typedef struct crypto_ex_data_func_st {
8469     long argl; /* Arbitary long */
8470     void *argp; /* Arbitary void * */
8471     CRYPTO_EX_new *new_func;
8472     CRYPTO_EX_free *free_func;
8473     CRYPTO_EX_dup *dup_func;
8474 } CRYPTO_EX_DATA_FUNCS;
8475 
8476 struct stack_st_CRYPTO_EX_DATA_FUNCS { _STACK stack; };
8477 
8478 /*
8479  * Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA
8480  * entry.
8481  */
8482 # 336 "/usr/include/openssl/crypto.h" 3 4
8483 /*
8484  * Dynamically assigned indexes start from this value (don't use directly,
8485  * use via CRYPTO_ex_data_new_class).
8486  */
8487 
8488 
8489 /*
8490  * This is the default callbacks, but we can have others as well: this is
8491  * needed in Win32 where the application malloc and the library malloc may
8492  * not be the same.
8493  */
8494 # 356 "/usr/include/openssl/crypto.h" 3 4
8495 /*
8496  * Set standard debugging functions (not done by default unless CRYPTO_MDEBUG
8497  * is defined)
8498  */
8499 # 369 "/usr/include/openssl/crypto.h" 3 4
8500 int CRYPTO_mem_ctrl(int mode);
8501 int CRYPTO_is_mem_check_on(void);
8502 
8503 /* for applications */
8504 
8505 
8506 
8507 /* for library-internal use */
8508 # 396 "/usr/include/openssl/crypto.h" 3 4
8509 const char *SSLeay_version(int type);
8510 unsigned long SSLeay(void);
8511 
8512 int OPENSSL_issetugid(void);
8513 
8514 /* An opaque type representing an implementation of "ex_data" support */
8515 typedef struct st_CRYPTO_EX_DATA_IMPL CRYPTO_EX_DATA_IMPL;
8516 /* Return an opaque pointer to the current "ex_data" implementation */
8517 const CRYPTO_EX_DATA_IMPL *CRYPTO_get_ex_data_implementation(void);
8518 /* Sets the "ex_data" implementation to be used (if it's not too late) */
8519 int CRYPTO_set_ex_data_implementation(const CRYPTO_EX_DATA_IMPL *i);
8520 /* Get a new "ex_data" class, and return the corresponding "class_index" */
8521 int CRYPTO_ex_data_new_class(void);
8522 /* Within a given class, get/register a new index */
8523 int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
8524                             CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func,
8525                             CRYPTO_EX_free *free_func);
8526 /*
8527  * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a
8528  * given class (invokes whatever per-class callbacks are applicable)
8529  */
8530 int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
8531 int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
8532                        CRYPTO_EX_DATA *from);
8533 void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
8534 /*
8535  * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular
8536  * index (relative to the class type involved)
8537  */
8538 int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
8539 void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
8540 /*
8541  * This function cleans up all "ex_data" state. It mustn't be called under
8542  * potential race-conditions.
8543  */
8544 void CRYPTO_cleanup_all_ex_data(void);
8545 
8546 int CRYPTO_get_new_lockid(char *name);
8547 
8548 int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */
8549 void CRYPTO_lock(int mode, int type, const char *file, int line);
8550 void CRYPTO_set_locking_callback(void (*func) (int mode, int type,
8551                                                const char *file, int line));
8552 void (*CRYPTO_get_locking_callback(void)) (int mode, int type,
8553                                            const char *file, int line);
8554 void CRYPTO_set_add_lock_callback(int (*func)
8555                                    (int *num, int mount, int type,
8556                                     const char *file, int line));
8557 int (*CRYPTO_get_add_lock_callback(void)) (int *num, int mount, int type,
8558                                            const char *file, int line);
8559 
8560 /* Don't use this structure directly. */
8561 typedef struct crypto_threadid_st {
8562     void *ptr;
8563     unsigned long val;
8564 } CRYPTO_THREADID;
8565 /* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
8566 void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val);
8567 void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr);
8568 int CRYPTO_THREADID_set_callback(void (*threadid_func) (CRYPTO_THREADID *));
8569 void (*CRYPTO_THREADID_get_callback(void)) (CRYPTO_THREADID *);
8570 void CRYPTO_THREADID_current(CRYPTO_THREADID *id);
8571 int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b);
8572 void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src);
8573 unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id);
8574 
8575 void CRYPTO_set_id_callback(unsigned long (*func) (void));
8576 unsigned long (*CRYPTO_get_id_callback(void)) (void);
8577 unsigned long CRYPTO_thread_id(void);
8578 
8579 
8580 const char *CRYPTO_get_lock_name(int type);
8581 int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
8582                     int line);
8583 
8584 int CRYPTO_get_new_dynlockid(void);
8585 void CRYPTO_destroy_dynlockid(int i);
8586 struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i);
8587 void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value
8588                                         *(*dyn_create_function) (const char
8589                                                                  *file,
8590                                                                  int line));
8591 void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)
8592                                        (int mode,
8593                                         struct CRYPTO_dynlock_value *l,
8594                                         const char *file, int line));
8595 void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)
8596                                           (struct CRYPTO_dynlock_value *l,
8597                                            const char *file, int line));
8598 struct CRYPTO_dynlock_value
8599 *(*CRYPTO_get_dynlock_create_callback(void)) (const char *file, int line);
8600 void (*CRYPTO_get_dynlock_lock_callback(void)) (int mode,
8601                                                 struct CRYPTO_dynlock_value
8602                                                 *l, const char *file,
8603                                                 int line);
8604 void (*CRYPTO_get_dynlock_destroy_callback(void)) (struct CRYPTO_dynlock_value
8605                                                    *l, const char *file,
8606                                                    int line);
8607 
8608 /*
8609  * CRYPTO_set_mem_functions includes CRYPTO_set_locked_mem_functions -- call
8610  * the latter last if you need different functions
8611  */
8612 int CRYPTO_set_mem_functions(void *(*m) (size_t), void *(*r) (void *, size_t),
8613                              void (*f) (void *));
8614 int CRYPTO_set_locked_mem_functions(void *(*m) (size_t),
8615                                     void (*free_func) (void *));
8616 int CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int),
8617                                 void *(*r) (void *, size_t, const char *,
8618                                             int), void (*f) (void *));
8619 int CRYPTO_set_locked_mem_ex_functions(void *(*m) (size_t, const char *, int),
8620                                        void (*free_func) (void *));
8621 int CRYPTO_set_mem_debug_functions(void (*m)
8622                                     (void *, int, const char *, int, int),
8623                                    void (*r) (void *, void *, int,
8624                                               const char *, int, int),
8625                                    void (*f) (void *, int), void (*so) (long),
8626                                    long (*go) (void));
8627 void CRYPTO_get_mem_functions(void *(**m) (size_t),
8628                               void *(**r) (void *, size_t),
8629                               void (**f) (void *));
8630 void CRYPTO_get_locked_mem_functions(void *(**m) (size_t),
8631                                      void (**f) (void *));
8632 void CRYPTO_get_mem_ex_functions(void *(**m) (size_t, const char *, int),
8633                                  void *(**r) (void *, size_t, const char *,
8634                                               int), void (**f) (void *));
8635 void CRYPTO_get_locked_mem_ex_functions(void
8636                                         *(**m) (size_t, const char *, int),
8637                                         void (**f) (void *));
8638 void CRYPTO_get_mem_debug_functions(void (**m)
8639                                      (void *, int, const char *, int, int),
8640                                     void (**r) (void *, void *, int,
8641                                                 const char *, int, int),
8642                                     void (**f) (void *, int),
8643                                     void (**so) (long), long (**go) (void));
8644 
8645 void *CRYPTO_malloc_locked(int num, const char *file, int line);
8646 void CRYPTO_free_locked(void *ptr);
8647 void *CRYPTO_malloc(int num, const char *file, int line);
8648 char *CRYPTO_strdup(const char *str, const char *file, int line);
8649 void CRYPTO_free(void *ptr);
8650 void *CRYPTO_realloc(void *addr, int num, const char *file, int line);
8651 void *CRYPTO_realloc_clean(void *addr, int old_num, int num, const char *file,
8652                            int line);
8653 void *CRYPTO_remalloc(void *addr, int num, const char *file, int line);
8654 
8655 void OPENSSL_cleanse(void *ptr, size_t len);
8656 
8657 void CRYPTO_set_mem_debug_options(long bits);
8658 long CRYPTO_get_mem_debug_options(void);
8659 
8660 
8661 
8662 int CRYPTO_push_info_(const char *info, const char *file, int line);
8663 int CRYPTO_pop_info(void);
8664 int CRYPTO_remove_all_info(void);
8665 
8666 /*
8667  * Default debugging functions (enabled by CRYPTO_malloc_debug_init() macro;
8668  * used as default in CRYPTO_MDEBUG compilations):
8669  */
8670 /*-
8671  * The last argument has the following significance:
8672  *
8673  * 0:   called before the actual memory allocation has taken place
8674  * 1:   called after the actual memory allocation has taken place
8675  */
8676 void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line,
8677                        int before_p);
8678 void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, const char *file,
8679                         int line, int before_p);
8680 void CRYPTO_dbg_free(void *addr, int before_p);
8681 /*-
8682  * Tell the debugging code about options.  By default, the following values
8683  * apply:
8684  *
8685  * 0:                           Clear all options.
8686  * V_CRYPTO_MDEBUG_TIME (1):    Set the "Show Time" option.
8687  * V_CRYPTO_MDEBUG_THREAD (2):  Set the "Show Thread Number" option.
8688  * V_CRYPTO_MDEBUG_ALL (3):     1 + 2
8689  */
8690 void CRYPTO_dbg_set_options(long bits);
8691 long CRYPTO_dbg_get_options(void);
8692 
8693 
8694 void CRYPTO_mem_leaks_fp(FILE *);
8695 
8696 void CRYPTO_mem_leaks(struct bio_st *bio);
8697 /* unsigned long order, char *file, int line, int num_bytes, char *addr */
8698 typedef void *CRYPTO_MEM_LEAK_CB (unsigned long, const char *, int, int,
8699                                   void *);
8700 void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb);
8701 
8702 /* die if we have to */
8703 void OpenSSLDie(const char *file, int line, const char *assertion);
8704 
8705 
8706 unsigned long *OPENSSL_ia32cap_loc(void);
8707 
8708 int OPENSSL_isservice(void);
8709 
8710 int FIPS_mode(void);
8711 int FIPS_mode_set(int r);
8712 
8713 void OPENSSL_init(void);
8714 # 624 "/usr/include/openssl/crypto.h" 3 4
8715 /*
8716  * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal.
8717  * It takes an amount of time dependent on |len|, but independent of the
8718  * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
8719  * into a defined order as the return value when a != b is undefined, other
8720  * than to be non-zero.
8721  */
8722 int CRYPTO_memcmp(const volatile void *a, const volatile void *b, size_t len);
8723 
8724 /* BEGIN ERROR CODES */
8725 /*
8726  * The following lines are auto generated by the script mkerr.pl. Any changes
8727  * made after this point may be overwritten when the script is next run.
8728  */
8729 void ERR_load_CRYPTO_strings(void);
8730 
8731 /* Error codes for the CRYPTO functions. */
8732 
8733 /* Function codes. */
8734 # 654 "/usr/include/openssl/crypto.h" 3 4
8735 /* Reason codes. */
8736 # 70 "/usr/include/openssl/bio.h" 2 3 4
8737 # 83 "/usr/include/openssl/bio.h" 3 4
8738 /* These are the 'types' of BIOs */
8739 # 116 "/usr/include/openssl/bio.h" 3 4
8740 /*
8741  * BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
8742  * BIO_set_fp(in,stdin,BIO_NOCLOSE);
8743  */
8744 
8745 
8746 
8747 /*
8748  * These are used in the following macros and are passed to BIO_ctrl()
8749  */
8750 # 139 "/usr/include/openssl/bio.h" 3 4
8751 /* callback is int cb(BIO *bio,state,ret); */
8752 
8753 
8754 
8755 
8756 
8757 /* dgram BIO stuff */
8758 # 157 "/usr/include/openssl/bio.h" 3 4
8759 /* #ifdef IP_MTU_DISCOVER */
8760 
8761 /* #endif */
8762 # 196 "/usr/include/openssl/bio.h" 3 4
8763 /* modifiers */
8764 # 208 "/usr/include/openssl/bio.h" 3 4
8765 /*
8766  * "UPLINK" flag denotes file descriptors provided by application. It
8767  * defaults to 0, as most platforms don't require UPLINK interface.
8768  */
8769 
8770 
8771 
8772 /* Used in BIO_gethostbyname() */
8773 
8774 
8775 
8776 
8777 
8778 
8779 /* Mostly used in the SSL BIO */
8780 /*-
8781  * Not used anymore
8782  * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10
8783  * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20
8784  * #define BIO_FLAGS_PROTOCOL_STARTUP   0x40
8785  */
8786 
8787 
8788 
8789 /*
8790  * This is used with memory BIOs: it means we shouldn't free up or change the
8791  * data in any way.
8792  */
8793 
8794 
8795 typedef struct bio_st BIO;
8796 
8797 void BIO_set_flags(BIO *b, int flags);
8798 int BIO_test_flags(const BIO *b, int flags);
8799 void BIO_clear_flags(BIO *b, int flags);
8800 # 252 "/usr/include/openssl/bio.h" 3 4
8801 /* These are normally used internally in BIOs */
8802 
8803 
8804 
8805 
8806 
8807 /* These should be used by the application to tell why we should retry */
8808 
8809 
8810 
8811 
8812 
8813 
8814 /*
8815  * The next three are used in conjunction with the BIO_should_io_special()
8816  * condition.  After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int
8817  * *reason); will walk the BIO stack and return the 'reason' for the special
8818  * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return
8819  * the code.
8820  */
8821 /*
8822  * Returned from the SSL bio when the certificate retrieval code had an error
8823  */
8824 
8825 /* Returned from the connect BIO when a connect would have blocked */
8826 
8827 /* Returned from the accept BIO when an accept would have blocked */
8828 
8829 
8830 /* These are passed by the BIO callback */
8831 
8832 
8833 
8834 
8835 
8836 
8837 
8838 /*
8839  * The callback is called before and after the underling operation, The
8840  * BIO_CB_RETURN flag indicates if it is after the call
8841  */
8842 
8843 
8844 
8845 
8846 
8847 long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *,
8848                                         int, long, long);
8849 void BIO_set_callback(BIO *b,
8850                       long (*callback) (struct bio_st *, int, const char *,
8851                                         int, long, long));
8852 char *BIO_get_callback_arg(const BIO *b);
8853 void BIO_set_callback_arg(BIO *b, char *arg);
8854 
8855 const char *BIO_method_name(const BIO *b);
8856 int BIO_method_type(const BIO *b);
8857 
8858 typedef void bio_info_cb (struct bio_st *, int, const char *, int, long,
8859                           long);
8860 
8861 typedef struct bio_method_st {
8862     int type;
8863     const char *name;
8864     int (*bwrite) (BIO *, const char *, int);
8865     int (*bread) (BIO *, char *, int);
8866     int (*bputs) (BIO *, const char *);
8867     int (*bgets) (BIO *, char *, int);
8868     long (*ctrl) (BIO *, int, long, void *);
8869     int (*create) (BIO *);
8870     int (*destroy) (BIO *);
8871     long (*callback_ctrl) (BIO *, int, bio_info_cb *);
8872 } BIO_METHOD;
8873 
8874 struct bio_st {
8875     BIO_METHOD *method;
8876     /* bio, mode, argp, argi, argl, ret */
8877     long (*callback) (struct bio_st *, int, const char *, int, long, long);
8878     char *cb_arg; /* first argument for the callback */
8879     int init;
8880     int shutdown;
8881     int flags; /* extra storage */
8882     int retry_reason;
8883     int num;
8884     void *ptr;
8885     struct bio_st *next_bio; /* used by filter BIOs */
8886     struct bio_st *prev_bio; /* used by filter BIOs */
8887     int references;
8888     unsigned long num_read;
8889     unsigned long num_write;
8890     CRYPTO_EX_DATA ex_data;
8891 };
8892 
8893 struct stack_st_BIO { _STACK stack; };
8894 
8895 typedef struct bio_f_buffer_ctx_struct {
8896     /*-
8897      * Buffers are setup like this:
8898      *
8899      * <---------------------- size ----------------------->
8900      * +---------------------------------------------------+
8901      * | consumed | remaining          | free space        |
8902      * +---------------------------------------------------+
8903      * <-- off --><------- len ------->
8904      */
8905     /*- BIO *bio; *//*
8906      * this is now in the BIO struct
8907      */
8908     int ibuf_size; /* how big is the input buffer */
8909     int obuf_size; /* how big is the output buffer */
8910     char *ibuf; /* the char array */
8911     int ibuf_len; /* how many bytes are in it */
8912     int ibuf_off; /* write/read offset */
8913     char *obuf; /* the char array */
8914     int obuf_len; /* how many bytes are in it */
8915     int obuf_off; /* write/read offset */
8916 } BIO_F_BUFFER_CTX;
8917 
8918 /* Prefix and suffix callback in ASN1 BIO */
8919 typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen,
8920                           void *parg);
8921 # 398 "/usr/include/openssl/bio.h" 3 4
8922 /* connect BIO stuff */
8923 # 407 "/usr/include/openssl/bio.h" 3 4
8924 /*
8925  * #define BIO_CONN_get_param_hostname BIO_ctrl
8926  */
8927 # 474 "/usr/include/openssl/bio.h" 3 4
8928 /* BIO_s_connect() and BIO_s_socks4a_connect() */
8929 # 486 "/usr/include/openssl/bio.h" 3 4
8930 /* BIO_s_accept() */
8931 
8932 
8933 /* #define BIO_set_nbio(b,n)    BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
8934 # 499 "/usr/include/openssl/bio.h" 3 4
8935 /* BIO_s_accept() and BIO_s_connect() */
8936 
8937 
8938 
8939 
8940 /* BIO_s_proxy_client() */
8941 
8942 
8943 /* BIO_set_nbio(b,n) */
8944 
8945 /* BIO *BIO_get_filter_bio(BIO *bio); */
8946 # 519 "/usr/include/openssl/bio.h" 3 4
8947 /* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */
8948 
8949 
8950 
8951 /* BIO_s_file() */
8952 
8953 
8954 
8955 /* BIO_s_fd() and BIO_s_file() */
8956 
8957 
8958 
8959 /*
8960  * name is cast to lose const, but might be better to route through a
8961  * function so we can do it safely
8962  */
8963 # 552 "/usr/include/openssl/bio.h" 3 4
8964 /*
8965  * WARNING WARNING, this ups the reference count on the read bio of the SSL
8966  * structure.  This is because the ssl read BIO is now pointed to by the
8967  * next_bio field in the bio.  So when you free the BIO, make sure you are
8968  * doing a BIO_free_all() to catch the underlying BIO.
8969  */
8970 # 568 "/usr/include/openssl/bio.h" 3 4
8971 /* defined in evp.h */
8972 /* #define BIO_set_md(b,md)     BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */
8973 
8974 
8975 
8976 
8977 
8978 
8979 
8980 /* For the BIO_f_buffer() type */
8981 
8982 
8983 
8984 
8985 
8986 
8987 /* Don't use the next one unless you know what you are doing :-) */
8988 # 593 "/usr/include/openssl/bio.h" 3 4
8989 /* ...pending macros have inappropriate return type */
8990 size_t BIO_ctrl_pending(BIO *b);
8991 size_t BIO_ctrl_wpending(BIO *b);
8992 
8993 
8994 
8995 
8996 
8997 /* For the BIO_f_buffer() type */
8998 
8999 
9000 /* For BIO_s_bio() */
9001 
9002 
9003 
9004 
9005 
9006 /* macros with inappropriate type -- but ...pending macros use int too: */
9007 
9008 
9009 size_t BIO_ctrl_get_write_guarantee(BIO *b);
9010 size_t BIO_ctrl_get_read_request(BIO *b);
9011 int BIO_ctrl_reset_read_request(BIO *b);
9012 
9013 /* ctrl macros for dgram */
9014 # 633 "/usr/include/openssl/bio.h" 3 4
9015 /* These two aren't currently implemented */
9016 /* int BIO_get_ex_num(BIO *bio); */
9017 /* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */
9018 int BIO_set_ex_data(BIO *bio, int idx, void *data);
9019 void *BIO_get_ex_data(BIO *bio, int idx);
9020 int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
9021                          CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
9022 unsigned long BIO_number_read(BIO *bio);
9023 unsigned long BIO_number_written(BIO *bio);
9024 
9025 /* For BIO_f_asn1() */
9026 int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
9027                         asn1_ps_func *prefix_free);
9028 int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
9029                         asn1_ps_func **pprefix_free);
9030 int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
9031                         asn1_ps_func *suffix_free);
9032 int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
9033                         asn1_ps_func **psuffix_free);
9034 
9035 
9036 BIO_METHOD *BIO_s_file(void);
9037 BIO *BIO_new_file(const char *filename, const char *mode);
9038 BIO *BIO_new_fp(FILE *stream, int close_flag);
9039 
9040 
9041 BIO *BIO_new(BIO_METHOD *type);
9042 int BIO_set(BIO *a, BIO_METHOD *type);
9043 int BIO_free(BIO *a);
9044 void BIO_vfree(BIO *a);
9045 int BIO_read(BIO *b, void *data, int len);
9046 int BIO_gets(BIO *bp, char *buf, int size);
9047 int BIO_write(BIO *b, const void *data, int len);
9048 int BIO_puts(BIO *bp, const char *buf);
9049 int BIO_indent(BIO *b, int indent, int max);
9050 long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
9051 long BIO_callback_ctrl(BIO *b, int cmd,
9052                        void (*fp) (struct bio_st *, int, const char *, int,
9053                                    long, long));
9054 char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
9055 long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
9056 BIO *BIO_push(BIO *b, BIO *append);
9057 BIO *BIO_pop(BIO *b);
9058 void BIO_free_all(BIO *a);
9059 BIO *BIO_find_type(BIO *b, int bio_type);
9060 BIO *BIO_next(BIO *b);
9061 BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
9062 int BIO_get_retry_reason(BIO *bio);
9063 BIO *BIO_dup_chain(BIO *in);
9064 
9065 int BIO_nread0(BIO *bio, char **buf);
9066 int BIO_nread(BIO *bio, char **buf, int num);
9067 int BIO_nwrite0(BIO *bio, char **buf);
9068 int BIO_nwrite(BIO *bio, char **buf, int num);
9069 
9070 long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi,
9071                         long argl, long ret);
9072 
9073 BIO_METHOD *BIO_s_mem(void);
9074 BIO *BIO_new_mem_buf(const void *buf, int len);
9075 BIO_METHOD *BIO_s_socket(void);
9076 BIO_METHOD *BIO_s_connect(void);
9077 BIO_METHOD *BIO_s_accept(void);
9078 BIO_METHOD *BIO_s_fd(void);
9079 
9080 BIO_METHOD *BIO_s_log(void);
9081 
9082 BIO_METHOD *BIO_s_bio(void);
9083 BIO_METHOD *BIO_s_null(void);
9084 BIO_METHOD *BIO_f_null(void);
9085 BIO_METHOD *BIO_f_buffer(void);
9086 
9087 
9088 
9089 BIO_METHOD *BIO_f_nbio_test(void);
9090 
9091 BIO_METHOD *BIO_s_datagram(void);
9092 
9093 
9094 
9095 
9096 
9097 /* BIO_METHOD *BIO_f_ber(void); */
9098 
9099 int BIO_sock_should_retry(int i);
9100 int BIO_sock_non_fatal_error(int error);
9101 int BIO_dgram_non_fatal_error(int error);
9102 
9103 int BIO_fd_should_retry(int i);
9104 int BIO_fd_non_fatal_error(int error);
9105 int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),
9106                 void *u, const char *s, int len);
9107 int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
9108                        void *u, const char *s, int len, int indent);
9109 int BIO_dump(BIO *b, const char *bytes, int len);
9110 int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent);
9111 
9112 int BIO_dump_fp(FILE *fp, const char *s, int len);
9113 int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent);
9114 
9115 int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data,
9116                    int datalen);
9117 
9118 struct hostent *BIO_gethostbyname(const char *name);
9119 /*-
9120  * We might want a thread-safe interface too:
9121  * struct hostent *BIO_gethostbyname_r(const char *name,
9122  *     struct hostent *result, void *buffer, size_t buflen);
9123  * or something similar (caller allocates a struct hostent,
9124  * pointed to by "result", and additional buffer space for the various
9125  * substructures; if the buffer does not suffice, NULL is returned
9126  * and an appropriate error code is set).
9127  */
9128 int BIO_sock_error(int sock);
9129 int BIO_socket_ioctl(int fd, long type, void *arg);
9130 int BIO_socket_nbio(int fd, int mode);
9131 int BIO_get_port(const char *str, unsigned short *port_ptr);
9132 int BIO_get_host_ip(const char *str, unsigned char *ip);
9133 int BIO_get_accept_socket(char *host_port, int mode);
9134 int BIO_accept(int sock, char **ip_port);
9135 int BIO_sock_init(void);
9136 void BIO_sock_cleanup(void);
9137 int BIO_set_tcp_ndelay(int sock, int turn_on);
9138 
9139 BIO *BIO_new_socket(int sock, int close_flag);
9140 BIO *BIO_new_dgram(int fd, int close_flag);
9141 # 771 "/usr/include/openssl/bio.h" 3 4
9142 BIO *BIO_new_fd(int fd, int close_flag);
9143 BIO *BIO_new_connect(const char *host_port);
9144 BIO *BIO_new_accept(const char *host_port);
9145 
9146 int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
9147                      BIO **bio2, size_t writebuf2);
9148 /*
9149  * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
9150  * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default
9151  * value.
9152  */
9153 
9154 void BIO_copy_next_retry(BIO *b);
9155 
9156 /*
9157  * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
9158  */
9159 
9160 
9161 
9162 
9163 
9164 
9165 int BIO_printf(BIO *bio, const char *format, ...)
9166 __attribute__((__format__(__printf__, 2, 3)));
9167 int BIO_vprintf(BIO *bio, const char *format, va_list args)
9168 __attribute__((__format__(__printf__, 2, 0)));
9169 int BIO_snprintf(char *buf, size_t n, const char *format, ...)
9170 __attribute__((__format__(__printf__, 3, 4)));
9171 int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
9172 __attribute__((__format__(__printf__, 3, 0)));
9173 
9174 
9175 /* BEGIN ERROR CODES */
9176 /*
9177  * The following lines are auto generated by the script mkerr.pl. Any changes
9178  * made after this point may be overwritten when the script is next run.
9179  */
9180 void ERR_load_BIO_strings(void);
9181 
9182 /* Error codes for the BIO functions. */
9183 
9184 /* Function codes. */
9185 # 849 "/usr/include/openssl/bio.h" 3 4
9186 /* Reason codes. */
9187 # 44 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
9188 # 1 "/usr/include/openssl/x509.h" 1 3 4
9189 /* crypto/x509/x509.h */
9190 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
9191  * All rights reserved.
9192  *
9193  * This package is an SSL implementation written
9194  * by Eric Young (eay@cryptsoft.com).
9195  * The implementation was written so as to conform with Netscapes SSL.
9196  *
9197  * This library is free for commercial and non-commercial use as long as
9198  * the following conditions are aheared to.  The following conditions
9199  * apply to all code found in this distribution, be it the RC4, RSA,
9200  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
9201  * included with this distribution is covered by the same copyright terms
9202  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
9203  *
9204  * Copyright remains Eric Young's, and as such any Copyright notices in
9205  * the code are not to be removed.
9206  * If this package is used in a product, Eric Young should be given attribution
9207  * as the author of the parts of the library used.
9208  * This can be in the form of a textual message at program startup or
9209  * in documentation (online or textual) provided with the package.
9210  *
9211  * Redistribution and use in source and binary forms, with or without
9212  * modification, are permitted provided that the following conditions
9213  * are met:
9214  * 1. Redistributions of source code must retain the copyright
9215  *    notice, this list of conditions and the following disclaimer.
9216  * 2. Redistributions in binary form must reproduce the above copyright
9217  *    notice, this list of conditions and the following disclaimer in the
9218  *    documentation and/or other materials provided with the distribution.
9219  * 3. All advertising materials mentioning features or use of this software
9220  *    must display the following acknowledgement:
9221  *    "This product includes cryptographic software written by
9222  *     Eric Young (eay@cryptsoft.com)"
9223  *    The word 'cryptographic' can be left out if the rouines from the library
9224  *    being used are not cryptographic related :-).
9225  * 4. If you include any Windows specific code (or a derivative thereof) from
9226  *    the apps directory (application code) you must include an acknowledgement:
9227  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
9228  *
9229  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
9230  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9231  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
9232  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
9233  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9234  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
9235  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9236  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
9237  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
9238  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
9239  * SUCH DAMAGE.
9240  *
9241  * The licence and distribution terms for any publically available version or
9242  * derivative of this code cannot be changed.  i.e. this code cannot simply be
9243  * copied and put under another distribution licence
9244  * [including the GNU Public Licence.]
9245  */
9246 /* ====================================================================
9247  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
9248  * ECDH support in OpenSSL originally developed by
9249  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
9250  */
9251 
9252 
9253 
9254 
9255 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
9256 /* e_os2.h */
9257 /* ====================================================================
9258  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
9259  *
9260  * Redistribution and use in source and binary forms, with or without
9261  * modification, are permitted provided that the following conditions
9262  * are met:
9263  *
9264  * 1. Redistributions of source code must retain the above copyright
9265  *    notice, this list of conditions and the following disclaimer.
9266  *
9267  * 2. Redistributions in binary form must reproduce the above copyright
9268  *    notice, this list of conditions and the following disclaimer in
9269  *    the documentation and/or other materials provided with the
9270  *    distribution.
9271  *
9272  * 3. All advertising materials mentioning features or use of this
9273  *    software must display the following acknowledgment:
9274  *    "This product includes software developed by the OpenSSL Project
9275  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9276  *
9277  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9278  *    endorse or promote products derived from this software without
9279  *    prior written permission. For written permission, please contact
9280  *    openssl-core@openssl.org.
9281  *
9282  * 5. Products derived from this software may not be called "OpenSSL"
9283  *    nor may "OpenSSL" appear in their names without prior written
9284  *    permission of the OpenSSL Project.
9285  *
9286  * 6. Redistributions of any form whatsoever must retain the following
9287  *    acknowledgment:
9288  *    "This product includes software developed by the OpenSSL Project
9289  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
9290  *
9291  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
9292  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9293  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9294  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
9295  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9296  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
9297  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
9298  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9299  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9300  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9301  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
9302  * OF THE POSSIBILITY OF SUCH DAMAGE.
9303  * ====================================================================
9304  *
9305  * This product includes cryptographic software written by Eric Young
9306  * (eay@cryptsoft.com).  This product includes software written by Tim
9307  * Hudson (tjh@cryptsoft.com).
9308  *
9309  */
9310 
9311 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
9312 /* opensslconf.h */
9313 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
9314 
9315 
9316 
9317 
9318 /* OpenSSL was configured with the following options: */
9319 # 108 "/usr/include/openssl/opensslconf.h" 3 4
9320 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
9321    asks for it.  This is a transient feature that is provided for those
9322    who haven't had the time to do the appropriate changes in their
9323    applications.  */
9324 # 204 "/usr/include/openssl/opensslconf.h" 3 4
9325 /* crypto/opensslconf.h.in */
9326 
9327 /* Generate 80386 code? */
9328 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
9329 # 68 "/usr/include/openssl/x509.h" 2 3 4
9330 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
9331 /* ====================================================================
9332  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
9333  *
9334  * Redistribution and use in source and binary forms, with or without
9335  * modification, are permitted provided that the following conditions
9336  * are met:
9337  *
9338  * 1. Redistributions of source code must retain the above copyright
9339  *    notice, this list of conditions and the following disclaimer.
9340  *
9341  * 2. Redistributions in binary form must reproduce the above copyright
9342  *    notice, this list of conditions and the following disclaimer in
9343  *    the documentation and/or other materials provided with the
9344  *    distribution.
9345  *
9346  * 3. All advertising materials mentioning features or use of this
9347  *    software must display the following acknowledgment:
9348  *    "This product includes software developed by the OpenSSL Project
9349  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9350  *
9351  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9352  *    endorse or promote products derived from this software without
9353  *    prior written permission. For written permission, please contact
9354  *    openssl-core@openssl.org.
9355  *
9356  * 5. Products derived from this software may not be called "OpenSSL"
9357  *    nor may "OpenSSL" appear in their names without prior written
9358  *    permission of the OpenSSL Project.
9359  *
9360  * 6. Redistributions of any form whatsoever must retain the following
9361  *    acknowledgment:
9362  *    "This product includes software developed by the OpenSSL Project
9363  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
9364  *
9365  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
9366  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9367  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9368  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
9369  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9370  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
9371  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
9372  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9373  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9374  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9375  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
9376  * OF THE POSSIBILITY OF SUCH DAMAGE.
9377  * ====================================================================
9378  *
9379  * This product includes cryptographic software written by Eric Young
9380  * (eay@cryptsoft.com).  This product includes software written by Tim
9381  * Hudson (tjh@cryptsoft.com).
9382  *
9383  */
9384 # 69 "/usr/include/openssl/x509.h" 2 3 4
9385 
9386 # 1 "/usr/include/openssl/buffer.h" 1 3 4
9387 /* crypto/buffer/buffer.h */
9388 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
9389  * All rights reserved.
9390  *
9391  * This package is an SSL implementation written
9392  * by Eric Young (eay@cryptsoft.com).
9393  * The implementation was written so as to conform with Netscapes SSL.
9394  *
9395  * This library is free for commercial and non-commercial use as long as
9396  * the following conditions are aheared to.  The following conditions
9397  * apply to all code found in this distribution, be it the RC4, RSA,
9398  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
9399  * included with this distribution is covered by the same copyright terms
9400  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
9401  *
9402  * Copyright remains Eric Young's, and as such any Copyright notices in
9403  * the code are not to be removed.
9404  * If this package is used in a product, Eric Young should be given attribution
9405  * as the author of the parts of the library used.
9406  * This can be in the form of a textual message at program startup or
9407  * in documentation (online or textual) provided with the package.
9408  *
9409  * Redistribution and use in source and binary forms, with or without
9410  * modification, are permitted provided that the following conditions
9411  * are met:
9412  * 1. Redistributions of source code must retain the copyright
9413  *    notice, this list of conditions and the following disclaimer.
9414  * 2. Redistributions in binary form must reproduce the above copyright
9415  *    notice, this list of conditions and the following disclaimer in the
9416  *    documentation and/or other materials provided with the distribution.
9417  * 3. All advertising materials mentioning features or use of this software
9418  *    must display the following acknowledgement:
9419  *    "This product includes cryptographic software written by
9420  *     Eric Young (eay@cryptsoft.com)"
9421  *    The word 'cryptographic' can be left out if the rouines from the library
9422  *    being used are not cryptographic related :-).
9423  * 4. If you include any Windows specific code (or a derivative thereof) from
9424  *    the apps directory (application code) you must include an acknowledgement:
9425  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
9426  *
9427  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
9428  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9429  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
9430  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
9431  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9432  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
9433  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9434  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
9435  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
9436  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
9437  * SUCH DAMAGE.
9438  *
9439  * The licence and distribution terms for any publically available version or
9440  * derivative of this code cannot be changed.  i.e. this code cannot simply be
9441  * copied and put under another distribution licence
9442  * [including the GNU Public Licence.]
9443  */
9444 
9445 
9446 
9447 
9448 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
9449 /* ====================================================================
9450  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
9451  *
9452  * Redistribution and use in source and binary forms, with or without
9453  * modification, are permitted provided that the following conditions
9454  * are met:
9455  *
9456  * 1. Redistributions of source code must retain the above copyright
9457  *    notice, this list of conditions and the following disclaimer.
9458  *
9459  * 2. Redistributions in binary form must reproduce the above copyright
9460  *    notice, this list of conditions and the following disclaimer in
9461  *    the documentation and/or other materials provided with the
9462  *    distribution.
9463  *
9464  * 3. All advertising materials mentioning features or use of this
9465  *    software must display the following acknowledgment:
9466  *    "This product includes software developed by the OpenSSL Project
9467  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9468  *
9469  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9470  *    endorse or promote products derived from this software without
9471  *    prior written permission. For written permission, please contact
9472  *    openssl-core@openssl.org.
9473  *
9474  * 5. Products derived from this software may not be called "OpenSSL"
9475  *    nor may "OpenSSL" appear in their names without prior written
9476  *    permission of the OpenSSL Project.
9477  *
9478  * 6. Redistributions of any form whatsoever must retain the following
9479  *    acknowledgment:
9480  *    "This product includes software developed by the OpenSSL Project
9481  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
9482  *
9483  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
9484  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9485  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9486  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
9487  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9488  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
9489  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
9490  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9491  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9492  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9493  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
9494  * OF THE POSSIBILITY OF SUCH DAMAGE.
9495  * ====================================================================
9496  *
9497  * This product includes cryptographic software written by Eric Young
9498  * (eay@cryptsoft.com).  This product includes software written by Tim
9499  * Hudson (tjh@cryptsoft.com).
9500  *
9501  */
9502 # 63 "/usr/include/openssl/buffer.h" 2 3 4
9503 
9504 
9505 
9506 
9507 
9508 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 1 3 4
9509 /*
9510  * CDDL HEADER START
9511  *
9512  * The contents of this file are subject to the terms of the
9513  * Common Development and Distribution License, Version 1.0 only
9514  * (the "License").  You may not use this file except in compliance
9515  * with the License.
9516  *
9517  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9518  * or http://www.opensolaris.org/os/licensing.
9519  * See the License for the specific language governing permissions
9520  * and limitations under the License.
9521  *
9522  * When distributing Covered Code, include this CDDL HEADER in each
9523  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9524  * If applicable, add the following below this CDDL HEADER, with the
9525  * fields enclosed by brackets "[]" replaced with your own identifying
9526  * information: Portions Copyright [yyyy] [name of copyright owner]
9527  *
9528  * CDDL HEADER END
9529  */
9530 /*	Copyright (c) 1988 AT&T	*/
9531 /*	  All Rights Reserved  	*/
9532 
9533 
9534 /*
9535  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
9536  * Use is subject to license terms.
9537  */
9538 
9539 
9540 
9541 
9542 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1 3 4
9543 /*
9544  * CDDL HEADER START
9545  *
9546  * The contents of this file are subject to the terms of the
9547  * Common Development and Distribution License (the "License").
9548  * You may not use this file except in compliance with the License.
9549  *
9550  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9551  * or http://www.opensolaris.org/os/licensing.
9552  * See the License for the specific language governing permissions
9553  * and limitations under the License.
9554  *
9555  *
9556  * When distributing Covered Code, include this CDDL HEADER in each
9557  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9558  * If applicable, add the following below this CDDL HEADER, with the
9559  * fields enclosed by brackets "[]" replaced with your own identifying
9560  * information: Portions Copyright [yyyy] [name of copyright owner]
9561  *
9562  * CDDL HEADER END
9563  */
9564 
9565 /*
9566  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
9567  * Use is subject to license terms.
9568  * Copyright 2016 Joyent, Inc.
9569  */
9570 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 2 3 4
9571 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 1 3 4
9572 /*
9573  * CDDL HEADER START
9574  *
9575  * The contents of this file are subject to the terms of the
9576  * Common Development and Distribution License, Version 1.0 only
9577  * (the "License").  You may not use this file except in compliance
9578  * with the License.
9579  *
9580  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9581  * or http://www.opensolaris.org/os/licensing.
9582  * See the License for the specific language governing permissions
9583  * and limitations under the License.
9584  *
9585  * When distributing Covered Code, include this CDDL HEADER in each
9586  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9587  * If applicable, add the following below this CDDL HEADER, with the
9588  * fields enclosed by brackets "[]" replaced with your own identifying
9589  * information: Portions Copyright [yyyy] [name of copyright owner]
9590  *
9591  * CDDL HEADER END
9592  */
9593 /*	Copyright (c) 1988 AT&T	*/
9594 /*	  All Rights Reserved  	*/
9595 
9596 
9597 /*
9598  * Copyright 1999-2003 Sun Microsystems, Inc.  All rights reserved.
9599  * Use is subject to license terms.
9600  */
9601 
9602 /*
9603  * Copyright 2014 PALO, Richard.
9604  * Copyright 2016 Joyent, Inc.
9605  */
9606 
9607 /*
9608  * An application should not include this header directly.  Instead it
9609  * should be included only through the inclusion of other Sun headers.
9610  *
9611  * The contents of this header is limited to identifiers specified in the
9612  * C Standard.  Any new identifiers specified in future amendments to the
9613  * C Standard must be placed in this header.  If these new identifiers
9614  * are required to also be in the C++ Standard "std" namespace, then for
9615  * anything other than macro definitions, corresponding "using" directives
9616  * must also be added to <stddef.h.h>.
9617  */
9618 
9619 
9620 
9621 
9622 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1 3 4
9623 /*
9624  * CDDL HEADER START
9625  *
9626  * The contents of this file are subject to the terms of the
9627  * Common Development and Distribution License (the "License").
9628  * You may not use this file except in compliance with the License.
9629  *
9630  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9631  * or http://www.opensolaris.org/os/licensing.
9632  * See the License for the specific language governing permissions
9633  * and limitations under the License.
9634  *
9635  *
9636  * When distributing Covered Code, include this CDDL HEADER in each
9637  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9638  * If applicable, add the following below this CDDL HEADER, with the
9639  * fields enclosed by brackets "[]" replaced with your own identifying
9640  * information: Portions Copyright [yyyy] [name of copyright owner]
9641  *
9642  * CDDL HEADER END
9643  */
9644 
9645 /*
9646  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
9647  * Use is subject to license terms.
9648  * Copyright 2016 Joyent, Inc.
9649  */
9650 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 2 3 4
9651 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1 3 4
9652 /*
9653  * CDDL HEADER START
9654  *
9655  * The contents of this file are subject to the terms of the
9656  * Common Development and Distribution License (the "License").
9657  * You may not use this file except in compliance with the License.
9658  *
9659  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9660  * or http://www.opensolaris.org/os/licensing.
9661  * See the License for the specific language governing permissions
9662  * and limitations under the License.
9663  *
9664  * When distributing Covered Code, include this CDDL HEADER in each
9665  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9666  * If applicable, add the following below this CDDL HEADER, with the
9667  * fields enclosed by brackets "[]" replaced with your own identifying
9668  * information: Portions Copyright [yyyy] [name of copyright owner]
9669  *
9670  * CDDL HEADER END
9671  */
9672 
9673 /*
9674  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
9675  * Copyright 2016 Joyent, Inc.
9676  *
9677  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
9678  * Use is subject to license terms.
9679  */
9680 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 2 3 4
9681 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1 3 4
9682 /*
9683  * This file and its contents are supplied under the terms of the
9684  * Common Development and Distribution License ("CDDL"), version 1.0.
9685  * You may only use this file in accordance with the terms of version
9686  * 1.0 of the CDDL.
9687  *
9688  * A full copy of the text of the CDDL should have accompanied this
9689  * source.  A copy of the CDDL is also available via the Internet at
9690  * http://www.illumos.org/license/CDDL.
9691  */
9692 
9693 /*
9694  * Copyright 2014-2016 PALO, Richard.
9695  */
9696 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 2 3 4
9697 # 88 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/iso/stddef_iso.h" 3 4
9698 typedef long max_align_t;
9699 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 2 3 4
9700 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stddef.h" 1 3 4
9701 /*
9702  * This file and its contents are supplied under the terms of the
9703  * Common Development and Distribution License ("CDDL"), version 1.0.
9704  * You may only use this file in accordance with the terms of version
9705  * 1.0 of the CDDL.
9706  *
9707  * A full copy of the text of the CDDL should have accompanied this
9708  * source.  A copy of the CDDL is also available via the Internet at
9709  * http://www.illumos.org/license/CDDL.
9710  */
9711 
9712 /*
9713  * Copyright 2017 Toomas Soome <tsoome@me.com>
9714  */
9715 
9716 
9717 
9718 
9719 /*
9720  * Commonly used macros and definitions.
9721  */
9722 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stddef.h" 3 4
9723 /*
9724  * We must not expose container_of() to userland, but we want it
9725  * to be available for early boot and for the kernel.
9726  */
9727 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 2 3 4
9728 
9729 /*
9730  * Allow global visibility for symbols defined in
9731  * C++ "std" namespace in <iso/stddef_iso.h>.
9732  */
9733 # 51 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 3 4
9734 /*
9735  * wchar_t is a built-in type in standard C++ and as such is not
9736  * defined here when using standard C++. However, the GNU compiler
9737  * fixincludes utility nonetheless creates its own version of this
9738  * header for use by gcc and g++. In that version it adds a redundant
9739  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
9740  * header we need to include the following magic comment:
9741  *
9742  * we must use the C++ compiler's type
9743  *
9744  * The above comment should not be removed or changed until GNU
9745  * gcc/fixinc/inclhack.def is updated to bypass this header.
9746  */
9747 # 69 "/usr/include/openssl/buffer.h" 2 3 4
9748 
9749 
9750 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1 3 4
9751 /*
9752  * CDDL HEADER START
9753  *
9754  * The contents of this file are subject to the terms of the
9755  * Common Development and Distribution License (the "License").
9756  * You may not use this file except in compliance with the License.
9757  *
9758  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9759  * or http://www.opensolaris.org/os/licensing.
9760  * See the License for the specific language governing permissions
9761  * and limitations under the License.
9762  *
9763  * When distributing Covered Code, include this CDDL HEADER in each
9764  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9765  * If applicable, add the following below this CDDL HEADER, with the
9766  * fields enclosed by brackets "[]" replaced with your own identifying
9767  * information: Portions Copyright [yyyy] [name of copyright owner]
9768  *
9769  * CDDL HEADER END
9770  */
9771 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
9772 /*	  All Rights Reserved  	*/
9773 
9774 
9775 /*
9776  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
9777  * Use is subject to license terms.
9778  *
9779  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
9780  * Copyright 2016 Joyent, Inc.
9781  */
9782 # 72 "/usr/include/openssl/buffer.h" 2 3 4
9783 
9784 
9785 /* Already declared in ossl_typ.h */
9786 /* typedef struct buf_mem_st BUF_MEM; */
9787 
9788 struct buf_mem_st {
9789     size_t length; /* current number of bytes */
9790     char *data;
9791     size_t max; /* size of buffer */
9792 };
9793 
9794 BUF_MEM *BUF_MEM_new(void);
9795 void BUF_MEM_free(BUF_MEM *a);
9796 int BUF_MEM_grow(BUF_MEM *str, size_t len);
9797 int BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
9798 size_t BUF_strnlen(const char *str, size_t maxlen);
9799 char *BUF_strdup(const char *str);
9800 
9801 /*
9802  * Like strndup, but in addition, explicitly guarantees to never read past the
9803  * first |siz| bytes of |str|.
9804  */
9805 char *BUF_strndup(const char *str, size_t siz);
9806 
9807 void *BUF_memdup(const void *data, size_t siz);
9808 void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz);
9809 
9810 /* safe string functions */
9811 size_t BUF_strlcpy(char *dst, const char *src, size_t siz);
9812 size_t BUF_strlcat(char *dst, const char *src, size_t siz);
9813 
9814 /* BEGIN ERROR CODES */
9815 /*
9816  * The following lines are auto generated by the script mkerr.pl. Any changes
9817  * made after this point may be overwritten when the script is next run.
9818  */
9819 void ERR_load_BUF_strings(void);
9820 
9821 /* Error codes for the BUF functions. */
9822 
9823 /* Function codes. */
9824 
9825 
9826 
9827 
9828 
9829 
9830 
9831 /* Reason codes. */
9832 # 71 "/usr/include/openssl/x509.h" 2 3 4
9833 
9834 
9835 # 1 "/usr/include/openssl/evp.h" 1 3 4
9836 /* crypto/evp/evp.h */
9837 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
9838  * All rights reserved.
9839  *
9840  * This package is an SSL implementation written
9841  * by Eric Young (eay@cryptsoft.com).
9842  * The implementation was written so as to conform with Netscapes SSL.
9843  *
9844  * This library is free for commercial and non-commercial use as long as
9845  * the following conditions are aheared to.  The following conditions
9846  * apply to all code found in this distribution, be it the RC4, RSA,
9847  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
9848  * included with this distribution is covered by the same copyright terms
9849  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
9850  *
9851  * Copyright remains Eric Young's, and as such any Copyright notices in
9852  * the code are not to be removed.
9853  * If this package is used in a product, Eric Young should be given attribution
9854  * as the author of the parts of the library used.
9855  * This can be in the form of a textual message at program startup or
9856  * in documentation (online or textual) provided with the package.
9857  *
9858  * Redistribution and use in source and binary forms, with or without
9859  * modification, are permitted provided that the following conditions
9860  * are met:
9861  * 1. Redistributions of source code must retain the copyright
9862  *    notice, this list of conditions and the following disclaimer.
9863  * 2. Redistributions in binary form must reproduce the above copyright
9864  *    notice, this list of conditions and the following disclaimer in the
9865  *    documentation and/or other materials provided with the distribution.
9866  * 3. All advertising materials mentioning features or use of this software
9867  *    must display the following acknowledgement:
9868  *    "This product includes cryptographic software written by
9869  *     Eric Young (eay@cryptsoft.com)"
9870  *    The word 'cryptographic' can be left out if the rouines from the library
9871  *    being used are not cryptographic related :-).
9872  * 4. If you include any Windows specific code (or a derivative thereof) from
9873  *    the apps directory (application code) you must include an acknowledgement:
9874  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
9875  *
9876  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
9877  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9878  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
9879  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
9880  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9881  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
9882  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9883  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
9884  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
9885  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
9886  * SUCH DAMAGE.
9887  *
9888  * The licence and distribution terms for any publically available version or
9889  * derivative of this code cannot be changed.  i.e. this code cannot simply be
9890  * copied and put under another distribution licence
9891  * [including the GNU Public Licence.]
9892  */
9893 # 66 "/usr/include/openssl/evp.h" 3 4
9894 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
9895 /* opensslconf.h */
9896 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
9897 
9898 
9899 
9900 
9901 /* OpenSSL was configured with the following options: */
9902 # 108 "/usr/include/openssl/opensslconf.h" 3 4
9903 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
9904    asks for it.  This is a transient feature that is provided for those
9905    who haven't had the time to do the appropriate changes in their
9906    applications.  */
9907 # 204 "/usr/include/openssl/opensslconf.h" 3 4
9908 /* crypto/opensslconf.h.in */
9909 
9910 /* Generate 80386 code? */
9911 # 67 "/usr/include/openssl/evp.h" 2 3 4
9912 
9913 
9914 
9915 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
9916 /* ====================================================================
9917  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
9918  *
9919  * Redistribution and use in source and binary forms, with or without
9920  * modification, are permitted provided that the following conditions
9921  * are met:
9922  *
9923  * 1. Redistributions of source code must retain the above copyright
9924  *    notice, this list of conditions and the following disclaimer.
9925  *
9926  * 2. Redistributions in binary form must reproduce the above copyright
9927  *    notice, this list of conditions and the following disclaimer in
9928  *    the documentation and/or other materials provided with the
9929  *    distribution.
9930  *
9931  * 3. All advertising materials mentioning features or use of this
9932  *    software must display the following acknowledgment:
9933  *    "This product includes software developed by the OpenSSL Project
9934  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9935  *
9936  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9937  *    endorse or promote products derived from this software without
9938  *    prior written permission. For written permission, please contact
9939  *    openssl-core@openssl.org.
9940  *
9941  * 5. Products derived from this software may not be called "OpenSSL"
9942  *    nor may "OpenSSL" appear in their names without prior written
9943  *    permission of the OpenSSL Project.
9944  *
9945  * 6. Redistributions of any form whatsoever must retain the following
9946  *    acknowledgment:
9947  *    "This product includes software developed by the OpenSSL Project
9948  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
9949  *
9950  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
9951  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9952  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9953  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
9954  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9955  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
9956  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
9957  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9958  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9959  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9960  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
9961  * OF THE POSSIBILITY OF SUCH DAMAGE.
9962  * ====================================================================
9963  *
9964  * This product includes cryptographic software written by Eric Young
9965  * (eay@cryptsoft.com).  This product includes software written by Tim
9966  * Hudson (tjh@cryptsoft.com).
9967  *
9968  */
9969 # 71 "/usr/include/openssl/evp.h" 2 3 4
9970 
9971 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
9972 /* ====================================================================
9973  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
9974  *
9975  * Redistribution and use in source and binary forms, with or without
9976  * modification, are permitted provided that the following conditions
9977  * are met:
9978  *
9979  * 1. Redistributions of source code must retain the above copyright
9980  *    notice, this list of conditions and the following disclaimer.
9981  *
9982  * 2. Redistributions in binary form must reproduce the above copyright
9983  *    notice, this list of conditions and the following disclaimer in
9984  *    the documentation and/or other materials provided with the
9985  *    distribution.
9986  *
9987  * 3. All advertising materials mentioning features or use of this
9988  *    software must display the following acknowledgment:
9989  *    "This product includes software developed by the OpenSSL Project
9990  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
9991  *
9992  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
9993  *    endorse or promote products derived from this software without
9994  *    prior written permission. For written permission, please contact
9995  *    openssl-core@openssl.org.
9996  *
9997  * 5. Products derived from this software may not be called "OpenSSL"
9998  *    nor may "OpenSSL" appear in their names without prior written
9999  *    permission of the OpenSSL Project.
10000  *
10001  * 6. Redistributions of any form whatsoever must retain the following
10002  *    acknowledgment:
10003  *    "This product includes software developed by the OpenSSL Project
10004  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10005  *
10006  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10007  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10008  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10009  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10010  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10011  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10012  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10013  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10014  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10015  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10016  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10017  * OF THE POSSIBILITY OF SUCH DAMAGE.
10018  * ====================================================================
10019  *
10020  * This product includes cryptographic software written by Eric Young
10021  * (eay@cryptsoft.com).  This product includes software written by Tim
10022  * Hudson (tjh@cryptsoft.com).
10023  *
10024  */
10025 # 73 "/usr/include/openssl/evp.h" 2 3 4
10026 
10027 
10028 # 1 "/usr/include/openssl/bio.h" 1 3 4
10029 /* crypto/bio/bio.h */
10030 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10031  * All rights reserved.
10032  *
10033  * This package is an SSL implementation written
10034  * by Eric Young (eay@cryptsoft.com).
10035  * The implementation was written so as to conform with Netscapes SSL.
10036  *
10037  * This library is free for commercial and non-commercial use as long as
10038  * the following conditions are aheared to.  The following conditions
10039  * apply to all code found in this distribution, be it the RC4, RSA,
10040  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10041  * included with this distribution is covered by the same copyright terms
10042  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10043  *
10044  * Copyright remains Eric Young's, and as such any Copyright notices in
10045  * the code are not to be removed.
10046  * If this package is used in a product, Eric Young should be given attribution
10047  * as the author of the parts of the library used.
10048  * This can be in the form of a textual message at program startup or
10049  * in documentation (online or textual) provided with the package.
10050  *
10051  * Redistribution and use in source and binary forms, with or without
10052  * modification, are permitted provided that the following conditions
10053  * are met:
10054  * 1. Redistributions of source code must retain the copyright
10055  *    notice, this list of conditions and the following disclaimer.
10056  * 2. Redistributions in binary form must reproduce the above copyright
10057  *    notice, this list of conditions and the following disclaimer in the
10058  *    documentation and/or other materials provided with the distribution.
10059  * 3. All advertising materials mentioning features or use of this software
10060  *    must display the following acknowledgement:
10061  *    "This product includes cryptographic software written by
10062  *     Eric Young (eay@cryptsoft.com)"
10063  *    The word 'cryptographic' can be left out if the rouines from the library
10064  *    being used are not cryptographic related :-).
10065  * 4. If you include any Windows specific code (or a derivative thereof) from
10066  *    the apps directory (application code) you must include an acknowledgement:
10067  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10068  *
10069  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10070  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10071  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10072  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10073  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10074  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10075  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10076  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10077  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10078  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10079  * SUCH DAMAGE.
10080  *
10081  * The licence and distribution terms for any publically available version or
10082  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10083  * copied and put under another distribution licence
10084  * [including the GNU Public Licence.]
10085  */
10086 # 76 "/usr/include/openssl/evp.h" 2 3 4
10087 
10088 
10089 /*-
10090 #define EVP_RC2_KEY_SIZE                16
10091 #define EVP_RC4_KEY_SIZE                16
10092 #define EVP_BLOWFISH_KEY_SIZE           16
10093 #define EVP_CAST5_KEY_SIZE              16
10094 #define EVP_RC5_32_12_16_KEY_SIZE       16
10095 */
10096 
10097 
10098 
10099 
10100 
10101 
10102 /* Default PKCS#5 iteration count */
10103 
10104 
10105 # 1 "/usr/include/openssl/objects.h" 1 3 4
10106 /* crypto/objects/objects.h */
10107 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10108  * All rights reserved.
10109  *
10110  * This package is an SSL implementation written
10111  * by Eric Young (eay@cryptsoft.com).
10112  * The implementation was written so as to conform with Netscapes SSL.
10113  *
10114  * This library is free for commercial and non-commercial use as long as
10115  * the following conditions are aheared to.  The following conditions
10116  * apply to all code found in this distribution, be it the RC4, RSA,
10117  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10118  * included with this distribution is covered by the same copyright terms
10119  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10120  *
10121  * Copyright remains Eric Young's, and as such any Copyright notices in
10122  * the code are not to be removed.
10123  * If this package is used in a product, Eric Young should be given attribution
10124  * as the author of the parts of the library used.
10125  * This can be in the form of a textual message at program startup or
10126  * in documentation (online or textual) provided with the package.
10127  *
10128  * Redistribution and use in source and binary forms, with or without
10129  * modification, are permitted provided that the following conditions
10130  * are met:
10131  * 1. Redistributions of source code must retain the copyright
10132  *    notice, this list of conditions and the following disclaimer.
10133  * 2. Redistributions in binary form must reproduce the above copyright
10134  *    notice, this list of conditions and the following disclaimer in the
10135  *    documentation and/or other materials provided with the distribution.
10136  * 3. All advertising materials mentioning features or use of this software
10137  *    must display the following acknowledgement:
10138  *    "This product includes cryptographic software written by
10139  *     Eric Young (eay@cryptsoft.com)"
10140  *    The word 'cryptographic' can be left out if the rouines from the library
10141  *    being used are not cryptographic related :-).
10142  * 4. If you include any Windows specific code (or a derivative thereof) from
10143  *    the apps directory (application code) you must include an acknowledgement:
10144  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10145  *
10146  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10147  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10148  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10149  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10150  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10151  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10152  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10153  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10154  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10155  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10156  * SUCH DAMAGE.
10157  *
10158  * The licence and distribution terms for any publically available version or
10159  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10160  * copied and put under another distribution licence
10161  * [including the GNU Public Licence.]
10162  */
10163 
10164 
10165 
10166 
10167 
10168 
10169 
10170 # 1 "/usr/include/openssl/obj_mac.h" 1 3 4
10171 /* crypto/objects/obj_mac.h */
10172 
10173 /*
10174  * THIS FILE IS GENERATED FROM objects.txt by objects.pl via the following
10175  * command: perl objects.pl objects.txt obj_mac.num obj_mac.h
10176  */
10177 
10178 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
10179  * All rights reserved.
10180  *
10181  * This package is an SSL implementation written
10182  * by Eric Young (eay@cryptsoft.com).
10183  * The implementation was written so as to conform with Netscapes SSL.
10184  *
10185  * This library is free for commercial and non-commercial use as long as
10186  * the following conditions are aheared to.  The following conditions
10187  * apply to all code found in this distribution, be it the RC4, RSA,
10188  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10189  * included with this distribution is covered by the same copyright terms
10190  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10191  *
10192  * Copyright remains Eric Young's, and as such any Copyright notices in
10193  * the code are not to be removed.
10194  * If this package is used in a product, Eric Young should be given attribution
10195  * as the author of the parts of the library used.
10196  * This can be in the form of a textual message at program startup or
10197  * in documentation (online or textual) provided with the package.
10198  *
10199  * Redistribution and use in source and binary forms, with or without
10200  * modification, are permitted provided that the following conditions
10201  * are met:
10202  * 1. Redistributions of source code must retain the copyright
10203  *    notice, this list of conditions and the following disclaimer.
10204  * 2. Redistributions in binary form must reproduce the above copyright
10205  *    notice, this list of conditions and the following disclaimer in the
10206  *    documentation and/or other materials provided with the distribution.
10207  * 3. All advertising materials mentioning features or use of this software
10208  *    must display the following acknowledgement:
10209  *    "This product includes cryptographic software written by
10210  *     Eric Young (eay@cryptsoft.com)"
10211  *    The word 'cryptographic' can be left out if the rouines from the library
10212  *    being used are not cryptographic related :-).
10213  * 4. If you include any Windows specific code (or a derivative thereof) from
10214  *    the apps directory (application code) you must include an acknowledgement:
10215  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10216  *
10217  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10218  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10219  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10220  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10221  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10222  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10223  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10224  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10225  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10226  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10227  * SUCH DAMAGE.
10228  *
10229  * The licence and distribution terms for any publically available version or
10230  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10231  * copied and put under another distribution licence
10232  * [including the GNU Public Licence.]
10233  */
10234 # 66 "/usr/include/openssl/objects.h" 2 3 4
10235 # 964 "/usr/include/openssl/objects.h" 3 4
10236 # 1 "/usr/include/openssl/bio.h" 1 3 4
10237 /* crypto/bio/bio.h */
10238 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10239  * All rights reserved.
10240  *
10241  * This package is an SSL implementation written
10242  * by Eric Young (eay@cryptsoft.com).
10243  * The implementation was written so as to conform with Netscapes SSL.
10244  *
10245  * This library is free for commercial and non-commercial use as long as
10246  * the following conditions are aheared to.  The following conditions
10247  * apply to all code found in this distribution, be it the RC4, RSA,
10248  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10249  * included with this distribution is covered by the same copyright terms
10250  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10251  *
10252  * Copyright remains Eric Young's, and as such any Copyright notices in
10253  * the code are not to be removed.
10254  * If this package is used in a product, Eric Young should be given attribution
10255  * as the author of the parts of the library used.
10256  * This can be in the form of a textual message at program startup or
10257  * in documentation (online or textual) provided with the package.
10258  *
10259  * Redistribution and use in source and binary forms, with or without
10260  * modification, are permitted provided that the following conditions
10261  * are met:
10262  * 1. Redistributions of source code must retain the copyright
10263  *    notice, this list of conditions and the following disclaimer.
10264  * 2. Redistributions in binary form must reproduce the above copyright
10265  *    notice, this list of conditions and the following disclaimer in the
10266  *    documentation and/or other materials provided with the distribution.
10267  * 3. All advertising materials mentioning features or use of this software
10268  *    must display the following acknowledgement:
10269  *    "This product includes cryptographic software written by
10270  *     Eric Young (eay@cryptsoft.com)"
10271  *    The word 'cryptographic' can be left out if the rouines from the library
10272  *    being used are not cryptographic related :-).
10273  * 4. If you include any Windows specific code (or a derivative thereof) from
10274  *    the apps directory (application code) you must include an acknowledgement:
10275  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10276  *
10277  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10278  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10279  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10280  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10281  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10282  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10283  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10284  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10285  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10286  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10287  * SUCH DAMAGE.
10288  *
10289  * The licence and distribution terms for any publically available version or
10290  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10291  * copied and put under another distribution licence
10292  * [including the GNU Public Licence.]
10293  */
10294 # 965 "/usr/include/openssl/objects.h" 2 3 4
10295 # 1 "/usr/include/openssl/asn1.h" 1 3 4
10296 /* crypto/asn1/asn1.h */
10297 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10298  * All rights reserved.
10299  *
10300  * This package is an SSL implementation written
10301  * by Eric Young (eay@cryptsoft.com).
10302  * The implementation was written so as to conform with Netscapes SSL.
10303  *
10304  * This library is free for commercial and non-commercial use as long as
10305  * the following conditions are aheared to.  The following conditions
10306  * apply to all code found in this distribution, be it the RC4, RSA,
10307  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10308  * included with this distribution is covered by the same copyright terms
10309  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10310  *
10311  * Copyright remains Eric Young's, and as such any Copyright notices in
10312  * the code are not to be removed.
10313  * If this package is used in a product, Eric Young should be given attribution
10314  * as the author of the parts of the library used.
10315  * This can be in the form of a textual message at program startup or
10316  * in documentation (online or textual) provided with the package.
10317  *
10318  * Redistribution and use in source and binary forms, with or without
10319  * modification, are permitted provided that the following conditions
10320  * are met:
10321  * 1. Redistributions of source code must retain the copyright
10322  *    notice, this list of conditions and the following disclaimer.
10323  * 2. Redistributions in binary form must reproduce the above copyright
10324  *    notice, this list of conditions and the following disclaimer in the
10325  *    documentation and/or other materials provided with the distribution.
10326  * 3. All advertising materials mentioning features or use of this software
10327  *    must display the following acknowledgement:
10328  *    "This product includes cryptographic software written by
10329  *     Eric Young (eay@cryptsoft.com)"
10330  *    The word 'cryptographic' can be left out if the rouines from the library
10331  *    being used are not cryptographic related :-).
10332  * 4. If you include any Windows specific code (or a derivative thereof) from
10333  *    the apps directory (application code) you must include an acknowledgement:
10334  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10335  *
10336  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10337  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10338  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10339  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10340  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10341  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10342  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10343  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10344  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10345  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10346  * SUCH DAMAGE.
10347  *
10348  * The licence and distribution terms for any publically available version or
10349  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10350  * copied and put under another distribution licence
10351  * [including the GNU Public Licence.]
10352  */
10353 
10354 
10355 
10356 
10357 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/time.h" 1 3 4
10358 /*
10359  * CDDL HEADER START
10360  *
10361  * The contents of this file are subject to the terms of the
10362  * Common Development and Distribution License (the "License").
10363  * You may not use this file except in compliance with the License.
10364  *
10365  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10366  * or http://www.opensolaris.org/os/licensing.
10367  * See the License for the specific language governing permissions
10368  * and limitations under the License.
10369  *
10370  * When distributing Covered Code, include this CDDL HEADER in each
10371  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
10372  * If applicable, add the following below this CDDL HEADER, with the
10373  * fields enclosed by brackets "[]" replaced with your own identifying
10374  * information: Portions Copyright [yyyy] [name of copyright owner]
10375  *
10376  * CDDL HEADER END
10377  */
10378 /*	Copyright (c) 1988 AT&T	*/
10379 /*	  All Rights Reserved  	*/
10380 
10381 
10382 /*
10383  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
10384  *
10385  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
10386  * Use is subject to license terms.
10387  */
10388 /*
10389  * Copyright 2010 Nexenta Systems, Inc.  Al rights reserved.
10390  * Copyright 2016 Joyent, Inc.
10391  */
10392 # 63 "/usr/include/openssl/asn1.h" 2 3 4
10393 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
10394 /* e_os2.h */
10395 /* ====================================================================
10396  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
10397  *
10398  * Redistribution and use in source and binary forms, with or without
10399  * modification, are permitted provided that the following conditions
10400  * are met:
10401  *
10402  * 1. Redistributions of source code must retain the above copyright
10403  *    notice, this list of conditions and the following disclaimer.
10404  *
10405  * 2. Redistributions in binary form must reproduce the above copyright
10406  *    notice, this list of conditions and the following disclaimer in
10407  *    the documentation and/or other materials provided with the
10408  *    distribution.
10409  *
10410  * 3. All advertising materials mentioning features or use of this
10411  *    software must display the following acknowledgment:
10412  *    "This product includes software developed by the OpenSSL Project
10413  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10414  *
10415  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10416  *    endorse or promote products derived from this software without
10417  *    prior written permission. For written permission, please contact
10418  *    openssl-core@openssl.org.
10419  *
10420  * 5. Products derived from this software may not be called "OpenSSL"
10421  *    nor may "OpenSSL" appear in their names without prior written
10422  *    permission of the OpenSSL Project.
10423  *
10424  * 6. Redistributions of any form whatsoever must retain the following
10425  *    acknowledgment:
10426  *    "This product includes software developed by the OpenSSL Project
10427  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10428  *
10429  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10430  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10431  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10432  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10433  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10434  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10435  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10436  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10437  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10438  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10439  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10440  * OF THE POSSIBILITY OF SUCH DAMAGE.
10441  * ====================================================================
10442  *
10443  * This product includes cryptographic software written by Eric Young
10444  * (eay@cryptsoft.com).  This product includes software written by Tim
10445  * Hudson (tjh@cryptsoft.com).
10446  *
10447  */
10448 
10449 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
10450 /* opensslconf.h */
10451 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
10452 
10453 
10454 
10455 
10456 /* OpenSSL was configured with the following options: */
10457 # 108 "/usr/include/openssl/opensslconf.h" 3 4
10458 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
10459    asks for it.  This is a transient feature that is provided for those
10460    who haven't had the time to do the appropriate changes in their
10461    applications.  */
10462 # 204 "/usr/include/openssl/opensslconf.h" 3 4
10463 /* crypto/opensslconf.h.in */
10464 
10465 /* Generate 80386 code? */
10466 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
10467 # 64 "/usr/include/openssl/asn1.h" 2 3 4
10468 
10469 # 1 "/usr/include/openssl/bio.h" 1 3 4
10470 /* crypto/bio/bio.h */
10471 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10472  * All rights reserved.
10473  *
10474  * This package is an SSL implementation written
10475  * by Eric Young (eay@cryptsoft.com).
10476  * The implementation was written so as to conform with Netscapes SSL.
10477  *
10478  * This library is free for commercial and non-commercial use as long as
10479  * the following conditions are aheared to.  The following conditions
10480  * apply to all code found in this distribution, be it the RC4, RSA,
10481  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10482  * included with this distribution is covered by the same copyright terms
10483  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10484  *
10485  * Copyright remains Eric Young's, and as such any Copyright notices in
10486  * the code are not to be removed.
10487  * If this package is used in a product, Eric Young should be given attribution
10488  * as the author of the parts of the library used.
10489  * This can be in the form of a textual message at program startup or
10490  * in documentation (online or textual) provided with the package.
10491  *
10492  * Redistribution and use in source and binary forms, with or without
10493  * modification, are permitted provided that the following conditions
10494  * are met:
10495  * 1. Redistributions of source code must retain the copyright
10496  *    notice, this list of conditions and the following disclaimer.
10497  * 2. Redistributions in binary form must reproduce the above copyright
10498  *    notice, this list of conditions and the following disclaimer in the
10499  *    documentation and/or other materials provided with the distribution.
10500  * 3. All advertising materials mentioning features or use of this software
10501  *    must display the following acknowledgement:
10502  *    "This product includes cryptographic software written by
10503  *     Eric Young (eay@cryptsoft.com)"
10504  *    The word 'cryptographic' can be left out if the rouines from the library
10505  *    being used are not cryptographic related :-).
10506  * 4. If you include any Windows specific code (or a derivative thereof) from
10507  *    the apps directory (application code) you must include an acknowledgement:
10508  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10509  *
10510  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10511  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10512  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10513  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10514  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10515  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10516  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10517  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10518  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10519  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10520  * SUCH DAMAGE.
10521  *
10522  * The licence and distribution terms for any publically available version or
10523  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10524  * copied and put under another distribution licence
10525  * [including the GNU Public Licence.]
10526  */
10527 # 66 "/usr/include/openssl/asn1.h" 2 3 4
10528 
10529 # 1 "/usr/include/openssl/stack.h" 1 3 4
10530 /* crypto/stack/stack.h */
10531 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
10532  * All rights reserved.
10533  *
10534  * This package is an SSL implementation written
10535  * by Eric Young (eay@cryptsoft.com).
10536  * The implementation was written so as to conform with Netscapes SSL.
10537  *
10538  * This library is free for commercial and non-commercial use as long as
10539  * the following conditions are aheared to.  The following conditions
10540  * apply to all code found in this distribution, be it the RC4, RSA,
10541  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10542  * included with this distribution is covered by the same copyright terms
10543  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10544  *
10545  * Copyright remains Eric Young's, and as such any Copyright notices in
10546  * the code are not to be removed.
10547  * If this package is used in a product, Eric Young should be given attribution
10548  * as the author of the parts of the library used.
10549  * This can be in the form of a textual message at program startup or
10550  * in documentation (online or textual) provided with the package.
10551  *
10552  * Redistribution and use in source and binary forms, with or without
10553  * modification, are permitted provided that the following conditions
10554  * are met:
10555  * 1. Redistributions of source code must retain the copyright
10556  *    notice, this list of conditions and the following disclaimer.
10557  * 2. Redistributions in binary form must reproduce the above copyright
10558  *    notice, this list of conditions and the following disclaimer in the
10559  *    documentation and/or other materials provided with the distribution.
10560  * 3. All advertising materials mentioning features or use of this software
10561  *    must display the following acknowledgement:
10562  *    "This product includes cryptographic software written by
10563  *     Eric Young (eay@cryptsoft.com)"
10564  *    The word 'cryptographic' can be left out if the rouines from the library
10565  *    being used are not cryptographic related :-).
10566  * 4. If you include any Windows specific code (or a derivative thereof) from
10567  *    the apps directory (application code) you must include an acknowledgement:
10568  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10569  *
10570  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10571  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10572  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10573  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10574  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10575  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10576  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10577  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10578  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10579  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10580  * SUCH DAMAGE.
10581  *
10582  * The licence and distribution terms for any publically available version or
10583  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10584  * copied and put under another distribution licence
10585  * [including the GNU Public Licence.]
10586  */
10587 # 68 "/usr/include/openssl/asn1.h" 2 3 4
10588 # 1 "/usr/include/openssl/safestack.h" 1 3 4
10589 /* ====================================================================
10590  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
10591  *
10592  * Redistribution and use in source and binary forms, with or without
10593  * modification, are permitted provided that the following conditions
10594  * are met:
10595  *
10596  * 1. Redistributions of source code must retain the above copyright
10597  *    notice, this list of conditions and the following disclaimer.
10598  *
10599  * 2. Redistributions in binary form must reproduce the above copyright
10600  *    notice, this list of conditions and the following disclaimer in
10601  *    the documentation and/or other materials provided with the
10602  *    distribution.
10603  *
10604  * 3. All advertising materials mentioning features or use of this
10605  *    software must display the following acknowledgment:
10606  *    "This product includes software developed by the OpenSSL Project
10607  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10608  *
10609  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10610  *    endorse or promote products derived from this software without
10611  *    prior written permission. For written permission, please contact
10612  *    openssl-core@openssl.org.
10613  *
10614  * 5. Products derived from this software may not be called "OpenSSL"
10615  *    nor may "OpenSSL" appear in their names without prior written
10616  *    permission of the OpenSSL Project.
10617  *
10618  * 6. Redistributions of any form whatsoever must retain the following
10619  *    acknowledgment:
10620  *    "This product includes software developed by the OpenSSL Project
10621  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10622  *
10623  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10624  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10625  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10626  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10627  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10628  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10629  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10630  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10631  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10632  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10633  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10634  * OF THE POSSIBILITY OF SUCH DAMAGE.
10635  * ====================================================================
10636  *
10637  * This product includes cryptographic software written by Eric Young
10638  * (eay@cryptsoft.com).  This product includes software written by Tim
10639  * Hudson (tjh@cryptsoft.com).
10640  *
10641  */
10642 # 69 "/usr/include/openssl/asn1.h" 2 3 4
10643 
10644 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
10645 /* ====================================================================
10646  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
10647  *
10648  * Redistribution and use in source and binary forms, with or without
10649  * modification, are permitted provided that the following conditions
10650  * are met:
10651  *
10652  * 1. Redistributions of source code must retain the above copyright
10653  *    notice, this list of conditions and the following disclaimer.
10654  *
10655  * 2. Redistributions in binary form must reproduce the above copyright
10656  *    notice, this list of conditions and the following disclaimer in
10657  *    the documentation and/or other materials provided with the
10658  *    distribution.
10659  *
10660  * 3. All advertising materials mentioning features or use of this
10661  *    software must display the following acknowledgment:
10662  *    "This product includes software developed by the OpenSSL Project
10663  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10664  *
10665  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10666  *    endorse or promote products derived from this software without
10667  *    prior written permission. For written permission, please contact
10668  *    openssl-core@openssl.org.
10669  *
10670  * 5. Products derived from this software may not be called "OpenSSL"
10671  *    nor may "OpenSSL" appear in their names without prior written
10672  *    permission of the OpenSSL Project.
10673  *
10674  * 6. Redistributions of any form whatsoever must retain the following
10675  *    acknowledgment:
10676  *    "This product includes software developed by the OpenSSL Project
10677  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10678  *
10679  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10680  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10681  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10682  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10683  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10684  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10685  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10686  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10687  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10688  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10689  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10690  * OF THE POSSIBILITY OF SUCH DAMAGE.
10691  * ====================================================================
10692  *
10693  * This product includes cryptographic software written by Eric Young
10694  * (eay@cryptsoft.com).  This product includes software written by Tim
10695  * Hudson (tjh@cryptsoft.com).
10696  *
10697  */
10698 # 71 "/usr/include/openssl/asn1.h" 2 3 4
10699 
10700 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
10701 /* ====================================================================
10702  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
10703  *
10704  * Redistribution and use in source and binary forms, with or without
10705  * modification, are permitted provided that the following conditions
10706  * are met:
10707  *
10708  * 1. Redistributions of source code must retain the above copyright
10709  *    notice, this list of conditions and the following disclaimer.
10710  *
10711  * 2. Redistributions in binary form must reproduce the above copyright
10712  *    notice, this list of conditions and the following disclaimer in
10713  *    the documentation and/or other materials provided with the
10714  *    distribution.
10715  *
10716  * 3. All advertising materials mentioning features or use of this
10717  *    software must display the following acknowledgment:
10718  *    "This product includes software developed by the OpenSSL Project
10719  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10720  *
10721  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10722  *    endorse or promote products derived from this software without
10723  *    prior written permission. For written permission, please contact
10724  *    openssl-core@openssl.org.
10725  *
10726  * 5. Products derived from this software may not be called "OpenSSL"
10727  *    nor may "OpenSSL" appear in their names without prior written
10728  *    permission of the OpenSSL Project.
10729  *
10730  * 6. Redistributions of any form whatsoever must retain the following
10731  *    acknowledgment:
10732  *    "This product includes software developed by the OpenSSL Project
10733  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10734  *
10735  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10736  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10737  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10738  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10739  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10740  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10741  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10742  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10743  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10744  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10745  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10746  * OF THE POSSIBILITY OF SUCH DAMAGE.
10747  * ====================================================================
10748  *
10749  * This product includes cryptographic software written by Eric Young
10750  * (eay@cryptsoft.com).  This product includes software written by Tim
10751  * Hudson (tjh@cryptsoft.com).
10752  *
10753  */
10754 # 73 "/usr/include/openssl/asn1.h" 2 3 4
10755 
10756 # 1 "/usr/include/openssl/bn.h" 1 3 4
10757 /* crypto/bn/bn.h */
10758 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
10759  * All rights reserved.
10760  *
10761  * This package is an SSL implementation written
10762  * by Eric Young (eay@cryptsoft.com).
10763  * The implementation was written so as to conform with Netscapes SSL.
10764  *
10765  * This library is free for commercial and non-commercial use as long as
10766  * the following conditions are aheared to.  The following conditions
10767  * apply to all code found in this distribution, be it the RC4, RSA,
10768  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
10769  * included with this distribution is covered by the same copyright terms
10770  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
10771  *
10772  * Copyright remains Eric Young's, and as such any Copyright notices in
10773  * the code are not to be removed.
10774  * If this package is used in a product, Eric Young should be given attribution
10775  * as the author of the parts of the library used.
10776  * This can be in the form of a textual message at program startup or
10777  * in documentation (online or textual) provided with the package.
10778  *
10779  * Redistribution and use in source and binary forms, with or without
10780  * modification, are permitted provided that the following conditions
10781  * are met:
10782  * 1. Redistributions of source code must retain the copyright
10783  *    notice, this list of conditions and the following disclaimer.
10784  * 2. Redistributions in binary form must reproduce the above copyright
10785  *    notice, this list of conditions and the following disclaimer in the
10786  *    documentation and/or other materials provided with the distribution.
10787  * 3. All advertising materials mentioning features or use of this software
10788  *    must display the following acknowledgement:
10789  *    "This product includes cryptographic software written by
10790  *     Eric Young (eay@cryptsoft.com)"
10791  *    The word 'cryptographic' can be left out if the rouines from the library
10792  *    being used are not cryptographic related :-).
10793  * 4. If you include any Windows specific code (or a derivative thereof) from
10794  *    the apps directory (application code) you must include an acknowledgement:
10795  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
10796  *
10797  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
10798  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10799  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10800  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
10801  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10802  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10803  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10804  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
10805  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
10806  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
10807  * SUCH DAMAGE.
10808  *
10809  * The licence and distribution terms for any publically available version or
10810  * derivative of this code cannot be changed.  i.e. this code cannot simply be
10811  * copied and put under another distribution licence
10812  * [including the GNU Public Licence.]
10813  */
10814 /* ====================================================================
10815  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
10816  *
10817  * Redistribution and use in source and binary forms, with or without
10818  * modification, are permitted provided that the following conditions
10819  * are met:
10820  *
10821  * 1. Redistributions of source code must retain the above copyright
10822  *    notice, this list of conditions and the following disclaimer.
10823  *
10824  * 2. Redistributions in binary form must reproduce the above copyright
10825  *    notice, this list of conditions and the following disclaimer in
10826  *    the documentation and/or other materials provided with the
10827  *    distribution.
10828  *
10829  * 3. All advertising materials mentioning features or use of this
10830  *    software must display the following acknowledgment:
10831  *    "This product includes software developed by the OpenSSL Project
10832  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10833  *
10834  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10835  *    endorse or promote products derived from this software without
10836  *    prior written permission. For written permission, please contact
10837  *    openssl-core@openssl.org.
10838  *
10839  * 5. Products derived from this software may not be called "OpenSSL"
10840  *    nor may "OpenSSL" appear in their names without prior written
10841  *    permission of the OpenSSL Project.
10842  *
10843  * 6. Redistributions of any form whatsoever must retain the following
10844  *    acknowledgment:
10845  *    "This product includes software developed by the OpenSSL Project
10846  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10847  *
10848  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10849  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10850  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10851  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10852  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10853  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10854  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10855  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10856  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10857  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10858  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10859  * OF THE POSSIBILITY OF SUCH DAMAGE.
10860  * ====================================================================
10861  *
10862  * This product includes cryptographic software written by Eric Young
10863  * (eay@cryptsoft.com).  This product includes software written by Tim
10864  * Hudson (tjh@cryptsoft.com).
10865  *
10866  */
10867 /* ====================================================================
10868  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
10869  *
10870  * Portions of the attached software ("Contribution") are developed by
10871  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
10872  *
10873  * The Contribution is licensed pursuant to the Eric Young open source
10874  * license provided above.
10875  *
10876  * The binary polynomial arithmetic software is originally written by
10877  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
10878  *
10879  */
10880 
10881 
10882 
10883 
10884 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/limits.h" 1 3 4
10885 /*
10886  * CDDL HEADER START
10887  *
10888  * The contents of this file are subject to the terms of the
10889  * Common Development and Distribution License (the "License").
10890  * You may not use this file except in compliance with the License.
10891  *
10892  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10893  * or http://www.opensolaris.org/os/licensing.
10894  * See the License for the specific language governing permissions
10895  * and limitations under the License.
10896  *
10897  * When distributing Covered Code, include this CDDL HEADER in each
10898  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
10899  * If applicable, add the following below this CDDL HEADER, with the
10900  * fields enclosed by brackets "[]" replaced with your own identifying
10901  * information: Portions Copyright [yyyy] [name of copyright owner]
10902  *
10903  * CDDL HEADER END
10904  */
10905 
10906 /*
10907  * Copyright (c) 2013 Gary Mills
10908  *
10909  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
10910  * Use is subject to license terms.
10911  */
10912 
10913 /*	Copyright (c) 1988 AT&T	*/
10914 /*	  All Rights Reserved  	*/
10915 # 129 "/usr/include/openssl/bn.h" 2 3 4
10916 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
10917 /* e_os2.h */
10918 /* ====================================================================
10919  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
10920  *
10921  * Redistribution and use in source and binary forms, with or without
10922  * modification, are permitted provided that the following conditions
10923  * are met:
10924  *
10925  * 1. Redistributions of source code must retain the above copyright
10926  *    notice, this list of conditions and the following disclaimer.
10927  *
10928  * 2. Redistributions in binary form must reproduce the above copyright
10929  *    notice, this list of conditions and the following disclaimer in
10930  *    the documentation and/or other materials provided with the
10931  *    distribution.
10932  *
10933  * 3. All advertising materials mentioning features or use of this
10934  *    software must display the following acknowledgment:
10935  *    "This product includes software developed by the OpenSSL Project
10936  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
10937  *
10938  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
10939  *    endorse or promote products derived from this software without
10940  *    prior written permission. For written permission, please contact
10941  *    openssl-core@openssl.org.
10942  *
10943  * 5. Products derived from this software may not be called "OpenSSL"
10944  *    nor may "OpenSSL" appear in their names without prior written
10945  *    permission of the OpenSSL Project.
10946  *
10947  * 6. Redistributions of any form whatsoever must retain the following
10948  *    acknowledgment:
10949  *    "This product includes software developed by the OpenSSL Project
10950  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
10951  *
10952  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
10953  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
10954  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
10955  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
10956  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10957  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
10958  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
10959  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
10960  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
10961  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
10962  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
10963  * OF THE POSSIBILITY OF SUCH DAMAGE.
10964  * ====================================================================
10965  *
10966  * This product includes cryptographic software written by Eric Young
10967  * (eay@cryptsoft.com).  This product includes software written by Tim
10968  * Hudson (tjh@cryptsoft.com).
10969  *
10970  */
10971 
10972 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
10973 /* opensslconf.h */
10974 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
10975 
10976 
10977 
10978 
10979 /* OpenSSL was configured with the following options: */
10980 # 108 "/usr/include/openssl/opensslconf.h" 3 4
10981 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
10982    asks for it.  This is a transient feature that is provided for those
10983    who haven't had the time to do the appropriate changes in their
10984    applications.  */
10985 # 204 "/usr/include/openssl/opensslconf.h" 3 4
10986 /* crypto/opensslconf.h.in */
10987 
10988 /* Generate 80386 code? */
10989 # 272 "/usr/include/openssl/opensslconf.h" 3 4
10990 /*
10991  * OpenSSL revision 1.521 from 2005-12-15 in OpenSSL_1_0_0-stable branch changed
10992  * 64 bit sparcv9 configuration from SIXTY_FOUR_BIT_LONG to BN_LLONG.
10993  */
10994 
10995 
10996 
10997 
10998 
10999 
11000 /* Should we define BN_DIV2W here? */
11001 
11002 /* Only one for the following should be defined */
11003 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
11004 # 130 "/usr/include/openssl/bn.h" 2 3 4
11005 
11006 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
11007 /*
11008  * CDDL HEADER START
11009  *
11010  * The contents of this file are subject to the terms of the
11011  * Common Development and Distribution License (the "License").
11012  * You may not use this file except in compliance with the License.
11013  *
11014  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11015  * or http://www.opensolaris.org/os/licensing.
11016  * See the License for the specific language governing permissions
11017  * and limitations under the License.
11018  *
11019  * When distributing Covered Code, include this CDDL HEADER in each
11020  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
11021  * If applicable, add the following below this CDDL HEADER, with the
11022  * fields enclosed by brackets "[]" replaced with your own identifying
11023  * information: Portions Copyright [yyyy] [name of copyright owner]
11024  *
11025  * CDDL HEADER END
11026  */
11027 
11028 /*
11029  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
11030  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
11031  */
11032 
11033 /*	Copyright (c) 1988 AT&T	*/
11034 /*	  All Rights Reserved  	*/
11035 
11036 /*
11037  * User-visible pieces of the ANSI C standard I/O package.
11038  */
11039 # 132 "/usr/include/openssl/bn.h" 2 3 4
11040 
11041 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
11042 /* ====================================================================
11043  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
11044  *
11045  * Redistribution and use in source and binary forms, with or without
11046  * modification, are permitted provided that the following conditions
11047  * are met:
11048  *
11049  * 1. Redistributions of source code must retain the above copyright
11050  *    notice, this list of conditions and the following disclaimer.
11051  *
11052  * 2. Redistributions in binary form must reproduce the above copyright
11053  *    notice, this list of conditions and the following disclaimer in
11054  *    the documentation and/or other materials provided with the
11055  *    distribution.
11056  *
11057  * 3. All advertising materials mentioning features or use of this
11058  *    software must display the following acknowledgment:
11059  *    "This product includes software developed by the OpenSSL Project
11060  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
11061  *
11062  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
11063  *    endorse or promote products derived from this software without
11064  *    prior written permission. For written permission, please contact
11065  *    openssl-core@openssl.org.
11066  *
11067  * 5. Products derived from this software may not be called "OpenSSL"
11068  *    nor may "OpenSSL" appear in their names without prior written
11069  *    permission of the OpenSSL Project.
11070  *
11071  * 6. Redistributions of any form whatsoever must retain the following
11072  *    acknowledgment:
11073  *    "This product includes software developed by the OpenSSL Project
11074  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
11075  *
11076  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
11077  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
11078  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
11079  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
11080  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11081  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
11082  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
11083  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11084  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
11085  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
11086  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
11087  * OF THE POSSIBILITY OF SUCH DAMAGE.
11088  * ====================================================================
11089  *
11090  * This product includes cryptographic software written by Eric Young
11091  * (eay@cryptsoft.com).  This product includes software written by Tim
11092  * Hudson (tjh@cryptsoft.com).
11093  *
11094  */
11095 # 134 "/usr/include/openssl/bn.h" 2 3 4
11096 # 1 "/usr/include/openssl/crypto.h" 1 3 4
11097 /* crypto/crypto.h */
11098 /* ====================================================================
11099  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
11100  *
11101  * Redistribution and use in source and binary forms, with or without
11102  * modification, are permitted provided that the following conditions
11103  * are met:
11104  *
11105  * 1. Redistributions of source code must retain the above copyright
11106  *    notice, this list of conditions and the following disclaimer.
11107  *
11108  * 2. Redistributions in binary form must reproduce the above copyright
11109  *    notice, this list of conditions and the following disclaimer in
11110  *    the documentation and/or other materials provided with the
11111  *    distribution.
11112  *
11113  * 3. All advertising materials mentioning features or use of this
11114  *    software must display the following acknowledgment:
11115  *    "This product includes software developed by the OpenSSL Project
11116  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
11117  *
11118  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
11119  *    endorse or promote products derived from this software without
11120  *    prior written permission. For written permission, please contact
11121  *    openssl-core@openssl.org.
11122  *
11123  * 5. Products derived from this software may not be called "OpenSSL"
11124  *    nor may "OpenSSL" appear in their names without prior written
11125  *    permission of the OpenSSL Project.
11126  *
11127  * 6. Redistributions of any form whatsoever must retain the following
11128  *    acknowledgment:
11129  *    "This product includes software developed by the OpenSSL Project
11130  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
11131  *
11132  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
11133  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
11134  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
11135  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
11136  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11137  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
11138  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
11139  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11140  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
11141  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
11142  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
11143  * OF THE POSSIBILITY OF SUCH DAMAGE.
11144  * ====================================================================
11145  *
11146  * This product includes cryptographic software written by Eric Young
11147  * (eay@cryptsoft.com).  This product includes software written by Tim
11148  * Hudson (tjh@cryptsoft.com).
11149  *
11150  */
11151 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
11152  * All rights reserved.
11153  *
11154  * This package is an SSL implementation written
11155  * by Eric Young (eay@cryptsoft.com).
11156  * The implementation was written so as to conform with Netscapes SSL.
11157  *
11158  * This library is free for commercial and non-commercial use as long as
11159  * the following conditions are aheared to.  The following conditions
11160  * apply to all code found in this distribution, be it the RC4, RSA,
11161  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
11162  * included with this distribution is covered by the same copyright terms
11163  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
11164  *
11165  * Copyright remains Eric Young's, and as such any Copyright notices in
11166  * the code are not to be removed.
11167  * If this package is used in a product, Eric Young should be given attribution
11168  * as the author of the parts of the library used.
11169  * This can be in the form of a textual message at program startup or
11170  * in documentation (online or textual) provided with the package.
11171  *
11172  * Redistribution and use in source and binary forms, with or without
11173  * modification, are permitted provided that the following conditions
11174  * are met:
11175  * 1. Redistributions of source code must retain the copyright
11176  *    notice, this list of conditions and the following disclaimer.
11177  * 2. Redistributions in binary form must reproduce the above copyright
11178  *    notice, this list of conditions and the following disclaimer in the
11179  *    documentation and/or other materials provided with the distribution.
11180  * 3. All advertising materials mentioning features or use of this software
11181  *    must display the following acknowledgement:
11182  *    "This product includes cryptographic software written by
11183  *     Eric Young (eay@cryptsoft.com)"
11184  *    The word 'cryptographic' can be left out if the rouines from the library
11185  *    being used are not cryptographic related :-).
11186  * 4. If you include any Windows specific code (or a derivative thereof) from
11187  *    the apps directory (application code) you must include an acknowledgement:
11188  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
11189  *
11190  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
11191  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
11192  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
11193  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
11194  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
11195  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
11196  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11197  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
11198  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
11199  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
11200  * SUCH DAMAGE.
11201  *
11202  * The licence and distribution terms for any publically available version or
11203  * derivative of this code cannot be changed.  i.e. this code cannot simply be
11204  * copied and put under another distribution licence
11205  * [including the GNU Public Licence.]
11206  */
11207 /* ====================================================================
11208  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
11209  * ECDH support in OpenSSL originally developed by
11210  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
11211  */
11212 # 135 "/usr/include/openssl/bn.h" 2 3 4
11213 
11214 
11215 
11216 
11217 
11218 /*
11219  * These preprocessor symbols control various aspects of the bignum headers
11220  * and library code. They're not defined by any "normal" configuration, as
11221  * they are intended for development and testing purposes. NB: defining all
11222  * three can be useful for debugging application code as well as openssl
11223  * itself. BN_DEBUG - turn on various debugging alterations to the bignum
11224  * code BN_DEBUG_RAND - uses random poisoning of unused words to trip up
11225  * mismanagement of bignum internals. You must also define BN_DEBUG.
11226  */
11227 /* #define BN_DEBUG */
11228 /* #define BN_DEBUG_RAND */
11229 
11230 
11231 
11232 
11233 
11234 
11235 
11236 /*
11237  * This next option uses the C libraries (2 word)/(1 word) function. If it is
11238  * not defined, I use my C version (which is slower). The reason for this
11239  * flag is that when the particular C compiler library routine is used, and
11240  * the library is linked with a different compiler, the library is missing.
11241  * This mostly happens when the library is built with gcc and then linked
11242  * using normal cc.  This would be a common occurrence because gcc normally
11243  * produces code that is 2 times faster than system compilers for the big
11244  * number stuff. For machines with only one compiler (or shared libraries),
11245  * this should be on.  Again this in only really a problem on machines using
11246  * "long long's", are 32bit, and are not using my assembler code.
11247  */
11248 
11249 
11250 
11251 
11252 
11253 
11254 
11255 /*
11256  * assuming long is 64bit - this is the DEC Alpha unsigned long long is only
11257  * 64 bits :-(, don't define BN_LLONG for the DEC Alpha
11258  */
11259 # 203 "/usr/include/openssl/bn.h" 3 4
11260 /*
11261  * This is where the long long data type is 64 bits, but long is 32. For
11262  * machines where there are 64bit registers, this is the mode to use. IRIX,
11263  * on R4000 and above should use this mode, along with the relevant assembler
11264  * code :-).  Do NOT define BN_LLONG.
11265  */
11266 # 265 "/usr/include/openssl/bn.h" 3 4
11267 /*
11268  * avoid leaking exponent information through timing,
11269  * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime,
11270  * BN_div() will call BN_div_no_branch,
11271  * BN_mod_inverse() will call BN_mod_inverse_no_branch.
11272  */
11273 # 284 "/usr/include/openssl/bn.h" 3 4
11274                                        /* used for debuging */
11275 
11276 
11277 
11278 
11279 /*
11280  * get a clone of a BIGNUM with changed flags, for *temporary* use only (the
11281  * two BIGNUMs cannot not be used in parallel!)
11282  */
11283 # 302 "/usr/include/openssl/bn.h" 3 4
11284 /* Already declared in ossl_typ.h */
11285 # 313 "/usr/include/openssl/bn.h" 3 4
11286 struct bignum_st {
11287     unsigned int *d; /* Pointer to an array of 'BN_BITS2' bit
11288                                  * chunks. */
11289     int top; /* Index of last used d +1. */
11290     /* The next are internal book keeping for bn_expand. */
11291     int dmax; /* Size of the d array. */
11292     int neg; /* one if the number is negative */
11293     int flags;
11294 };
11295 
11296 /* Used for montgomery multiplication */
11297 struct bn_mont_ctx_st {
11298     int ri; /* number of bits in R */
11299     BIGNUM RR; /* used to convert to montgomery form */
11300     BIGNUM N; /* The modulus */
11301     BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 (Ni is only
11302                                  * stored for bignum algorithm) */
11303     unsigned int n0[2]; /* least significant word(s) of Ni; (type
11304                                  * changed with 0.9.9, was "BN_ULONG n0;"
11305                                  * before) */
11306     int flags;
11307 };
11308 
11309 /*
11310  * Used for reciprocal division/mod functions It cannot be shared between
11311  * threads
11312  */
11313 struct bn_recp_ctx_st {
11314     BIGNUM N; /* the divisor */
11315     BIGNUM Nr; /* the reciprocal */
11316     int num_bits;
11317     int shift;
11318     int flags;
11319 };
11320 
11321 /* Used for slow "generation" functions. */
11322 struct bn_gencb_st {
11323     unsigned int ver; /* To handle binary (in)compatibility */
11324     void *arg; /* callback-specific data */
11325     union {
11326         /* if(ver==1) - handles old style callbacks */
11327         void (*cb_1) (int, int, void *);
11328         /* if(ver==2) - new callback style */
11329         int (*cb_2) (int, int, BN_GENCB *);
11330     } cb;
11331 };
11332 /* Wrapper function to make using BN_GENCB easier,  */
11333 int BN_GENCB_call(BN_GENCB *cb, int a, int b);
11334 /* Macro to populate a BN_GENCB structure with an "old"-style callback */
11335 
11336 
11337 
11338 
11339 
11340 /* Macro to populate a BN_GENCB structure with a "new"-style callback */
11341 # 377 "/usr/include/openssl/bn.h" 3 4
11342 /*
11343  * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations
11344  * that will be done for checking that a random number is probably prime. The
11345  * error rate for accepting a composite number as prime depends on the size of
11346  * the prime |b|. The error rates used are for calculating an RSA key with 2 primes,
11347  * and so the level is what you would expect for a key of double the size of the
11348  * prime.
11349  *
11350  * This table is generated using the algorithm of FIPS PUB 186-4
11351  * Digital Signature Standard (DSS), section F.1, page 117.
11352  * (https://dx.doi.org/10.6028/NIST.FIPS.186-4)
11353  *
11354  * The following magma script was used to generate the output:
11355  * securitybits:=125;
11356  * k:=1024;
11357  * for t:=1 to 65 do
11358  *   for M:=3 to Floor(2*Sqrt(k-1)-1) do
11359  *     S:=0;
11360  *     // Sum over m
11361  *     for m:=3 to M do
11362  *       s:=0;
11363  *       // Sum over j
11364  *       for j:=2 to m do
11365  *         s+:=(RealField(32)!2)^-(j+(k-1)/j);
11366  *       end for;
11367  *       S+:=2^(m-(m-1)*t)*s;
11368  *     end for;
11369  *     A:=2^(k-2-M*t);
11370  *     B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S;
11371  *     pkt:=2.00743*Log(2)*k*2^-k*(A+B);
11372  *     seclevel:=Floor(-Log(2,pkt));
11373  *     if seclevel ge securitybits then
11374  *       printf "k: %5o, security: %o bits  (t: %o, M: %o)\n",k,seclevel,t,M;
11375  *       break;
11376  *     end if;
11377  *   end for;
11378  *   if seclevel ge securitybits then break; end if;
11379  * end for;
11380  *
11381  * It can be run online at:
11382  * http://magma.maths.usyd.edu.au/calc
11383  *
11384  * And will output:
11385  * k:  1024, security: 129 bits  (t: 6, M: 23)
11386  *
11387  * k is the number of bits of the prime, securitybits is the level we want to
11388  * reach.
11389  *
11390  * prime length | RSA key size | # MR tests | security level
11391  * -------------+--------------|------------+---------------
11392  *  (b) >= 6394 |     >= 12788 |          3 |        256 bit
11393  *  (b) >= 3747 |     >=  7494 |          3 |        192 bit
11394  *  (b) >= 1345 |     >=  2690 |          4 |        128 bit
11395  *  (b) >= 1080 |     >=  2160 |          5 |        128 bit
11396  *  (b) >=  852 |     >=  1704 |          5 |        112 bit
11397  *  (b) >=  476 |     >=   952 |          5 |         80 bit
11398  *  (b) >=  400 |     >=   800 |          6 |         80 bit
11399  *  (b) >=  347 |     >=   694 |          7 |         80 bit
11400  *  (b) >=  308 |     >=   616 |          8 |         80 bit
11401  *  (b) >=   55 |     >=   110 |         27 |         64 bit
11402  *  (b) >=    6 |     >=    12 |         34 |         64 bit
11403  */
11404 # 451 "/usr/include/openssl/bn.h" 3 4
11405 /* Note that BN_abs_is_word didn't work reliably for w == 0 until 0.9.8 */
11406 # 472 "/usr/include/openssl/bn.h" 3 4
11407 const BIGNUM *BN_value_one(void);
11408 char *BN_options(void);
11409 BN_CTX *BN_CTX_new(void);
11410 
11411 void BN_CTX_init(BN_CTX *c);
11412 
11413 void BN_CTX_free(BN_CTX *c);
11414 void BN_CTX_start(BN_CTX *ctx);
11415 BIGNUM *BN_CTX_get(BN_CTX *ctx);
11416 void BN_CTX_end(BN_CTX *ctx);
11417 int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
11418 int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
11419 int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
11420 int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
11421 int BN_num_bits(const BIGNUM *a);
11422 int BN_num_bits_word(unsigned int);
11423 BIGNUM *BN_new(void);
11424 void BN_init(BIGNUM *);
11425 void BN_clear_free(BIGNUM *a);
11426 BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
11427 void BN_swap(BIGNUM *a, BIGNUM *b);
11428 BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
11429 int BN_bn2bin(const BIGNUM *a, unsigned char *to);
11430 BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret);
11431 int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
11432 int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11433 int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11434 int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11435 int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11436 int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
11437 int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
11438 /** BN_set_negative sets sign of a BIGNUM
11439  * \param  b  pointer to the BIGNUM object
11440  * \param  n  0 if the BIGNUM b should be positive and a value != 0 otherwise
11441  */
11442 void BN_set_negative(BIGNUM *b, int n);
11443 /** BN_is_negative returns 1 if the BIGNUM is negative
11444  * \param  a  pointer to the BIGNUM object
11445  * \return 1 if a < 0 and 0 otherwise
11446  */
11447 
11448 
11449 int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
11450            BN_CTX *ctx);
11451 
11452 int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx);
11453 int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
11454                BN_CTX *ctx);
11455 int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11456                      const BIGNUM *m);
11457 int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
11458                BN_CTX *ctx);
11459 int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11460                      const BIGNUM *m);
11461 int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
11462                BN_CTX *ctx);
11463 int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
11464 int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
11465 int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m);
11466 int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
11467                   BN_CTX *ctx);
11468 int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m);
11469 
11470 unsigned int BN_mod_word(const BIGNUM *a, unsigned int w);
11471 unsigned int BN_div_word(BIGNUM *a, unsigned int w);
11472 int BN_mul_word(BIGNUM *a, unsigned int w);
11473 int BN_add_word(BIGNUM *a, unsigned int w);
11474 int BN_sub_word(BIGNUM *a, unsigned int w);
11475 int BN_set_word(BIGNUM *a, unsigned int w);
11476 unsigned int BN_get_word(const BIGNUM *a);
11477 
11478 int BN_cmp(const BIGNUM *a, const BIGNUM *b);
11479 void BN_free(BIGNUM *a);
11480 int BN_is_bit_set(const BIGNUM *a, int n);
11481 int BN_lshift(BIGNUM *r, const BIGNUM *a, int n);
11482 int BN_lshift1(BIGNUM *r, const BIGNUM *a);
11483 int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11484 
11485 int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11486                const BIGNUM *m, BN_CTX *ctx);
11487 int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11488                     const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
11489 int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
11490                               const BIGNUM *m, BN_CTX *ctx,
11491                               BN_MONT_CTX *in_mont);
11492 int BN_mod_exp_mont_word(BIGNUM *r, unsigned int a, const BIGNUM *p,
11493                          const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
11494 int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
11495                      const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
11496                      BN_CTX *ctx, BN_MONT_CTX *m_ctx);
11497 int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11498                       const BIGNUM *m, BN_CTX *ctx);
11499 
11500 int BN_mask_bits(BIGNUM *a, int n);
11501 
11502 int BN_print_fp(FILE *fp, const BIGNUM *a);
11503 
11504 
11505 int BN_print(BIO *fp, const BIGNUM *a);
11506 
11507 
11508 
11509 int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx);
11510 int BN_rshift(BIGNUM *r, const BIGNUM *a, int n);
11511 int BN_rshift1(BIGNUM *r, const BIGNUM *a);
11512 void BN_clear(BIGNUM *a);
11513 BIGNUM *BN_dup(const BIGNUM *a);
11514 int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
11515 int BN_set_bit(BIGNUM *a, int n);
11516 int BN_clear_bit(BIGNUM *a, int n);
11517 char *BN_bn2hex(const BIGNUM *a);
11518 char *BN_bn2dec(const BIGNUM *a);
11519 int BN_hex2bn(BIGNUM **a, const char *str);
11520 int BN_dec2bn(BIGNUM **a, const char *str);
11521 int BN_asc2bn(BIGNUM **a, const char *str);
11522 int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
11523 int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns
11524                                                                   * -2 for
11525                                                                   * error */
11526 BIGNUM *BN_mod_inverse(BIGNUM *ret,
11527                        const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
11528 BIGNUM *BN_mod_sqrt(BIGNUM *ret,
11529                     const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
11530 
11531 void BN_consttime_swap(unsigned int swap, BIGNUM *a, BIGNUM *b, int nwords);
11532 
11533 /* Deprecated versions */
11534 
11535 BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe,
11536                           const BIGNUM *add, const BIGNUM *rem,
11537                           void (*callback) (int, int, void *), void *cb_arg);
11538 int BN_is_prime(const BIGNUM *p, int nchecks,
11539                 void (*callback) (int, int, void *),
11540                 BN_CTX *ctx, void *cb_arg);
11541 int BN_is_prime_fasttest(const BIGNUM *p, int nchecks,
11542                          void (*callback) (int, int, void *), BN_CTX *ctx,
11543                          void *cb_arg, int do_trial_division);
11544 
11545 
11546 /* Newer versions */
11547 int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,
11548                          const BIGNUM *rem, BN_GENCB *cb);
11549 int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb);
11550 int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx,
11551                             int do_trial_division, BN_GENCB *cb);
11552 
11553 int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
11554 
11555 int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
11556                             const BIGNUM *Xp, const BIGNUM *Xp1,
11557                             const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx,
11558                             BN_GENCB *cb);
11559 int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1,
11560                               BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e,
11561                               BN_CTX *ctx, BN_GENCB *cb);
11562 
11563 BN_MONT_CTX *BN_MONT_CTX_new(void);
11564 void BN_MONT_CTX_init(BN_MONT_CTX *ctx);
11565 int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11566                           BN_MONT_CTX *mont, BN_CTX *ctx);
11567 
11568 
11569 int BN_from_montgomery(BIGNUM *r, const BIGNUM *a,
11570                        BN_MONT_CTX *mont, BN_CTX *ctx);
11571 void BN_MONT_CTX_free(BN_MONT_CTX *mont);
11572 int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx);
11573 BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);
11574 BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
11575                                     const BIGNUM *mod, BN_CTX *ctx);
11576 
11577 /* BN_BLINDING flags */
11578 
11579 
11580 
11581 BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
11582 void BN_BLINDING_free(BN_BLINDING *b);
11583 int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
11584 int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
11585 int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
11586 int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
11587 int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
11588                           BN_CTX *);
11589 
11590 unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *);
11591 void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long);
11592 
11593 CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *);
11594 unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
11595 void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
11596 BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
11597                                       const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
11598                                       int (*bn_mod_exp) (BIGNUM *r,
11599                                                          const BIGNUM *a,
11600                                                          const BIGNUM *p,
11601                                                          const BIGNUM *m,
11602                                                          BN_CTX *ctx,
11603                                                          BN_MONT_CTX *m_ctx),
11604                                       BN_MONT_CTX *m_ctx);
11605 
11606 
11607 void BN_set_params(int mul, int high, int low, int mont);
11608 int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */
11609 
11610 
11611 void BN_RECP_CTX_init(BN_RECP_CTX *recp);
11612 BN_RECP_CTX *BN_RECP_CTX_new(void);
11613 void BN_RECP_CTX_free(BN_RECP_CTX *recp);
11614 int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx);
11615 int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y,
11616                           BN_RECP_CTX *recp, BN_CTX *ctx);
11617 int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11618                     const BIGNUM *m, BN_CTX *ctx);
11619 int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
11620                 BN_RECP_CTX *recp, BN_CTX *ctx);
11621 
11622 
11623 
11624 /*
11625  * Functions for arithmetic over binary polynomials represented by BIGNUMs.
11626  * The BIGNUM::neg property of BIGNUMs representing binary polynomials is
11627  * ignored. Note that input arguments are not const so that their bit arrays
11628  * can be expanded to the appropriate size if needed.
11629  */
11630 
11631 /*
11632  * r = a + b
11633  */
11634 int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
11635 
11636 /*
11637  * r=a mod p
11638  */
11639 int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p);
11640 /* r = (a * b) mod p */
11641 int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11642                     const BIGNUM *p, BN_CTX *ctx);
11643 /* r = (a * a) mod p */
11644 int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11645 /* r = (1 / b) mod p */
11646 int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx);
11647 /* r = (a / b) mod p */
11648 int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11649                     const BIGNUM *p, BN_CTX *ctx);
11650 /* r = (a ^ b) mod p */
11651 int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11652                     const BIGNUM *p, BN_CTX *ctx);
11653 /* r = sqrt(a) mod p */
11654 int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11655                      BN_CTX *ctx);
11656 /* r^2 + r = a mod p */
11657 int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
11658                            BN_CTX *ctx);
11659 
11660 /*-
11661  * Some functions allow for representation of the irreducible polynomials
11662  * as an unsigned int[], say p.  The irreducible f(t) is then of the form:
11663  *     t^p[0] + t^p[1] + ... + t^p[k]
11664  * where m = p[0] > p[1] > ... > p[k] = 0.
11665  */
11666 /* r = a mod p */
11667 int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]);
11668 /* r = (a * b) mod p */
11669 int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11670                         const int p[], BN_CTX *ctx);
11671 /* r = (a * a) mod p */
11672 int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[],
11673                         BN_CTX *ctx);
11674 /* r = (1 / b) mod p */
11675 int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[],
11676                         BN_CTX *ctx);
11677 /* r = (a / b) mod p */
11678 int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11679                         const int p[], BN_CTX *ctx);
11680 /* r = (a ^ b) mod p */
11681 int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
11682                         const int p[], BN_CTX *ctx);
11683 /* r = sqrt(a) mod p */
11684 int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a,
11685                          const int p[], BN_CTX *ctx);
11686 /* r^2 + r = a mod p */
11687 int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a,
11688                                const int p[], BN_CTX *ctx);
11689 int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max);
11690 int BN_GF2m_arr2poly(const int p[], BIGNUM *a);
11691 
11692 
11693 
11694 /*
11695  * faster mod functions for the 'NIST primes' 0 <= a < p^2
11696  */
11697 int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11698 int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11699 int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11700 int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11701 int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
11702 
11703 const BIGNUM *BN_get0_nist_prime_192(void);
11704 const BIGNUM *BN_get0_nist_prime_224(void);
11705 const BIGNUM *BN_get0_nist_prime_256(void);
11706 const BIGNUM *BN_get0_nist_prime_384(void);
11707 const BIGNUM *BN_get0_nist_prime_521(void);
11708 
11709 /* library internal functions */
11710 # 788 "/usr/include/openssl/bn.h" 3 4
11711 BIGNUM *bn_expand2(BIGNUM *a, int words);
11712 
11713 BIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */
11714 
11715 
11716 /*-
11717  * Bignum consistency macros
11718  * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from
11719  * bignum data after direct manipulations on the data. There is also an
11720  * "internal" macro, bn_check_top(), for verifying that there are no leading
11721  * zeroes. Unfortunately, some auditing is required due to the fact that
11722  * bn_fix_top() has become an overabused duct-tape because bignum data is
11723  * occasionally passed around in an inconsistent state. So the following
11724  * changes have been made to sort this out;
11725  * - bn_fix_top()s implementation has been moved to bn_correct_top()
11726  * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and
11727  *   bn_check_top() is as before.
11728  * - if BN_DEBUG *is* defined;
11729  *   - bn_check_top() tries to pollute unused words even if the bignum 'top' is
11730  *     consistent. (ed: only if BN_DEBUG_RAND is defined)
11731  *   - bn_fix_top() maps to bn_check_top() rather than "fixing" anything.
11732  * The idea is to have debug builds flag up inconsistent bignums when they
11733  * occur. If that occurs in a bn_fix_top(), we examine the code in question; if
11734  * the use of bn_fix_top() was appropriate (ie. it follows directly after code
11735  * that manipulates the bignum) it is converted to bn_correct_top(), and if it
11736  * was not appropriate, we convert it permanently to bn_check_top() and track
11737  * down the cause of the bug. Eventually, no internal code should be using the
11738  * bn_fix_top() macro. External applications and libraries should try this with
11739  * their own code too, both in terms of building against the openssl headers
11740  * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it
11741  * defined. This not only improves external code, it provides more test
11742  * coverage for openssl's own code.
11743  */
11744 # 914 "/usr/include/openssl/bn.h" 3 4
11745 unsigned int bn_mul_add_words(unsigned int *rp, const unsigned int *ap, int num,
11746                           unsigned int w);
11747 unsigned int bn_mul_words(unsigned int *rp, const unsigned int *ap, int num, unsigned int w);
11748 void bn_sqr_words(unsigned int *rp, const unsigned int *ap, int num);
11749 unsigned int bn_div_words(unsigned int h, unsigned int l, unsigned int d);
11750 unsigned int bn_add_words(unsigned int *rp, const unsigned int *ap, const unsigned int *bp,
11751                       int num);
11752 unsigned int bn_sub_words(unsigned int *rp, const unsigned int *ap, const unsigned int *bp,
11753                       int num);
11754 
11755 /* Primes from RFC 2409 */
11756 BIGNUM *get_rfc2409_prime_768(BIGNUM *bn);
11757 BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn);
11758 
11759 /* Primes from RFC 3526 */
11760 BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn);
11761 BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn);
11762 BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn);
11763 BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn);
11764 BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn);
11765 BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn);
11766 
11767 int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom);
11768 
11769 /* BEGIN ERROR CODES */
11770 /*
11771  * The following lines are auto generated by the script mkerr.pl. Any changes
11772  * made after this point may be overwritten when the script is next run.
11773  */
11774 void ERR_load_BN_strings(void);
11775 
11776 /* Error codes for the BN functions. */
11777 
11778 /* Function codes. */
11779 # 991 "/usr/include/openssl/bn.h" 3 4
11780 /* Reason codes. */
11781 # 75 "/usr/include/openssl/asn1.h" 2 3 4
11782 # 132 "/usr/include/openssl/asn1.h" 3 4
11783 /* For use with d2i_ASN1_type_bytes() */
11784 # 152 "/usr/include/openssl/asn1.h" 3 4
11785 /* For use with ASN1_mbstring_copy() */
11786 # 161 "/usr/include/openssl/asn1.h" 3 4
11787     struct X509_algor_st;
11788 struct stack_st_X509_ALGOR { _STACK stack; };
11789 
11790 
11791 
11792 
11793 /*
11794  * We MUST make sure that, except for constness, asn1_ctx_st and
11795  * asn1_const_ctx are exactly the same.  Fortunately, as soon as the old ASN1
11796  * parsing macros are gone, we can throw this away as well...
11797  */
11798 typedef struct asn1_ctx_st {
11799     unsigned char *p; /* work char pointer */
11800     int eos; /* end of sequence read for indefinite
11801                                  * encoding */
11802     int error; /* error code to use when returning an error */
11803     int inf; /* constructed if 0x20, indefinite is 0x21 */
11804     int tag; /* tag from last 'get object' */
11805     int xclass; /* class from last 'get object' */
11806     long slen; /* length of last 'get object' */
11807     unsigned char *max; /* largest value of p allowed */
11808     unsigned char *q; /* temporary variable */
11809     unsigned char **pp; /* variable */
11810     int line; /* used in error processing */
11811 } ASN1_CTX;
11812 
11813 typedef struct asn1_const_ctx_st {
11814     const unsigned char *p; /* work char pointer */
11815     int eos; /* end of sequence read for indefinite
11816                                  * encoding */
11817     int error; /* error code to use when returning an error */
11818     int inf; /* constructed if 0x20, indefinite is 0x21 */
11819     int tag; /* tag from last 'get object' */
11820     int xclass; /* class from last 'get object' */
11821     long slen; /* length of last 'get object' */
11822     const unsigned char *max; /* largest value of p allowed */
11823     const unsigned char *q; /* temporary variable */
11824     const unsigned char **pp; /* variable */
11825     int line; /* used in error processing */
11826 } ASN1_const_CTX;
11827 
11828 /*
11829  * These are used internally in the ASN1_OBJECT to keep track of whether the
11830  * names and data need to be free()ed
11831  */
11832 
11833 
11834 
11835 
11836 struct asn1_object_st {
11837     const char *sn, *ln;
11838     int nid;
11839     int length;
11840     const unsigned char *data; /* data remains const after init */
11841     int flags; /* Should we free this one */
11842 };
11843 
11844 
11845 /*
11846  * This indicates that the ASN1_STRING is not a real value but just a place
11847  * holder for the location where indefinite length constructed data should be
11848  * inserted in the memory buffer
11849  */
11850 
11851 
11852 /*
11853  * This flag is used by the CMS code to indicate that a string is not
11854  * complete and is a place holder for content when it had all been accessed.
11855  * The flag will be reset when content has been written to it.
11856  */
11857 
11858 
11859 /*
11860  * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING
11861  * type.
11862  */
11863 
11864 /* This is the base type that holds just about everything :-) */
11865 struct asn1_string_st {
11866     int length;
11867     int type;
11868     unsigned char *data;
11869     /*
11870      * The value of the following field depends on the type being held.  It
11871      * is mostly being used for BIT_STRING so if the input data has a
11872      * non-zero 'unused bits' value, it will be handled correctly
11873      */
11874     long flags;
11875 };
11876 
11877 /*
11878  * ASN1_ENCODING structure: this is used to save the received encoding of an
11879  * ASN1 type. This is useful to get round problems with invalid encodings
11880  * which can break signatures.
11881  */
11882 
11883 typedef struct ASN1_ENCODING_st {
11884     unsigned char *enc; /* DER encoding */
11885     long len; /* Length of encoding */
11886     int modified; /* set to 1 if 'enc' is invalid */
11887 } ASN1_ENCODING;
11888 
11889 /* Used with ASN1 LONG type: if a long is set to this it is omitted */
11890 # 272 "/usr/include/openssl/asn1.h" 3 4
11891 typedef struct asn1_string_table_st {
11892     int nid;
11893     long minsize;
11894     long maxsize;
11895     unsigned long mask;
11896     unsigned long flags;
11897 } ASN1_STRING_TABLE;
11898 
11899 struct stack_st_ASN1_STRING_TABLE { _STACK stack; };
11900 
11901 /* size limits: this stuff is taken straight from RFC2459 */
11902 # 293 "/usr/include/openssl/asn1.h" 3 4
11903 /*
11904  * Declarations for template structures: for full definitions see asn1t.h
11905  */
11906 typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
11907 typedef struct ASN1_TLC_st ASN1_TLC;
11908 /* This is just an opaque pointer */
11909 typedef struct ASN1_VALUE_st ASN1_VALUE;
11910 
11911 /* Declare ASN1 functions: the implement macro in in asn1t.h */
11912 # 363 "/usr/include/openssl/asn1.h" 3 4
11913 typedef void *d2i_of_void(void **,const unsigned char **,long); typedef int i2d_of_void(void *,unsigned char **);
11914 
11915 /*-
11916  * The following macros and typedefs allow an ASN1_ITEM
11917  * to be embedded in a structure and referenced. Since
11918  * the ASN1_ITEM pointers need to be globally accessible
11919  * (possibly from shared libraries) they may exist in
11920  * different forms. On platforms that support it the
11921  * ASN1_ITEM structure itself will be globally exported.
11922  * Other platforms will export a function that returns
11923  * an ASN1_ITEM pointer.
11924  *
11925  * To handle both cases transparently the macros below
11926  * should be used instead of hard coding an ASN1_ITEM
11927  * pointer in a structure.
11928  *
11929  * The structure will look like this:
11930  *
11931  * typedef struct SOMETHING_st {
11932  *      ...
11933  *      ASN1_ITEM_EXP *iptr;
11934  *      ...
11935  * } SOMETHING;
11936  *
11937  * It would be initialised as e.g.:
11938  *
11939  * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...};
11940  *
11941  * and the actual pointer extracted with:
11942  *
11943  * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr);
11944  *
11945  * Finally an ASN1_ITEM pointer can be extracted from an
11946  * appropriate reference with: ASN1_ITEM_rptr(X509). This
11947  * would be used when a function takes an ASN1_ITEM * argument.
11948  *
11949  */
11950 
11951 
11952 
11953 /* ASN1_ITEM pointer exported type */
11954 typedef const ASN1_ITEM ASN1_ITEM_EXP;
11955 
11956 /* Macro to obtain ASN1_ITEM pointer from exported type */
11957 
11958 
11959 /* Macro to include ASN1_ITEM pointer from base type */
11960 # 440 "/usr/include/openssl/asn1.h" 3 4
11961 /* Parameters used by ASN1_STRING_print_ex() */
11962 
11963 /*
11964  * These determine which characters to escape: RFC2253 special characters,
11965  * control characters and MSB set characters
11966  */
11967 
11968 
11969 
11970 
11971 
11972 /*
11973  * This flag determines how we do escaping: normally RC2253 backslash only,
11974  * set this to use backslash and quote.
11975  */
11976 
11977 
11978 
11979 /* These three flags are internal use only. */
11980 
11981 /* Character is a valid PrintableString character */
11982 
11983 /* Character needs escaping if it is the first character */
11984 
11985 /* Character needs escaping if it is the last character */
11986 
11987 
11988 /*
11989  * NB the internal flags are safely reused below by flags handled at the top
11990  * level.
11991  */
11992 
11993 /*
11994  * If this is set we convert all character strings to UTF8 first
11995  */
11996 
11997 
11998 
11999 /*
12000  * If this is set we don't attempt to interpret content: just assume all
12001  * strings are 1 byte per character. This will produce some pretty odd
12002  * looking output!
12003  */
12004 
12005 
12006 
12007 /* If this is set we include the string type in the output */
12008 
12009 
12010 /*
12011  * This determines which strings to display and which to 'dump' (hex dump of
12012  * content octets or DER encoding). We can only dump non character strings or
12013  * everything. If we don't dump 'unknown' they are interpreted as character
12014  * strings with 1 octet per character and are subject to the usual escaping
12015  * options.
12016  */
12017 
12018 
12019 
12020 
12021 /*
12022  * These determine what 'dumping' does, we can dump the content octets or the
12023  * DER encoding: both use the RFC2253 #XXXXX notation.
12024  */
12025 
12026 
12027 
12028 /*
12029  * All the string flags consistent with RFC2253, escaping control characters
12030  * isn't essential in RFC2253 but it is advisable anyway.
12031  */
12032 # 519 "/usr/include/openssl/asn1.h" 3 4
12033 struct stack_st_ASN1_INTEGER { _STACK stack; };
12034 
12035 
12036 struct stack_st_ASN1_GENERALSTRING { _STACK stack; };
12037 
12038 typedef struct asn1_type_st {
12039     int type;
12040     union {
12041         char *ptr;
12042         ASN1_BOOLEAN boolean;
12043         ASN1_STRING *asn1_string;
12044         ASN1_OBJECT *object;
12045         ASN1_INTEGER *integer;
12046         ASN1_ENUMERATED *enumerated;
12047         ASN1_BIT_STRING *bit_string;
12048         ASN1_OCTET_STRING *octet_string;
12049         ASN1_PRINTABLESTRING *printablestring;
12050         ASN1_T61STRING *t61string;
12051         ASN1_IA5STRING *ia5string;
12052         ASN1_GENERALSTRING *generalstring;
12053         ASN1_BMPSTRING *bmpstring;
12054         ASN1_UNIVERSALSTRING *universalstring;
12055         ASN1_UTCTIME *utctime;
12056         ASN1_GENERALIZEDTIME *generalizedtime;
12057         ASN1_VISIBLESTRING *visiblestring;
12058         ASN1_UTF8STRING *utf8string;
12059         /*
12060          * set and sequence are left complete and still contain the set or
12061          * sequence bytes
12062          */
12063         ASN1_STRING *set;
12064         ASN1_STRING *sequence;
12065         ASN1_VALUE *asn1_value;
12066     } value;
12067 } ASN1_TYPE;
12068 
12069 struct stack_st_ASN1_TYPE { _STACK stack; };
12070 
12071 
12072 typedef struct stack_st_ASN1_TYPE ASN1_SEQUENCE_ANY;
12073 
12074 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;
12075 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;
12076 
12077 typedef struct NETSCAPE_X509_st {
12078     ASN1_OCTET_STRING *header;
12079     X509 *cert;
12080 } NETSCAPE_X509;
12081 
12082 /* This is used to contain a list of bit names */
12083 typedef struct BIT_STRING_BITNAME_st {
12084     int bitnum;
12085     const char *lname;
12086     const char *sname;
12087 } BIT_STRING_BITNAME;
12088 
12089 
12090 
12091 
12092 
12093 
12094 /* Macros for string operations */
12095 # 772 "/usr/include/openssl/asn1.h" 3 4
12096   /* for the is_set parameter to i2d_ASN1_SET */
12097 
12098 
12099 
12100 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;
12101 
12102 int ASN1_TYPE_get(ASN1_TYPE *a);
12103 void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
12104 int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
12105 int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);
12106 
12107 ASN1_OBJECT *ASN1_OBJECT_new(void);
12108 void ASN1_OBJECT_free(ASN1_OBJECT *a);
12109 int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp);
12110 ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
12111                              long length);
12112 ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
12113                              long length);
12114 
12115 extern const ASN1_ITEM ASN1_OBJECT_it;
12116 
12117 struct stack_st_ASN1_OBJECT { _STACK stack; };
12118 
12119 
12120 ASN1_STRING *ASN1_STRING_new(void);
12121 void ASN1_STRING_free(ASN1_STRING *a);
12122 void ASN1_STRING_clear_free(ASN1_STRING *a);
12123 int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
12124 ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a);
12125 ASN1_STRING *ASN1_STRING_type_new(int type);
12126 int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
12127   /*
12128    * Since this is used to store all sorts of things, via macros, for now,
12129    * make its data void *
12130    */
12131 int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
12132 void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
12133 int ASN1_STRING_length(const ASN1_STRING *x);
12134 void ASN1_STRING_length_set(ASN1_STRING *x, int n);
12135 int ASN1_STRING_type(ASN1_STRING *x);
12136 unsigned char *ASN1_STRING_data(ASN1_STRING *x);
12137 
12138 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;
12139 int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp);
12140 ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
12141                                      const unsigned char **pp, long length);
12142 int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length);
12143 int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value);
12144 int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n);
12145 int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a,
12146                           unsigned char *flags, int flags_len);
12147 
12148 
12149 int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
12150                                BIT_STRING_BITNAME *tbl, int indent);
12151 
12152 int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl);
12153 int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value,
12154                             BIT_STRING_BITNAME *tbl);
12155 
12156 int i2d_ASN1_BOOLEAN(int a, unsigned char **pp);
12157 int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length);
12158 
12159 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;
12160 int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp);
12161 ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp,
12162                                long length);
12163 ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
12164                                 long length);
12165 ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x);
12166 int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);
12167 
12168 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;
12169 
12170 int ASN1_UTCTIME_check(const ASN1_UTCTIME *a);
12171 ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t);
12172 ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
12173                                int offset_day, long offset_sec);
12174 int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str);
12175 int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t);
12176 
12177 
12178 
12179 
12180 int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a);
12181 ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
12182                                                time_t t);
12183 ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
12184                                                time_t t, int offset_day,
12185                                                long offset_sec);
12186 int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str);
12187 int ASN1_TIME_diff(int *pday, int *psec,
12188                    const ASN1_TIME *from, const ASN1_TIME *to);
12189 
12190 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;
12191 ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a);
12192 int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
12193                           const ASN1_OCTET_STRING *b);
12194 int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data,
12195                           int len);
12196 
12197 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;
12198 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;
12199 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;
12200 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;
12201 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;
12202 
12203 int UTF8_getc(const unsigned char *str, int len, unsigned long *val);
12204 int UTF8_putc(unsigned char *str, int len, unsigned long value);
12205 
12206 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;
12207 
12208 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;
12209 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;
12210 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;
12211 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;
12212 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;
12213 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;
12214 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;
12215 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;
12216 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;
12217 
12218 extern const ASN1_ITEM ASN1_OCTET_STRING_NDEF_it;
12219 
12220 ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t);
12221 ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
12222                          int offset_day, long offset_sec);
12223 int ASN1_TIME_check(ASN1_TIME *t);
12224 ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME
12225                                                    **out);
12226 int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
12227 
12228 int i2d_ASN1_SET(struct stack_st_OPENSSL_BLOCK *a, unsigned char **pp,
12229                  i2d_of_void *i2d, int ex_tag, int ex_class, int is_set);
12230 struct stack_st_OPENSSL_BLOCK *d2i_ASN1_SET(struct stack_st_OPENSSL_BLOCK **a,
12231                                       const unsigned char **pp,
12232                                       long length, d2i_of_void *d2i,
12233                                       void (*free_func) (OPENSSL_BLOCK),
12234                                       int ex_tag, int ex_class);
12235 
12236 
12237 int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a);
12238 int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size);
12239 int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a);
12240 int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size);
12241 int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a);
12242 int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size);
12243 int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type);
12244 
12245 int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a);
12246 
12247 int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num);
12248 ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len,
12249                                 const char *sn, const char *ln);
12250 
12251 int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
12252 long ASN1_INTEGER_get(const ASN1_INTEGER *a);
12253 ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai);
12254 BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn);
12255 
12256 int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
12257 long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a);
12258 ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai);
12259 BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn);
12260 
12261 /* General */
12262 /* given a string, return the correct type, max is the maximum length */
12263 int ASN1_PRINTABLE_type(const unsigned char *s, int max);
12264 
12265 int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass);
12266 ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp,
12267                             long length, int Ptag, int Pclass);
12268 unsigned long ASN1_tag2bit(int tag);
12269 /* type is one or more of the B_ASN1_ values. */
12270 ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp,
12271                                  long length, int type);
12272 
12273 /* PARSING */
12274 int asn1_Finish(ASN1_CTX *c);
12275 int asn1_const_Finish(ASN1_const_CTX *c);
12276 
12277 /* SPECIALS */
12278 int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
12279                     int *pclass, long omax);
12280 int ASN1_check_infinite_end(unsigned char **p, long len);
12281 int ASN1_const_check_infinite_end(const unsigned char **p, long len);
12282 void ASN1_put_object(unsigned char **pp, int constructed, int length,
12283                      int tag, int xclass);
12284 int ASN1_put_eoc(unsigned char **pp);
12285 int ASN1_object_size(int constructed, int length, int tag);
12286 
12287 /* Used to implement other functions */
12288 void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x);
12289 # 976 "/usr/include/openssl/asn1.h" 3 4
12290 void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
12291 
12292 /* ASN1 alloc/free macros for when a type is only used internally */
12293 
12294 
12295 
12296 
12297 
12298 
12299 void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x);
12300 
12301 
12302 
12303 
12304 
12305 
12306 
12307 void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
12308 int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x);
12309 # 1006 "/usr/include/openssl/asn1.h" 3 4
12310 int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x);
12311 int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
12312 
12313 
12314 int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
12315 
12316 
12317 void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x);
12318 
12319 
12320 
12321 
12322 
12323 
12324 
12325 void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
12326 int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x);
12327 # 1034 "/usr/include/openssl/asn1.h" 3 4
12328 int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
12329 int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a);
12330 int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
12331 int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a);
12332 int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
12333 int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags);
12334 int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
12335                   unsigned char *buf, int off);
12336 int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent);
12337 int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent,
12338                     int dump);
12339 
12340 const char *ASN1_tag2str(int tag);
12341 
12342 /* Used to load and write netscape format cert */
12343 
12344 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;
12345 
12346 int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s);
12347 
12348 int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len);
12349 int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len);
12350 int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
12351                                   unsigned char *data, int len);
12352 int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num,
12353                                   unsigned char *data, int max_len);
12354 
12355 struct stack_st_OPENSSL_BLOCK *ASN1_seq_unpack(const unsigned char *buf, int len,
12356                                          d2i_of_void *d2i,
12357                                          void (*free_func) (OPENSSL_BLOCK));
12358 unsigned char *ASN1_seq_pack(struct stack_st_OPENSSL_BLOCK *safes, i2d_of_void *i2d,
12359                              unsigned char **buf, int *len);
12360 void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
12361 void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
12362 ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
12363                               ASN1_OCTET_STRING **oct);
12364 
12365 
12366 
12367 
12368 
12369 
12370 ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
12371                             ASN1_OCTET_STRING **oct);
12372 
12373 void ASN1_STRING_set_default_mask(unsigned long mask);
12374 int ASN1_STRING_set_default_mask_asc(const char *p);
12375 unsigned long ASN1_STRING_get_default_mask(void);
12376 int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
12377                        int inform, unsigned long mask);
12378 int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
12379                         int inform, unsigned long mask,
12380                         long minsize, long maxsize);
12381 
12382 ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
12383                                     const unsigned char *in, int inlen,
12384                                     int inform, int nid);
12385 ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid);
12386 int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long);
12387 void ASN1_STRING_TABLE_cleanup(void);
12388 
12389 /* ASN1 template functions */
12390 
12391 /* Old API compatible functions */
12392 ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
12393 void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
12394 ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in,
12395                           long len, const ASN1_ITEM *it);
12396 int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
12397 int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out,
12398                        const ASN1_ITEM *it);
12399 
12400 void ASN1_add_oid_module(void);
12401 
12402 ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
12403 ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
12404 
12405 /* ASN1 Print flags */
12406 
12407 /* Indicate missing OPTIONAL fields */
12408 
12409 /* Mark start and end of SEQUENCE */
12410 
12411 /* Mark start and end of SEQUENCE/SET OF */
12412 
12413 /* Show the ASN1 type of primitives */
12414 
12415 /* Don't show ASN1 type of ANY */
12416 
12417 /* Don't show ASN1 type of MSTRINGs */
12418 
12419 /* Don't show field names in SEQUENCE */
12420 
12421 /* Show structure names of each SEQUENCE field */
12422 
12423 /* Don't show structure name even at top level */
12424 
12425 
12426 int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent,
12427                     const ASN1_ITEM *it, const ASN1_PCTX *pctx);
12428 ASN1_PCTX *ASN1_PCTX_new(void);
12429 void ASN1_PCTX_free(ASN1_PCTX *p);
12430 unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p);
12431 void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags);
12432 unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p);
12433 void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags);
12434 unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p);
12435 void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags);
12436 unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p);
12437 void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags);
12438 unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p);
12439 void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags);
12440 
12441 BIO_METHOD *BIO_f_asn1(void);
12442 
12443 BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);
12444 
12445 int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
12446                         const ASN1_ITEM *it);
12447 int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
12448                               const char *hdr, const ASN1_ITEM *it);
12449 int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
12450                      int ctype_nid, int econt_nid,
12451                      struct stack_st_X509_ALGOR *mdalgs, const ASN1_ITEM *it);
12452 ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
12453 int SMIME_crlf_copy(BIO *in, BIO *out, int flags);
12454 int SMIME_text(BIO *in, BIO *out);
12455 
12456 /* BEGIN ERROR CODES */
12457 /*
12458  * The following lines are auto generated by the script mkerr.pl. Any changes
12459  * made after this point may be overwritten when the script is next run.
12460  */
12461 
12462 void ERR_load_ASN1_strings(void);
12463 
12464 /* Error codes for the ASN1 functions. */
12465 
12466 /* Function codes. */
12467 # 1298 "/usr/include/openssl/asn1.h" 3 4
12468 /* Reason codes. */
12469 # 966 "/usr/include/openssl/objects.h" 2 3 4
12470 # 984 "/usr/include/openssl/objects.h" 3 4
12471 typedef struct obj_name_st {
12472     int type;
12473     int alias;
12474     const char *name;
12475     const char *data;
12476 } OBJ_NAME;
12477 
12478 
12479 
12480 int OBJ_NAME_init(void);
12481 int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *),
12482                        int (*cmp_func) (const char *, const char *),
12483                        void (*free_func) (const char *, int, const char *));
12484 const char *OBJ_NAME_get(const char *name, int type);
12485 int OBJ_NAME_add(const char *name, int type, const char *data);
12486 int OBJ_NAME_remove(const char *name, int type);
12487 void OBJ_NAME_cleanup(int type); /* -1 for everything */
12488 void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg),
12489                      void *arg);
12490 void OBJ_NAME_do_all_sorted(int type,
12491                             void (*fn) (const OBJ_NAME *, void *arg),
12492                             void *arg);
12493 
12494 ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o);
12495 ASN1_OBJECT *OBJ_nid2obj(int n);
12496 const char *OBJ_nid2ln(int n);
12497 const char *OBJ_nid2sn(int n);
12498 int OBJ_obj2nid(const ASN1_OBJECT *o);
12499 ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name);
12500 int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name);
12501 int OBJ_txt2nid(const char *s);
12502 int OBJ_ln2nid(const char *s);
12503 int OBJ_sn2nid(const char *s);
12504 int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b);
12505 const void *OBJ_bsearch_(const void *key, const void *base, int num, int size,
12506                          int (*cmp) (const void *, const void *));
12507 const void *OBJ_bsearch_ex_(const void *key, const void *base, int num,
12508                             int size,
12509                             int (*cmp) (const void *, const void *),
12510                             int flags);
12511 # 1035 "/usr/include/openssl/objects.h" 3 4
12512 /*-
12513  * Unsolved problem: if a type is actually a pointer type, like
12514  * nid_triple is, then its impossible to get a const where you need
12515  * it. Consider:
12516  *
12517  * typedef int nid_triple[3];
12518  * const void *a_;
12519  * const nid_triple const *a = a_;
12520  *
12521  * The assignement discards a const because what you really want is:
12522  *
12523  * const int const * const *a = a_;
12524  *
12525  * But if you do that, you lose the fact that a is an array of 3 ints,
12526  * which breaks comparison functions.
12527  *
12528  * Thus we end up having to cast, sadly, or unpack the
12529  * declarations. Or, as I finally did in this case, delcare nid_triple
12530  * to be a struct, which it should have been in the first place.
12531  *
12532  * Ben, August 2008.
12533  *
12534  * Also, strictly speaking not all types need be const, but handling
12535  * the non-constness means a lot of complication, and in practice
12536  * comparison routines do always not touch their arguments.
12537  */
12538 # 1104 "/usr/include/openssl/objects.h" 3 4
12539 int OBJ_new_nid(int num);
12540 int OBJ_add_object(const ASN1_OBJECT *obj);
12541 int OBJ_create(const char *oid, const char *sn, const char *ln);
12542 void OBJ_cleanup(void);
12543 int OBJ_create_objects(BIO *in);
12544 
12545 int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid);
12546 int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid);
12547 int OBJ_add_sigid(int signid, int dig_id, int pkey_id);
12548 void OBJ_sigid_free(void);
12549 
12550 extern int obj_cleanup_defer;
12551 void check_defer(int nid);
12552 
12553 /* BEGIN ERROR CODES */
12554 /*
12555  * The following lines are auto generated by the script mkerr.pl. Any changes
12556  * made after this point may be overwritten when the script is next run.
12557  */
12558 void ERR_load_OBJ_strings(void);
12559 
12560 /* Error codes for the OBJ functions. */
12561 
12562 /* Function codes. */
12563 # 1136 "/usr/include/openssl/objects.h" 3 4
12564 /* Reason codes. */
12565 # 95 "/usr/include/openssl/evp.h" 2 3 4
12566 # 125 "/usr/include/openssl/evp.h" 3 4
12567 /*
12568  * Type needs to be a bit field Sub-type needs to be for variations on the
12569  * method, as in, can it do arbitrary encryption....
12570  */
12571 struct evp_pkey_st {
12572     int type;
12573     int save_type;
12574     int references;
12575     const EVP_PKEY_ASN1_METHOD *ameth;
12576     ENGINE *engine;
12577     union {
12578         char *ptr;
12579 
12580         struct rsa_st *rsa; /* RSA */
12581 
12582 
12583         struct dsa_st *dsa; /* DSA */
12584 
12585 
12586         struct dh_st *dh; /* DH */
12587 
12588 
12589         struct ec_key_st *ec; /* ECC */
12590 
12591     } pkey;
12592     int save_parameters;
12593     struct stack_st_X509_ATTRIBUTE *attributes; /* [ 0 ] */
12594 } /* EVP_PKEY */ ;
12595 
12596 
12597 
12598 
12599 
12600 
12601 
12602 struct env_md_st {
12603     int type;
12604     int pkey_type;
12605     int md_size;
12606     unsigned long flags;
12607     int (*init) (EVP_MD_CTX *ctx);
12608     int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count);
12609     int (*final) (EVP_MD_CTX *ctx, unsigned char *md);
12610     int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from);
12611     int (*cleanup) (EVP_MD_CTX *ctx);
12612     /* FIXME: prototype these some day */
12613     int (*sign) (int type, const unsigned char *m, unsigned int m_length,
12614                  unsigned char *sigret, unsigned int *siglen, void *key);
12615     int (*verify) (int type, const unsigned char *m, unsigned int m_length,
12616                    const unsigned char *sigbuf, unsigned int siglen,
12617                    void *key);
12618     int required_pkey_type[5]; /* EVP_PKEY_xxx */
12619     int block_size;
12620     int ctx_size; /* how big does the ctx->md_data need to be */
12621     /* control function */
12622     int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
12623 } /* EVP_MD */ ;
12624 
12625 typedef int evp_sign_method(int type, const unsigned char *m,
12626                             unsigned int m_length, unsigned char *sigret,
12627                             unsigned int *siglen, void *key);
12628 typedef int evp_verify_method(int type, const unsigned char *m,
12629                               unsigned int m_length,
12630                               const unsigned char *sigbuf,
12631                               unsigned int siglen, void *key);
12632 
12633 /* digest can only handle a single block */
12634 
12635 
12636 /*
12637  * digest is a "clone" digest used
12638  * which is a copy of an existing
12639  * one for a specific public key type.
12640  * EVP_dss1() etc
12641  */
12642 
12643 
12644 /* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */
12645 
12646 
12647 
12648 /* DigestAlgorithmIdentifier flags... */
12649 
12650 
12651 
12652 /* NULL or absent parameter accepted. Use NULL */
12653 
12654 
12655 
12656 /* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */
12657 
12658 
12659 
12660 /* Custom handling via ctrl */
12661 
12662 
12663 
12664 /* Note if suitable for use in FIPS mode */
12665 
12666 
12667 /* Digest ctrls */
12668 
12669 
12670 
12671 
12672 /* Minimum Algorithm specific ctrl value */
12673 # 268 "/usr/include/openssl/evp.h" 3 4
12674 struct env_md_ctx_st {
12675     const EVP_MD *digest;
12676     ENGINE *engine; /* functional reference if 'digest' is
12677                                  * ENGINE-provided */
12678     unsigned long flags;
12679     void *md_data;
12680     /* Public key context for sign/verify */
12681     EVP_PKEY_CTX *pctx;
12682     /* Update function: usually copied from EVP_MD */
12683     int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count);
12684 } /* EVP_MD_CTX */ ;
12685 
12686 /* values for EVP_MD_CTX flags */
12687 
12688 
12689 
12690 
12691 
12692 
12693 
12694 /*
12695  * FIPS and pad options are ignored in 1.0.0, definitions are here so we
12696  * don't accidentally reuse the values for other purposes.
12697  */
12698 
12699 
12700 
12701 
12702 /*
12703  * The following PAD options are also currently ignored in 1.0.0, digest
12704  * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*()
12705  * instead.
12706  */
12707 
12708 
12709 
12710 
12711 
12712 
12713 
12714 struct evp_cipher_st {
12715     int nid;
12716     int block_size;
12717     /* Default value for variable length ciphers */
12718     int key_len;
12719     int iv_len;
12720     /* Various flags */
12721     unsigned long flags;
12722     /* init key */
12723     int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key,
12724                  const unsigned char *iv, int enc);
12725     /* encrypt/decrypt data */
12726     int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out,
12727                       const unsigned char *in, size_t inl);
12728     /* cleanup ctx */
12729     int (*cleanup) (EVP_CIPHER_CTX *);
12730     /* how big ctx->cipher_data needs to be */
12731     int ctx_size;
12732     /* Populate a ASN1_TYPE with parameters */
12733     int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *);
12734     /* Get parameters from a ASN1_TYPE */
12735     int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *);
12736     /* Miscellaneous operations */
12737     int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr);
12738     /* Application data */
12739     void *app_data;
12740 } /* EVP_CIPHER */ ;
12741 
12742 /* Values for cipher flags */
12743 
12744 /* Modes for ciphers */
12745 # 351 "/usr/include/openssl/evp.h" 3 4
12746 /* Set if variable length cipher */
12747 
12748 /* Set if the iv handling should be done by the cipher itself */
12749 
12750 /* Set if the cipher's init() function should be called if key is NULL */
12751 
12752 /* Call ctrl() to init cipher parameters */
12753 
12754 /* Don't use standard key length function */
12755 
12756 /* Don't use standard block padding */
12757 
12758 /* cipher handles random key generation */
12759 
12760 /* cipher has its own additional copying logic */
12761 
12762 /* Allow use default ASN1 get/set iv */
12763 
12764 /* Buffer length in bits not bytes: CFB1 mode only */
12765 
12766 /* Note if suitable for use in FIPS mode */
12767 
12768 /* Allow non FIPS cipher in FIPS mode */
12769 
12770 /*
12771  * Cipher handles any and all padding logic as well as finalisation.
12772  */
12773 
12774 
12775 
12776 
12777 /*
12778  * Cipher context flag to indicate we can handle wrap mode: if allowed in
12779  * older applications it could overflow buffers.
12780  */
12781 
12782 
12783 
12784 /* ctrl() values */
12785 # 410 "/usr/include/openssl/evp.h" 3 4
12786 /*
12787  * AEAD cipher deduces payload length and returns number of bytes required to
12788  * store MAC and eventual padding. Subsequent call to EVP_Cipher even
12789  * appends/verifies MAC.
12790  */
12791 
12792 /* Used by composite AEAD ciphers, no-op in GCM, CCM... */
12793 
12794 /* Set the GCM invocation field, decrypt only */
12795 
12796 
12797 
12798 
12799 
12800 
12801 
12802 /* RFC 5246 defines additional data to be 13 bytes in length */
12803 
12804 
12805 typedef struct {
12806     unsigned char *out;
12807     const unsigned char *inp;
12808     size_t len;
12809     unsigned int interleave;
12810 } EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM;
12811 
12812 /* GCM TLS constants */
12813 /* Length of fixed part of IV derived from PRF */
12814 
12815 /* Length of explicit part of IV part of TLS records */
12816 
12817 /* Length of tag for TLS */
12818 
12819 
12820 typedef struct evp_cipher_info_st {
12821     const EVP_CIPHER *cipher;
12822     unsigned char iv[16];
12823 } EVP_CIPHER_INFO;
12824 
12825 struct evp_cipher_ctx_st {
12826     const EVP_CIPHER *cipher;
12827     ENGINE *engine; /* functional reference if 'cipher' is
12828                                  * ENGINE-provided */
12829     int encrypt; /* encrypt or decrypt */
12830     int buf_len; /* number we have left */
12831     unsigned char oiv[16]; /* original iv */
12832     unsigned char iv[16]; /* working iv */
12833     unsigned char buf[32]; /* saved partial block */
12834     int num; /* used by cfb/ofb/ctr mode */
12835     void *app_data; /* application stuff */
12836     int key_len; /* May change for variable length cipher */
12837     unsigned long flags; /* Various flags */
12838     void *cipher_data; /* per EVP data */
12839     int final_used;
12840     int block_mask;
12841     unsigned char final[32]; /* possible final block */
12842 } /* EVP_CIPHER_CTX */ ;
12843 
12844 typedef struct evp_Encode_Ctx_st {
12845     /* number saved in a partial encode/decode */
12846     int num;
12847     /*
12848      * The length is either the output line length (in input bytes) or the
12849      * shortest input line length that is ok.  Once decoding begins, the
12850      * length is adjusted up each time a longer line is decoded
12851      */
12852     int length;
12853     /* data to encode */
12854     unsigned char enc_data[80];
12855     /* number read on current line */
12856     int line_num;
12857     int expect_nl;
12858 } EVP_ENCODE_CTX;
12859 
12860 /* Password based encryption function */
12861 typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass,
12862                               int passlen, ASN1_TYPE *param,
12863                               const EVP_CIPHER *cipher, const EVP_MD *md,
12864                               int en_de);
12865 # 510 "/usr/include/openssl/evp.h" 3 4
12866 /* Add some extra combinations */
12867 
12868 
12869 
12870 
12871 
12872 int EVP_MD_type(const EVP_MD *md);
12873 
12874 
12875 int EVP_MD_pkey_type(const EVP_MD *md);
12876 int EVP_MD_size(const EVP_MD *md);
12877 int EVP_MD_block_size(const EVP_MD *md);
12878 unsigned long EVP_MD_flags(const EVP_MD *md);
12879 
12880 const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx);
12881 
12882 
12883 
12884 
12885 int EVP_CIPHER_nid(const EVP_CIPHER *cipher);
12886 
12887 int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
12888 int EVP_CIPHER_key_length(const EVP_CIPHER *cipher);
12889 int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher);
12890 unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher);
12891 
12892 
12893 const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx);
12894 int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx);
12895 int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx);
12896 int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx);
12897 int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx);
12898 int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in);
12899 void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
12900 void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
12901 
12902 unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx);
12903 # 574 "/usr/include/openssl/evp.h" 3 4
12904 int EVP_Cipher(EVP_CIPHER_CTX *c,
12905                unsigned char *out, const unsigned char *in, unsigned int inl);
12906 # 586 "/usr/include/openssl/evp.h" 3 4
12907 void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
12908 int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
12909 EVP_MD_CTX *EVP_MD_CTX_create(void);
12910 void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
12911 int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in);
12912 void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
12913 void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags);
12914 int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags);
12915 int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
12916 int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
12917 int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
12918 int EVP_Digest(const void *data, size_t count,
12919                unsigned char *md, unsigned int *size, const EVP_MD *type,
12920                ENGINE *impl);
12921 
12922 int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in);
12923 int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
12924 int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
12925 
12926 int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify);
12927 int EVP_read_pw_string_min(char *buf, int minlen, int maxlen,
12928                            const char *prompt, int verify);
12929 void EVP_set_pw_prompt(const char *prompt);
12930 char *EVP_get_pw_prompt(void);
12931 
12932 int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
12933                    const unsigned char *salt, const unsigned char *data,
12934                    int datal, int count, unsigned char *key,
12935                    unsigned char *iv);
12936 
12937 void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags);
12938 void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags);
12939 int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags);
12940 
12941 int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
12942                     const unsigned char *key, const unsigned char *iv);
12943 int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
12944                        ENGINE *impl, const unsigned char *key,
12945                        const unsigned char *iv);
12946 int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
12947                       const unsigned char *in, int inl);
12948 int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
12949 int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
12950 
12951 int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
12952                     const unsigned char *key, const unsigned char *iv);
12953 int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
12954                        ENGINE *impl, const unsigned char *key,
12955                        const unsigned char *iv);
12956 int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
12957                       const unsigned char *in, int inl);
12958 int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
12959 int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
12960 
12961 int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
12962                    const unsigned char *key, const unsigned char *iv,
12963                    int enc);
12964 int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
12965                       ENGINE *impl, const unsigned char *key,
12966                       const unsigned char *iv, int enc);
12967 int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
12968                      const unsigned char *in, int inl);
12969 int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
12970 int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
12971 
12972 int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s,
12973                   EVP_PKEY *pkey);
12974 
12975 int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
12976                     unsigned int siglen, EVP_PKEY *pkey);
12977 
12978 int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
12979                        const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
12980 int EVP_DigestSignFinal(EVP_MD_CTX *ctx,
12981                         unsigned char *sigret, size_t *siglen);
12982 
12983 int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
12984                          const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
12985 int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx,
12986                           const unsigned char *sig, size_t siglen);
12987 
12988 int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
12989                  const unsigned char *ek, int ekl, const unsigned char *iv,
12990                  EVP_PKEY *priv);
12991 int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
12992 
12993 int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
12994                  unsigned char **ek, int *ekl, unsigned char *iv,
12995                  EVP_PKEY **pubk, int npubk);
12996 int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
12997 
12998 void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
12999 void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
13000                       const unsigned char *in, int inl);
13001 void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);
13002 int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
13003 
13004 void EVP_DecodeInit(EVP_ENCODE_CTX *ctx);
13005 int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
13006                      const unsigned char *in, int inl);
13007 int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned
13008                     char *out, int *outl);
13009 int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
13010 
13011 void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
13012 int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
13013 EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
13014 void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a);
13015 int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
13016 int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);
13017 int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
13018 int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key);
13019 
13020 
13021 BIO_METHOD *BIO_f_md(void);
13022 BIO_METHOD *BIO_f_base64(void);
13023 BIO_METHOD *BIO_f_cipher(void);
13024 BIO_METHOD *BIO_f_reliable(void);
13025 void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k,
13026                     const unsigned char *i, int enc);
13027 
13028 
13029 const EVP_MD *EVP_md_null(void);
13030 
13031 const EVP_MD *EVP_md2(void);
13032 
13033 
13034 const EVP_MD *EVP_md4(void);
13035 
13036 
13037 const EVP_MD *EVP_md5(void);
13038 
13039 
13040 const EVP_MD *EVP_sha(void);
13041 const EVP_MD *EVP_sha1(void);
13042 const EVP_MD *EVP_dss(void);
13043 const EVP_MD *EVP_dss1(void);
13044 const EVP_MD *EVP_ecdsa(void);
13045 
13046 
13047 const EVP_MD *EVP_sha224(void);
13048 const EVP_MD *EVP_sha256(void);
13049 
13050 
13051 const EVP_MD *EVP_sha384(void);
13052 const EVP_MD *EVP_sha512(void);
13053 
13054 
13055 
13056 
13057 
13058 const EVP_MD *EVP_ripemd160(void);
13059 
13060 
13061 
13062 
13063 const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */
13064 
13065 const EVP_CIPHER *EVP_des_ecb(void);
13066 const EVP_CIPHER *EVP_des_ede(void);
13067 const EVP_CIPHER *EVP_des_ede3(void);
13068 const EVP_CIPHER *EVP_des_ede_ecb(void);
13069 const EVP_CIPHER *EVP_des_ede3_ecb(void);
13070 const EVP_CIPHER *EVP_des_cfb64(void);
13071 
13072 const EVP_CIPHER *EVP_des_cfb1(void);
13073 const EVP_CIPHER *EVP_des_cfb8(void);
13074 const EVP_CIPHER *EVP_des_ede_cfb64(void);
13075 
13076 
13077 
13078 
13079 
13080 const EVP_CIPHER *EVP_des_ede3_cfb64(void);
13081 
13082 const EVP_CIPHER *EVP_des_ede3_cfb1(void);
13083 const EVP_CIPHER *EVP_des_ede3_cfb8(void);
13084 const EVP_CIPHER *EVP_des_ofb(void);
13085 const EVP_CIPHER *EVP_des_ede_ofb(void);
13086 const EVP_CIPHER *EVP_des_ede3_ofb(void);
13087 const EVP_CIPHER *EVP_des_cbc(void);
13088 const EVP_CIPHER *EVP_des_ede_cbc(void);
13089 const EVP_CIPHER *EVP_des_ede3_cbc(void);
13090 const EVP_CIPHER *EVP_desx_cbc(void);
13091 const EVP_CIPHER *EVP_des_ede3_wrap(void);
13092 /*
13093  * This should now be supported through the dev_crypto ENGINE. But also, why
13094  * are rc4 and md5 declarations made here inside a "NO_DES" precompiler
13095  * branch?
13096  */
13097 # 785 "/usr/include/openssl/evp.h" 3 4
13098 const EVP_CIPHER *EVP_rc4(void);
13099 const EVP_CIPHER *EVP_rc4_40(void);
13100 
13101 const EVP_CIPHER *EVP_rc4_hmac_md5(void);
13102 # 799 "/usr/include/openssl/evp.h" 3 4
13103 const EVP_CIPHER *EVP_rc2_ecb(void);
13104 const EVP_CIPHER *EVP_rc2_cbc(void);
13105 const EVP_CIPHER *EVP_rc2_40_cbc(void);
13106 const EVP_CIPHER *EVP_rc2_64_cbc(void);
13107 const EVP_CIPHER *EVP_rc2_cfb64(void);
13108 
13109 const EVP_CIPHER *EVP_rc2_ofb(void);
13110 
13111 
13112 const EVP_CIPHER *EVP_bf_ecb(void);
13113 const EVP_CIPHER *EVP_bf_cbc(void);
13114 const EVP_CIPHER *EVP_bf_cfb64(void);
13115 
13116 const EVP_CIPHER *EVP_bf_ofb(void);
13117 
13118 
13119 const EVP_CIPHER *EVP_cast5_ecb(void);
13120 const EVP_CIPHER *EVP_cast5_cbc(void);
13121 const EVP_CIPHER *EVP_cast5_cfb64(void);
13122 
13123 const EVP_CIPHER *EVP_cast5_ofb(void);
13124 # 829 "/usr/include/openssl/evp.h" 3 4
13125 const EVP_CIPHER *EVP_aes_128_ecb(void);
13126 const EVP_CIPHER *EVP_aes_128_cbc(void);
13127 const EVP_CIPHER *EVP_aes_128_cfb1(void);
13128 const EVP_CIPHER *EVP_aes_128_cfb8(void);
13129 const EVP_CIPHER *EVP_aes_128_cfb128(void);
13130 
13131 const EVP_CIPHER *EVP_aes_128_ofb(void);
13132 const EVP_CIPHER *EVP_aes_128_ctr(void);
13133 const EVP_CIPHER *EVP_aes_128_ccm(void);
13134 const EVP_CIPHER *EVP_aes_128_gcm(void);
13135 const EVP_CIPHER *EVP_aes_128_xts(void);
13136 const EVP_CIPHER *EVP_aes_128_wrap(void);
13137 const EVP_CIPHER *EVP_aes_192_ecb(void);
13138 const EVP_CIPHER *EVP_aes_192_cbc(void);
13139 const EVP_CIPHER *EVP_aes_192_cfb1(void);
13140 const EVP_CIPHER *EVP_aes_192_cfb8(void);
13141 const EVP_CIPHER *EVP_aes_192_cfb128(void);
13142 
13143 const EVP_CIPHER *EVP_aes_192_ofb(void);
13144 const EVP_CIPHER *EVP_aes_192_ctr(void);
13145 const EVP_CIPHER *EVP_aes_192_ccm(void);
13146 const EVP_CIPHER *EVP_aes_192_gcm(void);
13147 const EVP_CIPHER *EVP_aes_192_wrap(void);
13148 const EVP_CIPHER *EVP_aes_256_ecb(void);
13149 const EVP_CIPHER *EVP_aes_256_cbc(void);
13150 const EVP_CIPHER *EVP_aes_256_cfb1(void);
13151 const EVP_CIPHER *EVP_aes_256_cfb8(void);
13152 const EVP_CIPHER *EVP_aes_256_cfb128(void);
13153 
13154 const EVP_CIPHER *EVP_aes_256_ofb(void);
13155 const EVP_CIPHER *EVP_aes_256_ctr(void);
13156 const EVP_CIPHER *EVP_aes_256_ccm(void);
13157 const EVP_CIPHER *EVP_aes_256_gcm(void);
13158 const EVP_CIPHER *EVP_aes_256_xts(void);
13159 const EVP_CIPHER *EVP_aes_256_wrap(void);
13160 
13161 const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void);
13162 const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void);
13163 
13164 
13165 const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void);
13166 const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void);
13167 
13168 
13169 
13170 const EVP_CIPHER *EVP_camellia_128_ecb(void);
13171 const EVP_CIPHER *EVP_camellia_128_cbc(void);
13172 const EVP_CIPHER *EVP_camellia_128_cfb1(void);
13173 const EVP_CIPHER *EVP_camellia_128_cfb8(void);
13174 const EVP_CIPHER *EVP_camellia_128_cfb128(void);
13175 
13176 const EVP_CIPHER *EVP_camellia_128_ofb(void);
13177 const EVP_CIPHER *EVP_camellia_192_ecb(void);
13178 const EVP_CIPHER *EVP_camellia_192_cbc(void);
13179 const EVP_CIPHER *EVP_camellia_192_cfb1(void);
13180 const EVP_CIPHER *EVP_camellia_192_cfb8(void);
13181 const EVP_CIPHER *EVP_camellia_192_cfb128(void);
13182 
13183 const EVP_CIPHER *EVP_camellia_192_ofb(void);
13184 const EVP_CIPHER *EVP_camellia_256_ecb(void);
13185 const EVP_CIPHER *EVP_camellia_256_cbc(void);
13186 const EVP_CIPHER *EVP_camellia_256_cfb1(void);
13187 const EVP_CIPHER *EVP_camellia_256_cfb8(void);
13188 const EVP_CIPHER *EVP_camellia_256_cfb128(void);
13189 
13190 const EVP_CIPHER *EVP_camellia_256_ofb(void);
13191 # 905 "/usr/include/openssl/evp.h" 3 4
13192 void OPENSSL_add_all_algorithms_noconf(void);
13193 void OPENSSL_add_all_algorithms_conf(void);
13194 # 916 "/usr/include/openssl/evp.h" 3 4
13195 void OpenSSL_add_all_ciphers(void);
13196 void OpenSSL_add_all_digests(void);
13197 
13198 
13199 
13200 
13201 int EVP_add_cipher(const EVP_CIPHER *cipher);
13202 int EVP_add_digest(const EVP_MD *digest);
13203 
13204 const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
13205 const EVP_MD *EVP_get_digestbyname(const char *name);
13206 void EVP_cleanup(void);
13207 
13208 void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph,
13209                                    const char *from, const char *to, void *x),
13210                        void *arg);
13211 void EVP_CIPHER_do_all_sorted(void (*fn)
13212                                (const EVP_CIPHER *ciph, const char *from,
13213                                 const char *to, void *x), void *arg);
13214 
13215 void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph,
13216                                const char *from, const char *to, void *x),
13217                    void *arg);
13218 void EVP_MD_do_all_sorted(void (*fn)
13219                            (const EVP_MD *ciph, const char *from,
13220                             const char *to, void *x), void *arg);
13221 
13222 int EVP_PKEY_decrypt_old(unsigned char *dec_key,
13223                          const unsigned char *enc_key, int enc_key_len,
13224                          EVP_PKEY *private_key);
13225 int EVP_PKEY_encrypt_old(unsigned char *enc_key,
13226                          const unsigned char *key, int key_len,
13227                          EVP_PKEY *pub_key);
13228 int EVP_PKEY_type(int type);
13229 int EVP_PKEY_id(const EVP_PKEY *pkey);
13230 int EVP_PKEY_base_id(const EVP_PKEY *pkey);
13231 int EVP_PKEY_bits(EVP_PKEY *pkey);
13232 int EVP_PKEY_size(EVP_PKEY *pkey);
13233 int EVP_PKEY_set_type(EVP_PKEY *pkey, int type);
13234 int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
13235 int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
13236 void *EVP_PKEY_get0(EVP_PKEY *pkey);
13237 
13238 
13239 struct rsa_st;
13240 int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key);
13241 struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
13242 
13243 
13244 struct dsa_st;
13245 int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key);
13246 struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
13247 
13248 
13249 struct dh_st;
13250 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key);
13251 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
13252 
13253 
13254 struct ec_key_st;
13255 int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key);
13256 struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
13257 
13258 
13259 EVP_PKEY *EVP_PKEY_new(void);
13260 void EVP_PKEY_free(EVP_PKEY *pkey);
13261 
13262 EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
13263                         long length);
13264 int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
13265 
13266 EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
13267                          long length);
13268 EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
13269                              long length);
13270 int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp);
13271 
13272 int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
13273 int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
13274 int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode);
13275 int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b);
13276 
13277 int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
13278 
13279 int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
13280                           int indent, ASN1_PCTX *pctx);
13281 int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
13282                            int indent, ASN1_PCTX *pctx);
13283 int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
13284                           int indent, ASN1_PCTX *pctx);
13285 
13286 int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
13287 
13288 int EVP_CIPHER_type(const EVP_CIPHER *ctx);
13289 
13290 /* calls methods */
13291 int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13292 int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13293 
13294 /* These are used by EVP_CIPHER methods */
13295 int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13296 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
13297 
13298 /* PKCS5 password based encryption */
13299 int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
13300                        ASN1_TYPE *param, const EVP_CIPHER *cipher,
13301                        const EVP_MD *md, int en_de);
13302 int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
13303                            const unsigned char *salt, int saltlen, int iter,
13304                            int keylen, unsigned char *out);
13305 int PKCS5_PBKDF2_HMAC(const char *pass, int passlen,
13306                       const unsigned char *salt, int saltlen, int iter,
13307                       const EVP_MD *digest, int keylen, unsigned char *out);
13308 int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
13309                           ASN1_TYPE *param, const EVP_CIPHER *cipher,
13310                           const EVP_MD *md, int en_de);
13311 
13312 void PKCS5_PBE_add(void);
13313 
13314 int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
13315                        ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de);
13316 
13317 /* PBE type */
13318 
13319 /* Can appear as the outermost AlgorithmIdentifier */
13320 
13321 /* Is an PRF type OID */
13322 
13323 
13324 int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid,
13325                          int md_nid, EVP_PBE_KEYGEN *keygen);
13326 int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,
13327                     EVP_PBE_KEYGEN *keygen);
13328 int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid,
13329                  EVP_PBE_KEYGEN **pkeygen);
13330 void EVP_PBE_cleanup(void);
13331 # 1064 "/usr/include/openssl/evp.h" 3 4
13332 int EVP_PKEY_asn1_get_count(void);
13333 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx);
13334 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type);
13335 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe,
13336                                                    const char *str, int len);
13337 int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth);
13338 int EVP_PKEY_asn1_add_alias(int to, int from);
13339 int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id,
13340                             int *ppkey_flags, const char **pinfo,
13341                             const char **ppem_str,
13342                             const EVP_PKEY_ASN1_METHOD *ameth);
13343 
13344 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey);
13345 EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags,
13346                                         const char *pem_str,
13347                                         const char *info);
13348 void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst,
13349                         const EVP_PKEY_ASN1_METHOD *src);
13350 void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth);
13351 void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth,
13352                               int (*pub_decode) (EVP_PKEY *pk,
13353                                                  X509_PUBKEY *pub),
13354                               int (*pub_encode) (X509_PUBKEY *pub,
13355                                                  const EVP_PKEY *pk),
13356                               int (*pub_cmp) (const EVP_PKEY *a,
13357                                               const EVP_PKEY *b),
13358                               int (*pub_print) (BIO *out,
13359                                                 const EVP_PKEY *pkey,
13360                                                 int indent, ASN1_PCTX *pctx),
13361                               int (*pkey_size) (const EVP_PKEY *pk),
13362                               int (*pkey_bits) (const EVP_PKEY *pk));
13363 void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth,
13364                                int (*priv_decode) (EVP_PKEY *pk,
13365                                                    PKCS8_PRIV_KEY_INFO
13366                                                    *p8inf),
13367                                int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8,
13368                                                    const EVP_PKEY *pk),
13369                                int (*priv_print) (BIO *out,
13370                                                   const EVP_PKEY *pkey,
13371                                                   int indent,
13372                                                   ASN1_PCTX *pctx));
13373 void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth,
13374                              int (*param_decode) (EVP_PKEY *pkey,
13375                                                   const unsigned char **pder,
13376                                                   int derlen),
13377                              int (*param_encode) (const EVP_PKEY *pkey,
13378                                                   unsigned char **pder),
13379                              int (*param_missing) (const EVP_PKEY *pk),
13380                              int (*param_copy) (EVP_PKEY *to,
13381                                                 const EVP_PKEY *from),
13382                              int (*param_cmp) (const EVP_PKEY *a,
13383                                                const EVP_PKEY *b),
13384                              int (*param_print) (BIO *out,
13385                                                  const EVP_PKEY *pkey,
13386                                                  int indent,
13387                                                  ASN1_PCTX *pctx));
13388 
13389 void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth,
13390                             void (*pkey_free) (EVP_PKEY *pkey));
13391 void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
13392                             int (*pkey_ctrl) (EVP_PKEY *pkey, int op,
13393                                               long arg1, void *arg2));
13394 void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth,
13395                             int (*item_verify) (EVP_MD_CTX *ctx,
13396                                                 const ASN1_ITEM *it,
13397                                                 void *asn,
13398                                                 X509_ALGOR *a,
13399                                                 ASN1_BIT_STRING *sig,
13400                                                 EVP_PKEY *pkey),
13401                             int (*item_sign) (EVP_MD_CTX *ctx,
13402                                               const ASN1_ITEM *it,
13403                                               void *asn,
13404                                               X509_ALGOR *alg1,
13405                                               X509_ALGOR *alg2,
13406                                               ASN1_BIT_STRING *sig));
13407 # 1185 "/usr/include/openssl/evp.h" 3 4
13408 /* Used by GOST key encryption in TLS */
13409 # 1199 "/usr/include/openssl/evp.h" 3 4
13410 /*
13411  * Method handles all operations: don't assume any digest related defaults.
13412  */
13413 
13414 
13415 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type);
13416 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags);
13417 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags,
13418                              const EVP_PKEY_METHOD *meth);
13419 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src);
13420 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth);
13421 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth);
13422 
13423 EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
13424 EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
13425 EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx);
13426 void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
13427 
13428 int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
13429                       int cmd, int p1, void *p2);
13430 int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
13431                           const char *value);
13432 
13433 int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx);
13434 void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen);
13435 
13436 EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e,
13437                                const unsigned char *key, int keylen);
13438 
13439 void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data);
13440 void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx);
13441 EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx);
13442 
13443 EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx);
13444 
13445 void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data);
13446 void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx);
13447 
13448 int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
13449 int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
13450                   unsigned char *sig, size_t *siglen,
13451                   const unsigned char *tbs, size_t tbslen);
13452 int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
13453 int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
13454                     const unsigned char *sig, size_t siglen,
13455                     const unsigned char *tbs, size_t tbslen);
13456 int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
13457 int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
13458                             unsigned char *rout, size_t *routlen,
13459                             const unsigned char *sig, size_t siglen);
13460 int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
13461 int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
13462                      unsigned char *out, size_t *outlen,
13463                      const unsigned char *in, size_t inlen);
13464 int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
13465 int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
13466                      unsigned char *out, size_t *outlen,
13467                      const unsigned char *in, size_t inlen);
13468 
13469 int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx);
13470 int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer);
13471 int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
13472 
13473 typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx);
13474 
13475 int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
13476 int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
13477 int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
13478 int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
13479 
13480 void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
13481 EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
13482 
13483 int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx);
13484 
13485 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
13486                             int (*init) (EVP_PKEY_CTX *ctx));
13487 
13488 void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth,
13489                             int (*copy) (EVP_PKEY_CTX *dst,
13490                                          EVP_PKEY_CTX *src));
13491 
13492 void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,
13493                                void (*cleanup) (EVP_PKEY_CTX *ctx));
13494 
13495 void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth,
13496                                 int (*paramgen_init) (EVP_PKEY_CTX *ctx),
13497                                 int (*paramgen) (EVP_PKEY_CTX *ctx,
13498                                                  EVP_PKEY *pkey));
13499 
13500 void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth,
13501                               int (*keygen_init) (EVP_PKEY_CTX *ctx),
13502                               int (*keygen) (EVP_PKEY_CTX *ctx,
13503                                              EVP_PKEY *pkey));
13504 
13505 void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth,
13506                             int (*sign_init) (EVP_PKEY_CTX *ctx),
13507                             int (*sign) (EVP_PKEY_CTX *ctx,
13508                                          unsigned char *sig, size_t *siglen,
13509                                          const unsigned char *tbs,
13510                                          size_t tbslen));
13511 
13512 void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth,
13513                               int (*verify_init) (EVP_PKEY_CTX *ctx),
13514                               int (*verify) (EVP_PKEY_CTX *ctx,
13515                                              const unsigned char *sig,
13516                                              size_t siglen,
13517                                              const unsigned char *tbs,
13518                                              size_t tbslen));
13519 
13520 void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth,
13521                                       int (*verify_recover_init) (EVP_PKEY_CTX
13522                                                                   *ctx),
13523                                       int (*verify_recover) (EVP_PKEY_CTX
13524                                                              *ctx,
13525                                                              unsigned char
13526                                                              *sig,
13527                                                              size_t *siglen,
13528                                                              const unsigned
13529                                                              char *tbs,
13530                                                              size_t tbslen));
13531 
13532 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
13533                                int (*signctx_init) (EVP_PKEY_CTX *ctx,
13534                                                     EVP_MD_CTX *mctx),
13535                                int (*signctx) (EVP_PKEY_CTX *ctx,
13536                                                unsigned char *sig,
13537                                                size_t *siglen,
13538                                                EVP_MD_CTX *mctx));
13539 
13540 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
13541                                  int (*verifyctx_init) (EVP_PKEY_CTX *ctx,
13542                                                         EVP_MD_CTX *mctx),
13543                                  int (*verifyctx) (EVP_PKEY_CTX *ctx,
13544                                                    const unsigned char *sig,
13545                                                    int siglen,
13546                                                    EVP_MD_CTX *mctx));
13547 
13548 void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth,
13549                                int (*encrypt_init) (EVP_PKEY_CTX *ctx),
13550                                int (*encryptfn) (EVP_PKEY_CTX *ctx,
13551                                                  unsigned char *out,
13552                                                  size_t *outlen,
13553                                                  const unsigned char *in,
13554                                                  size_t inlen));
13555 
13556 void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth,
13557                                int (*decrypt_init) (EVP_PKEY_CTX *ctx),
13558                                int (*decrypt) (EVP_PKEY_CTX *ctx,
13559                                                unsigned char *out,
13560                                                size_t *outlen,
13561                                                const unsigned char *in,
13562                                                size_t inlen));
13563 
13564 void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth,
13565                               int (*derive_init) (EVP_PKEY_CTX *ctx),
13566                               int (*derive) (EVP_PKEY_CTX *ctx,
13567                                              unsigned char *key,
13568                                              size_t *keylen));
13569 
13570 void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
13571                             int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
13572                                          void *p2),
13573                             int (*ctrl_str) (EVP_PKEY_CTX *ctx,
13574                                              const char *type,
13575                                              const char *value));
13576 
13577 void EVP_PKEY_meth_get_init(EVP_PKEY_METHOD *pmeth,
13578                             int (**pinit) (EVP_PKEY_CTX *ctx));
13579 
13580 void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth,
13581                             int (**pcopy) (EVP_PKEY_CTX *dst,
13582                                            EVP_PKEY_CTX *src));
13583 
13584 void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth,
13585                                void (**pcleanup) (EVP_PKEY_CTX *ctx));
13586 
13587 void EVP_PKEY_meth_get_paramgen(EVP_PKEY_METHOD *pmeth,
13588                                 int (**pparamgen_init) (EVP_PKEY_CTX *ctx),
13589                                 int (**pparamgen) (EVP_PKEY_CTX *ctx,
13590                                                    EVP_PKEY *pkey));
13591 
13592 void EVP_PKEY_meth_get_keygen(EVP_PKEY_METHOD *pmeth,
13593                               int (**pkeygen_init) (EVP_PKEY_CTX *ctx),
13594                               int (**pkeygen) (EVP_PKEY_CTX *ctx,
13595                                                EVP_PKEY *pkey));
13596 
13597 void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth,
13598                             int (**psign_init) (EVP_PKEY_CTX *ctx),
13599                             int (**psign) (EVP_PKEY_CTX *ctx,
13600                                            unsigned char *sig, size_t *siglen,
13601                                            const unsigned char *tbs,
13602                                            size_t tbslen));
13603 
13604 void EVP_PKEY_meth_get_verify(EVP_PKEY_METHOD *pmeth,
13605                               int (**pverify_init) (EVP_PKEY_CTX *ctx),
13606                               int (**pverify) (EVP_PKEY_CTX *ctx,
13607                                                const unsigned char *sig,
13608                                                size_t siglen,
13609                                                const unsigned char *tbs,
13610                                                size_t tbslen));
13611 
13612 void EVP_PKEY_meth_get_verify_recover(EVP_PKEY_METHOD *pmeth,
13613                                       int (**pverify_recover_init) (EVP_PKEY_CTX
13614                                                                     *ctx),
13615                                       int (**pverify_recover) (EVP_PKEY_CTX
13616                                                                *ctx,
13617                                                                unsigned char
13618                                                                *sig,
13619                                                                size_t *siglen,
13620                                                                const unsigned
13621                                                                char *tbs,
13622                                                                size_t tbslen));
13623 
13624 void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth,
13625                                int (**psignctx_init) (EVP_PKEY_CTX *ctx,
13626                                                       EVP_MD_CTX *mctx),
13627                                int (**psignctx) (EVP_PKEY_CTX *ctx,
13628                                                  unsigned char *sig,
13629                                                  size_t *siglen,
13630                                                  EVP_MD_CTX *mctx));
13631 
13632 void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth,
13633                                  int (**pverifyctx_init) (EVP_PKEY_CTX *ctx,
13634                                                           EVP_MD_CTX *mctx),
13635                                  int (**pverifyctx) (EVP_PKEY_CTX *ctx,
13636                                                      const unsigned char *sig,
13637                                                      int siglen,
13638                                                      EVP_MD_CTX *mctx));
13639 
13640 void EVP_PKEY_meth_get_encrypt(EVP_PKEY_METHOD *pmeth,
13641                                int (**pencrypt_init) (EVP_PKEY_CTX *ctx),
13642                                int (**pencryptfn) (EVP_PKEY_CTX *ctx,
13643                                                    unsigned char *out,
13644                                                    size_t *outlen,
13645                                                    const unsigned char *in,
13646                                                    size_t inlen));
13647 
13648 void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth,
13649                                int (**pdecrypt_init) (EVP_PKEY_CTX *ctx),
13650                                int (**pdecrypt) (EVP_PKEY_CTX *ctx,
13651                                                  unsigned char *out,
13652                                                  size_t *outlen,
13653                                                  const unsigned char *in,
13654                                                  size_t inlen));
13655 
13656 void EVP_PKEY_meth_get_derive(EVP_PKEY_METHOD *pmeth,
13657                               int (**pderive_init) (EVP_PKEY_CTX *ctx),
13658                               int (**pderive) (EVP_PKEY_CTX *ctx,
13659                                                unsigned char *key,
13660                                                size_t *keylen));
13661 
13662 void EVP_PKEY_meth_get_ctrl(EVP_PKEY_METHOD *pmeth,
13663                             int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
13664                                            void *p2),
13665                             int (**pctrl_str) (EVP_PKEY_CTX *ctx,
13666                                                const char *type,
13667                                                const char *value));
13668 
13669 void EVP_add_alg_module(void);
13670 
13671 /* BEGIN ERROR CODES */
13672 /*
13673  * The following lines are auto generated by the script mkerr.pl. Any changes
13674  * made after this point may be overwritten when the script is next run.
13675  */
13676 
13677 void ERR_load_EVP_strings(void);
13678 
13679 /* Error codes for the EVP functions. */
13680 
13681 /* Function codes. */
13682 # 1554 "/usr/include/openssl/evp.h" 3 4
13683 /* Reason codes. */
13684 # 74 "/usr/include/openssl/x509.h" 2 3 4
13685 
13686 
13687 # 1 "/usr/include/openssl/bio.h" 1 3 4
13688 /* crypto/bio/bio.h */
13689 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
13690  * All rights reserved.
13691  *
13692  * This package is an SSL implementation written
13693  * by Eric Young (eay@cryptsoft.com).
13694  * The implementation was written so as to conform with Netscapes SSL.
13695  *
13696  * This library is free for commercial and non-commercial use as long as
13697  * the following conditions are aheared to.  The following conditions
13698  * apply to all code found in this distribution, be it the RC4, RSA,
13699  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13700  * included with this distribution is covered by the same copyright terms
13701  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
13702  *
13703  * Copyright remains Eric Young's, and as such any Copyright notices in
13704  * the code are not to be removed.
13705  * If this package is used in a product, Eric Young should be given attribution
13706  * as the author of the parts of the library used.
13707  * This can be in the form of a textual message at program startup or
13708  * in documentation (online or textual) provided with the package.
13709  *
13710  * Redistribution and use in source and binary forms, with or without
13711  * modification, are permitted provided that the following conditions
13712  * are met:
13713  * 1. Redistributions of source code must retain the copyright
13714  *    notice, this list of conditions and the following disclaimer.
13715  * 2. Redistributions in binary form must reproduce the above copyright
13716  *    notice, this list of conditions and the following disclaimer in the
13717  *    documentation and/or other materials provided with the distribution.
13718  * 3. All advertising materials mentioning features or use of this software
13719  *    must display the following acknowledgement:
13720  *    "This product includes cryptographic software written by
13721  *     Eric Young (eay@cryptsoft.com)"
13722  *    The word 'cryptographic' can be left out if the rouines from the library
13723  *    being used are not cryptographic related :-).
13724  * 4. If you include any Windows specific code (or a derivative thereof) from
13725  *    the apps directory (application code) you must include an acknowledgement:
13726  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
13727  *
13728  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
13729  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13730  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
13731  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
13732  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
13733  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
13734  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13735  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
13736  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
13737  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
13738  * SUCH DAMAGE.
13739  *
13740  * The licence and distribution terms for any publically available version or
13741  * derivative of this code cannot be changed.  i.e. this code cannot simply be
13742  * copied and put under another distribution licence
13743  * [including the GNU Public Licence.]
13744  */
13745 # 77 "/usr/include/openssl/x509.h" 2 3 4
13746 
13747 # 1 "/usr/include/openssl/stack.h" 1 3 4
13748 /* crypto/stack/stack.h */
13749 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
13750  * All rights reserved.
13751  *
13752  * This package is an SSL implementation written
13753  * by Eric Young (eay@cryptsoft.com).
13754  * The implementation was written so as to conform with Netscapes SSL.
13755  *
13756  * This library is free for commercial and non-commercial use as long as
13757  * the following conditions are aheared to.  The following conditions
13758  * apply to all code found in this distribution, be it the RC4, RSA,
13759  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13760  * included with this distribution is covered by the same copyright terms
13761  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
13762  *
13763  * Copyright remains Eric Young's, and as such any Copyright notices in
13764  * the code are not to be removed.
13765  * If this package is used in a product, Eric Young should be given attribution
13766  * as the author of the parts of the library used.
13767  * This can be in the form of a textual message at program startup or
13768  * in documentation (online or textual) provided with the package.
13769  *
13770  * Redistribution and use in source and binary forms, with or without
13771  * modification, are permitted provided that the following conditions
13772  * are met:
13773  * 1. Redistributions of source code must retain the copyright
13774  *    notice, this list of conditions and the following disclaimer.
13775  * 2. Redistributions in binary form must reproduce the above copyright
13776  *    notice, this list of conditions and the following disclaimer in the
13777  *    documentation and/or other materials provided with the distribution.
13778  * 3. All advertising materials mentioning features or use of this software
13779  *    must display the following acknowledgement:
13780  *    "This product includes cryptographic software written by
13781  *     Eric Young (eay@cryptsoft.com)"
13782  *    The word 'cryptographic' can be left out if the rouines from the library
13783  *    being used are not cryptographic related :-).
13784  * 4. If you include any Windows specific code (or a derivative thereof) from
13785  *    the apps directory (application code) you must include an acknowledgement:
13786  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
13787  *
13788  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
13789  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13790  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
13791  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
13792  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
13793  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
13794  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13795  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
13796  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
13797  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
13798  * SUCH DAMAGE.
13799  *
13800  * The licence and distribution terms for any publically available version or
13801  * derivative of this code cannot be changed.  i.e. this code cannot simply be
13802  * copied and put under another distribution licence
13803  * [including the GNU Public Licence.]
13804  */
13805 # 79 "/usr/include/openssl/x509.h" 2 3 4
13806 # 1 "/usr/include/openssl/asn1.h" 1 3 4
13807 /* crypto/asn1/asn1.h */
13808 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
13809  * All rights reserved.
13810  *
13811  * This package is an SSL implementation written
13812  * by Eric Young (eay@cryptsoft.com).
13813  * The implementation was written so as to conform with Netscapes SSL.
13814  *
13815  * This library is free for commercial and non-commercial use as long as
13816  * the following conditions are aheared to.  The following conditions
13817  * apply to all code found in this distribution, be it the RC4, RSA,
13818  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13819  * included with this distribution is covered by the same copyright terms
13820  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
13821  *
13822  * Copyright remains Eric Young's, and as such any Copyright notices in
13823  * the code are not to be removed.
13824  * If this package is used in a product, Eric Young should be given attribution
13825  * as the author of the parts of the library used.
13826  * This can be in the form of a textual message at program startup or
13827  * in documentation (online or textual) provided with the package.
13828  *
13829  * Redistribution and use in source and binary forms, with or without
13830  * modification, are permitted provided that the following conditions
13831  * are met:
13832  * 1. Redistributions of source code must retain the copyright
13833  *    notice, this list of conditions and the following disclaimer.
13834  * 2. Redistributions in binary form must reproduce the above copyright
13835  *    notice, this list of conditions and the following disclaimer in the
13836  *    documentation and/or other materials provided with the distribution.
13837  * 3. All advertising materials mentioning features or use of this software
13838  *    must display the following acknowledgement:
13839  *    "This product includes cryptographic software written by
13840  *     Eric Young (eay@cryptsoft.com)"
13841  *    The word 'cryptographic' can be left out if the rouines from the library
13842  *    being used are not cryptographic related :-).
13843  * 4. If you include any Windows specific code (or a derivative thereof) from
13844  *    the apps directory (application code) you must include an acknowledgement:
13845  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
13846  *
13847  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
13848  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13849  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
13850  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
13851  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
13852  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
13853  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13854  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
13855  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
13856  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
13857  * SUCH DAMAGE.
13858  *
13859  * The licence and distribution terms for any publically available version or
13860  * derivative of this code cannot be changed.  i.e. this code cannot simply be
13861  * copied and put under another distribution licence
13862  * [including the GNU Public Licence.]
13863  */
13864 # 80 "/usr/include/openssl/x509.h" 2 3 4
13865 # 1 "/usr/include/openssl/safestack.h" 1 3 4
13866 /* ====================================================================
13867  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
13868  *
13869  * Redistribution and use in source and binary forms, with or without
13870  * modification, are permitted provided that the following conditions
13871  * are met:
13872  *
13873  * 1. Redistributions of source code must retain the above copyright
13874  *    notice, this list of conditions and the following disclaimer.
13875  *
13876  * 2. Redistributions in binary form must reproduce the above copyright
13877  *    notice, this list of conditions and the following disclaimer in
13878  *    the documentation and/or other materials provided with the
13879  *    distribution.
13880  *
13881  * 3. All advertising materials mentioning features or use of this
13882  *    software must display the following acknowledgment:
13883  *    "This product includes software developed by the OpenSSL Project
13884  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
13885  *
13886  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
13887  *    endorse or promote products derived from this software without
13888  *    prior written permission. For written permission, please contact
13889  *    openssl-core@openssl.org.
13890  *
13891  * 5. Products derived from this software may not be called "OpenSSL"
13892  *    nor may "OpenSSL" appear in their names without prior written
13893  *    permission of the OpenSSL Project.
13894  *
13895  * 6. Redistributions of any form whatsoever must retain the following
13896  *    acknowledgment:
13897  *    "This product includes software developed by the OpenSSL Project
13898  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
13899  *
13900  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
13901  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13902  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
13903  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
13904  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13905  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
13906  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
13907  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13908  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
13909  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
13910  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
13911  * OF THE POSSIBILITY OF SUCH DAMAGE.
13912  * ====================================================================
13913  *
13914  * This product includes cryptographic software written by Eric Young
13915  * (eay@cryptsoft.com).  This product includes software written by Tim
13916  * Hudson (tjh@cryptsoft.com).
13917  *
13918  */
13919 # 81 "/usr/include/openssl/x509.h" 2 3 4
13920 
13921 
13922 # 1 "/usr/include/openssl/ec.h" 1 3 4
13923 /* crypto/ec/ec.h */
13924 /*
13925  * Originally written by Bodo Moeller for the OpenSSL project.
13926  */
13927 /**
13928  * \file crypto/ec/ec.h Include file for the OpenSSL EC functions
13929  * \author Originally written by Bodo Moeller for the OpenSSL project
13930  */
13931 /* ====================================================================
13932  * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
13933  *
13934  * Redistribution and use in source and binary forms, with or without
13935  * modification, are permitted provided that the following conditions
13936  * are met:
13937  *
13938  * 1. Redistributions of source code must retain the above copyright
13939  *    notice, this list of conditions and the following disclaimer.
13940  *
13941  * 2. Redistributions in binary form must reproduce the above copyright
13942  *    notice, this list of conditions and the following disclaimer in
13943  *    the documentation and/or other materials provided with the
13944  *    distribution.
13945  *
13946  * 3. All advertising materials mentioning features or use of this
13947  *    software must display the following acknowledgment:
13948  *    "This product includes software developed by the OpenSSL Project
13949  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
13950  *
13951  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
13952  *    endorse or promote products derived from this software without
13953  *    prior written permission. For written permission, please contact
13954  *    openssl-core@openssl.org.
13955  *
13956  * 5. Products derived from this software may not be called "OpenSSL"
13957  *    nor may "OpenSSL" appear in their names without prior written
13958  *    permission of the OpenSSL Project.
13959  *
13960  * 6. Redistributions of any form whatsoever must retain the following
13961  *    acknowledgment:
13962  *    "This product includes software developed by the OpenSSL Project
13963  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
13964  *
13965  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
13966  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
13967  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
13968  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
13969  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13970  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
13971  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
13972  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13973  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
13974  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
13975  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
13976  * OF THE POSSIBILITY OF SUCH DAMAGE.
13977  * ====================================================================
13978  *
13979  * This product includes cryptographic software written by Eric Young
13980  * (eay@cryptsoft.com).  This product includes software written by Tim
13981  * Hudson (tjh@cryptsoft.com).
13982  *
13983  */
13984 /* ====================================================================
13985  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
13986  *
13987  * Portions of the attached software ("Contribution") are developed by
13988  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
13989  *
13990  * The Contribution is licensed pursuant to the OpenSSL open source
13991  * license provided above.
13992  *
13993  * The elliptic curve binary polynomial software is originally written by
13994  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
13995  *
13996  */
13997 
13998 
13999 
14000 
14001 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
14002 /* opensslconf.h */
14003 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
14004 
14005 
14006 
14007 
14008 /* OpenSSL was configured with the following options: */
14009 # 108 "/usr/include/openssl/opensslconf.h" 3 4
14010 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
14011    asks for it.  This is a transient feature that is provided for those
14012    who haven't had the time to do the appropriate changes in their
14013    applications.  */
14014 # 204 "/usr/include/openssl/opensslconf.h" 3 4
14015 /* crypto/opensslconf.h.in */
14016 
14017 /* Generate 80386 code? */
14018 # 80 "/usr/include/openssl/ec.h" 2 3 4
14019 
14020 
14021 
14022 
14023 
14024 # 1 "/usr/include/openssl/asn1.h" 1 3 4
14025 /* crypto/asn1/asn1.h */
14026 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
14027  * All rights reserved.
14028  *
14029  * This package is an SSL implementation written
14030  * by Eric Young (eay@cryptsoft.com).
14031  * The implementation was written so as to conform with Netscapes SSL.
14032  *
14033  * This library is free for commercial and non-commercial use as long as
14034  * the following conditions are aheared to.  The following conditions
14035  * apply to all code found in this distribution, be it the RC4, RSA,
14036  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
14037  * included with this distribution is covered by the same copyright terms
14038  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14039  *
14040  * Copyright remains Eric Young's, and as such any Copyright notices in
14041  * the code are not to be removed.
14042  * If this package is used in a product, Eric Young should be given attribution
14043  * as the author of the parts of the library used.
14044  * This can be in the form of a textual message at program startup or
14045  * in documentation (online or textual) provided with the package.
14046  *
14047  * Redistribution and use in source and binary forms, with or without
14048  * modification, are permitted provided that the following conditions
14049  * are met:
14050  * 1. Redistributions of source code must retain the copyright
14051  *    notice, this list of conditions and the following disclaimer.
14052  * 2. Redistributions in binary form must reproduce the above copyright
14053  *    notice, this list of conditions and the following disclaimer in the
14054  *    documentation and/or other materials provided with the distribution.
14055  * 3. All advertising materials mentioning features or use of this software
14056  *    must display the following acknowledgement:
14057  *    "This product includes cryptographic software written by
14058  *     Eric Young (eay@cryptsoft.com)"
14059  *    The word 'cryptographic' can be left out if the rouines from the library
14060  *    being used are not cryptographic related :-).
14061  * 4. If you include any Windows specific code (or a derivative thereof) from
14062  *    the apps directory (application code) you must include an acknowledgement:
14063  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
14064  *
14065  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
14066  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14067  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
14068  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
14069  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
14070  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
14071  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14072  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
14073  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
14074  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
14075  * SUCH DAMAGE.
14076  *
14077  * The licence and distribution terms for any publically available version or
14078  * derivative of this code cannot be changed.  i.e. this code cannot simply be
14079  * copied and put under another distribution licence
14080  * [including the GNU Public Licence.]
14081  */
14082 # 86 "/usr/include/openssl/ec.h" 2 3 4
14083 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
14084 /* ====================================================================
14085  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
14086  *
14087  * Redistribution and use in source and binary forms, with or without
14088  * modification, are permitted provided that the following conditions
14089  * are met:
14090  *
14091  * 1. Redistributions of source code must retain the above copyright
14092  *    notice, this list of conditions and the following disclaimer.
14093  *
14094  * 2. Redistributions in binary form must reproduce the above copyright
14095  *    notice, this list of conditions and the following disclaimer in
14096  *    the documentation and/or other materials provided with the
14097  *    distribution.
14098  *
14099  * 3. All advertising materials mentioning features or use of this
14100  *    software must display the following acknowledgment:
14101  *    "This product includes software developed by the OpenSSL Project
14102  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
14103  *
14104  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
14105  *    endorse or promote products derived from this software without
14106  *    prior written permission. For written permission, please contact
14107  *    openssl-core@openssl.org.
14108  *
14109  * 5. Products derived from this software may not be called "OpenSSL"
14110  *    nor may "OpenSSL" appear in their names without prior written
14111  *    permission of the OpenSSL Project.
14112  *
14113  * 6. Redistributions of any form whatsoever must retain the following
14114  *    acknowledgment:
14115  *    "This product includes software developed by the OpenSSL Project
14116  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
14117  *
14118  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
14119  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14120  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14121  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
14122  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14123  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14124  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
14125  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14126  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14127  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
14128  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
14129  * OF THE POSSIBILITY OF SUCH DAMAGE.
14130  * ====================================================================
14131  *
14132  * This product includes cryptographic software written by Eric Young
14133  * (eay@cryptsoft.com).  This product includes software written by Tim
14134  * Hudson (tjh@cryptsoft.com).
14135  *
14136  */
14137 # 87 "/usr/include/openssl/ec.h" 2 3 4
14138 
14139 # 1 "/usr/include/openssl/bn.h" 1 3 4
14140 /* crypto/bn/bn.h */
14141 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
14142  * All rights reserved.
14143  *
14144  * This package is an SSL implementation written
14145  * by Eric Young (eay@cryptsoft.com).
14146  * The implementation was written so as to conform with Netscapes SSL.
14147  *
14148  * This library is free for commercial and non-commercial use as long as
14149  * the following conditions are aheared to.  The following conditions
14150  * apply to all code found in this distribution, be it the RC4, RSA,
14151  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
14152  * included with this distribution is covered by the same copyright terms
14153  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14154  *
14155  * Copyright remains Eric Young's, and as such any Copyright notices in
14156  * the code are not to be removed.
14157  * If this package is used in a product, Eric Young should be given attribution
14158  * as the author of the parts of the library used.
14159  * This can be in the form of a textual message at program startup or
14160  * in documentation (online or textual) provided with the package.
14161  *
14162  * Redistribution and use in source and binary forms, with or without
14163  * modification, are permitted provided that the following conditions
14164  * are met:
14165  * 1. Redistributions of source code must retain the copyright
14166  *    notice, this list of conditions and the following disclaimer.
14167  * 2. Redistributions in binary form must reproduce the above copyright
14168  *    notice, this list of conditions and the following disclaimer in the
14169  *    documentation and/or other materials provided with the distribution.
14170  * 3. All advertising materials mentioning features or use of this software
14171  *    must display the following acknowledgement:
14172  *    "This product includes cryptographic software written by
14173  *     Eric Young (eay@cryptsoft.com)"
14174  *    The word 'cryptographic' can be left out if the rouines from the library
14175  *    being used are not cryptographic related :-).
14176  * 4. If you include any Windows specific code (or a derivative thereof) from
14177  *    the apps directory (application code) you must include an acknowledgement:
14178  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
14179  *
14180  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
14181  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14182  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
14183  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
14184  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
14185  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
14186  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14187  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
14188  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
14189  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
14190  * SUCH DAMAGE.
14191  *
14192  * The licence and distribution terms for any publically available version or
14193  * derivative of this code cannot be changed.  i.e. this code cannot simply be
14194  * copied and put under another distribution licence
14195  * [including the GNU Public Licence.]
14196  */
14197 /* ====================================================================
14198  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
14199  *
14200  * Redistribution and use in source and binary forms, with or without
14201  * modification, are permitted provided that the following conditions
14202  * are met:
14203  *
14204  * 1. Redistributions of source code must retain the above copyright
14205  *    notice, this list of conditions and the following disclaimer.
14206  *
14207  * 2. Redistributions in binary form must reproduce the above copyright
14208  *    notice, this list of conditions and the following disclaimer in
14209  *    the documentation and/or other materials provided with the
14210  *    distribution.
14211  *
14212  * 3. All advertising materials mentioning features or use of this
14213  *    software must display the following acknowledgment:
14214  *    "This product includes software developed by the OpenSSL Project
14215  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
14216  *
14217  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
14218  *    endorse or promote products derived from this software without
14219  *    prior written permission. For written permission, please contact
14220  *    openssl-core@openssl.org.
14221  *
14222  * 5. Products derived from this software may not be called "OpenSSL"
14223  *    nor may "OpenSSL" appear in their names without prior written
14224  *    permission of the OpenSSL Project.
14225  *
14226  * 6. Redistributions of any form whatsoever must retain the following
14227  *    acknowledgment:
14228  *    "This product includes software developed by the OpenSSL Project
14229  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
14230  *
14231  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
14232  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14233  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14234  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
14235  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14236  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14237  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
14238  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14239  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14240  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
14241  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
14242  * OF THE POSSIBILITY OF SUCH DAMAGE.
14243  * ====================================================================
14244  *
14245  * This product includes cryptographic software written by Eric Young
14246  * (eay@cryptsoft.com).  This product includes software written by Tim
14247  * Hudson (tjh@cryptsoft.com).
14248  *
14249  */
14250 /* ====================================================================
14251  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
14252  *
14253  * Portions of the attached software ("Contribution") are developed by
14254  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
14255  *
14256  * The Contribution is licensed pursuant to the Eric Young open source
14257  * license provided above.
14258  *
14259  * The binary polynomial arithmetic software is originally written by
14260  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
14261  *
14262  */
14263 # 89 "/usr/include/openssl/ec.h" 2 3 4
14264 # 103 "/usr/include/openssl/ec.h" 3 4
14265 /** Enum for the point conversion form as defined in X9.62 (ECDSA)
14266  *  for the encoding of a elliptic curve point (x,y) */
14267 typedef enum {
14268         /** the point is encoded as z||x, where the octet z specifies
14269          *  which solution of the quadratic equation y is  */
14270     POINT_CONVERSION_COMPRESSED = 2,
14271         /** the point is encoded as z||x||y, where z is the octet 0x04  */
14272     POINT_CONVERSION_UNCOMPRESSED = 4,
14273         /** the point is encoded as z||x||y, where the octet z specifies
14274          *  which solution of the quadratic equation y is  */
14275     POINT_CONVERSION_HYBRID = 6
14276 } point_conversion_form_t;
14277 
14278 typedef struct ec_method_st EC_METHOD;
14279 
14280 typedef struct ec_group_st
14281     /*-
14282      EC_METHOD *meth;
14283      -- field definition
14284      -- curve coefficients
14285      -- optional generator with associated information (order, cofactor)
14286      -- optional extra data (precomputed table for fast computation of multiples of generator)
14287      -- ASN1 stuff
14288     */
14289     EC_GROUP;
14290 
14291 typedef struct ec_point_st EC_POINT;
14292 
14293 /********************************************************************/
14294 /*               EC_METHODs for curves over GF(p)                   */
14295 /********************************************************************/
14296 
14297 /** Returns the basic GFp ec methods which provides the basis for the
14298  *  optimized methods.
14299  *  \return  EC_METHOD object
14300  */
14301 const EC_METHOD *EC_GFp_simple_method(void);
14302 
14303 /** Returns GFp methods using montgomery multiplication.
14304  *  \return  EC_METHOD object
14305  */
14306 const EC_METHOD *EC_GFp_mont_method(void);
14307 
14308 /** Returns GFp methods using optimized methods for NIST recommended curves
14309  *  \return  EC_METHOD object
14310  */
14311 const EC_METHOD *EC_GFp_nist_method(void);
14312 # 169 "/usr/include/openssl/ec.h" 3 4
14313 /********************************************************************/
14314 /*           EC_METHOD for curves over GF(2^m)                      */
14315 /********************************************************************/
14316 
14317 /** Returns the basic GF2m ec method
14318  *  \return  EC_METHOD object
14319  */
14320 const EC_METHOD *EC_GF2m_simple_method(void);
14321 
14322 
14323 
14324 /********************************************************************/
14325 /*                   EC_GROUP functions                             */
14326 /********************************************************************/
14327 
14328 /** Creates a new EC_GROUP object
14329  *  \param   meth  EC_METHOD to use
14330  *  \return  newly created EC_GROUP object or NULL in case of an error.
14331  */
14332 EC_GROUP *EC_GROUP_new(const EC_METHOD *meth);
14333 
14334 /** Frees a EC_GROUP object
14335  *  \param  group  EC_GROUP object to be freed.
14336  */
14337 void EC_GROUP_free(EC_GROUP *group);
14338 
14339 /** Clears and frees a EC_GROUP object
14340  *  \param  group  EC_GROUP object to be cleared and freed.
14341  */
14342 void EC_GROUP_clear_free(EC_GROUP *group);
14343 
14344 /** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD.
14345  *  \param  dst  destination EC_GROUP object
14346  *  \param  src  source EC_GROUP object
14347  *  \return 1 on success and 0 if an error occurred.
14348  */
14349 int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src);
14350 
14351 /** Creates a new EC_GROUP object and copies the copies the content
14352  *  form src to the newly created EC_KEY object
14353  *  \param  src  source EC_GROUP object
14354  *  \return newly created EC_GROUP object or NULL in case of an error.
14355  */
14356 EC_GROUP *EC_GROUP_dup(const EC_GROUP *src);
14357 
14358 /** Returns the EC_METHOD of the EC_GROUP object.
14359  *  \param  group  EC_GROUP object
14360  *  \return EC_METHOD used in this EC_GROUP object.
14361  */
14362 const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group);
14363 
14364 /** Returns the field type of the EC_METHOD.
14365  *  \param  meth  EC_METHOD object
14366  *  \return NID of the underlying field type OID.
14367  */
14368 int EC_METHOD_get_field_type(const EC_METHOD *meth);
14369 
14370 /** Sets the generator and it's order/cofactor of a EC_GROUP object.
14371  *  \param  group      EC_GROUP object
14372  *  \param  generator  EC_POINT object with the generator.
14373  *  \param  order      the order of the group generated by the generator.
14374  *  \param  cofactor   the index of the sub-group generated by the generator
14375  *                     in the group of all points on the elliptic curve.
14376  *  \return 1 on success and 0 if an error occured
14377  */
14378 int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator,
14379                            const BIGNUM *order, const BIGNUM *cofactor);
14380 
14381 /** Returns the generator of a EC_GROUP object.
14382  *  \param  group  EC_GROUP object
14383  *  \return the currently used generator (possibly NULL).
14384  */
14385 const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group);
14386 
14387 /** Returns the montgomery data for order(Generator)
14388  *  \param  group  EC_GROUP object
14389  *  \return the currently used generator (possibly NULL).
14390 */
14391 BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group);
14392 
14393 /** Gets the order of a EC_GROUP
14394  *  \param  group  EC_GROUP object
14395  *  \param  order  BIGNUM to which the order is copied
14396  *  \param  ctx    BN_CTX object (optional)
14397  *  \return 1 on success and 0 if an error occured
14398  */
14399 int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx);
14400 
14401 /** Gets the cofactor of a EC_GROUP
14402  *  \param  group     EC_GROUP object
14403  *  \param  cofactor  BIGNUM to which the cofactor is copied
14404  *  \param  ctx       BN_CTX object (optional)
14405  *  \return 1 on success and 0 if an error occured
14406  */
14407 int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor,
14408                           BN_CTX *ctx);
14409 
14410 /** Sets the name of a EC_GROUP object
14411  *  \param  group  EC_GROUP object
14412  *  \param  nid    NID of the curve name OID
14413  */
14414 void EC_GROUP_set_curve_name(EC_GROUP *group, int nid);
14415 
14416 /** Returns the curve name of a EC_GROUP object
14417  *  \param  group  EC_GROUP object
14418  *  \return NID of the curve name OID or 0 if not set.
14419  */
14420 int EC_GROUP_get_curve_name(const EC_GROUP *group);
14421 
14422 void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag);
14423 int EC_GROUP_get_asn1_flag(const EC_GROUP *group);
14424 
14425 void EC_GROUP_set_point_conversion_form(EC_GROUP *group,
14426                                         point_conversion_form_t form);
14427 point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *);
14428 
14429 unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x);
14430 size_t EC_GROUP_get_seed_len(const EC_GROUP *);
14431 size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len);
14432 
14433 /** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b
14434  *  \param  group  EC_GROUP object
14435  *  \param  p      BIGNUM with the prime number
14436  *  \param  a      BIGNUM with parameter a of the equation
14437  *  \param  b      BIGNUM with parameter b of the equation
14438  *  \param  ctx    BN_CTX object (optional)
14439  *  \return 1 on success and 0 if an error occured
14440  */
14441 int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
14442                            const BIGNUM *b, BN_CTX *ctx);
14443 
14444 /** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b
14445  *  \param  group  EC_GROUP object
14446  *  \param  p      BIGNUM for the prime number
14447  *  \param  a      BIGNUM for parameter a of the equation
14448  *  \param  b      BIGNUM for parameter b of the equation
14449  *  \param  ctx    BN_CTX object (optional)
14450  *  \return 1 on success and 0 if an error occured
14451  */
14452 int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
14453                            BIGNUM *b, BN_CTX *ctx);
14454 
14455 
14456 /** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b
14457  *  \param  group  EC_GROUP object
14458  *  \param  p      BIGNUM with the polynomial defining the underlying field
14459  *  \param  a      BIGNUM with parameter a of the equation
14460  *  \param  b      BIGNUM with parameter b of the equation
14461  *  \param  ctx    BN_CTX object (optional)
14462  *  \return 1 on success and 0 if an error occured
14463  */
14464 int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
14465                             const BIGNUM *b, BN_CTX *ctx);
14466 
14467 /** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b
14468  *  \param  group  EC_GROUP object
14469  *  \param  p      BIGNUM for the polynomial defining the underlying field
14470  *  \param  a      BIGNUM for parameter a of the equation
14471  *  \param  b      BIGNUM for parameter b of the equation
14472  *  \param  ctx    BN_CTX object (optional)
14473  *  \return 1 on success and 0 if an error occured
14474  */
14475 int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
14476                             BIGNUM *b, BN_CTX *ctx);
14477 
14478 /** Returns the number of bits needed to represent a field element
14479  *  \param  group  EC_GROUP object
14480  *  \return number of bits needed to represent a field element
14481  */
14482 int EC_GROUP_get_degree(const EC_GROUP *group);
14483 
14484 /** Checks whether the parameter in the EC_GROUP define a valid ec group
14485  *  \param  group  EC_GROUP object
14486  *  \param  ctx    BN_CTX object (optional)
14487  *  \return 1 if group is a valid ec group and 0 otherwise
14488  */
14489 int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx);
14490 
14491 /** Checks whether the discriminant of the elliptic curve is zero or not
14492  *  \param  group  EC_GROUP object
14493  *  \param  ctx    BN_CTX object (optional)
14494  *  \return 1 if the discriminant is not zero and 0 otherwise
14495  */
14496 int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx);
14497 
14498 /** Compares two EC_GROUP objects
14499  *  \param  a    first EC_GROUP object
14500  *  \param  b    second EC_GROUP object
14501  *  \param  ctx  BN_CTX object (optional)
14502  *  \return 0 if both groups are equal and 1 otherwise
14503  */
14504 int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx);
14505 
14506 /*
14507  * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after
14508  * choosing an appropriate EC_METHOD
14509  */
14510 
14511 /** Creates a new EC_GROUP object with the specified parameters defined
14512  *  over GFp (defined by the equation y^2 = x^3 + a*x + b)
14513  *  \param  p    BIGNUM with the prime number
14514  *  \param  a    BIGNUM with the parameter a of the equation
14515  *  \param  b    BIGNUM with the parameter b of the equation
14516  *  \param  ctx  BN_CTX object (optional)
14517  *  \return newly created EC_GROUP object with the specified parameters
14518  */
14519 EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a,
14520                                  const BIGNUM *b, BN_CTX *ctx);
14521 
14522 /** Creates a new EC_GROUP object with the specified parameters defined
14523  *  over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b)
14524  *  \param  p    BIGNUM with the polynomial defining the underlying field
14525  *  \param  a    BIGNUM with the parameter a of the equation
14526  *  \param  b    BIGNUM with the parameter b of the equation
14527  *  \param  ctx  BN_CTX object (optional)
14528  *  \return newly created EC_GROUP object with the specified parameters
14529  */
14530 EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a,
14531                                   const BIGNUM *b, BN_CTX *ctx);
14532 
14533 /** Creates a EC_GROUP object with a curve specified by a NID
14534  *  \param  nid  NID of the OID of the curve name
14535  *  \return newly created EC_GROUP object with specified curve or NULL
14536  *          if an error occurred
14537  */
14538 EC_GROUP *EC_GROUP_new_by_curve_name(int nid);
14539 
14540 /********************************************************************/
14541 /*               handling of internal curves                        */
14542 /********************************************************************/
14543 
14544 typedef struct {
14545     int nid;
14546     const char *comment;
14547 } EC_builtin_curve;
14548 
14549 /*
14550  * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all
14551  * available curves or zero if a error occurred. In case r ist not zero
14552  * nitems EC_builtin_curve structures are filled with the data of the first
14553  * nitems internal groups
14554  */
14555 size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);
14556 
14557 const char *EC_curve_nid2nist(int nid);
14558 int EC_curve_nist2nid(const char *name);
14559 
14560 /********************************************************************/
14561 /*                    EC_POINT functions                            */
14562 /********************************************************************/
14563 
14564 /** Creates a new EC_POINT object for the specified EC_GROUP
14565  *  \param  group  EC_GROUP the underlying EC_GROUP object
14566  *  \return newly created EC_POINT object or NULL if an error occurred
14567  */
14568 EC_POINT *EC_POINT_new(const EC_GROUP *group);
14569 
14570 /** Frees a EC_POINT object
14571  *  \param  point  EC_POINT object to be freed
14572  */
14573 void EC_POINT_free(EC_POINT *point);
14574 
14575 /** Clears and frees a EC_POINT object
14576  *  \param  point  EC_POINT object to be cleared and freed
14577  */
14578 void EC_POINT_clear_free(EC_POINT *point);
14579 
14580 /** Copies EC_POINT object
14581  *  \param  dst  destination EC_POINT object
14582  *  \param  src  source EC_POINT object
14583  *  \return 1 on success and 0 if an error occured
14584  */
14585 int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src);
14586 
14587 /** Creates a new EC_POINT object and copies the content of the supplied
14588  *  EC_POINT
14589  *  \param  src    source EC_POINT object
14590  *  \param  group  underlying the EC_GROUP object
14591  *  \return newly created EC_POINT object or NULL if an error occurred
14592  */
14593 EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group);
14594 
14595 /** Returns the EC_METHOD used in EC_POINT object
14596  *  \param  point  EC_POINT object
14597  *  \return the EC_METHOD used
14598  */
14599 const EC_METHOD *EC_POINT_method_of(const EC_POINT *point);
14600 
14601 /** Sets a point to infinity (neutral element)
14602  *  \param  group  underlying EC_GROUP object
14603  *  \param  point  EC_POINT to set to infinity
14604  *  \return 1 on success and 0 if an error occured
14605  */
14606 int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point);
14607 
14608 /** Sets the jacobian projective coordinates of a EC_POINT over GFp
14609  *  \param  group  underlying EC_GROUP object
14610  *  \param  p      EC_POINT object
14611  *  \param  x      BIGNUM with the x-coordinate
14612  *  \param  y      BIGNUM with the y-coordinate
14613  *  \param  z      BIGNUM with the z-coordinate
14614  *  \param  ctx    BN_CTX object (optional)
14615  *  \return 1 on success and 0 if an error occured
14616  */
14617 int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group,
14618                                              EC_POINT *p, const BIGNUM *x,
14619                                              const BIGNUM *y, const BIGNUM *z,
14620                                              BN_CTX *ctx);
14621 
14622 /** Gets the jacobian projective coordinates of a EC_POINT over GFp
14623  *  \param  group  underlying EC_GROUP object
14624  *  \param  p      EC_POINT object
14625  *  \param  x      BIGNUM for the x-coordinate
14626  *  \param  y      BIGNUM for the y-coordinate
14627  *  \param  z      BIGNUM for the z-coordinate
14628  *  \param  ctx    BN_CTX object (optional)
14629  *  \return 1 on success and 0 if an error occured
14630  */
14631 int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
14632                                              const EC_POINT *p, BIGNUM *x,
14633                                              BIGNUM *y, BIGNUM *z,
14634                                              BN_CTX *ctx);
14635 
14636 /** Sets the affine coordinates of a EC_POINT over GFp
14637  *  \param  group  underlying EC_GROUP object
14638  *  \param  p      EC_POINT object
14639  *  \param  x      BIGNUM with the x-coordinate
14640  *  \param  y      BIGNUM with the y-coordinate
14641  *  \param  ctx    BN_CTX object (optional)
14642  *  \return 1 on success and 0 if an error occured
14643  */
14644 int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p,
14645                                         const BIGNUM *x, const BIGNUM *y,
14646                                         BN_CTX *ctx);
14647 
14648 /** Gets the affine coordinates of a EC_POINT over GFp
14649  *  \param  group  underlying EC_GROUP object
14650  *  \param  p      EC_POINT object
14651  *  \param  x      BIGNUM for the x-coordinate
14652  *  \param  y      BIGNUM for the y-coordinate
14653  *  \param  ctx    BN_CTX object (optional)
14654  *  \return 1 on success and 0 if an error occured
14655  */
14656 int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
14657                                         const EC_POINT *p, BIGNUM *x,
14658                                         BIGNUM *y, BN_CTX *ctx);
14659 
14660 /** Sets the x9.62 compressed coordinates of a EC_POINT over GFp
14661  *  \param  group  underlying EC_GROUP object
14662  *  \param  p      EC_POINT object
14663  *  \param  x      BIGNUM with x-coordinate
14664  *  \param  y_bit  integer with the y-Bit (either 0 or 1)
14665  *  \param  ctx    BN_CTX object (optional)
14666  *  \return 1 on success and 0 if an error occured
14667  */
14668 int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group,
14669                                             EC_POINT *p, const BIGNUM *x,
14670                                             int y_bit, BN_CTX *ctx);
14671 
14672 /** Sets the affine coordinates of a EC_POINT over GF2m
14673  *  \param  group  underlying EC_GROUP object
14674  *  \param  p      EC_POINT object
14675  *  \param  x      BIGNUM with the x-coordinate
14676  *  \param  y      BIGNUM with the y-coordinate
14677  *  \param  ctx    BN_CTX object (optional)
14678  *  \return 1 on success and 0 if an error occured
14679  */
14680 int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p,
14681                                          const BIGNUM *x, const BIGNUM *y,
14682                                          BN_CTX *ctx);
14683 
14684 /** Gets the affine coordinates of a EC_POINT over GF2m
14685  *  \param  group  underlying EC_GROUP object
14686  *  \param  p      EC_POINT object
14687  *  \param  x      BIGNUM for the x-coordinate
14688  *  \param  y      BIGNUM for the y-coordinate
14689  *  \param  ctx    BN_CTX object (optional)
14690  *  \return 1 on success and 0 if an error occured
14691  */
14692 int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group,
14693                                          const EC_POINT *p, BIGNUM *x,
14694                                          BIGNUM *y, BN_CTX *ctx);
14695 
14696 /** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m
14697  *  \param  group  underlying EC_GROUP object
14698  *  \param  p      EC_POINT object
14699  *  \param  x      BIGNUM with x-coordinate
14700  *  \param  y_bit  integer with the y-Bit (either 0 or 1)
14701  *  \param  ctx    BN_CTX object (optional)
14702  *  \return 1 on success and 0 if an error occured
14703  */
14704 int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group,
14705                                              EC_POINT *p, const BIGNUM *x,
14706                                              int y_bit, BN_CTX *ctx);
14707 
14708 /** Encodes a EC_POINT object to a octet string
14709  *  \param  group  underlying EC_GROUP object
14710  *  \param  p      EC_POINT object
14711  *  \param  form   point conversion form
14712  *  \param  buf    memory buffer for the result. If NULL the function returns
14713  *                 required buffer size.
14714  *  \param  len    length of the memory buffer
14715  *  \param  ctx    BN_CTX object (optional)
14716  *  \return the length of the encoded octet string or 0 if an error occurred
14717  */
14718 size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p,
14719                           point_conversion_form_t form,
14720                           unsigned char *buf, size_t len, BN_CTX *ctx);
14721 
14722 /** Decodes a EC_POINT from a octet string
14723  *  \param  group  underlying EC_GROUP object
14724  *  \param  p      EC_POINT object
14725  *  \param  buf    memory buffer with the encoded ec point
14726  *  \param  len    length of the encoded ec point
14727  *  \param  ctx    BN_CTX object (optional)
14728  *  \return 1 on success and 0 if an error occured
14729  */
14730 int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p,
14731                        const unsigned char *buf, size_t len, BN_CTX *ctx);
14732 
14733 /* other interfaces to point2oct/oct2point: */
14734 BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *,
14735                           point_conversion_form_t form, BIGNUM *, BN_CTX *);
14736 EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *,
14737                             EC_POINT *, BN_CTX *);
14738 char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *,
14739                          point_conversion_form_t form, BN_CTX *);
14740 EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *,
14741                              EC_POINT *, BN_CTX *);
14742 
14743 /********************************************************************/
14744 /*         functions for doing EC_POINT arithmetic                  */
14745 /********************************************************************/
14746 
14747 /** Computes the sum of two EC_POINT
14748  *  \param  group  underlying EC_GROUP object
14749  *  \param  r      EC_POINT object for the result (r = a + b)
14750  *  \param  a      EC_POINT object with the first summand
14751  *  \param  b      EC_POINT object with the second summand
14752  *  \param  ctx    BN_CTX object (optional)
14753  *  \return 1 on success and 0 if an error occured
14754  */
14755 int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
14756                  const EC_POINT *b, BN_CTX *ctx);
14757 
14758 /** Computes the double of a EC_POINT
14759  *  \param  group  underlying EC_GROUP object
14760  *  \param  r      EC_POINT object for the result (r = 2 * a)
14761  *  \param  a      EC_POINT object
14762  *  \param  ctx    BN_CTX object (optional)
14763  *  \return 1 on success and 0 if an error occured
14764  */
14765 int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
14766                  BN_CTX *ctx);
14767 
14768 /** Computes the inverse of a EC_POINT
14769  *  \param  group  underlying EC_GROUP object
14770  *  \param  a      EC_POINT object to be inverted (it's used for the result as well)
14771  *  \param  ctx    BN_CTX object (optional)
14772  *  \return 1 on success and 0 if an error occured
14773  */
14774 int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx);
14775 
14776 /** Checks whether the point is the neutral element of the group
14777  *  \param  group  the underlying EC_GROUP object
14778  *  \param  p      EC_POINT object
14779  *  \return 1 if the point is the neutral element and 0 otherwise
14780  */
14781 int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p);
14782 
14783 /** Checks whether the point is on the curve
14784  *  \param  group  underlying EC_GROUP object
14785  *  \param  point  EC_POINT object to check
14786  *  \param  ctx    BN_CTX object (optional)
14787  *  \return 1 if point if on the curve and 0 otherwise
14788  */
14789 int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
14790                          BN_CTX *ctx);
14791 
14792 /** Compares two EC_POINTs
14793  *  \param  group  underlying EC_GROUP object
14794  *  \param  a      first EC_POINT object
14795  *  \param  b      second EC_POINT object
14796  *  \param  ctx    BN_CTX object (optional)
14797  *  \return 0 if both points are equal and a value != 0 otherwise
14798  */
14799 int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b,
14800                  BN_CTX *ctx);
14801 
14802 int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx);
14803 int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
14804                           EC_POINT *points[], BN_CTX *ctx);
14805 
14806 /** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i]
14807  *  \param  group  underlying EC_GROUP object
14808  *  \param  r      EC_POINT object for the result
14809  *  \param  n      BIGNUM with the multiplier for the group generator (optional)
14810  *  \param  num    number futher summands
14811  *  \param  p      array of size num of EC_POINT objects
14812  *  \param  m      array of size num of BIGNUM objects
14813  *  \param  ctx    BN_CTX object (optional)
14814  *  \return 1 on success and 0 if an error occured
14815  */
14816 int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n,
14817                   size_t num, const EC_POINT *p[], const BIGNUM *m[],
14818                   BN_CTX *ctx);
14819 
14820 /** Computes r = generator * n + q * m
14821  *  \param  group  underlying EC_GROUP object
14822  *  \param  r      EC_POINT object for the result
14823  *  \param  n      BIGNUM with the multiplier for the group generator (optional)
14824  *  \param  q      EC_POINT object with the first factor of the second summand
14825  *  \param  m      BIGNUM with the second factor of the second summand
14826  *  \param  ctx    BN_CTX object (optional)
14827  *  \return 1 on success and 0 if an error occured
14828  */
14829 int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n,
14830                  const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx);
14831 
14832 /** Stores multiples of generator for faster point multiplication
14833  *  \param  group  EC_GROUP object
14834  *  \param  ctx    BN_CTX object (optional)
14835  *  \return 1 on success and 0 if an error occured
14836  */
14837 int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
14838 
14839 /** Reports whether a precomputation has been done
14840  *  \param  group  EC_GROUP object
14841  *  \return 1 if a pre-computation has been done and 0 otherwise
14842  */
14843 int EC_GROUP_have_precompute_mult(const EC_GROUP *group);
14844 
14845 /********************************************************************/
14846 /*                       ASN1 stuff                                 */
14847 /********************************************************************/
14848 
14849 /*
14850  * EC_GROUP_get_basis_type() returns the NID of the basis type used to
14851  * represent the field elements
14852  */
14853 int EC_GROUP_get_basis_type(const EC_GROUP *);
14854 
14855 int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k);
14856 int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1,
14857                                    unsigned int *k2, unsigned int *k3);
14858 
14859 
14860 
14861 
14862 typedef struct ecpk_parameters_st ECPKPARAMETERS;
14863 
14864 EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len);
14865 int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out);
14866 # 731 "/usr/include/openssl/ec.h" 3 4
14867 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off);
14868 
14869 
14870 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off);
14871 
14872 
14873 /********************************************************************/
14874 /*                      EC_KEY functions                            */
14875 /********************************************************************/
14876 
14877 typedef struct ec_key_st EC_KEY;
14878 
14879 /* some values for the encoding_flag */
14880 
14881 
14882 
14883 /* some values for the flags field */
14884 
14885 
14886 
14887 /** Creates a new EC_KEY object.
14888  *  \return EC_KEY object or NULL if an error occurred.
14889  */
14890 EC_KEY *EC_KEY_new(void);
14891 
14892 int EC_KEY_get_flags(const EC_KEY *key);
14893 
14894 void EC_KEY_set_flags(EC_KEY *key, int flags);
14895 
14896 void EC_KEY_clear_flags(EC_KEY *key, int flags);
14897 
14898 /** Creates a new EC_KEY object using a named curve as underlying
14899  *  EC_GROUP object.
14900  *  \param  nid  NID of the named curve.
14901  *  \return EC_KEY object or NULL if an error occurred.
14902  */
14903 EC_KEY *EC_KEY_new_by_curve_name(int nid);
14904 
14905 /** Frees a EC_KEY object.
14906  *  \param  key  EC_KEY object to be freed.
14907  */
14908 void EC_KEY_free(EC_KEY *key);
14909 
14910 /** Copies a EC_KEY object.
14911  *  \param  dst  destination EC_KEY object
14912  *  \param  src  src EC_KEY object
14913  *  \return dst or NULL if an error occurred.
14914  */
14915 EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src);
14916 
14917 /** Creates a new EC_KEY object and copies the content from src to it.
14918  *  \param  src  the source EC_KEY object
14919  *  \return newly created EC_KEY object or NULL if an error occurred.
14920  */
14921 EC_KEY *EC_KEY_dup(const EC_KEY *src);
14922 
14923 /** Increases the internal reference count of a EC_KEY object.
14924  *  \param  key  EC_KEY object
14925  *  \return 1 on success and 0 if an error occurred.
14926  */
14927 int EC_KEY_up_ref(EC_KEY *key);
14928 
14929 /** Returns the EC_GROUP object of a EC_KEY object
14930  *  \param  key  EC_KEY object
14931  *  \return the EC_GROUP object (possibly NULL).
14932  */
14933 const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key);
14934 
14935 /** Sets the EC_GROUP of a EC_KEY object.
14936  *  \param  key    EC_KEY object
14937  *  \param  group  EC_GROUP to use in the EC_KEY object (note: the EC_KEY
14938  *                 object will use an own copy of the EC_GROUP).
14939  *  \return 1 on success and 0 if an error occurred.
14940  */
14941 int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group);
14942 
14943 /** Returns the private key of a EC_KEY object.
14944  *  \param  key  EC_KEY object
14945  *  \return a BIGNUM with the private key (possibly NULL).
14946  */
14947 const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key);
14948 
14949 /** Sets the private key of a EC_KEY object.
14950  *  \param  key  EC_KEY object
14951  *  \param  prv  BIGNUM with the private key (note: the EC_KEY object
14952  *               will use an own copy of the BIGNUM).
14953  *  \return 1 on success and 0 if an error occurred.
14954  */
14955 int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv);
14956 
14957 /** Returns the public key of a EC_KEY object.
14958  *  \param  key  the EC_KEY object
14959  *  \return a EC_POINT object with the public key (possibly NULL)
14960  */
14961 const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key);
14962 
14963 /** Sets the public key of a EC_KEY object.
14964  *  \param  key  EC_KEY object
14965  *  \param  pub  EC_POINT object with the public key (note: the EC_KEY object
14966  *               will use an own copy of the EC_POINT object).
14967  *  \return 1 on success and 0 if an error occurred.
14968  */
14969 int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub);
14970 
14971 unsigned EC_KEY_get_enc_flags(const EC_KEY *key);
14972 void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags);
14973 point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key);
14974 void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform);
14975 /* functions to set/get method specific data  */
14976 void *EC_KEY_get_key_method_data(EC_KEY *key,
14977                                  void *(*dup_func) (void *),
14978                                  void (*free_func) (void *),
14979                                  void (*clear_free_func) (void *));
14980 /** Sets the key method data of an EC_KEY object, if none has yet been set.
14981  *  \param  key              EC_KEY object
14982  *  \param  data             opaque data to install.
14983  *  \param  dup_func         a function that duplicates |data|.
14984  *  \param  free_func        a function that frees |data|.
14985  *  \param  clear_free_func  a function that wipes and frees |data|.
14986  *  \return the previously set data pointer, or NULL if |data| was inserted.
14987  */
14988 void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data,
14989                                     void *(*dup_func) (void *),
14990                                     void (*free_func) (void *),
14991                                     void (*clear_free_func) (void *));
14992 /* wrapper functions for the underlying EC_GROUP object */
14993 void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag);
14994 
14995 /** Creates a table of pre-computed multiples of the generator to
14996  *  accelerate further EC_KEY operations.
14997  *  \param  key  EC_KEY object
14998  *  \param  ctx  BN_CTX object (optional)
14999  *  \return 1 on success and 0 if an error occurred.
15000  */
15001 int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx);
15002 
15003 /** Creates a new ec private (and optional a new public) key.
15004  *  \param  key  EC_KEY object
15005  *  \return 1 on success and 0 if an error occurred.
15006  */
15007 int EC_KEY_generate_key(EC_KEY *key);
15008 
15009 /** Verifies that a private and/or public key is valid.
15010  *  \param  key  the EC_KEY object
15011  *  \return 1 on success and 0 otherwise.
15012  */
15013 int EC_KEY_check_key(const EC_KEY *key);
15014 
15015 /** Sets a public key from affine coordindates performing
15016  *  neccessary NIST PKV tests.
15017  *  \param  key  the EC_KEY object
15018  *  \param  x    public key x coordinate
15019  *  \param  y    public key y coordinate
15020  *  \return 1 on success and 0 otherwise.
15021  */
15022 int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x,
15023                                              BIGNUM *y);
15024 
15025 /********************************************************************/
15026 /*        de- and encoding functions for SEC1 ECPrivateKey          */
15027 /********************************************************************/
15028 
15029 /** Decodes a private key from a memory buffer.
15030  *  \param  key  a pointer to a EC_KEY object which should be used (or NULL)
15031  *  \param  in   pointer to memory with the DER encoded private key
15032  *  \param  len  length of the DER encoded private key
15033  *  \return the decoded private key or NULL if an error occurred.
15034  */
15035 EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len);
15036 
15037 /** Encodes a private key object and stores the result in a buffer.
15038  *  \param  key  the EC_KEY object to encode
15039  *  \param  out  the buffer for the result (if NULL the function returns number
15040  *               of bytes needed).
15041  *  \return 1 on success and 0 if an error occurred.
15042  */
15043 int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out);
15044 
15045 /********************************************************************/
15046 /*        de- and encoding functions for EC parameters              */
15047 /********************************************************************/
15048 
15049 /** Decodes ec parameter from a memory buffer.
15050  *  \param  key  a pointer to a EC_KEY object which should be used (or NULL)
15051  *  \param  in   pointer to memory with the DER encoded ec parameters
15052  *  \param  len  length of the DER encoded ec parameters
15053  *  \return a EC_KEY object with the decoded parameters or NULL if an error
15054  *          occurred.
15055  */
15056 EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len);
15057 
15058 /** Encodes ec parameter and stores the result in a buffer.
15059  *  \param  key  the EC_KEY object with ec paramters to encode
15060  *  \param  out  the buffer for the result (if NULL the function returns number
15061  *               of bytes needed).
15062  *  \return 1 on success and 0 if an error occurred.
15063  */
15064 int i2d_ECParameters(EC_KEY *key, unsigned char **out);
15065 
15066 /********************************************************************/
15067 /*         de- and encoding functions for EC public key             */
15068 /*         (octet string, not DER -- hence 'o2i' and 'i2o')         */
15069 /********************************************************************/
15070 
15071 /** Decodes a ec public key from a octet string.
15072  *  \param  key  a pointer to a EC_KEY object which should be used
15073  *  \param  in   memory buffer with the encoded public key
15074  *  \param  len  length of the encoded public key
15075  *  \return EC_KEY object with decoded public key or NULL if an error
15076  *          occurred.
15077  */
15078 EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len);
15079 
15080 /** Encodes a ec public key in an octet string.
15081  *  \param  key  the EC_KEY object with the public key
15082  *  \param  out  the buffer for the result (if NULL the function returns number
15083  *               of bytes needed).
15084  *  \return 1 on success and 0 if an error occurred
15085  */
15086 int i2o_ECPublicKey(EC_KEY *key, unsigned char **out);
15087 
15088 
15089 /** Prints out the ec parameters on human readable form.
15090  *  \param  bp   BIO object to which the information is printed
15091  *  \param  key  EC_KEY object
15092  *  \return 1 on success and 0 if an error occurred
15093  */
15094 int ECParameters_print(BIO *bp, const EC_KEY *key);
15095 
15096 /** Prints out the contents of a EC_KEY object
15097  *  \param  bp   BIO object to which the information is printed
15098  *  \param  key  EC_KEY object
15099  *  \param  off  line offset
15100  *  \return 1 on success and 0 if an error occurred
15101  */
15102 int EC_KEY_print(BIO *bp, const EC_KEY *key, int off);
15103 
15104 
15105 
15106 /** Prints out the ec parameters on human readable form.
15107  *  \param  fp   file descriptor to which the information is printed
15108  *  \param  key  EC_KEY object
15109  *  \return 1 on success and 0 if an error occurred
15110  */
15111 int ECParameters_print_fp(FILE *fp, const EC_KEY *key);
15112 
15113 /** Prints out the contents of a EC_KEY object
15114  *  \param  fp   file descriptor to which the information is printed
15115  *  \param  key  EC_KEY object
15116  *  \param  off  line offset
15117  *  \return 1 on success and 0 if an error occurred
15118  */
15119 int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off);
15120 # 1067 "/usr/include/openssl/ec.h" 3 4
15121 /* KDF types */
15122 
15123 
15124 
15125 /* BEGIN ERROR CODES */
15126 /*
15127  * The following lines are auto generated by the script mkerr.pl. Any changes
15128  * made after this point may be overwritten when the script is next run.
15129  */
15130 
15131 void ERR_load_EC_strings(void);
15132 
15133 /* Error codes for the EC functions. */
15134 
15135 /* Function codes. */
15136 # 1227 "/usr/include/openssl/ec.h" 3 4
15137 /* Reason codes. */
15138 # 84 "/usr/include/openssl/x509.h" 2 3 4
15139 
15140 
15141 
15142 # 1 "/usr/include/openssl/ecdsa.h" 1 3 4
15143 /* crypto/ecdsa/ecdsa.h */
15144 /**
15145  * \file   crypto/ecdsa/ecdsa.h Include file for the OpenSSL ECDSA functions
15146  * \author Written by Nils Larsch for the OpenSSL project
15147  */
15148 /* ====================================================================
15149  * Copyright (c) 2000-2005 The OpenSSL Project.  All rights reserved.
15150  *
15151  * Redistribution and use in source and binary forms, with or without
15152  * modification, are permitted provided that the following conditions
15153  * are met:
15154  *
15155  * 1. Redistributions of source code must retain the above copyright
15156  *    notice, this list of conditions and the following disclaimer.
15157  *
15158  * 2. Redistributions in binary form must reproduce the above copyright
15159  *    notice, this list of conditions and the following disclaimer in
15160  *    the documentation and/or other materials provided with the
15161  *    distribution.
15162  *
15163  * 3. All advertising materials mentioning features or use of this
15164  *    software must display the following acknowledgment:
15165  *    "This product includes software developed by the OpenSSL Project
15166  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
15167  *
15168  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15169  *    endorse or promote products derived from this software without
15170  *    prior written permission. For written permission, please contact
15171  *    licensing@OpenSSL.org.
15172  *
15173  * 5. Products derived from this software may not be called "OpenSSL"
15174  *    nor may "OpenSSL" appear in their names without prior written
15175  *    permission of the OpenSSL Project.
15176  *
15177  * 6. Redistributions of any form whatsoever must retain the following
15178  *    acknowledgment:
15179  *    "This product includes software developed by the OpenSSL Project
15180  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
15181  *
15182  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15183  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15184  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15185  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15186  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15187  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15188  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15189  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15190  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15191  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15192  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15193  * OF THE POSSIBILITY OF SUCH DAMAGE.
15194  * ====================================================================
15195  *
15196  * This product includes cryptographic software written by Eric Young
15197  * (eay@cryptsoft.com).  This product includes software written by Tim
15198  * Hudson (tjh@cryptsoft.com).
15199  *
15200  */
15201 
15202 
15203 
15204 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
15205 /* opensslconf.h */
15206 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
15207 
15208 
15209 
15210 
15211 /* OpenSSL was configured with the following options: */
15212 # 108 "/usr/include/openssl/opensslconf.h" 3 4
15213 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
15214    asks for it.  This is a transient feature that is provided for those
15215    who haven't had the time to do the appropriate changes in their
15216    applications.  */
15217 # 204 "/usr/include/openssl/opensslconf.h" 3 4
15218 /* crypto/opensslconf.h.in */
15219 
15220 /* Generate 80386 code? */
15221 # 63 "/usr/include/openssl/ecdsa.h" 2 3 4
15222 
15223 
15224 
15225 
15226 
15227 # 1 "/usr/include/openssl/ec.h" 1 3 4
15228 /* crypto/ec/ec.h */
15229 /*
15230  * Originally written by Bodo Moeller for the OpenSSL project.
15231  */
15232 /**
15233  * \file crypto/ec/ec.h Include file for the OpenSSL EC functions
15234  * \author Originally written by Bodo Moeller for the OpenSSL project
15235  */
15236 /* ====================================================================
15237  * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
15238  *
15239  * Redistribution and use in source and binary forms, with or without
15240  * modification, are permitted provided that the following conditions
15241  * are met:
15242  *
15243  * 1. Redistributions of source code must retain the above copyright
15244  *    notice, this list of conditions and the following disclaimer.
15245  *
15246  * 2. Redistributions in binary form must reproduce the above copyright
15247  *    notice, this list of conditions and the following disclaimer in
15248  *    the documentation and/or other materials provided with the
15249  *    distribution.
15250  *
15251  * 3. All advertising materials mentioning features or use of this
15252  *    software must display the following acknowledgment:
15253  *    "This product includes software developed by the OpenSSL Project
15254  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15255  *
15256  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15257  *    endorse or promote products derived from this software without
15258  *    prior written permission. For written permission, please contact
15259  *    openssl-core@openssl.org.
15260  *
15261  * 5. Products derived from this software may not be called "OpenSSL"
15262  *    nor may "OpenSSL" appear in their names without prior written
15263  *    permission of the OpenSSL Project.
15264  *
15265  * 6. Redistributions of any form whatsoever must retain the following
15266  *    acknowledgment:
15267  *    "This product includes software developed by the OpenSSL Project
15268  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15269  *
15270  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15271  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15272  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15273  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15274  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15275  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15276  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15277  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15278  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15279  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15280  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15281  * OF THE POSSIBILITY OF SUCH DAMAGE.
15282  * ====================================================================
15283  *
15284  * This product includes cryptographic software written by Eric Young
15285  * (eay@cryptsoft.com).  This product includes software written by Tim
15286  * Hudson (tjh@cryptsoft.com).
15287  *
15288  */
15289 /* ====================================================================
15290  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
15291  *
15292  * Portions of the attached software ("Contribution") are developed by
15293  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
15294  *
15295  * The Contribution is licensed pursuant to the OpenSSL open source
15296  * license provided above.
15297  *
15298  * The elliptic curve binary polynomial software is originally written by
15299  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
15300  *
15301  */
15302 # 69 "/usr/include/openssl/ecdsa.h" 2 3 4
15303 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
15304 /* ====================================================================
15305  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
15306  *
15307  * Redistribution and use in source and binary forms, with or without
15308  * modification, are permitted provided that the following conditions
15309  * are met:
15310  *
15311  * 1. Redistributions of source code must retain the above copyright
15312  *    notice, this list of conditions and the following disclaimer.
15313  *
15314  * 2. Redistributions in binary form must reproduce the above copyright
15315  *    notice, this list of conditions and the following disclaimer in
15316  *    the documentation and/or other materials provided with the
15317  *    distribution.
15318  *
15319  * 3. All advertising materials mentioning features or use of this
15320  *    software must display the following acknowledgment:
15321  *    "This product includes software developed by the OpenSSL Project
15322  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15323  *
15324  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15325  *    endorse or promote products derived from this software without
15326  *    prior written permission. For written permission, please contact
15327  *    openssl-core@openssl.org.
15328  *
15329  * 5. Products derived from this software may not be called "OpenSSL"
15330  *    nor may "OpenSSL" appear in their names without prior written
15331  *    permission of the OpenSSL Project.
15332  *
15333  * 6. Redistributions of any form whatsoever must retain the following
15334  *    acknowledgment:
15335  *    "This product includes software developed by the OpenSSL Project
15336  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15337  *
15338  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15339  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15340  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15341  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15342  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15343  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15344  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15345  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15346  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15347  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15348  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15349  * OF THE POSSIBILITY OF SUCH DAMAGE.
15350  * ====================================================================
15351  *
15352  * This product includes cryptographic software written by Eric Young
15353  * (eay@cryptsoft.com).  This product includes software written by Tim
15354  * Hudson (tjh@cryptsoft.com).
15355  *
15356  */
15357 # 70 "/usr/include/openssl/ecdsa.h" 2 3 4
15358 
15359 # 1 "/usr/include/openssl/bn.h" 1 3 4
15360 /* crypto/bn/bn.h */
15361 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
15362  * All rights reserved.
15363  *
15364  * This package is an SSL implementation written
15365  * by Eric Young (eay@cryptsoft.com).
15366  * The implementation was written so as to conform with Netscapes SSL.
15367  *
15368  * This library is free for commercial and non-commercial use as long as
15369  * the following conditions are aheared to.  The following conditions
15370  * apply to all code found in this distribution, be it the RC4, RSA,
15371  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
15372  * included with this distribution is covered by the same copyright terms
15373  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15374  *
15375  * Copyright remains Eric Young's, and as such any Copyright notices in
15376  * the code are not to be removed.
15377  * If this package is used in a product, Eric Young should be given attribution
15378  * as the author of the parts of the library used.
15379  * This can be in the form of a textual message at program startup or
15380  * in documentation (online or textual) provided with the package.
15381  *
15382  * Redistribution and use in source and binary forms, with or without
15383  * modification, are permitted provided that the following conditions
15384  * are met:
15385  * 1. Redistributions of source code must retain the copyright
15386  *    notice, this list of conditions and the following disclaimer.
15387  * 2. Redistributions in binary form must reproduce the above copyright
15388  *    notice, this list of conditions and the following disclaimer in the
15389  *    documentation and/or other materials provided with the distribution.
15390  * 3. All advertising materials mentioning features or use of this software
15391  *    must display the following acknowledgement:
15392  *    "This product includes cryptographic software written by
15393  *     Eric Young (eay@cryptsoft.com)"
15394  *    The word 'cryptographic' can be left out if the rouines from the library
15395  *    being used are not cryptographic related :-).
15396  * 4. If you include any Windows specific code (or a derivative thereof) from
15397  *    the apps directory (application code) you must include an acknowledgement:
15398  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
15399  *
15400  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
15401  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15402  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15403  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15404  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
15405  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
15406  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15407  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
15408  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
15409  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
15410  * SUCH DAMAGE.
15411  *
15412  * The licence and distribution terms for any publically available version or
15413  * derivative of this code cannot be changed.  i.e. this code cannot simply be
15414  * copied and put under another distribution licence
15415  * [including the GNU Public Licence.]
15416  */
15417 /* ====================================================================
15418  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
15419  *
15420  * Redistribution and use in source and binary forms, with or without
15421  * modification, are permitted provided that the following conditions
15422  * are met:
15423  *
15424  * 1. Redistributions of source code must retain the above copyright
15425  *    notice, this list of conditions and the following disclaimer.
15426  *
15427  * 2. Redistributions in binary form must reproduce the above copyright
15428  *    notice, this list of conditions and the following disclaimer in
15429  *    the documentation and/or other materials provided with the
15430  *    distribution.
15431  *
15432  * 3. All advertising materials mentioning features or use of this
15433  *    software must display the following acknowledgment:
15434  *    "This product includes software developed by the OpenSSL Project
15435  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15436  *
15437  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15438  *    endorse or promote products derived from this software without
15439  *    prior written permission. For written permission, please contact
15440  *    openssl-core@openssl.org.
15441  *
15442  * 5. Products derived from this software may not be called "OpenSSL"
15443  *    nor may "OpenSSL" appear in their names without prior written
15444  *    permission of the OpenSSL Project.
15445  *
15446  * 6. Redistributions of any form whatsoever must retain the following
15447  *    acknowledgment:
15448  *    "This product includes software developed by the OpenSSL Project
15449  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15450  *
15451  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15452  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15453  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15454  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15455  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15456  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15457  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15458  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15459  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15460  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15461  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15462  * OF THE POSSIBILITY OF SUCH DAMAGE.
15463  * ====================================================================
15464  *
15465  * This product includes cryptographic software written by Eric Young
15466  * (eay@cryptsoft.com).  This product includes software written by Tim
15467  * Hudson (tjh@cryptsoft.com).
15468  *
15469  */
15470 /* ====================================================================
15471  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
15472  *
15473  * Portions of the attached software ("Contribution") are developed by
15474  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
15475  *
15476  * The Contribution is licensed pursuant to the Eric Young open source
15477  * license provided above.
15478  *
15479  * The binary polynomial arithmetic software is originally written by
15480  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
15481  *
15482  */
15483 # 72 "/usr/include/openssl/ecdsa.h" 2 3 4
15484 
15485 
15486 
15487 
15488 
15489 
15490 typedef struct ECDSA_SIG_st {
15491     BIGNUM *r;
15492     BIGNUM *s;
15493 } ECDSA_SIG;
15494 
15495 /** Allocates and initialize a ECDSA_SIG structure
15496  *  \return pointer to a ECDSA_SIG structure or NULL if an error occurred
15497  */
15498 ECDSA_SIG *ECDSA_SIG_new(void);
15499 
15500 /** frees a ECDSA_SIG structure
15501  *  \param  sig  pointer to the ECDSA_SIG structure
15502  */
15503 void ECDSA_SIG_free(ECDSA_SIG *sig);
15504 
15505 /** DER encode content of ECDSA_SIG object (note: this function modifies *pp
15506  *  (*pp += length of the DER encoded signature)).
15507  *  \param  sig  pointer to the ECDSA_SIG object
15508  *  \param  pp   pointer to a unsigned char pointer for the output or NULL
15509  *  \return the length of the DER encoded ECDSA_SIG object or 0
15510  */
15511 int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp);
15512 
15513 /** Decodes a DER encoded ECDSA signature (note: this function changes *pp
15514  *  (*pp += len)).
15515  *  \param  sig  pointer to ECDSA_SIG pointer (may be NULL)
15516  *  \param  pp   memory buffer with the DER encoded signature
15517  *  \param  len  length of the buffer
15518  *  \return pointer to the decoded ECDSA_SIG structure (or NULL)
15519  */
15520 ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
15521 
15522 /** Computes the ECDSA signature of the given hash value using
15523  *  the supplied private key and returns the created signature.
15524  *  \param  dgst      pointer to the hash value
15525  *  \param  dgst_len  length of the hash value
15526  *  \param  eckey     EC_KEY object containing a private EC key
15527  *  \return pointer to a ECDSA_SIG structure or NULL if an error occurred
15528  */
15529 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
15530                          EC_KEY *eckey);
15531 
15532 /** Computes ECDSA signature of a given hash value using the supplied
15533  *  private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
15534  *  \param  dgst     pointer to the hash value to sign
15535  *  \param  dgstlen  length of the hash value
15536  *  \param  kinv     BIGNUM with a pre-computed inverse k (optional)
15537  *  \param  rp       BIGNUM with a pre-computed rp value (optioanl),
15538  *                   see ECDSA_sign_setup
15539  *  \param  eckey    EC_KEY object containing a private EC key
15540  *  \return pointer to a ECDSA_SIG structure or NULL if an error occurred
15541  */
15542 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen,
15543                             const BIGNUM *kinv, const BIGNUM *rp,
15544                             EC_KEY *eckey);
15545 
15546 /** Verifies that the supplied signature is a valid ECDSA
15547  *  signature of the supplied hash value using the supplied public key.
15548  *  \param  dgst      pointer to the hash value
15549  *  \param  dgst_len  length of the hash value
15550  *  \param  sig       ECDSA_SIG structure
15551  *  \param  eckey     EC_KEY object containing a public EC key
15552  *  \return 1 if the signature is valid, 0 if the signature is invalid
15553  *          and -1 on error
15554  */
15555 int ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
15556                     const ECDSA_SIG *sig, EC_KEY *eckey);
15557 
15558 const ECDSA_METHOD *ECDSA_OpenSSL(void);
15559 
15560 /** Sets the default ECDSA method
15561  *  \param  meth  new default ECDSA_METHOD
15562  */
15563 void ECDSA_set_default_method(const ECDSA_METHOD *meth);
15564 
15565 /** Returns the default ECDSA method
15566  *  \return pointer to ECDSA_METHOD structure containing the default method
15567  */
15568 const ECDSA_METHOD *ECDSA_get_default_method(void);
15569 
15570 /** Sets method to be used for the ECDSA operations
15571  *  \param  eckey  EC_KEY object
15572  *  \param  meth   new method
15573  *  \return 1 on success and 0 otherwise
15574  */
15575 int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth);
15576 
15577 /** Returns the maximum length of the DER encoded signature
15578  *  \param  eckey  EC_KEY object
15579  *  \return numbers of bytes required for the DER encoded signature
15580  */
15581 int ECDSA_size(const EC_KEY *eckey);
15582 
15583 /** Precompute parts of the signing operation
15584  *  \param  eckey  EC_KEY object containing a private EC key
15585  *  \param  ctx    BN_CTX object (optional)
15586  *  \param  kinv   BIGNUM pointer for the inverse of k
15587  *  \param  rp     BIGNUM pointer for x coordinate of k * generator
15588  *  \return 1 on success and 0 otherwise
15589  */
15590 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp);
15591 
15592 /** Computes ECDSA signature of a given hash value using the supplied
15593  *  private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
15594  *  \param  type     this parameter is ignored
15595  *  \param  dgst     pointer to the hash value to sign
15596  *  \param  dgstlen  length of the hash value
15597  *  \param  sig      memory for the DER encoded created signature
15598  *  \param  siglen   pointer to the length of the returned signature
15599  *  \param  eckey    EC_KEY object containing a private EC key
15600  *  \return 1 on success and 0 otherwise
15601  */
15602 int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
15603                unsigned char *sig, unsigned int *siglen, EC_KEY *eckey);
15604 
15605 /** Computes ECDSA signature of a given hash value using the supplied
15606  *  private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
15607  *  \param  type     this parameter is ignored
15608  *  \param  dgst     pointer to the hash value to sign
15609  *  \param  dgstlen  length of the hash value
15610  *  \param  sig      buffer to hold the DER encoded signature
15611  *  \param  siglen   pointer to the length of the returned signature
15612  *  \param  kinv     BIGNUM with a pre-computed inverse k (optional)
15613  *  \param  rp       BIGNUM with a pre-computed rp value (optioanl),
15614  *                   see ECDSA_sign_setup
15615  *  \param  eckey    EC_KEY object containing a private EC key
15616  *  \return 1 on success and 0 otherwise
15617  */
15618 int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen,
15619                   unsigned char *sig, unsigned int *siglen,
15620                   const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey);
15621 
15622 /** Verifies that the given signature is valid ECDSA signature
15623  *  of the supplied hash value using the specified public key.
15624  *  \param  type     this parameter is ignored
15625  *  \param  dgst     pointer to the hash value
15626  *  \param  dgstlen  length of the hash value
15627  *  \param  sig      pointer to the DER encoded signature
15628  *  \param  siglen   length of the DER encoded signature
15629  *  \param  eckey    EC_KEY object containing a public EC key
15630  *  \return 1 if the signature is valid, 0 if the signature is invalid
15631  *          and -1 on error
15632  */
15633 int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
15634                  const unsigned char *sig, int siglen, EC_KEY *eckey);
15635 
15636 /* the standard ex_data functions */
15637 int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
15638                            *new_func, CRYPTO_EX_dup *dup_func,
15639                            CRYPTO_EX_free *free_func);
15640 int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg);
15641 void *ECDSA_get_ex_data(EC_KEY *d, int idx);
15642 
15643 /** Allocates and initialize a ECDSA_METHOD structure
15644  *  \param ecdsa_method pointer to ECDSA_METHOD to copy.  (May be NULL)
15645  *  \return pointer to a ECDSA_METHOD structure or NULL if an error occurred
15646  */
15647 
15648 ECDSA_METHOD *ECDSA_METHOD_new(const ECDSA_METHOD *ecdsa_method);
15649 
15650 /** frees a ECDSA_METHOD structure
15651  *  \param  ecdsa_method  pointer to the ECDSA_METHOD structure
15652  */
15653 void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method);
15654 
15655 /**  Sets application specific data in the ECDSA_METHOD
15656  *   \param  ecdsa_method pointer to existing ECDSA_METHOD
15657  *   \param  app application specific data to set
15658  */
15659 
15660 void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app);
15661 
15662 /** Returns application specific data from a ECDSA_METHOD structure
15663  *  \param ecdsa_method pointer to ECDSA_METHOD structure
15664  *  \return pointer to application specific data.
15665  */
15666 
15667 void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method);
15668 
15669 /**  Set the ECDSA_do_sign function in the ECDSA_METHOD
15670  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15671  *   \param  ecdsa_do_sign a funtion of type ECDSA_do_sign
15672  */
15673 
15674 void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method,
15675                            ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char
15676                                                         *dgst, int dgst_len,
15677                                                         const BIGNUM *inv,
15678                                                         const BIGNUM *rp,
15679                                                         EC_KEY *eckey));
15680 
15681 /**  Set the  ECDSA_sign_setup function in the ECDSA_METHOD
15682  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15683  *   \param  ecdsa_sign_setup a funtion of type ECDSA_sign_setup
15684  */
15685 
15686 void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method,
15687                                  int (*ecdsa_sign_setup) (EC_KEY *eckey,
15688                                                           BN_CTX *ctx,
15689                                                           BIGNUM **kinv,
15690                                                           BIGNUM **r));
15691 
15692 /**  Set the ECDSA_do_verify function in the ECDSA_METHOD
15693  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15694  *   \param  ecdsa_do_verify a funtion of type ECDSA_do_verify
15695  */
15696 
15697 void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method,
15698                              int (*ecdsa_do_verify) (const unsigned char
15699                                                      *dgst, int dgst_len,
15700                                                      const ECDSA_SIG *sig,
15701                                                      EC_KEY *eckey));
15702 
15703 void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags);
15704 
15705 /**  Set the flags field in the ECDSA_METHOD
15706  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15707  *   \param  flags flags value to set
15708  */
15709 
15710 void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name);
15711 
15712 /**  Set the name field in the ECDSA_METHOD
15713  *   \param  ecdsa_method  pointer to existing ECDSA_METHOD
15714  *   \param  name name to set
15715  */
15716 
15717 /* BEGIN ERROR CODES */
15718 /*
15719  * The following lines are auto generated by the script mkerr.pl. Any changes
15720  * made after this point may be overwritten when the script is next run.
15721  */
15722 void ERR_load_ECDSA_strings(void);
15723 
15724 /* Error codes for the ECDSA functions. */
15725 
15726 /* Function codes. */
15727 
15728 
15729 
15730 
15731 
15732 
15733 
15734 /* Reason codes. */
15735 # 88 "/usr/include/openssl/x509.h" 2 3 4
15736 
15737 
15738 
15739 # 1 "/usr/include/openssl/ecdh.h" 1 3 4
15740 /* crypto/ecdh/ecdh.h */
15741 /* ====================================================================
15742  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
15743  *
15744  * The Elliptic Curve Public-Key Crypto Library (ECC Code) included
15745  * herein is developed by SUN MICROSYSTEMS, INC., and is contributed
15746  * to the OpenSSL project.
15747  *
15748  * The ECC Code is licensed pursuant to the OpenSSL open source
15749  * license provided below.
15750  *
15751  * The ECDH software is originally written by Douglas Stebila of
15752  * Sun Microsystems Laboratories.
15753  *
15754  */
15755 /* ====================================================================
15756  * Copyright (c) 2000-2002 The OpenSSL Project.  All rights reserved.
15757  *
15758  * Redistribution and use in source and binary forms, with or without
15759  * modification, are permitted provided that the following conditions
15760  * are met:
15761  *
15762  * 1. Redistributions of source code must retain the above copyright
15763  *    notice, this list of conditions and the following disclaimer.
15764  *
15765  * 2. Redistributions in binary form must reproduce the above copyright
15766  *    notice, this list of conditions and the following disclaimer in
15767  *    the documentation and/or other materials provided with the
15768  *    distribution.
15769  *
15770  * 3. All advertising materials mentioning features or use of this
15771  *    software must display the following acknowledgment:
15772  *    "This product includes software developed by the OpenSSL Project
15773  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
15774  *
15775  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15776  *    endorse or promote products derived from this software without
15777  *    prior written permission. For written permission, please contact
15778  *    licensing@OpenSSL.org.
15779  *
15780  * 5. Products derived from this software may not be called "OpenSSL"
15781  *    nor may "OpenSSL" appear in their names without prior written
15782  *    permission of the OpenSSL Project.
15783  *
15784  * 6. Redistributions of any form whatsoever must retain the following
15785  *    acknowledgment:
15786  *    "This product includes software developed by the OpenSSL Project
15787  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
15788  *
15789  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15790  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15791  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15792  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15793  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15794  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15795  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15796  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15797  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15798  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15799  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15800  * OF THE POSSIBILITY OF SUCH DAMAGE.
15801  * ====================================================================
15802  *
15803  * This product includes cryptographic software written by Eric Young
15804  * (eay@cryptsoft.com).  This product includes software written by Tim
15805  * Hudson (tjh@cryptsoft.com).
15806  *
15807  */
15808 
15809 
15810 
15811 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
15812 /* opensslconf.h */
15813 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
15814 
15815 
15816 
15817 
15818 /* OpenSSL was configured with the following options: */
15819 # 108 "/usr/include/openssl/opensslconf.h" 3 4
15820 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
15821    asks for it.  This is a transient feature that is provided for those
15822    who haven't had the time to do the appropriate changes in their
15823    applications.  */
15824 # 204 "/usr/include/openssl/opensslconf.h" 3 4
15825 /* crypto/opensslconf.h.in */
15826 
15827 /* Generate 80386 code? */
15828 # 73 "/usr/include/openssl/ecdh.h" 2 3 4
15829 
15830 
15831 
15832 
15833 
15834 # 1 "/usr/include/openssl/ec.h" 1 3 4
15835 /* crypto/ec/ec.h */
15836 /*
15837  * Originally written by Bodo Moeller for the OpenSSL project.
15838  */
15839 /**
15840  * \file crypto/ec/ec.h Include file for the OpenSSL EC functions
15841  * \author Originally written by Bodo Moeller for the OpenSSL project
15842  */
15843 /* ====================================================================
15844  * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
15845  *
15846  * Redistribution and use in source and binary forms, with or without
15847  * modification, are permitted provided that the following conditions
15848  * are met:
15849  *
15850  * 1. Redistributions of source code must retain the above copyright
15851  *    notice, this list of conditions and the following disclaimer.
15852  *
15853  * 2. Redistributions in binary form must reproduce the above copyright
15854  *    notice, this list of conditions and the following disclaimer in
15855  *    the documentation and/or other materials provided with the
15856  *    distribution.
15857  *
15858  * 3. All advertising materials mentioning features or use of this
15859  *    software must display the following acknowledgment:
15860  *    "This product includes software developed by the OpenSSL Project
15861  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15862  *
15863  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15864  *    endorse or promote products derived from this software without
15865  *    prior written permission. For written permission, please contact
15866  *    openssl-core@openssl.org.
15867  *
15868  * 5. Products derived from this software may not be called "OpenSSL"
15869  *    nor may "OpenSSL" appear in their names without prior written
15870  *    permission of the OpenSSL Project.
15871  *
15872  * 6. Redistributions of any form whatsoever must retain the following
15873  *    acknowledgment:
15874  *    "This product includes software developed by the OpenSSL Project
15875  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15876  *
15877  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15878  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15879  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15880  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15881  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15882  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15883  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15884  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15885  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15886  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15887  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15888  * OF THE POSSIBILITY OF SUCH DAMAGE.
15889  * ====================================================================
15890  *
15891  * This product includes cryptographic software written by Eric Young
15892  * (eay@cryptsoft.com).  This product includes software written by Tim
15893  * Hudson (tjh@cryptsoft.com).
15894  *
15895  */
15896 /* ====================================================================
15897  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
15898  *
15899  * Portions of the attached software ("Contribution") are developed by
15900  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
15901  *
15902  * The Contribution is licensed pursuant to the OpenSSL open source
15903  * license provided above.
15904  *
15905  * The elliptic curve binary polynomial software is originally written by
15906  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
15907  *
15908  */
15909 # 79 "/usr/include/openssl/ecdh.h" 2 3 4
15910 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
15911 /* ====================================================================
15912  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
15913  *
15914  * Redistribution and use in source and binary forms, with or without
15915  * modification, are permitted provided that the following conditions
15916  * are met:
15917  *
15918  * 1. Redistributions of source code must retain the above copyright
15919  *    notice, this list of conditions and the following disclaimer.
15920  *
15921  * 2. Redistributions in binary form must reproduce the above copyright
15922  *    notice, this list of conditions and the following disclaimer in
15923  *    the documentation and/or other materials provided with the
15924  *    distribution.
15925  *
15926  * 3. All advertising materials mentioning features or use of this
15927  *    software must display the following acknowledgment:
15928  *    "This product includes software developed by the OpenSSL Project
15929  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
15930  *
15931  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
15932  *    endorse or promote products derived from this software without
15933  *    prior written permission. For written permission, please contact
15934  *    openssl-core@openssl.org.
15935  *
15936  * 5. Products derived from this software may not be called "OpenSSL"
15937  *    nor may "OpenSSL" appear in their names without prior written
15938  *    permission of the OpenSSL Project.
15939  *
15940  * 6. Redistributions of any form whatsoever must retain the following
15941  *    acknowledgment:
15942  *    "This product includes software developed by the OpenSSL Project
15943  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
15944  *
15945  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
15946  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15947  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15948  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
15949  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15950  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15951  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15952  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
15953  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
15954  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15955  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
15956  * OF THE POSSIBILITY OF SUCH DAMAGE.
15957  * ====================================================================
15958  *
15959  * This product includes cryptographic software written by Eric Young
15960  * (eay@cryptsoft.com).  This product includes software written by Tim
15961  * Hudson (tjh@cryptsoft.com).
15962  *
15963  */
15964 # 80 "/usr/include/openssl/ecdh.h" 2 3 4
15965 
15966 # 1 "/usr/include/openssl/bn.h" 1 3 4
15967 /* crypto/bn/bn.h */
15968 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
15969  * All rights reserved.
15970  *
15971  * This package is an SSL implementation written
15972  * by Eric Young (eay@cryptsoft.com).
15973  * The implementation was written so as to conform with Netscapes SSL.
15974  *
15975  * This library is free for commercial and non-commercial use as long as
15976  * the following conditions are aheared to.  The following conditions
15977  * apply to all code found in this distribution, be it the RC4, RSA,
15978  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
15979  * included with this distribution is covered by the same copyright terms
15980  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15981  *
15982  * Copyright remains Eric Young's, and as such any Copyright notices in
15983  * the code are not to be removed.
15984  * If this package is used in a product, Eric Young should be given attribution
15985  * as the author of the parts of the library used.
15986  * This can be in the form of a textual message at program startup or
15987  * in documentation (online or textual) provided with the package.
15988  *
15989  * Redistribution and use in source and binary forms, with or without
15990  * modification, are permitted provided that the following conditions
15991  * are met:
15992  * 1. Redistributions of source code must retain the copyright
15993  *    notice, this list of conditions and the following disclaimer.
15994  * 2. Redistributions in binary form must reproduce the above copyright
15995  *    notice, this list of conditions and the following disclaimer in the
15996  *    documentation and/or other materials provided with the distribution.
15997  * 3. All advertising materials mentioning features or use of this software
15998  *    must display the following acknowledgement:
15999  *    "This product includes cryptographic software written by
16000  *     Eric Young (eay@cryptsoft.com)"
16001  *    The word 'cryptographic' can be left out if the rouines from the library
16002  *    being used are not cryptographic related :-).
16003  * 4. If you include any Windows specific code (or a derivative thereof) from
16004  *    the apps directory (application code) you must include an acknowledgement:
16005  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16006  *
16007  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16008  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16009  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16010  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16011  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16012  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16013  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16014  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16015  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16016  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16017  * SUCH DAMAGE.
16018  *
16019  * The licence and distribution terms for any publically available version or
16020  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16021  * copied and put under another distribution licence
16022  * [including the GNU Public Licence.]
16023  */
16024 /* ====================================================================
16025  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
16026  *
16027  * Redistribution and use in source and binary forms, with or without
16028  * modification, are permitted provided that the following conditions
16029  * are met:
16030  *
16031  * 1. Redistributions of source code must retain the above copyright
16032  *    notice, this list of conditions and the following disclaimer.
16033  *
16034  * 2. Redistributions in binary form must reproduce the above copyright
16035  *    notice, this list of conditions and the following disclaimer in
16036  *    the documentation and/or other materials provided with the
16037  *    distribution.
16038  *
16039  * 3. All advertising materials mentioning features or use of this
16040  *    software must display the following acknowledgment:
16041  *    "This product includes software developed by the OpenSSL Project
16042  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16043  *
16044  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16045  *    endorse or promote products derived from this software without
16046  *    prior written permission. For written permission, please contact
16047  *    openssl-core@openssl.org.
16048  *
16049  * 5. Products derived from this software may not be called "OpenSSL"
16050  *    nor may "OpenSSL" appear in their names without prior written
16051  *    permission of the OpenSSL Project.
16052  *
16053  * 6. Redistributions of any form whatsoever must retain the following
16054  *    acknowledgment:
16055  *    "This product includes software developed by the OpenSSL Project
16056  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16057  *
16058  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16059  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16060  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16061  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16062  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16063  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16064  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16065  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16066  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16067  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16068  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16069  * OF THE POSSIBILITY OF SUCH DAMAGE.
16070  * ====================================================================
16071  *
16072  * This product includes cryptographic software written by Eric Young
16073  * (eay@cryptsoft.com).  This product includes software written by Tim
16074  * Hudson (tjh@cryptsoft.com).
16075  *
16076  */
16077 /* ====================================================================
16078  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
16079  *
16080  * Portions of the attached software ("Contribution") are developed by
16081  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
16082  *
16083  * The Contribution is licensed pursuant to the Eric Young open source
16084  * license provided above.
16085  *
16086  * The binary polynomial arithmetic software is originally written by
16087  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
16088  *
16089  */
16090 # 82 "/usr/include/openssl/ecdh.h" 2 3 4
16091 # 90 "/usr/include/openssl/ecdh.h" 3 4
16092 const ECDH_METHOD *ECDH_OpenSSL(void);
16093 
16094 void ECDH_set_default_method(const ECDH_METHOD *);
16095 const ECDH_METHOD *ECDH_get_default_method(void);
16096 int ECDH_set_method(EC_KEY *, const ECDH_METHOD *);
16097 
16098 int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
16099                      EC_KEY *ecdh, void *(*KDF) (const void *in, size_t inlen,
16100                                                  void *out, size_t *outlen));
16101 
16102 int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
16103                           *new_func, CRYPTO_EX_dup *dup_func,
16104                           CRYPTO_EX_free *free_func);
16105 int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);
16106 void *ECDH_get_ex_data(EC_KEY *d, int idx);
16107 
16108 int ECDH_KDF_X9_62(unsigned char *out, size_t outlen,
16109                    const unsigned char *Z, size_t Zlen,
16110                    const unsigned char *sinfo, size_t sinfolen,
16111                    const EVP_MD *md);
16112 
16113 /* BEGIN ERROR CODES */
16114 /*
16115  * The following lines are auto generated by the script mkerr.pl. Any changes
16116  * made after this point may be overwritten when the script is next run.
16117  */
16118 void ERR_load_ECDH_strings(void);
16119 
16120 /* Error codes for the ECDH functions. */
16121 
16122 /* Function codes. */
16123 
16124 
16125 
16126 
16127 /* Reason codes. */
16128 # 92 "/usr/include/openssl/x509.h" 2 3 4
16129 
16130 
16131 
16132 
16133 # 1 "/usr/include/openssl/rsa.h" 1 3 4
16134 /* crypto/rsa/rsa.h */
16135 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16136  * All rights reserved.
16137  *
16138  * This package is an SSL implementation written
16139  * by Eric Young (eay@cryptsoft.com).
16140  * The implementation was written so as to conform with Netscapes SSL.
16141  *
16142  * This library is free for commercial and non-commercial use as long as
16143  * the following conditions are aheared to.  The following conditions
16144  * apply to all code found in this distribution, be it the RC4, RSA,
16145  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16146  * included with this distribution is covered by the same copyright terms
16147  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16148  *
16149  * Copyright remains Eric Young's, and as such any Copyright notices in
16150  * the code are not to be removed.
16151  * If this package is used in a product, Eric Young should be given attribution
16152  * as the author of the parts of the library used.
16153  * This can be in the form of a textual message at program startup or
16154  * in documentation (online or textual) provided with the package.
16155  *
16156  * Redistribution and use in source and binary forms, with or without
16157  * modification, are permitted provided that the following conditions
16158  * are met:
16159  * 1. Redistributions of source code must retain the copyright
16160  *    notice, this list of conditions and the following disclaimer.
16161  * 2. Redistributions in binary form must reproduce the above copyright
16162  *    notice, this list of conditions and the following disclaimer in the
16163  *    documentation and/or other materials provided with the distribution.
16164  * 3. All advertising materials mentioning features or use of this software
16165  *    must display the following acknowledgement:
16166  *    "This product includes cryptographic software written by
16167  *     Eric Young (eay@cryptsoft.com)"
16168  *    The word 'cryptographic' can be left out if the rouines from the library
16169  *    being used are not cryptographic related :-).
16170  * 4. If you include any Windows specific code (or a derivative thereof) from
16171  *    the apps directory (application code) you must include an acknowledgement:
16172  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16173  *
16174  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16175  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16176  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16177  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16178  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16179  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16180  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16181  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16182  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16183  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16184  * SUCH DAMAGE.
16185  *
16186  * The licence and distribution terms for any publically available version or
16187  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16188  * copied and put under another distribution licence
16189  * [including the GNU Public Licence.]
16190  */
16191 
16192 
16193 
16194 
16195 # 1 "/usr/include/openssl/asn1.h" 1 3 4
16196 /* crypto/asn1/asn1.h */
16197 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16198  * All rights reserved.
16199  *
16200  * This package is an SSL implementation written
16201  * by Eric Young (eay@cryptsoft.com).
16202  * The implementation was written so as to conform with Netscapes SSL.
16203  *
16204  * This library is free for commercial and non-commercial use as long as
16205  * the following conditions are aheared to.  The following conditions
16206  * apply to all code found in this distribution, be it the RC4, RSA,
16207  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16208  * included with this distribution is covered by the same copyright terms
16209  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16210  *
16211  * Copyright remains Eric Young's, and as such any Copyright notices in
16212  * the code are not to be removed.
16213  * If this package is used in a product, Eric Young should be given attribution
16214  * as the author of the parts of the library used.
16215  * This can be in the form of a textual message at program startup or
16216  * in documentation (online or textual) provided with the package.
16217  *
16218  * Redistribution and use in source and binary forms, with or without
16219  * modification, are permitted provided that the following conditions
16220  * are met:
16221  * 1. Redistributions of source code must retain the copyright
16222  *    notice, this list of conditions and the following disclaimer.
16223  * 2. Redistributions in binary form must reproduce the above copyright
16224  *    notice, this list of conditions and the following disclaimer in the
16225  *    documentation and/or other materials provided with the distribution.
16226  * 3. All advertising materials mentioning features or use of this software
16227  *    must display the following acknowledgement:
16228  *    "This product includes cryptographic software written by
16229  *     Eric Young (eay@cryptsoft.com)"
16230  *    The word 'cryptographic' can be left out if the rouines from the library
16231  *    being used are not cryptographic related :-).
16232  * 4. If you include any Windows specific code (or a derivative thereof) from
16233  *    the apps directory (application code) you must include an acknowledgement:
16234  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16235  *
16236  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16237  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16238  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16239  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16240  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16241  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16242  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16243  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16244  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16245  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16246  * SUCH DAMAGE.
16247  *
16248  * The licence and distribution terms for any publically available version or
16249  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16250  * copied and put under another distribution licence
16251  * [including the GNU Public Licence.]
16252  */
16253 # 63 "/usr/include/openssl/rsa.h" 2 3 4
16254 
16255 
16256 # 1 "/usr/include/openssl/bio.h" 1 3 4
16257 /* crypto/bio/bio.h */
16258 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16259  * All rights reserved.
16260  *
16261  * This package is an SSL implementation written
16262  * by Eric Young (eay@cryptsoft.com).
16263  * The implementation was written so as to conform with Netscapes SSL.
16264  *
16265  * This library is free for commercial and non-commercial use as long as
16266  * the following conditions are aheared to.  The following conditions
16267  * apply to all code found in this distribution, be it the RC4, RSA,
16268  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16269  * included with this distribution is covered by the same copyright terms
16270  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16271  *
16272  * Copyright remains Eric Young's, and as such any Copyright notices in
16273  * the code are not to be removed.
16274  * If this package is used in a product, Eric Young should be given attribution
16275  * as the author of the parts of the library used.
16276  * This can be in the form of a textual message at program startup or
16277  * in documentation (online or textual) provided with the package.
16278  *
16279  * Redistribution and use in source and binary forms, with or without
16280  * modification, are permitted provided that the following conditions
16281  * are met:
16282  * 1. Redistributions of source code must retain the copyright
16283  *    notice, this list of conditions and the following disclaimer.
16284  * 2. Redistributions in binary form must reproduce the above copyright
16285  *    notice, this list of conditions and the following disclaimer in the
16286  *    documentation and/or other materials provided with the distribution.
16287  * 3. All advertising materials mentioning features or use of this software
16288  *    must display the following acknowledgement:
16289  *    "This product includes cryptographic software written by
16290  *     Eric Young (eay@cryptsoft.com)"
16291  *    The word 'cryptographic' can be left out if the rouines from the library
16292  *    being used are not cryptographic related :-).
16293  * 4. If you include any Windows specific code (or a derivative thereof) from
16294  *    the apps directory (application code) you must include an acknowledgement:
16295  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16296  *
16297  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16298  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16299  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16300  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16301  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16302  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16303  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16304  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16305  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16306  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16307  * SUCH DAMAGE.
16308  *
16309  * The licence and distribution terms for any publically available version or
16310  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16311  * copied and put under another distribution licence
16312  * [including the GNU Public Licence.]
16313  */
16314 # 66 "/usr/include/openssl/rsa.h" 2 3 4
16315 
16316 # 1 "/usr/include/openssl/crypto.h" 1 3 4
16317 /* crypto/crypto.h */
16318 /* ====================================================================
16319  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
16320  *
16321  * Redistribution and use in source and binary forms, with or without
16322  * modification, are permitted provided that the following conditions
16323  * are met:
16324  *
16325  * 1. Redistributions of source code must retain the above copyright
16326  *    notice, this list of conditions and the following disclaimer.
16327  *
16328  * 2. Redistributions in binary form must reproduce the above copyright
16329  *    notice, this list of conditions and the following disclaimer in
16330  *    the documentation and/or other materials provided with the
16331  *    distribution.
16332  *
16333  * 3. All advertising materials mentioning features or use of this
16334  *    software must display the following acknowledgment:
16335  *    "This product includes software developed by the OpenSSL Project
16336  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16337  *
16338  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16339  *    endorse or promote products derived from this software without
16340  *    prior written permission. For written permission, please contact
16341  *    openssl-core@openssl.org.
16342  *
16343  * 5. Products derived from this software may not be called "OpenSSL"
16344  *    nor may "OpenSSL" appear in their names without prior written
16345  *    permission of the OpenSSL Project.
16346  *
16347  * 6. Redistributions of any form whatsoever must retain the following
16348  *    acknowledgment:
16349  *    "This product includes software developed by the OpenSSL Project
16350  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16351  *
16352  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16353  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16354  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16355  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16356  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16357  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16358  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16359  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16360  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16361  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16362  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16363  * OF THE POSSIBILITY OF SUCH DAMAGE.
16364  * ====================================================================
16365  *
16366  * This product includes cryptographic software written by Eric Young
16367  * (eay@cryptsoft.com).  This product includes software written by Tim
16368  * Hudson (tjh@cryptsoft.com).
16369  *
16370  */
16371 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16372  * All rights reserved.
16373  *
16374  * This package is an SSL implementation written
16375  * by Eric Young (eay@cryptsoft.com).
16376  * The implementation was written so as to conform with Netscapes SSL.
16377  *
16378  * This library is free for commercial and non-commercial use as long as
16379  * the following conditions are aheared to.  The following conditions
16380  * apply to all code found in this distribution, be it the RC4, RSA,
16381  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16382  * included with this distribution is covered by the same copyright terms
16383  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16384  *
16385  * Copyright remains Eric Young's, and as such any Copyright notices in
16386  * the code are not to be removed.
16387  * If this package is used in a product, Eric Young should be given attribution
16388  * as the author of the parts of the library used.
16389  * This can be in the form of a textual message at program startup or
16390  * in documentation (online or textual) provided with the package.
16391  *
16392  * Redistribution and use in source and binary forms, with or without
16393  * modification, are permitted provided that the following conditions
16394  * are met:
16395  * 1. Redistributions of source code must retain the copyright
16396  *    notice, this list of conditions and the following disclaimer.
16397  * 2. Redistributions in binary form must reproduce the above copyright
16398  *    notice, this list of conditions and the following disclaimer in the
16399  *    documentation and/or other materials provided with the distribution.
16400  * 3. All advertising materials mentioning features or use of this software
16401  *    must display the following acknowledgement:
16402  *    "This product includes cryptographic software written by
16403  *     Eric Young (eay@cryptsoft.com)"
16404  *    The word 'cryptographic' can be left out if the rouines from the library
16405  *    being used are not cryptographic related :-).
16406  * 4. If you include any Windows specific code (or a derivative thereof) from
16407  *    the apps directory (application code) you must include an acknowledgement:
16408  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16409  *
16410  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16411  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16412  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16413  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16414  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16415  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16416  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16417  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16418  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16419  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16420  * SUCH DAMAGE.
16421  *
16422  * The licence and distribution terms for any publically available version or
16423  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16424  * copied and put under another distribution licence
16425  * [including the GNU Public Licence.]
16426  */
16427 /* ====================================================================
16428  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
16429  * ECDH support in OpenSSL originally developed by
16430  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
16431  */
16432 # 68 "/usr/include/openssl/rsa.h" 2 3 4
16433 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
16434 /* ====================================================================
16435  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
16436  *
16437  * Redistribution and use in source and binary forms, with or without
16438  * modification, are permitted provided that the following conditions
16439  * are met:
16440  *
16441  * 1. Redistributions of source code must retain the above copyright
16442  *    notice, this list of conditions and the following disclaimer.
16443  *
16444  * 2. Redistributions in binary form must reproduce the above copyright
16445  *    notice, this list of conditions and the following disclaimer in
16446  *    the documentation and/or other materials provided with the
16447  *    distribution.
16448  *
16449  * 3. All advertising materials mentioning features or use of this
16450  *    software must display the following acknowledgment:
16451  *    "This product includes software developed by the OpenSSL Project
16452  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16453  *
16454  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16455  *    endorse or promote products derived from this software without
16456  *    prior written permission. For written permission, please contact
16457  *    openssl-core@openssl.org.
16458  *
16459  * 5. Products derived from this software may not be called "OpenSSL"
16460  *    nor may "OpenSSL" appear in their names without prior written
16461  *    permission of the OpenSSL Project.
16462  *
16463  * 6. Redistributions of any form whatsoever must retain the following
16464  *    acknowledgment:
16465  *    "This product includes software developed by the OpenSSL Project
16466  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16467  *
16468  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16469  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16470  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16471  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16472  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16473  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16474  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16475  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16476  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16477  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16478  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16479  * OF THE POSSIBILITY OF SUCH DAMAGE.
16480  * ====================================================================
16481  *
16482  * This product includes cryptographic software written by Eric Young
16483  * (eay@cryptsoft.com).  This product includes software written by Tim
16484  * Hudson (tjh@cryptsoft.com).
16485  *
16486  */
16487 # 69 "/usr/include/openssl/rsa.h" 2 3 4
16488 
16489 # 1 "/usr/include/openssl/bn.h" 1 3 4
16490 /* crypto/bn/bn.h */
16491 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
16492  * All rights reserved.
16493  *
16494  * This package is an SSL implementation written
16495  * by Eric Young (eay@cryptsoft.com).
16496  * The implementation was written so as to conform with Netscapes SSL.
16497  *
16498  * This library is free for commercial and non-commercial use as long as
16499  * the following conditions are aheared to.  The following conditions
16500  * apply to all code found in this distribution, be it the RC4, RSA,
16501  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16502  * included with this distribution is covered by the same copyright terms
16503  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16504  *
16505  * Copyright remains Eric Young's, and as such any Copyright notices in
16506  * the code are not to be removed.
16507  * If this package is used in a product, Eric Young should be given attribution
16508  * as the author of the parts of the library used.
16509  * This can be in the form of a textual message at program startup or
16510  * in documentation (online or textual) provided with the package.
16511  *
16512  * Redistribution and use in source and binary forms, with or without
16513  * modification, are permitted provided that the following conditions
16514  * are met:
16515  * 1. Redistributions of source code must retain the copyright
16516  *    notice, this list of conditions and the following disclaimer.
16517  * 2. Redistributions in binary form must reproduce the above copyright
16518  *    notice, this list of conditions and the following disclaimer in the
16519  *    documentation and/or other materials provided with the distribution.
16520  * 3. All advertising materials mentioning features or use of this software
16521  *    must display the following acknowledgement:
16522  *    "This product includes cryptographic software written by
16523  *     Eric Young (eay@cryptsoft.com)"
16524  *    The word 'cryptographic' can be left out if the rouines from the library
16525  *    being used are not cryptographic related :-).
16526  * 4. If you include any Windows specific code (or a derivative thereof) from
16527  *    the apps directory (application code) you must include an acknowledgement:
16528  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16529  *
16530  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16531  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16532  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16533  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16534  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
16535  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16536  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16537  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
16538  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
16539  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
16540  * SUCH DAMAGE.
16541  *
16542  * The licence and distribution terms for any publically available version or
16543  * derivative of this code cannot be changed.  i.e. this code cannot simply be
16544  * copied and put under another distribution licence
16545  * [including the GNU Public Licence.]
16546  */
16547 /* ====================================================================
16548  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
16549  *
16550  * Redistribution and use in source and binary forms, with or without
16551  * modification, are permitted provided that the following conditions
16552  * are met:
16553  *
16554  * 1. Redistributions of source code must retain the above copyright
16555  *    notice, this list of conditions and the following disclaimer.
16556  *
16557  * 2. Redistributions in binary form must reproduce the above copyright
16558  *    notice, this list of conditions and the following disclaimer in
16559  *    the documentation and/or other materials provided with the
16560  *    distribution.
16561  *
16562  * 3. All advertising materials mentioning features or use of this
16563  *    software must display the following acknowledgment:
16564  *    "This product includes software developed by the OpenSSL Project
16565  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
16566  *
16567  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
16568  *    endorse or promote products derived from this software without
16569  *    prior written permission. For written permission, please contact
16570  *    openssl-core@openssl.org.
16571  *
16572  * 5. Products derived from this software may not be called "OpenSSL"
16573  *    nor may "OpenSSL" appear in their names without prior written
16574  *    permission of the OpenSSL Project.
16575  *
16576  * 6. Redistributions of any form whatsoever must retain the following
16577  *    acknowledgment:
16578  *    "This product includes software developed by the OpenSSL Project
16579  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
16580  *
16581  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
16582  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16583  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16584  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
16585  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16586  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16587  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16588  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
16589  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
16590  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16591  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
16592  * OF THE POSSIBILITY OF SUCH DAMAGE.
16593  * ====================================================================
16594  *
16595  * This product includes cryptographic software written by Eric Young
16596  * (eay@cryptsoft.com).  This product includes software written by Tim
16597  * Hudson (tjh@cryptsoft.com).
16598  *
16599  */
16600 /* ====================================================================
16601  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
16602  *
16603  * Portions of the attached software ("Contribution") are developed by
16604  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
16605  *
16606  * The Contribution is licensed pursuant to the Eric Young open source
16607  * license provided above.
16608  *
16609  * The binary polynomial arithmetic software is originally written by
16610  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
16611  *
16612  */
16613 # 71 "/usr/include/openssl/rsa.h" 2 3 4
16614 # 81 "/usr/include/openssl/rsa.h" 3 4
16615 /* Declared already in ossl_typ.h */
16616 /* typedef struct rsa_st RSA; */
16617 /* typedef struct rsa_meth_st RSA_METHOD; */
16618 
16619 struct rsa_meth_st {
16620     const char *name;
16621     int (*rsa_pub_enc) (int flen, const unsigned char *from,
16622                         unsigned char *to, RSA *rsa, int padding);
16623     int (*rsa_pub_dec) (int flen, const unsigned char *from,
16624                         unsigned char *to, RSA *rsa, int padding);
16625     int (*rsa_priv_enc) (int flen, const unsigned char *from,
16626                          unsigned char *to, RSA *rsa, int padding);
16627     int (*rsa_priv_dec) (int flen, const unsigned char *from,
16628                          unsigned char *to, RSA *rsa, int padding);
16629     /* Can be null */
16630     int (*rsa_mod_exp) (BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx);
16631     /* Can be null */
16632     int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
16633                        const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
16634     /* called at new */
16635     int (*init) (RSA *rsa);
16636     /* called at free */
16637     int (*finish) (RSA *rsa);
16638     /* RSA_METHOD_FLAG_* things */
16639     int flags;
16640     /* may be needed! */
16641     char *app_data;
16642     /*
16643      * New sign and verify functions: some libraries don't allow arbitrary
16644      * data to be signed/verified: this allows them to be used. Note: for
16645      * this to work the RSA_public_decrypt() and RSA_private_encrypt() should
16646      * *NOT* be used RSA_sign(), RSA_verify() should be used instead. Note:
16647      * for backwards compatibility this functionality is only enabled if the
16648      * RSA_FLAG_SIGN_VER option is set in 'flags'.
16649      */
16650     int (*rsa_sign) (int type,
16651                      const unsigned char *m, unsigned int m_length,
16652                      unsigned char *sigret, unsigned int *siglen,
16653                      const RSA *rsa);
16654     int (*rsa_verify) (int dtype, const unsigned char *m,
16655                        unsigned int m_length, const unsigned char *sigbuf,
16656                        unsigned int siglen, const RSA *rsa);
16657     /*
16658      * If this callback is NULL, the builtin software RSA key-gen will be
16659      * used. This is for behavioural compatibility whilst the code gets
16660      * rewired, but one day it would be nice to assume there are no such
16661      * things as "builtin software" implementations.
16662      */
16663     int (*rsa_keygen) (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
16664 };
16665 
16666 struct rsa_st {
16667     /*
16668      * The first parameter is used to pickup errors where this is passed
16669      * instead of aEVP_PKEY, it is set to 0
16670      */
16671     int pad;
16672     long version;
16673     const RSA_METHOD *meth;
16674     /* functional reference if 'meth' is ENGINE-provided */
16675     ENGINE *engine;
16676     BIGNUM *n;
16677     BIGNUM *e;
16678     BIGNUM *d;
16679     BIGNUM *p;
16680     BIGNUM *q;
16681     BIGNUM *dmp1;
16682     BIGNUM *dmq1;
16683     BIGNUM *iqmp;
16684     /* be careful using this if the RSA structure is shared */
16685     CRYPTO_EX_DATA ex_data;
16686     int references;
16687     int flags;
16688     /* Used to cache montgomery values */
16689     BN_MONT_CTX *_method_mod_n;
16690     BN_MONT_CTX *_method_mod_p;
16691     BN_MONT_CTX *_method_mod_q;
16692     /*
16693      * all BIGNUM values are actually in the following data, if it is not
16694      * NULL
16695      */
16696     char *bignum_data;
16697     BN_BLINDING *blinding;
16698     BN_BLINDING *mt_blinding;
16699 };
16700 # 176 "/usr/include/openssl/rsa.h" 3 4
16701 /* exponent limit enforced for "large" modulus only */
16702 # 190 "/usr/include/openssl/rsa.h" 3 4
16703 /*
16704  * This flag means the private key operations will be handled by rsa_mod_exp
16705  * and that they do not depend on the private key components being present:
16706  * for example a key stored in external hardware. Without this flag
16707  * bn_mod_exp gets called when private key components are absent.
16708  */
16709 
16710 
16711 /*
16712  * This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify
16713  * functions.
16714  */
16715 
16716 
16717 /*
16718  * new with 0.9.6j and 0.9.7b; the built-in
16719  * RSA implementation now uses blinding by
16720  * default (ignoring RSA_FLAG_BLINDING),
16721  * but other engines might not need it
16722  */
16723 
16724 /*
16725  * new with 0.9.8f; the built-in RSA
16726  * implementation now uses constant time
16727  * operations by default in private key operations,
16728  * e.g., constant time modular exponentiation,
16729  * modular inverse without leaking branches,
16730  * division without leaking branches. This
16731  * flag disables these constant time
16732  * operations and results in faster RSA
16733  * private key operations.
16734  */
16735 # 312 "/usr/include/openssl/rsa.h" 3 4
16736 /* EVP_PKEY_ only */
16737 
16738 
16739 
16740 
16741 
16742 
16743 
16744 RSA *RSA_new(void);
16745 RSA *RSA_new_method(ENGINE *engine);
16746 int RSA_size(const RSA *rsa);
16747 
16748 /* Deprecated version */
16749 
16750 RSA *RSA_generate_key(int bits, unsigned long e, void
16751                        (*callback) (int, int, void *), void *cb_arg);
16752 
16753 
16754 /* New version */
16755 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
16756 
16757 int RSA_check_key(const RSA *);
16758         /* next 4 return -1 on error */
16759 int RSA_public_encrypt(int flen, const unsigned char *from,
16760                        unsigned char *to, RSA *rsa, int padding);
16761 int RSA_private_encrypt(int flen, const unsigned char *from,
16762                         unsigned char *to, RSA *rsa, int padding);
16763 int RSA_public_decrypt(int flen, const unsigned char *from,
16764                        unsigned char *to, RSA *rsa, int padding);
16765 int RSA_private_decrypt(int flen, const unsigned char *from,
16766                         unsigned char *to, RSA *rsa, int padding);
16767 void RSA_free(RSA *r);
16768 /* "up" the RSA object's reference count */
16769 int RSA_up_ref(RSA *r);
16770 
16771 int RSA_flags(const RSA *r);
16772 
16773 void RSA_set_default_method(const RSA_METHOD *meth);
16774 const RSA_METHOD *RSA_get_default_method(void);
16775 const RSA_METHOD *RSA_get_method(const RSA *rsa);
16776 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
16777 
16778 /* This function needs the memory locking malloc callbacks to be installed */
16779 int RSA_memory_lock(RSA *r);
16780 
16781 /* these are the actual SSLeay RSA functions */
16782 const RSA_METHOD *RSA_PKCS1_SSLeay(void);
16783 
16784 const RSA_METHOD *RSA_null_method(void);
16785 
16786 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;
16787 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;
16788 
16789 typedef struct rsa_pss_params_st {
16790     X509_ALGOR *hashAlgorithm;
16791     X509_ALGOR *maskGenAlgorithm;
16792     ASN1_INTEGER *saltLength;
16793     ASN1_INTEGER *trailerField;
16794 } RSA_PSS_PARAMS;
16795 
16796 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;
16797 
16798 typedef struct rsa_oaep_params_st {
16799     X509_ALGOR *hashFunc;
16800     X509_ALGOR *maskGenFunc;
16801     X509_ALGOR *pSourceFunc;
16802 } RSA_OAEP_PARAMS;
16803 
16804 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;
16805 
16806 
16807 int RSA_print_fp(FILE *fp, const RSA *r, int offset);
16808 
16809 
16810 
16811 int RSA_print(BIO *bp, const RSA *r, int offset);
16812 
16813 
16814 
16815 int i2d_RSA_NET(const RSA *a, unsigned char **pp,
16816                 int (*cb) (char *buf, int len, const char *prompt,
16817                            int verify), int sgckey);
16818 RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
16819                  int (*cb) (char *buf, int len, const char *prompt,
16820                             int verify), int sgckey);
16821 
16822 int i2d_Netscape_RSA(const RSA *a, unsigned char **pp,
16823                      int (*cb) (char *buf, int len, const char *prompt,
16824                                 int verify));
16825 RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length,
16826                       int (*cb) (char *buf, int len, const char *prompt,
16827                                  int verify));
16828 
16829 
16830 /*
16831  * The following 2 functions sign and verify a X509_SIG ASN1 object inside
16832  * PKCS#1 padded RSA encryption
16833  */
16834 int RSA_sign(int type, const unsigned char *m, unsigned int m_length,
16835              unsigned char *sigret, unsigned int *siglen, RSA *rsa);
16836 int RSA_verify(int type, const unsigned char *m, unsigned int m_length,
16837                const unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
16838 
16839 /*
16840  * The following 2 function sign and verify a ASN1_OCTET_STRING object inside
16841  * PKCS#1 padded RSA encryption
16842  */
16843 int RSA_sign_ASN1_OCTET_STRING(int type,
16844                                const unsigned char *m, unsigned int m_length,
16845                                unsigned char *sigret, unsigned int *siglen,
16846                                RSA *rsa);
16847 int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m,
16848                                  unsigned int m_length, unsigned char *sigbuf,
16849                                  unsigned int siglen, RSA *rsa);
16850 
16851 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
16852 void RSA_blinding_off(RSA *rsa);
16853 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx);
16854 
16855 int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
16856                                  const unsigned char *f, int fl);
16857 int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen,
16858                                    const unsigned char *f, int fl,
16859                                    int rsa_len);
16860 int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen,
16861                                  const unsigned char *f, int fl);
16862 int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
16863                                    const unsigned char *f, int fl,
16864                                    int rsa_len);
16865 int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed,
16866                long seedlen, const EVP_MD *dgst);
16867 int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
16868                                const unsigned char *f, int fl,
16869                                const unsigned char *p, int pl);
16870 int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
16871                                  const unsigned char *f, int fl, int rsa_len,
16872                                  const unsigned char *p, int pl);
16873 int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
16874                                     const unsigned char *from, int flen,
16875                                     const unsigned char *param, int plen,
16876                                     const EVP_MD *md, const EVP_MD *mgf1md);
16877 int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
16878                                       const unsigned char *from, int flen,
16879                                       int num, const unsigned char *param,
16880                                       int plen, const EVP_MD *md,
16881                                       const EVP_MD *mgf1md);
16882 int RSA_padding_add_SSLv23(unsigned char *to, int tlen,
16883                            const unsigned char *f, int fl);
16884 int RSA_padding_check_SSLv23(unsigned char *to, int tlen,
16885                              const unsigned char *f, int fl, int rsa_len);
16886 int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f,
16887                          int fl);
16888 int RSA_padding_check_none(unsigned char *to, int tlen,
16889                            const unsigned char *f, int fl, int rsa_len);
16890 int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f,
16891                          int fl);
16892 int RSA_padding_check_X931(unsigned char *to, int tlen,
16893                            const unsigned char *f, int fl, int rsa_len);
16894 int RSA_X931_hash_id(int nid);
16895 
16896 int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
16897                          const EVP_MD *Hash, const unsigned char *EM,
16898                          int sLen);
16899 int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
16900                               const unsigned char *mHash, const EVP_MD *Hash,
16901                               int sLen);
16902 
16903 int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash,
16904                               const EVP_MD *Hash, const EVP_MD *mgf1Hash,
16905                               const unsigned char *EM, int sLen);
16906 
16907 int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
16908                                    const unsigned char *mHash,
16909                                    const EVP_MD *Hash, const EVP_MD *mgf1Hash,
16910                                    int sLen);
16911 
16912 int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
16913                          CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
16914 int RSA_set_ex_data(RSA *r, int idx, void *arg);
16915 void *RSA_get_ex_data(const RSA *r, int idx);
16916 
16917 RSA *RSAPublicKey_dup(RSA *rsa);
16918 RSA *RSAPrivateKey_dup(RSA *rsa);
16919 
16920 /*
16921  * If this flag is set the RSA method is FIPS compliant and can be used in
16922  * FIPS mode. This is set in the validated module method. If an application
16923  * sets this flag in its own methods it is its responsibility to ensure the
16924  * result is compliant.
16925  */
16926 
16927 
16928 
16929 /*
16930  * If this flag is set the operations normally disabled in FIPS mode are
16931  * permitted it is then the applications responsibility to ensure that the
16932  * usage is compliant.
16933  */
16934 
16935 
16936 /*
16937  * Application has decided PRNG is good enough to generate a key: don't
16938  * check.
16939  */
16940 
16941 
16942 /* BEGIN ERROR CODES */
16943 /*
16944  * The following lines are auto generated by the script mkerr.pl. Any changes
16945  * made after this point may be overwritten when the script is next run.
16946  */
16947 void ERR_load_RSA_strings(void);
16948 
16949 /* Error codes for the RSA functions. */
16950 
16951 /* Function codes. */
16952 # 592 "/usr/include/openssl/rsa.h" 3 4
16953 /* Reason codes. */
16954 # 97 "/usr/include/openssl/x509.h" 2 3 4
16955 
16956 
16957 # 1 "/usr/include/openssl/dsa.h" 1 3 4
16958 /* crypto/dsa/dsa.h */
16959 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
16960  * All rights reserved.
16961  *
16962  * This package is an SSL implementation written
16963  * by Eric Young (eay@cryptsoft.com).
16964  * The implementation was written so as to conform with Netscapes SSL.
16965  *
16966  * This library is free for commercial and non-commercial use as long as
16967  * the following conditions are aheared to.  The following conditions
16968  * apply to all code found in this distribution, be it the RC4, RSA,
16969  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16970  * included with this distribution is covered by the same copyright terms
16971  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
16972  *
16973  * Copyright remains Eric Young's, and as such any Copyright notices in
16974  * the code are not to be removed.
16975  * If this package is used in a product, Eric Young should be given attribution
16976  * as the author of the parts of the library used.
16977  * This can be in the form of a textual message at program startup or
16978  * in documentation (online or textual) provided with the package.
16979  *
16980  * Redistribution and use in source and binary forms, with or without
16981  * modification, are permitted provided that the following conditions
16982  * are met:
16983  * 1. Redistributions of source code must retain the copyright
16984  *    notice, this list of conditions and the following disclaimer.
16985  * 2. Redistributions in binary form must reproduce the above copyright
16986  *    notice, this list of conditions and the following disclaimer in the
16987  *    documentation and/or other materials provided with the distribution.
16988  * 3. All advertising materials mentioning features or use of this software
16989  *    must display the following acknowledgement:
16990  *    "This product includes cryptographic software written by
16991  *     Eric Young (eay@cryptsoft.com)"
16992  *    The word 'cryptographic' can be left out if the rouines from the library
16993  *    being used are not cryptographic related :-).
16994  * 4. If you include any Windows specific code (or a derivative thereof) from
16995  *    the apps directory (application code) you must include an acknowledgement:
16996  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
16997  *
16998  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
16999  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17000  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17001  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17002  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17003  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17004  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17005  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17006  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17007  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17008  * SUCH DAMAGE.
17009  *
17010  * The licence and distribution terms for any publically available version or
17011  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17012  * copied and put under another distribution licence
17013  * [including the GNU Public Licence.]
17014  */
17015 
17016 /*
17017  * The DSS routines are based on patches supplied by
17018  * Steven Schoch <schoch@sheba.arc.nasa.gov>.  He basically did the
17019  * work and I have just tweaked them a little to fit into my
17020  * stylistic vision for SSLeay :-) */
17021 
17022 
17023 
17024 
17025 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
17026 /* e_os2.h */
17027 /* ====================================================================
17028  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
17029  *
17030  * Redistribution and use in source and binary forms, with or without
17031  * modification, are permitted provided that the following conditions
17032  * are met:
17033  *
17034  * 1. Redistributions of source code must retain the above copyright
17035  *    notice, this list of conditions and the following disclaimer.
17036  *
17037  * 2. Redistributions in binary form must reproduce the above copyright
17038  *    notice, this list of conditions and the following disclaimer in
17039  *    the documentation and/or other materials provided with the
17040  *    distribution.
17041  *
17042  * 3. All advertising materials mentioning features or use of this
17043  *    software must display the following acknowledgment:
17044  *    "This product includes software developed by the OpenSSL Project
17045  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17046  *
17047  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17048  *    endorse or promote products derived from this software without
17049  *    prior written permission. For written permission, please contact
17050  *    openssl-core@openssl.org.
17051  *
17052  * 5. Products derived from this software may not be called "OpenSSL"
17053  *    nor may "OpenSSL" appear in their names without prior written
17054  *    permission of the OpenSSL Project.
17055  *
17056  * 6. Redistributions of any form whatsoever must retain the following
17057  *    acknowledgment:
17058  *    "This product includes software developed by the OpenSSL Project
17059  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17060  *
17061  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17062  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17063  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17064  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17065  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17066  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17067  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17068  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17069  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17070  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17071  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17072  * OF THE POSSIBILITY OF SUCH DAMAGE.
17073  * ====================================================================
17074  *
17075  * This product includes cryptographic software written by Eric Young
17076  * (eay@cryptsoft.com).  This product includes software written by Tim
17077  * Hudson (tjh@cryptsoft.com).
17078  *
17079  */
17080 
17081 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
17082 /* opensslconf.h */
17083 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
17084 
17085 
17086 
17087 
17088 /* OpenSSL was configured with the following options: */
17089 # 108 "/usr/include/openssl/opensslconf.h" 3 4
17090 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
17091    asks for it.  This is a transient feature that is provided for those
17092    who haven't had the time to do the appropriate changes in their
17093    applications.  */
17094 # 204 "/usr/include/openssl/opensslconf.h" 3 4
17095 /* crypto/opensslconf.h.in */
17096 
17097 /* Generate 80386 code? */
17098 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
17099 # 69 "/usr/include/openssl/dsa.h" 2 3 4
17100 
17101 
17102 
17103 
17104 
17105 
17106 # 1 "/usr/include/openssl/bio.h" 1 3 4
17107 /* crypto/bio/bio.h */
17108 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17109  * All rights reserved.
17110  *
17111  * This package is an SSL implementation written
17112  * by Eric Young (eay@cryptsoft.com).
17113  * The implementation was written so as to conform with Netscapes SSL.
17114  *
17115  * This library is free for commercial and non-commercial use as long as
17116  * the following conditions are aheared to.  The following conditions
17117  * apply to all code found in this distribution, be it the RC4, RSA,
17118  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17119  * included with this distribution is covered by the same copyright terms
17120  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17121  *
17122  * Copyright remains Eric Young's, and as such any Copyright notices in
17123  * the code are not to be removed.
17124  * If this package is used in a product, Eric Young should be given attribution
17125  * as the author of the parts of the library used.
17126  * This can be in the form of a textual message at program startup or
17127  * in documentation (online or textual) provided with the package.
17128  *
17129  * Redistribution and use in source and binary forms, with or without
17130  * modification, are permitted provided that the following conditions
17131  * are met:
17132  * 1. Redistributions of source code must retain the copyright
17133  *    notice, this list of conditions and the following disclaimer.
17134  * 2. Redistributions in binary form must reproduce the above copyright
17135  *    notice, this list of conditions and the following disclaimer in the
17136  *    documentation and/or other materials provided with the distribution.
17137  * 3. All advertising materials mentioning features or use of this software
17138  *    must display the following acknowledgement:
17139  *    "This product includes cryptographic software written by
17140  *     Eric Young (eay@cryptsoft.com)"
17141  *    The word 'cryptographic' can be left out if the rouines from the library
17142  *    being used are not cryptographic related :-).
17143  * 4. If you include any Windows specific code (or a derivative thereof) from
17144  *    the apps directory (application code) you must include an acknowledgement:
17145  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17146  *
17147  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17148  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17149  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17150  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17151  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17152  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17153  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17154  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17155  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17156  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17157  * SUCH DAMAGE.
17158  *
17159  * The licence and distribution terms for any publically available version or
17160  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17161  * copied and put under another distribution licence
17162  * [including the GNU Public Licence.]
17163  */
17164 # 76 "/usr/include/openssl/dsa.h" 2 3 4
17165 
17166 # 1 "/usr/include/openssl/crypto.h" 1 3 4
17167 /* crypto/crypto.h */
17168 /* ====================================================================
17169  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
17170  *
17171  * Redistribution and use in source and binary forms, with or without
17172  * modification, are permitted provided that the following conditions
17173  * are met:
17174  *
17175  * 1. Redistributions of source code must retain the above copyright
17176  *    notice, this list of conditions and the following disclaimer.
17177  *
17178  * 2. Redistributions in binary form must reproduce the above copyright
17179  *    notice, this list of conditions and the following disclaimer in
17180  *    the documentation and/or other materials provided with the
17181  *    distribution.
17182  *
17183  * 3. All advertising materials mentioning features or use of this
17184  *    software must display the following acknowledgment:
17185  *    "This product includes software developed by the OpenSSL Project
17186  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17187  *
17188  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17189  *    endorse or promote products derived from this software without
17190  *    prior written permission. For written permission, please contact
17191  *    openssl-core@openssl.org.
17192  *
17193  * 5. Products derived from this software may not be called "OpenSSL"
17194  *    nor may "OpenSSL" appear in their names without prior written
17195  *    permission of the OpenSSL Project.
17196  *
17197  * 6. Redistributions of any form whatsoever must retain the following
17198  *    acknowledgment:
17199  *    "This product includes software developed by the OpenSSL Project
17200  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17201  *
17202  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17203  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17204  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17205  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17206  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17207  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17208  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17209  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17210  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17211  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17212  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17213  * OF THE POSSIBILITY OF SUCH DAMAGE.
17214  * ====================================================================
17215  *
17216  * This product includes cryptographic software written by Eric Young
17217  * (eay@cryptsoft.com).  This product includes software written by Tim
17218  * Hudson (tjh@cryptsoft.com).
17219  *
17220  */
17221 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17222  * All rights reserved.
17223  *
17224  * This package is an SSL implementation written
17225  * by Eric Young (eay@cryptsoft.com).
17226  * The implementation was written so as to conform with Netscapes SSL.
17227  *
17228  * This library is free for commercial and non-commercial use as long as
17229  * the following conditions are aheared to.  The following conditions
17230  * apply to all code found in this distribution, be it the RC4, RSA,
17231  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17232  * included with this distribution is covered by the same copyright terms
17233  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17234  *
17235  * Copyright remains Eric Young's, and as such any Copyright notices in
17236  * the code are not to be removed.
17237  * If this package is used in a product, Eric Young should be given attribution
17238  * as the author of the parts of the library used.
17239  * This can be in the form of a textual message at program startup or
17240  * in documentation (online or textual) provided with the package.
17241  *
17242  * Redistribution and use in source and binary forms, with or without
17243  * modification, are permitted provided that the following conditions
17244  * are met:
17245  * 1. Redistributions of source code must retain the copyright
17246  *    notice, this list of conditions and the following disclaimer.
17247  * 2. Redistributions in binary form must reproduce the above copyright
17248  *    notice, this list of conditions and the following disclaimer in the
17249  *    documentation and/or other materials provided with the distribution.
17250  * 3. All advertising materials mentioning features or use of this software
17251  *    must display the following acknowledgement:
17252  *    "This product includes cryptographic software written by
17253  *     Eric Young (eay@cryptsoft.com)"
17254  *    The word 'cryptographic' can be left out if the rouines from the library
17255  *    being used are not cryptographic related :-).
17256  * 4. If you include any Windows specific code (or a derivative thereof) from
17257  *    the apps directory (application code) you must include an acknowledgement:
17258  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17259  *
17260  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17261  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17262  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17263  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17264  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17265  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17266  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17267  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17268  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17269  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17270  * SUCH DAMAGE.
17271  *
17272  * The licence and distribution terms for any publically available version or
17273  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17274  * copied and put under another distribution licence
17275  * [including the GNU Public Licence.]
17276  */
17277 /* ====================================================================
17278  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
17279  * ECDH support in OpenSSL originally developed by
17280  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
17281  */
17282 # 78 "/usr/include/openssl/dsa.h" 2 3 4
17283 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
17284 /* ====================================================================
17285  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
17286  *
17287  * Redistribution and use in source and binary forms, with or without
17288  * modification, are permitted provided that the following conditions
17289  * are met:
17290  *
17291  * 1. Redistributions of source code must retain the above copyright
17292  *    notice, this list of conditions and the following disclaimer.
17293  *
17294  * 2. Redistributions in binary form must reproduce the above copyright
17295  *    notice, this list of conditions and the following disclaimer in
17296  *    the documentation and/or other materials provided with the
17297  *    distribution.
17298  *
17299  * 3. All advertising materials mentioning features or use of this
17300  *    software must display the following acknowledgment:
17301  *    "This product includes software developed by the OpenSSL Project
17302  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17303  *
17304  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17305  *    endorse or promote products derived from this software without
17306  *    prior written permission. For written permission, please contact
17307  *    openssl-core@openssl.org.
17308  *
17309  * 5. Products derived from this software may not be called "OpenSSL"
17310  *    nor may "OpenSSL" appear in their names without prior written
17311  *    permission of the OpenSSL Project.
17312  *
17313  * 6. Redistributions of any form whatsoever must retain the following
17314  *    acknowledgment:
17315  *    "This product includes software developed by the OpenSSL Project
17316  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17317  *
17318  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17319  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17320  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17321  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17322  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17323  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17324  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17325  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17326  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17327  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17328  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17329  * OF THE POSSIBILITY OF SUCH DAMAGE.
17330  * ====================================================================
17331  *
17332  * This product includes cryptographic software written by Eric Young
17333  * (eay@cryptsoft.com).  This product includes software written by Tim
17334  * Hudson (tjh@cryptsoft.com).
17335  *
17336  */
17337 # 79 "/usr/include/openssl/dsa.h" 2 3 4
17338 
17339 
17340 # 1 "/usr/include/openssl/bn.h" 1 3 4
17341 /* crypto/bn/bn.h */
17342 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
17343  * All rights reserved.
17344  *
17345  * This package is an SSL implementation written
17346  * by Eric Young (eay@cryptsoft.com).
17347  * The implementation was written so as to conform with Netscapes SSL.
17348  *
17349  * This library is free for commercial and non-commercial use as long as
17350  * the following conditions are aheared to.  The following conditions
17351  * apply to all code found in this distribution, be it the RC4, RSA,
17352  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17353  * included with this distribution is covered by the same copyright terms
17354  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17355  *
17356  * Copyright remains Eric Young's, and as such any Copyright notices in
17357  * the code are not to be removed.
17358  * If this package is used in a product, Eric Young should be given attribution
17359  * as the author of the parts of the library used.
17360  * This can be in the form of a textual message at program startup or
17361  * in documentation (online or textual) provided with the package.
17362  *
17363  * Redistribution and use in source and binary forms, with or without
17364  * modification, are permitted provided that the following conditions
17365  * are met:
17366  * 1. Redistributions of source code must retain the copyright
17367  *    notice, this list of conditions and the following disclaimer.
17368  * 2. Redistributions in binary form must reproduce the above copyright
17369  *    notice, this list of conditions and the following disclaimer in the
17370  *    documentation and/or other materials provided with the distribution.
17371  * 3. All advertising materials mentioning features or use of this software
17372  *    must display the following acknowledgement:
17373  *    "This product includes cryptographic software written by
17374  *     Eric Young (eay@cryptsoft.com)"
17375  *    The word 'cryptographic' can be left out if the rouines from the library
17376  *    being used are not cryptographic related :-).
17377  * 4. If you include any Windows specific code (or a derivative thereof) from
17378  *    the apps directory (application code) you must include an acknowledgement:
17379  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17380  *
17381  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17382  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17383  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17384  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17385  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17386  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17387  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17388  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17389  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17390  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17391  * SUCH DAMAGE.
17392  *
17393  * The licence and distribution terms for any publically available version or
17394  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17395  * copied and put under another distribution licence
17396  * [including the GNU Public Licence.]
17397  */
17398 /* ====================================================================
17399  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
17400  *
17401  * Redistribution and use in source and binary forms, with or without
17402  * modification, are permitted provided that the following conditions
17403  * are met:
17404  *
17405  * 1. Redistributions of source code must retain the above copyright
17406  *    notice, this list of conditions and the following disclaimer.
17407  *
17408  * 2. Redistributions in binary form must reproduce the above copyright
17409  *    notice, this list of conditions and the following disclaimer in
17410  *    the documentation and/or other materials provided with the
17411  *    distribution.
17412  *
17413  * 3. All advertising materials mentioning features or use of this
17414  *    software must display the following acknowledgment:
17415  *    "This product includes software developed by the OpenSSL Project
17416  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17417  *
17418  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17419  *    endorse or promote products derived from this software without
17420  *    prior written permission. For written permission, please contact
17421  *    openssl-core@openssl.org.
17422  *
17423  * 5. Products derived from this software may not be called "OpenSSL"
17424  *    nor may "OpenSSL" appear in their names without prior written
17425  *    permission of the OpenSSL Project.
17426  *
17427  * 6. Redistributions of any form whatsoever must retain the following
17428  *    acknowledgment:
17429  *    "This product includes software developed by the OpenSSL Project
17430  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17431  *
17432  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17433  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17434  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17435  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17436  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17437  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17438  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17439  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17440  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17441  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17442  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17443  * OF THE POSSIBILITY OF SUCH DAMAGE.
17444  * ====================================================================
17445  *
17446  * This product includes cryptographic software written by Eric Young
17447  * (eay@cryptsoft.com).  This product includes software written by Tim
17448  * Hudson (tjh@cryptsoft.com).
17449  *
17450  */
17451 /* ====================================================================
17452  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
17453  *
17454  * Portions of the attached software ("Contribution") are developed by
17455  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
17456  *
17457  * The Contribution is licensed pursuant to the Eric Young open source
17458  * license provided above.
17459  *
17460  * The binary polynomial arithmetic software is originally written by
17461  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
17462  *
17463  */
17464 # 82 "/usr/include/openssl/dsa.h" 2 3 4
17465 
17466 # 1 "/usr/include/openssl/dh.h" 1 3 4
17467 /* crypto/dh/dh.h */
17468 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17469  * All rights reserved.
17470  *
17471  * This package is an SSL implementation written
17472  * by Eric Young (eay@cryptsoft.com).
17473  * The implementation was written so as to conform with Netscapes SSL.
17474  *
17475  * This library is free for commercial and non-commercial use as long as
17476  * the following conditions are aheared to.  The following conditions
17477  * apply to all code found in this distribution, be it the RC4, RSA,
17478  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17479  * included with this distribution is covered by the same copyright terms
17480  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17481  *
17482  * Copyright remains Eric Young's, and as such any Copyright notices in
17483  * the code are not to be removed.
17484  * If this package is used in a product, Eric Young should be given attribution
17485  * as the author of the parts of the library used.
17486  * This can be in the form of a textual message at program startup or
17487  * in documentation (online or textual) provided with the package.
17488  *
17489  * Redistribution and use in source and binary forms, with or without
17490  * modification, are permitted provided that the following conditions
17491  * are met:
17492  * 1. Redistributions of source code must retain the copyright
17493  *    notice, this list of conditions and the following disclaimer.
17494  * 2. Redistributions in binary form must reproduce the above copyright
17495  *    notice, this list of conditions and the following disclaimer in the
17496  *    documentation and/or other materials provided with the distribution.
17497  * 3. All advertising materials mentioning features or use of this software
17498  *    must display the following acknowledgement:
17499  *    "This product includes cryptographic software written by
17500  *     Eric Young (eay@cryptsoft.com)"
17501  *    The word 'cryptographic' can be left out if the rouines from the library
17502  *    being used are not cryptographic related :-).
17503  * 4. If you include any Windows specific code (or a derivative thereof) from
17504  *    the apps directory (application code) you must include an acknowledgement:
17505  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17506  *
17507  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17508  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17509  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17510  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17511  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17512  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17513  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17514  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17515  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17516  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17517  * SUCH DAMAGE.
17518  *
17519  * The licence and distribution terms for any publically available version or
17520  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17521  * copied and put under another distribution licence
17522  * [including the GNU Public Licence.]
17523  */
17524 
17525 
17526 
17527 
17528 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
17529 /* e_os2.h */
17530 /* ====================================================================
17531  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
17532  *
17533  * Redistribution and use in source and binary forms, with or without
17534  * modification, are permitted provided that the following conditions
17535  * are met:
17536  *
17537  * 1. Redistributions of source code must retain the above copyright
17538  *    notice, this list of conditions and the following disclaimer.
17539  *
17540  * 2. Redistributions in binary form must reproduce the above copyright
17541  *    notice, this list of conditions and the following disclaimer in
17542  *    the documentation and/or other materials provided with the
17543  *    distribution.
17544  *
17545  * 3. All advertising materials mentioning features or use of this
17546  *    software must display the following acknowledgment:
17547  *    "This product includes software developed by the OpenSSL Project
17548  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17549  *
17550  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17551  *    endorse or promote products derived from this software without
17552  *    prior written permission. For written permission, please contact
17553  *    openssl-core@openssl.org.
17554  *
17555  * 5. Products derived from this software may not be called "OpenSSL"
17556  *    nor may "OpenSSL" appear in their names without prior written
17557  *    permission of the OpenSSL Project.
17558  *
17559  * 6. Redistributions of any form whatsoever must retain the following
17560  *    acknowledgment:
17561  *    "This product includes software developed by the OpenSSL Project
17562  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17563  *
17564  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17565  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17566  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17567  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17568  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17569  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17570  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17571  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17572  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17573  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17574  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17575  * OF THE POSSIBILITY OF SUCH DAMAGE.
17576  * ====================================================================
17577  *
17578  * This product includes cryptographic software written by Eric Young
17579  * (eay@cryptsoft.com).  This product includes software written by Tim
17580  * Hudson (tjh@cryptsoft.com).
17581  *
17582  */
17583 
17584 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
17585 /* opensslconf.h */
17586 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
17587 
17588 
17589 
17590 
17591 /* OpenSSL was configured with the following options: */
17592 # 108 "/usr/include/openssl/opensslconf.h" 3 4
17593 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
17594    asks for it.  This is a transient feature that is provided for those
17595    who haven't had the time to do the appropriate changes in their
17596    applications.  */
17597 # 204 "/usr/include/openssl/opensslconf.h" 3 4
17598 /* crypto/opensslconf.h.in */
17599 
17600 /* Generate 80386 code? */
17601 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
17602 # 63 "/usr/include/openssl/dh.h" 2 3 4
17603 
17604 
17605 
17606 
17607 
17608 
17609 # 1 "/usr/include/openssl/bio.h" 1 3 4
17610 /* crypto/bio/bio.h */
17611 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
17612  * All rights reserved.
17613  *
17614  * This package is an SSL implementation written
17615  * by Eric Young (eay@cryptsoft.com).
17616  * The implementation was written so as to conform with Netscapes SSL.
17617  *
17618  * This library is free for commercial and non-commercial use as long as
17619  * the following conditions are aheared to.  The following conditions
17620  * apply to all code found in this distribution, be it the RC4, RSA,
17621  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17622  * included with this distribution is covered by the same copyright terms
17623  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17624  *
17625  * Copyright remains Eric Young's, and as such any Copyright notices in
17626  * the code are not to be removed.
17627  * If this package is used in a product, Eric Young should be given attribution
17628  * as the author of the parts of the library used.
17629  * This can be in the form of a textual message at program startup or
17630  * in documentation (online or textual) provided with the package.
17631  *
17632  * Redistribution and use in source and binary forms, with or without
17633  * modification, are permitted provided that the following conditions
17634  * are met:
17635  * 1. Redistributions of source code must retain the copyright
17636  *    notice, this list of conditions and the following disclaimer.
17637  * 2. Redistributions in binary form must reproduce the above copyright
17638  *    notice, this list of conditions and the following disclaimer in the
17639  *    documentation and/or other materials provided with the distribution.
17640  * 3. All advertising materials mentioning features or use of this software
17641  *    must display the following acknowledgement:
17642  *    "This product includes cryptographic software written by
17643  *     Eric Young (eay@cryptsoft.com)"
17644  *    The word 'cryptographic' can be left out if the rouines from the library
17645  *    being used are not cryptographic related :-).
17646  * 4. If you include any Windows specific code (or a derivative thereof) from
17647  *    the apps directory (application code) you must include an acknowledgement:
17648  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17649  *
17650  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17651  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17652  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17653  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17654  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17655  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17656  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17657  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17658  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17659  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17660  * SUCH DAMAGE.
17661  *
17662  * The licence and distribution terms for any publically available version or
17663  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17664  * copied and put under another distribution licence
17665  * [including the GNU Public Licence.]
17666  */
17667 # 70 "/usr/include/openssl/dh.h" 2 3 4
17668 
17669 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
17670 /* ====================================================================
17671  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
17672  *
17673  * Redistribution and use in source and binary forms, with or without
17674  * modification, are permitted provided that the following conditions
17675  * are met:
17676  *
17677  * 1. Redistributions of source code must retain the above copyright
17678  *    notice, this list of conditions and the following disclaimer.
17679  *
17680  * 2. Redistributions in binary form must reproduce the above copyright
17681  *    notice, this list of conditions and the following disclaimer in
17682  *    the documentation and/or other materials provided with the
17683  *    distribution.
17684  *
17685  * 3. All advertising materials mentioning features or use of this
17686  *    software must display the following acknowledgment:
17687  *    "This product includes software developed by the OpenSSL Project
17688  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17689  *
17690  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17691  *    endorse or promote products derived from this software without
17692  *    prior written permission. For written permission, please contact
17693  *    openssl-core@openssl.org.
17694  *
17695  * 5. Products derived from this software may not be called "OpenSSL"
17696  *    nor may "OpenSSL" appear in their names without prior written
17697  *    permission of the OpenSSL Project.
17698  *
17699  * 6. Redistributions of any form whatsoever must retain the following
17700  *    acknowledgment:
17701  *    "This product includes software developed by the OpenSSL Project
17702  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17703  *
17704  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17705  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17706  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17707  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17708  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17709  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17710  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17711  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17712  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17713  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17714  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17715  * OF THE POSSIBILITY OF SUCH DAMAGE.
17716  * ====================================================================
17717  *
17718  * This product includes cryptographic software written by Eric Young
17719  * (eay@cryptsoft.com).  This product includes software written by Tim
17720  * Hudson (tjh@cryptsoft.com).
17721  *
17722  */
17723 # 72 "/usr/include/openssl/dh.h" 2 3 4
17724 
17725 # 1 "/usr/include/openssl/bn.h" 1 3 4
17726 /* crypto/bn/bn.h */
17727 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
17728  * All rights reserved.
17729  *
17730  * This package is an SSL implementation written
17731  * by Eric Young (eay@cryptsoft.com).
17732  * The implementation was written so as to conform with Netscapes SSL.
17733  *
17734  * This library is free for commercial and non-commercial use as long as
17735  * the following conditions are aheared to.  The following conditions
17736  * apply to all code found in this distribution, be it the RC4, RSA,
17737  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
17738  * included with this distribution is covered by the same copyright terms
17739  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17740  *
17741  * Copyright remains Eric Young's, and as such any Copyright notices in
17742  * the code are not to be removed.
17743  * If this package is used in a product, Eric Young should be given attribution
17744  * as the author of the parts of the library used.
17745  * This can be in the form of a textual message at program startup or
17746  * in documentation (online or textual) provided with the package.
17747  *
17748  * Redistribution and use in source and binary forms, with or without
17749  * modification, are permitted provided that the following conditions
17750  * are met:
17751  * 1. Redistributions of source code must retain the copyright
17752  *    notice, this list of conditions and the following disclaimer.
17753  * 2. Redistributions in binary form must reproduce the above copyright
17754  *    notice, this list of conditions and the following disclaimer in the
17755  *    documentation and/or other materials provided with the distribution.
17756  * 3. All advertising materials mentioning features or use of this software
17757  *    must display the following acknowledgement:
17758  *    "This product includes cryptographic software written by
17759  *     Eric Young (eay@cryptsoft.com)"
17760  *    The word 'cryptographic' can be left out if the rouines from the library
17761  *    being used are not cryptographic related :-).
17762  * 4. If you include any Windows specific code (or a derivative thereof) from
17763  *    the apps directory (application code) you must include an acknowledgement:
17764  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
17765  *
17766  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
17767  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17768  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17769  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17770  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17771  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17772  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17773  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
17774  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
17775  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
17776  * SUCH DAMAGE.
17777  *
17778  * The licence and distribution terms for any publically available version or
17779  * derivative of this code cannot be changed.  i.e. this code cannot simply be
17780  * copied and put under another distribution licence
17781  * [including the GNU Public Licence.]
17782  */
17783 /* ====================================================================
17784  * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
17785  *
17786  * Redistribution and use in source and binary forms, with or without
17787  * modification, are permitted provided that the following conditions
17788  * are met:
17789  *
17790  * 1. Redistributions of source code must retain the above copyright
17791  *    notice, this list of conditions and the following disclaimer.
17792  *
17793  * 2. Redistributions in binary form must reproduce the above copyright
17794  *    notice, this list of conditions and the following disclaimer in
17795  *    the documentation and/or other materials provided with the
17796  *    distribution.
17797  *
17798  * 3. All advertising materials mentioning features or use of this
17799  *    software must display the following acknowledgment:
17800  *    "This product includes software developed by the OpenSSL Project
17801  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
17802  *
17803  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
17804  *    endorse or promote products derived from this software without
17805  *    prior written permission. For written permission, please contact
17806  *    openssl-core@openssl.org.
17807  *
17808  * 5. Products derived from this software may not be called "OpenSSL"
17809  *    nor may "OpenSSL" appear in their names without prior written
17810  *    permission of the OpenSSL Project.
17811  *
17812  * 6. Redistributions of any form whatsoever must retain the following
17813  *    acknowledgment:
17814  *    "This product includes software developed by the OpenSSL Project
17815  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
17816  *
17817  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
17818  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17819  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17820  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
17821  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17822  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17823  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
17824  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17825  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
17826  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
17827  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
17828  * OF THE POSSIBILITY OF SUCH DAMAGE.
17829  * ====================================================================
17830  *
17831  * This product includes cryptographic software written by Eric Young
17832  * (eay@cryptsoft.com).  This product includes software written by Tim
17833  * Hudson (tjh@cryptsoft.com).
17834  *
17835  */
17836 /* ====================================================================
17837  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
17838  *
17839  * Portions of the attached software ("Contribution") are developed by
17840  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
17841  *
17842  * The Contribution is licensed pursuant to the Eric Young open source
17843  * license provided above.
17844  *
17845  * The binary polynomial arithmetic software is originally written by
17846  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
17847  *
17848  */
17849 # 74 "/usr/include/openssl/dh.h" 2 3 4
17850 # 82 "/usr/include/openssl/dh.h" 3 4
17851 /*
17852  * new with 0.9.7h; the built-in DH
17853  * implementation now uses constant time
17854  * modular exponentiation for secret exponents
17855  * by default. This flag causes the
17856  * faster variable sliding window method to
17857  * be used for all exponents.
17858  */
17859 
17860 
17861 /*
17862  * If this flag is set the DH method is FIPS compliant and can be used in
17863  * FIPS mode. This is set in the validated module method. If an application
17864  * sets this flag in its own methods it is its reposibility to ensure the
17865  * result is compliant.
17866  */
17867 
17868 
17869 
17870 /*
17871  * If this flag is set the operations normally disabled in FIPS mode are
17872  * permitted it is then the applications responsibility to ensure that the
17873  * usage is compliant.
17874  */
17875 
17876 
17877 
17878 
17879 
17880 
17881 
17882 /* Already defined in ossl_typ.h */
17883 /* typedef struct dh_st DH; */
17884 /* typedef struct dh_method DH_METHOD; */
17885 
17886 struct dh_method {
17887     const char *name;
17888     /* Methods here */
17889     int (*generate_key) (DH *dh);
17890     int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh);
17891     /* Can be null */
17892     int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a,
17893                        const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx,
17894                        BN_MONT_CTX *m_ctx);
17895     int (*init) (DH *dh);
17896     int (*finish) (DH *dh);
17897     int flags;
17898     char *app_data;
17899     /* If this is non-NULL, it will be used to generate parameters */
17900     int (*generate_params) (DH *dh, int prime_len, int generator,
17901                             BN_GENCB *cb);
17902 };
17903 
17904 struct dh_st {
17905     /*
17906      * This first argument is used to pick up errors when a DH is passed
17907      * instead of a EVP_PKEY
17908      */
17909     int pad;
17910     int version;
17911     BIGNUM *p;
17912     BIGNUM *g;
17913     long length; /* optional */
17914     BIGNUM *pub_key; /* g^x % p */
17915     BIGNUM *priv_key; /* x */
17916     int flags;
17917     BN_MONT_CTX *method_mont_p;
17918     /* Place holders if we want to do X9.42 DH */
17919     BIGNUM *q;
17920     BIGNUM *j;
17921     unsigned char *seed;
17922     int seedlen;
17923     BIGNUM *counter;
17924     int references;
17925     CRYPTO_EX_DATA ex_data;
17926     const DH_METHOD *meth;
17927     ENGINE *engine;
17928 };
17929 
17930 
17931 /* #define DH_GENERATOR_3       3 */
17932 
17933 
17934 /* DH_check error codes */
17935 # 174 "/usr/include/openssl/dh.h" 3 4
17936 /* DH_check_pub_key error codes */
17937 
17938 
17939 
17940 
17941 /*
17942  * primes p where (p-1)/2 is prime too are called "safe"; we define this for
17943  * backward compatibility:
17944  */
17945 # 209 "/usr/include/openssl/dh.h" 3 4
17946 DH *DHparams_dup(DH *);
17947 
17948 const DH_METHOD *DH_OpenSSL(void);
17949 
17950 void DH_set_default_method(const DH_METHOD *meth);
17951 const DH_METHOD *DH_get_default_method(void);
17952 int DH_set_method(DH *dh, const DH_METHOD *meth);
17953 DH *DH_new_method(ENGINE *engine);
17954 
17955 DH *DH_new(void);
17956 void DH_free(DH *dh);
17957 int DH_up_ref(DH *dh);
17958 int DH_size(const DH *dh);
17959 int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
17960                         CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
17961 int DH_set_ex_data(DH *d, int idx, void *arg);
17962 void *DH_get_ex_data(DH *d, int idx);
17963 
17964 /* Deprecated version */
17965 
17966 DH *DH_generate_parameters(int prime_len, int generator,
17967                            void (*callback) (int, int, void *), void *cb_arg);
17968 
17969 
17970 /* New version */
17971 int DH_generate_parameters_ex(DH *dh, int prime_len, int generator,
17972                               BN_GENCB *cb);
17973 
17974 int DH_check(const DH *dh, int *codes);
17975 int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes);
17976 int DH_generate_key(DH *dh);
17977 int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh);
17978 int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh);
17979 DH *d2i_DHparams(DH **a, const unsigned char **pp, long length);
17980 int i2d_DHparams(const DH *a, unsigned char **pp);
17981 DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length);
17982 int i2d_DHxparams(const DH *a, unsigned char **pp);
17983 
17984 int DHparams_print_fp(FILE *fp, const DH *x);
17985 
17986 
17987 int DHparams_print(BIO *bp, const DH *x);
17988 
17989 
17990 
17991 
17992 /* RFC 5114 parameters */
17993 DH *DH_get_1024_160(void);
17994 DH *DH_get_2048_224(void);
17995 DH *DH_get_2048_256(void);
17996 
17997 
17998 /* RFC2631 KDF */
17999 int DH_KDF_X9_42(unsigned char *out, size_t outlen,
18000                  const unsigned char *Z, size_t Zlen,
18001                  ASN1_OBJECT *key_oid,
18002                  const unsigned char *ukm, size_t ukmlen, const EVP_MD *md);
18003 # 357 "/usr/include/openssl/dh.h" 3 4
18004 /* KDF types */
18005 
18006 
18007 
18008 /* BEGIN ERROR CODES */
18009 /*
18010  * The following lines are auto generated by the script mkerr.pl. Any changes
18011  * made after this point may be overwritten when the script is next run.
18012  */
18013 void ERR_load_DH_strings(void);
18014 
18015 /* Error codes for the DH functions. */
18016 
18017 /* Function codes. */
18018 # 392 "/usr/include/openssl/dh.h" 3 4
18019 /* Reason codes. */
18020 # 84 "/usr/include/openssl/dsa.h" 2 3 4
18021 # 92 "/usr/include/openssl/dsa.h" 3 4
18022 /*
18023  * new with 0.9.7h; the built-in DSA implementation now uses constant time
18024  * modular exponentiation for secret exponents by default. This flag causes
18025  * the faster variable sliding window method to be used for all exponents.
18026  */
18027 
18028 
18029 /*
18030  * If this flag is set the DSA method is FIPS compliant and can be used in
18031  * FIPS mode. This is set in the validated module method. If an application
18032  * sets this flag in its own methods it is its reposibility to ensure the
18033  * result is compliant.
18034  */
18035 
18036 
18037 
18038 /*
18039  * If this flag is set the operations normally disabled in FIPS mode are
18040  * permitted it is then the applications responsibility to ensure that the
18041  * usage is compliant.
18042  */
18043 
18044 
18045 
18046 
18047 
18048 
18049 
18050 /* Already defined in ossl_typ.h */
18051 /* typedef struct dsa_st DSA; */
18052 /* typedef struct dsa_method DSA_METHOD; */
18053 
18054 typedef struct DSA_SIG_st {
18055     BIGNUM *r;
18056     BIGNUM *s;
18057 } DSA_SIG;
18058 
18059 struct dsa_method {
18060     const char *name;
18061     DSA_SIG *(*dsa_do_sign) (const unsigned char *dgst, int dlen, DSA *dsa);
18062     int (*dsa_sign_setup) (DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
18063                            BIGNUM **rp);
18064     int (*dsa_do_verify) (const unsigned char *dgst, int dgst_len,
18065                           DSA_SIG *sig, DSA *dsa);
18066     int (*dsa_mod_exp) (DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1,
18067                         BIGNUM *a2, BIGNUM *p2, BIGNUM *m, BN_CTX *ctx,
18068                         BN_MONT_CTX *in_mont);
18069     /* Can be null */
18070     int (*bn_mod_exp) (DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p,
18071                        const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
18072     int (*init) (DSA *dsa);
18073     int (*finish) (DSA *dsa);
18074     int flags;
18075     char *app_data;
18076     /* If this is non-NULL, it is used to generate DSA parameters */
18077     int (*dsa_paramgen) (DSA *dsa, int bits,
18078                          const unsigned char *seed, int seed_len,
18079                          int *counter_ret, unsigned long *h_ret,
18080                          BN_GENCB *cb);
18081     /* If this is non-NULL, it is used to generate DSA keys */
18082     int (*dsa_keygen) (DSA *dsa);
18083 };
18084 
18085 struct dsa_st {
18086     /*
18087      * This first variable is used to pick up errors where a DSA is passed
18088      * instead of of a EVP_PKEY
18089      */
18090     int pad;
18091     long version;
18092     int write_params;
18093     BIGNUM *p;
18094     BIGNUM *q; /* == 20 */
18095     BIGNUM *g;
18096     BIGNUM *pub_key; /* y public key */
18097     BIGNUM *priv_key; /* x private key */
18098     BIGNUM *kinv; /* Signing pre-calc */
18099     BIGNUM *r; /* Signing pre-calc */
18100     int flags;
18101     /* Normally used to cache montgomery values */
18102     BN_MONT_CTX *method_mont_p;
18103     int references;
18104     CRYPTO_EX_DATA ex_data;
18105     const DSA_METHOD *meth;
18106     /* functional reference if 'meth' is ENGINE-provided */
18107     ENGINE *engine;
18108 };
18109 # 187 "/usr/include/openssl/dsa.h" 3 4
18110 DSA *DSAparams_dup(DSA *x);
18111 DSA_SIG *DSA_SIG_new(void);
18112 void DSA_SIG_free(DSA_SIG *a);
18113 int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);
18114 DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length);
18115 
18116 DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
18117 int DSA_do_verify(const unsigned char *dgst, int dgst_len,
18118                   DSA_SIG *sig, DSA *dsa);
18119 
18120 const DSA_METHOD *DSA_OpenSSL(void);
18121 
18122 void DSA_set_default_method(const DSA_METHOD *);
18123 const DSA_METHOD *DSA_get_default_method(void);
18124 int DSA_set_method(DSA *dsa, const DSA_METHOD *);
18125 
18126 DSA *DSA_new(void);
18127 DSA *DSA_new_method(ENGINE *engine);
18128 void DSA_free(DSA *r);
18129 /* "up" the DSA object's reference count */
18130 int DSA_up_ref(DSA *r);
18131 int DSA_size(const DSA *);
18132         /* next 4 return -1 on error */
18133 int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp);
18134 int DSA_sign(int type, const unsigned char *dgst, int dlen,
18135              unsigned char *sig, unsigned int *siglen, DSA *dsa);
18136 int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
18137                const unsigned char *sigbuf, int siglen, DSA *dsa);
18138 int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
18139                          CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
18140 int DSA_set_ex_data(DSA *d, int idx, void *arg);
18141 void *DSA_get_ex_data(DSA *d, int idx);
18142 
18143 DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length);
18144 DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length);
18145 DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length);
18146 
18147 /* Deprecated version */
18148 
18149 DSA *DSA_generate_parameters(int bits,
18150                              unsigned char *seed, int seed_len,
18151                              int *counter_ret, unsigned long *h_ret, void
18152                               (*callback) (int, int, void *), void *cb_arg);
18153 
18154 
18155 /* New version */
18156 int DSA_generate_parameters_ex(DSA *dsa, int bits,
18157                                const unsigned char *seed, int seed_len,
18158                                int *counter_ret, unsigned long *h_ret,
18159                                BN_GENCB *cb);
18160 
18161 int DSA_generate_key(DSA *a);
18162 int i2d_DSAPublicKey(const DSA *a, unsigned char **pp);
18163 int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
18164 int i2d_DSAparams(const DSA *a, unsigned char **pp);
18165 
18166 
18167 int DSAparams_print(BIO *bp, const DSA *x);
18168 int DSA_print(BIO *bp, const DSA *x, int off);
18169 
18170 
18171 int DSAparams_print_fp(FILE *fp, const DSA *x);
18172 int DSA_print_fp(FILE *bp, const DSA *x, int off);
18173 
18174 
18175 
18176 /*
18177  * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only
18178  * have one value here we set the number of checks to 64 which is the 128 bit
18179  * security level that is the highest level and valid for creating a 3072 bit
18180  * DSA key.
18181  */
18182 
18183 
18184 
18185 
18186 /*
18187  * Convert DSA structure (key or just parameters) into DH structure (be
18188  * careful to avoid small subgroup attacks when using this!)
18189  */
18190 DH *DSA_dup_DH(const DSA *r);
18191 # 278 "/usr/include/openssl/dsa.h" 3 4
18192 /* BEGIN ERROR CODES */
18193 /*
18194  * The following lines are auto generated by the script mkerr.pl. Any changes
18195  * made after this point may be overwritten when the script is next run.
18196  */
18197 void ERR_load_DSA_strings(void);
18198 
18199 /* Error codes for the DSA functions. */
18200 
18201 /* Function codes. */
18202 # 316 "/usr/include/openssl/dsa.h" 3 4
18203 /* Reason codes. */
18204 # 100 "/usr/include/openssl/x509.h" 2 3 4
18205 
18206 
18207 # 1 "/usr/include/openssl/dh.h" 1 3 4
18208 /* crypto/dh/dh.h */
18209 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
18210  * All rights reserved.
18211  *
18212  * This package is an SSL implementation written
18213  * by Eric Young (eay@cryptsoft.com).
18214  * The implementation was written so as to conform with Netscapes SSL.
18215  *
18216  * This library is free for commercial and non-commercial use as long as
18217  * the following conditions are aheared to.  The following conditions
18218  * apply to all code found in this distribution, be it the RC4, RSA,
18219  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
18220  * included with this distribution is covered by the same copyright terms
18221  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
18222  *
18223  * Copyright remains Eric Young's, and as such any Copyright notices in
18224  * the code are not to be removed.
18225  * If this package is used in a product, Eric Young should be given attribution
18226  * as the author of the parts of the library used.
18227  * This can be in the form of a textual message at program startup or
18228  * in documentation (online or textual) provided with the package.
18229  *
18230  * Redistribution and use in source and binary forms, with or without
18231  * modification, are permitted provided that the following conditions
18232  * are met:
18233  * 1. Redistributions of source code must retain the copyright
18234  *    notice, this list of conditions and the following disclaimer.
18235  * 2. Redistributions in binary form must reproduce the above copyright
18236  *    notice, this list of conditions and the following disclaimer in the
18237  *    documentation and/or other materials provided with the distribution.
18238  * 3. All advertising materials mentioning features or use of this software
18239  *    must display the following acknowledgement:
18240  *    "This product includes cryptographic software written by
18241  *     Eric Young (eay@cryptsoft.com)"
18242  *    The word 'cryptographic' can be left out if the rouines from the library
18243  *    being used are not cryptographic related :-).
18244  * 4. If you include any Windows specific code (or a derivative thereof) from
18245  *    the apps directory (application code) you must include an acknowledgement:
18246  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
18247  *
18248  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
18249  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18250  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18251  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18252  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18253  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18254  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18255  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18256  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
18257  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
18258  * SUCH DAMAGE.
18259  *
18260  * The licence and distribution terms for any publically available version or
18261  * derivative of this code cannot be changed.  i.e. this code cannot simply be
18262  * copied and put under another distribution licence
18263  * [including the GNU Public Licence.]
18264  */
18265 # 103 "/usr/include/openssl/x509.h" 2 3 4
18266 
18267 
18268 
18269 
18270 # 1 "/usr/include/openssl/sha.h" 1 3 4
18271 /* crypto/sha/sha.h */
18272 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
18273  * All rights reserved.
18274  *
18275  * This package is an SSL implementation written
18276  * by Eric Young (eay@cryptsoft.com).
18277  * The implementation was written so as to conform with Netscapes SSL.
18278  *
18279  * This library is free for commercial and non-commercial use as long as
18280  * the following conditions are aheared to.  The following conditions
18281  * apply to all code found in this distribution, be it the RC4, RSA,
18282  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
18283  * included with this distribution is covered by the same copyright terms
18284  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
18285  *
18286  * Copyright remains Eric Young's, and as such any Copyright notices in
18287  * the code are not to be removed.
18288  * If this package is used in a product, Eric Young should be given attribution
18289  * as the author of the parts of the library used.
18290  * This can be in the form of a textual message at program startup or
18291  * in documentation (online or textual) provided with the package.
18292  *
18293  * Redistribution and use in source and binary forms, with or without
18294  * modification, are permitted provided that the following conditions
18295  * are met:
18296  * 1. Redistributions of source code must retain the copyright
18297  *    notice, this list of conditions and the following disclaimer.
18298  * 2. Redistributions in binary form must reproduce the above copyright
18299  *    notice, this list of conditions and the following disclaimer in the
18300  *    documentation and/or other materials provided with the distribution.
18301  * 3. All advertising materials mentioning features or use of this software
18302  *    must display the following acknowledgement:
18303  *    "This product includes cryptographic software written by
18304  *     Eric Young (eay@cryptsoft.com)"
18305  *    The word 'cryptographic' can be left out if the rouines from the library
18306  *    being used are not cryptographic related :-).
18307  * 4. If you include any Windows specific code (or a derivative thereof) from
18308  *    the apps directory (application code) you must include an acknowledgement:
18309  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
18310  *
18311  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
18312  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18313  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18314  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18315  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18316  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18317  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18318  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18319  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
18320  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
18321  * SUCH DAMAGE.
18322  *
18323  * The licence and distribution terms for any publically available version or
18324  * derivative of this code cannot be changed.  i.e. this code cannot simply be
18325  * copied and put under another distribution licence
18326  * [including the GNU Public Licence.]
18327  */
18328 
18329 
18330 
18331 
18332 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
18333 /* e_os2.h */
18334 /* ====================================================================
18335  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
18336  *
18337  * Redistribution and use in source and binary forms, with or without
18338  * modification, are permitted provided that the following conditions
18339  * are met:
18340  *
18341  * 1. Redistributions of source code must retain the above copyright
18342  *    notice, this list of conditions and the following disclaimer.
18343  *
18344  * 2. Redistributions in binary form must reproduce the above copyright
18345  *    notice, this list of conditions and the following disclaimer in
18346  *    the documentation and/or other materials provided with the
18347  *    distribution.
18348  *
18349  * 3. All advertising materials mentioning features or use of this
18350  *    software must display the following acknowledgment:
18351  *    "This product includes software developed by the OpenSSL Project
18352  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
18353  *
18354  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
18355  *    endorse or promote products derived from this software without
18356  *    prior written permission. For written permission, please contact
18357  *    openssl-core@openssl.org.
18358  *
18359  * 5. Products derived from this software may not be called "OpenSSL"
18360  *    nor may "OpenSSL" appear in their names without prior written
18361  *    permission of the OpenSSL Project.
18362  *
18363  * 6. Redistributions of any form whatsoever must retain the following
18364  *    acknowledgment:
18365  *    "This product includes software developed by the OpenSSL Project
18366  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
18367  *
18368  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
18369  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18370  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18371  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
18372  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18373  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18374  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18375  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18376  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18377  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
18378  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
18379  * OF THE POSSIBILITY OF SUCH DAMAGE.
18380  * ====================================================================
18381  *
18382  * This product includes cryptographic software written by Eric Young
18383  * (eay@cryptsoft.com).  This product includes software written by Tim
18384  * Hudson (tjh@cryptsoft.com).
18385  *
18386  */
18387 
18388 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
18389 /* opensslconf.h */
18390 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
18391 
18392 
18393 
18394 
18395 /* OpenSSL was configured with the following options: */
18396 # 108 "/usr/include/openssl/opensslconf.h" 3 4
18397 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
18398    asks for it.  This is a transient feature that is provided for those
18399    who haven't had the time to do the appropriate changes in their
18400    applications.  */
18401 # 204 "/usr/include/openssl/opensslconf.h" 3 4
18402 /* crypto/opensslconf.h.in */
18403 
18404 /* Generate 80386 code? */
18405 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
18406 # 63 "/usr/include/openssl/sha.h" 2 3 4
18407 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stddef.h" 1 3 4
18408 /*
18409  * CDDL HEADER START
18410  *
18411  * The contents of this file are subject to the terms of the
18412  * Common Development and Distribution License, Version 1.0 only
18413  * (the "License").  You may not use this file except in compliance
18414  * with the License.
18415  *
18416  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
18417  * or http://www.opensolaris.org/os/licensing.
18418  * See the License for the specific language governing permissions
18419  * and limitations under the License.
18420  *
18421  * When distributing Covered Code, include this CDDL HEADER in each
18422  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
18423  * If applicable, add the following below this CDDL HEADER, with the
18424  * fields enclosed by brackets "[]" replaced with your own identifying
18425  * information: Portions Copyright [yyyy] [name of copyright owner]
18426  *
18427  * CDDL HEADER END
18428  */
18429 /*	Copyright (c) 1988 AT&T	*/
18430 /*	  All Rights Reserved  	*/
18431 
18432 
18433 /*
18434  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
18435  * Use is subject to license terms.
18436  */
18437 # 64 "/usr/include/openssl/sha.h" 2 3 4
18438 # 77 "/usr/include/openssl/sha.h" 3 4
18439 /*-
18440  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18441  * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then !
18442  * ! SHA_LONG_LOG2 has to be defined along.                        !
18443  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18444  */
18445 # 100 "/usr/include/openssl/sha.h" 3 4
18446 typedef struct SHAstate_st {
18447     unsigned int h0, h1, h2, h3, h4;
18448     unsigned int Nl, Nh;
18449     unsigned int data[16];
18450     unsigned int num;
18451 } SHA_CTX;
18452 
18453 
18454 
18455 
18456 
18457 int SHA_Init(SHA_CTX *c);
18458 int SHA_Update(SHA_CTX *c, const void *data, size_t len);
18459 int SHA_Final(unsigned char *md, SHA_CTX *c);
18460 unsigned char *SHA(const unsigned char *d, size_t n, unsigned char *md);
18461 void SHA_Transform(SHA_CTX *c, const unsigned char *data);
18462 
18463 
18464 
18465 
18466 
18467 int SHA1_Init(SHA_CTX *c);
18468 int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
18469 int SHA1_Final(unsigned char *md, SHA_CTX *c);
18470 unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md);
18471 void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
18472 # 134 "/usr/include/openssl/sha.h" 3 4
18473 typedef struct SHA256state_st {
18474     unsigned int h[8];
18475     unsigned int Nl, Nh;
18476     unsigned int data[16];
18477     unsigned int num, md_len;
18478 } SHA256_CTX;
18479 
18480 
18481 
18482 
18483 
18484 
18485 int SHA224_Init(SHA256_CTX *c);
18486 int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
18487 int SHA224_Final(unsigned char *md, SHA256_CTX *c);
18488 unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md);
18489 int SHA256_Init(SHA256_CTX *c);
18490 int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
18491 int SHA256_Final(unsigned char *md, SHA256_CTX *c);
18492 unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md);
18493 void SHA256_Transform(SHA256_CTX *c, const unsigned char *data);
18494 
18495 
18496 
18497 
18498 
18499 
18500 /*
18501  * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64
18502  * being exactly 64-bit wide. See Implementation Notes in sha512.c
18503  * for further details.
18504  */
18505 /*
18506  * SHA-512 treats input data as a
18507  * contiguous array of 64 bit
18508  * wide big-endian values.
18509  */
18510 # 183 "/usr/include/openssl/sha.h" 3 4
18511 typedef struct SHA512state_st {
18512     unsigned long long h[8];
18513     unsigned long long Nl, Nh;
18514     union {
18515         unsigned long long d[16];
18516         unsigned char p[(16*8)];
18517     } u;
18518     unsigned int num, md_len;
18519 } SHA512_CTX;
18520 
18521 
18522 
18523 
18524 
18525 
18526 
18527 int SHA384_Init(SHA512_CTX *c);
18528 int SHA384_Update(SHA512_CTX *c, const void *data, size_t len);
18529 int SHA384_Final(unsigned char *md, SHA512_CTX *c);
18530 unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md);
18531 int SHA512_Init(SHA512_CTX *c);
18532 int SHA512_Update(SHA512_CTX *c, const void *data, size_t len);
18533 int SHA512_Final(unsigned char *md, SHA512_CTX *c);
18534 unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md);
18535 void SHA512_Transform(SHA512_CTX *c, const unsigned char *data);
18536 # 108 "/usr/include/openssl/x509.h" 2 3 4
18537 
18538 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
18539 /* ====================================================================
18540  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
18541  *
18542  * Redistribution and use in source and binary forms, with or without
18543  * modification, are permitted provided that the following conditions
18544  * are met:
18545  *
18546  * 1. Redistributions of source code must retain the above copyright
18547  *    notice, this list of conditions and the following disclaimer.
18548  *
18549  * 2. Redistributions in binary form must reproduce the above copyright
18550  *    notice, this list of conditions and the following disclaimer in
18551  *    the documentation and/or other materials provided with the
18552  *    distribution.
18553  *
18554  * 3. All advertising materials mentioning features or use of this
18555  *    software must display the following acknowledgment:
18556  *    "This product includes software developed by the OpenSSL Project
18557  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
18558  *
18559  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
18560  *    endorse or promote products derived from this software without
18561  *    prior written permission. For written permission, please contact
18562  *    openssl-core@openssl.org.
18563  *
18564  * 5. Products derived from this software may not be called "OpenSSL"
18565  *    nor may "OpenSSL" appear in their names without prior written
18566  *    permission of the OpenSSL Project.
18567  *
18568  * 6. Redistributions of any form whatsoever must retain the following
18569  *    acknowledgment:
18570  *    "This product includes software developed by the OpenSSL Project
18571  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
18572  *
18573  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
18574  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18575  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18576  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
18577  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18578  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18579  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18580  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18581  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18582  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
18583  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
18584  * OF THE POSSIBILITY OF SUCH DAMAGE.
18585  * ====================================================================
18586  *
18587  * This product includes cryptographic software written by Eric Young
18588  * (eay@cryptsoft.com).  This product includes software written by Tim
18589  * Hudson (tjh@cryptsoft.com).
18590  *
18591  */
18592 # 110 "/usr/include/openssl/x509.h" 2 3 4
18593 # 137 "/usr/include/openssl/x509.h" 3 4
18594 typedef struct X509_objects_st {
18595     int nid;
18596     int (*a2i) (void);
18597     int (*i2a) (void);
18598 } X509_OBJECTS;
18599 
18600 struct X509_algor_st {
18601     ASN1_OBJECT *algorithm;
18602     ASN1_TYPE *parameter;
18603 } /* X509_ALGOR */ ;
18604 
18605 
18606 
18607 typedef struct stack_st_X509_ALGOR X509_ALGORS;
18608 
18609 typedef struct X509_val_st {
18610     ASN1_TIME *notBefore;
18611     ASN1_TIME *notAfter;
18612 } X509_VAL;
18613 
18614 struct X509_pubkey_st {
18615     X509_ALGOR *algor;
18616     ASN1_BIT_STRING *public_key;
18617     EVP_PKEY *pkey;
18618 };
18619 
18620 typedef struct X509_sig_st {
18621     X509_ALGOR *algor;
18622     ASN1_OCTET_STRING *digest;
18623 } X509_SIG;
18624 
18625 typedef struct X509_name_entry_st {
18626     ASN1_OBJECT *object;
18627     ASN1_STRING *value;
18628     int set;
18629     int size; /* temp variable */
18630 } X509_NAME_ENTRY;
18631 
18632 struct stack_st_X509_NAME_ENTRY { _STACK stack; };
18633 
18634 
18635 /* we always keep X509_NAMEs in 2 forms. */
18636 struct X509_name_st {
18637     struct stack_st_X509_NAME_ENTRY *entries;
18638     int modified; /* true if 'bytes' needs to be built */
18639 
18640     BUF_MEM *bytes;
18641 
18642 
18643 
18644 /*      unsigned long hash; Keep the hash around for lookups */
18645     unsigned char *canon_enc;
18646     int canon_enclen;
18647 } /* X509_NAME */ ;
18648 
18649 struct stack_st_X509_NAME { _STACK stack; };
18650 
18651 
18652 
18653 typedef struct X509_extension_st {
18654     ASN1_OBJECT *object;
18655     ASN1_BOOLEAN critical;
18656     ASN1_OCTET_STRING *value;
18657 } X509_EXTENSION;
18658 
18659 typedef struct stack_st_X509_EXTENSION X509_EXTENSIONS;
18660 
18661 struct stack_st_X509_EXTENSION { _STACK stack; };
18662 
18663 
18664 /* a sequence of these are used */
18665 typedef struct x509_attributes_st {
18666     ASN1_OBJECT *object;
18667     int single; /* 0 for a set, 1 for a single item (which is
18668                                  * wrong) */
18669     union {
18670         char *ptr;
18671         /*
18672          * 0
18673          */ struct stack_st_ASN1_TYPE *set;
18674         /*
18675          * 1
18676          */ ASN1_TYPE *single;
18677     } value;
18678 } X509_ATTRIBUTE;
18679 
18680 struct stack_st_X509_ATTRIBUTE { _STACK stack; };
18681 
18682 
18683 typedef struct X509_req_info_st {
18684     ASN1_ENCODING enc;
18685     ASN1_INTEGER *version;
18686     X509_NAME *subject;
18687     X509_PUBKEY *pubkey;
18688     /*  d=2 hl=2 l=  0 cons: cont: 00 */
18689     struct stack_st_X509_ATTRIBUTE *attributes; /* [ 0 ] */
18690 } X509_REQ_INFO;
18691 
18692 typedef struct X509_req_st {
18693     X509_REQ_INFO *req_info;
18694     X509_ALGOR *sig_alg;
18695     ASN1_BIT_STRING *signature;
18696     int references;
18697 } X509_REQ;
18698 
18699 typedef struct x509_cinf_st {
18700     ASN1_INTEGER *version; /* [ 0 ] default of v1 */
18701     ASN1_INTEGER *serialNumber;
18702     X509_ALGOR *signature;
18703     X509_NAME *issuer;
18704     X509_VAL *validity;
18705     X509_NAME *subject;
18706     X509_PUBKEY *key;
18707     ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */
18708     ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */
18709     struct stack_st_X509_EXTENSION *extensions; /* [ 3 ] optional in v3 */
18710     ASN1_ENCODING enc;
18711 } X509_CINF;
18712 
18713 /*
18714  * This stuff is certificate "auxiliary info" it contains details which are
18715  * useful in certificate stores and databases. When used this is tagged onto
18716  * the end of the certificate itself
18717  */
18718 
18719 typedef struct x509_cert_aux_st {
18720     struct stack_st_ASN1_OBJECT *trust; /* trusted uses */
18721     struct stack_st_ASN1_OBJECT *reject; /* rejected uses */
18722     ASN1_UTF8STRING *alias; /* "friendly name" */
18723     ASN1_OCTET_STRING *keyid; /* key id of private key */
18724     struct stack_st_X509_ALGOR *other; /* other unspecified info */
18725 } X509_CERT_AUX;
18726 
18727 struct x509_st {
18728     X509_CINF *cert_info;
18729     X509_ALGOR *sig_alg;
18730     ASN1_BIT_STRING *signature;
18731     int valid;
18732     int references;
18733     char *name;
18734     CRYPTO_EX_DATA ex_data;
18735     /* These contain copies of various extension values */
18736     long ex_pathlen;
18737     long ex_pcpathlen;
18738     unsigned long ex_flags;
18739     unsigned long ex_kusage;
18740     unsigned long ex_xkusage;
18741     unsigned long ex_nscert;
18742     ASN1_OCTET_STRING *skid;
18743     AUTHORITY_KEYID *akid;
18744     X509_POLICY_CACHE *policy_cache;
18745     struct stack_st_DIST_POINT *crldp;
18746     struct stack_st_GENERAL_NAME *altname;
18747     NAME_CONSTRAINTS *nc;
18748 
18749 
18750 
18751 
18752 
18753     unsigned char sha1_hash[20];
18754 
18755     X509_CERT_AUX *aux;
18756 } /* X509 */ ;
18757 
18758 struct stack_st_X509 { _STACK stack; };
18759 
18760 
18761 /* This is used for a table of trust checking functions */
18762 
18763 typedef struct x509_trust_st {
18764     int trust;
18765     int flags;
18766     int (*check_trust) (struct x509_trust_st *, X509 *, int);
18767     char *name;
18768     int arg1;
18769     void *arg2;
18770 } X509_TRUST;
18771 
18772 struct stack_st_X509_TRUST { _STACK stack; };
18773 
18774 typedef struct x509_cert_pair_st {
18775     X509 *forward;
18776     X509 *reverse;
18777 } X509_CERT_PAIR;
18778 
18779 /* standard trust ids */
18780 # 335 "/usr/include/openssl/x509.h" 3 4
18781 /* Keep these up to date! */
18782 
18783 
18784 
18785 /* trust_flags values */
18786 
18787 
18788 
18789 /* check_trust return codes */
18790 
18791 
18792 
18793 
18794 
18795 /* Flags for X509_print_ex() */
18796 # 366 "/usr/include/openssl/x509.h" 3 4
18797 /* Flags specific to X509_NAME_print_ex() */
18798 
18799 /* The field separator information */
18800 # 381 "/usr/include/openssl/x509.h" 3 4
18801 /* How the field name is shown */
18802 # 392 "/usr/include/openssl/x509.h" 3 4
18803 /*
18804  * This determines if we dump fields we don't recognise: RFC2253 requires
18805  * this.
18806  */
18807 
18808 
18809 
18810 
18811 
18812 
18813 /* Complete set of RFC2253 flags */
18814 
18815 
18816 
18817 
18818 
18819 
18820 
18821 /* readable oneline form */
18822 
18823 
18824 
18825 
18826 
18827 
18828 
18829 /* readable multiline form */
18830 # 427 "/usr/include/openssl/x509.h" 3 4
18831 struct x509_revoked_st {
18832     ASN1_INTEGER *serialNumber;
18833     ASN1_TIME *revocationDate;
18834     struct stack_st_X509_EXTENSION /* optional */ *extensions;
18835     /* Set up if indirect CRL */
18836     struct stack_st_GENERAL_NAME *issuer;
18837     /* Revocation reason */
18838     int reason;
18839     int sequence; /* load sequence */
18840 };
18841 
18842 struct stack_st_X509_REVOKED { _STACK stack; };
18843 
18844 
18845 typedef struct X509_crl_info_st {
18846     ASN1_INTEGER *version;
18847     X509_ALGOR *sig_alg;
18848     X509_NAME *issuer;
18849     ASN1_TIME *lastUpdate;
18850     ASN1_TIME *nextUpdate;
18851     struct stack_st_X509_REVOKED *revoked;
18852     struct stack_st_X509_EXTENSION /* [0] */ *extensions;
18853     ASN1_ENCODING enc;
18854 } X509_CRL_INFO;
18855 
18856 struct X509_crl_st {
18857     /* actual signature */
18858     X509_CRL_INFO *crl;
18859     X509_ALGOR *sig_alg;
18860     ASN1_BIT_STRING *signature;
18861     int references;
18862     int flags;
18863     /* Copies of various extensions */
18864     AUTHORITY_KEYID *akid;
18865     ISSUING_DIST_POINT *idp;
18866     /* Convenient breakdown of IDP */
18867     int idp_flags;
18868     int idp_reasons;
18869     /* CRL and base CRL numbers for delta processing */
18870     ASN1_INTEGER *crl_number;
18871     ASN1_INTEGER *base_crl_number;
18872 
18873     unsigned char sha1_hash[20];
18874 
18875     struct stack_st_GENERAL_NAMES *issuers;
18876     const X509_CRL_METHOD *meth;
18877     void *meth_data;
18878 } /* X509_CRL */ ;
18879 
18880 struct stack_st_X509_CRL { _STACK stack; };
18881 
18882 
18883 typedef struct private_key_st {
18884     int version;
18885     /* The PKCS#8 data types */
18886     X509_ALGOR *enc_algor;
18887     ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */
18888     /* When decrypted, the following will not be NULL */
18889     EVP_PKEY *dec_pkey;
18890     /* used to encrypt and decrypt */
18891     int key_length;
18892     char *key_data;
18893     int key_free; /* true if we should auto free key_data */
18894     /* expanded version of 'enc_algor' */
18895     EVP_CIPHER_INFO cipher;
18896     int references;
18897 } X509_PKEY;
18898 
18899 
18900 typedef struct X509_info_st {
18901     X509 *x509;
18902     X509_CRL *crl;
18903     X509_PKEY *x_pkey;
18904     EVP_CIPHER_INFO enc_cipher;
18905     int enc_len;
18906     char *enc_data;
18907     int references;
18908 } X509_INFO;
18909 
18910 struct stack_st_X509_INFO { _STACK stack; };
18911 
18912 
18913 /*
18914  * The next 2 structures and their 8 routines were sent to me by Pat Richard
18915  * <patr@x509.com> and are used to manipulate Netscapes spki structures -
18916  * useful if you are writing a CA web page
18917  */
18918 typedef struct Netscape_spkac_st {
18919     X509_PUBKEY *pubkey;
18920     ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */
18921 } NETSCAPE_SPKAC;
18922 
18923 typedef struct Netscape_spki_st {
18924     NETSCAPE_SPKAC *spkac; /* signed public key and challenge */
18925     X509_ALGOR *sig_algor;
18926     ASN1_BIT_STRING *signature;
18927 } NETSCAPE_SPKI;
18928 
18929 /* Netscape certificate sequence structure */
18930 typedef struct Netscape_certificate_sequence {
18931     ASN1_OBJECT *type;
18932     struct stack_st_X509 *certs;
18933 } NETSCAPE_CERT_SEQUENCE;
18934 
18935 /*- Unused (and iv length is wrong)
18936 typedef struct CBCParameter_st
18937         {
18938         unsigned char iv[8];
18939         } CBC_PARAM;
18940 */
18941 
18942 /* Password based encryption structure */
18943 
18944 typedef struct PBEPARAM_st {
18945     ASN1_OCTET_STRING *salt;
18946     ASN1_INTEGER *iter;
18947 } PBEPARAM;
18948 
18949 /* Password based encryption V2 structures */
18950 
18951 typedef struct PBE2PARAM_st {
18952     X509_ALGOR *keyfunc;
18953     X509_ALGOR *encryption;
18954 } PBE2PARAM;
18955 
18956 typedef struct PBKDF2PARAM_st {
18957 /* Usually OCTET STRING but could be anything */
18958     ASN1_TYPE *salt;
18959     ASN1_INTEGER *iter;
18960     ASN1_INTEGER *keylength;
18961     X509_ALGOR *prf;
18962 } PBKDF2PARAM;
18963 
18964 /* PKCS#8 private key info structure */
18965 
18966 struct pkcs8_priv_key_info_st {
18967     /* Flag for various broken formats */
18968     int broken;
18969 
18970 
18971 
18972 
18973 
18974     ASN1_INTEGER *version;
18975     X509_ALGOR *pkeyalg;
18976     /* Should be OCTET STRING but some are broken */
18977     ASN1_TYPE *pkey;
18978     struct stack_st_X509_ATTRIBUTE *attributes;
18979 };
18980 
18981 
18982 
18983 
18984 
18985 # 1 "/usr/include/openssl/x509_vfy.h" 1 3 4
18986 /* crypto/x509/x509_vfy.h */
18987 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
18988  * All rights reserved.
18989  *
18990  * This package is an SSL implementation written
18991  * by Eric Young (eay@cryptsoft.com).
18992  * The implementation was written so as to conform with Netscapes SSL.
18993  *
18994  * This library is free for commercial and non-commercial use as long as
18995  * the following conditions are aheared to.  The following conditions
18996  * apply to all code found in this distribution, be it the RC4, RSA,
18997  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
18998  * included with this distribution is covered by the same copyright terms
18999  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19000  *
19001  * Copyright remains Eric Young's, and as such any Copyright notices in
19002  * the code are not to be removed.
19003  * If this package is used in a product, Eric Young should be given attribution
19004  * as the author of the parts of the library used.
19005  * This can be in the form of a textual message at program startup or
19006  * in documentation (online or textual) provided with the package.
19007  *
19008  * Redistribution and use in source and binary forms, with or without
19009  * modification, are permitted provided that the following conditions
19010  * are met:
19011  * 1. Redistributions of source code must retain the copyright
19012  *    notice, this list of conditions and the following disclaimer.
19013  * 2. Redistributions in binary form must reproduce the above copyright
19014  *    notice, this list of conditions and the following disclaimer in the
19015  *    documentation and/or other materials provided with the distribution.
19016  * 3. All advertising materials mentioning features or use of this software
19017  *    must display the following acknowledgement:
19018  *    "This product includes cryptographic software written by
19019  *     Eric Young (eay@cryptsoft.com)"
19020  *    The word 'cryptographic' can be left out if the rouines from the library
19021  *    being used are not cryptographic related :-).
19022  * 4. If you include any Windows specific code (or a derivative thereof) from
19023  *    the apps directory (application code) you must include an acknowledgement:
19024  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19025  *
19026  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19027  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19028  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19029  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19030  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19031  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19032  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19033  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19034  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19035  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19036  * SUCH DAMAGE.
19037  *
19038  * The licence and distribution terms for any publically available version or
19039  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19040  * copied and put under another distribution licence
19041  * [including the GNU Public Licence.]
19042  */
19043 # 70 "/usr/include/openssl/x509_vfy.h" 3 4
19044 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
19045 /* opensslconf.h */
19046 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
19047 
19048 
19049 
19050 
19051 /* OpenSSL was configured with the following options: */
19052 # 108 "/usr/include/openssl/opensslconf.h" 3 4
19053 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
19054    asks for it.  This is a transient feature that is provided for those
19055    who haven't had the time to do the appropriate changes in their
19056    applications.  */
19057 # 204 "/usr/include/openssl/opensslconf.h" 3 4
19058 /* crypto/opensslconf.h.in */
19059 
19060 /* Generate 80386 code? */
19061 # 71 "/usr/include/openssl/x509_vfy.h" 2 3 4
19062 
19063 # 1 "/usr/include/openssl/lhash.h" 1 3 4
19064 /* crypto/lhash/lhash.h */
19065 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19066  * All rights reserved.
19067  *
19068  * This package is an SSL implementation written
19069  * by Eric Young (eay@cryptsoft.com).
19070  * The implementation was written so as to conform with Netscapes SSL.
19071  *
19072  * This library is free for commercial and non-commercial use as long as
19073  * the following conditions are aheared to.  The following conditions
19074  * apply to all code found in this distribution, be it the RC4, RSA,
19075  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19076  * included with this distribution is covered by the same copyright terms
19077  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19078  *
19079  * Copyright remains Eric Young's, and as such any Copyright notices in
19080  * the code are not to be removed.
19081  * If this package is used in a product, Eric Young should be given attribution
19082  * as the author of the parts of the library used.
19083  * This can be in the form of a textual message at program startup or
19084  * in documentation (online or textual) provided with the package.
19085  *
19086  * Redistribution and use in source and binary forms, with or without
19087  * modification, are permitted provided that the following conditions
19088  * are met:
19089  * 1. Redistributions of source code must retain the copyright
19090  *    notice, this list of conditions and the following disclaimer.
19091  * 2. Redistributions in binary form must reproduce the above copyright
19092  *    notice, this list of conditions and the following disclaimer in the
19093  *    documentation and/or other materials provided with the distribution.
19094  * 3. All advertising materials mentioning features or use of this software
19095  *    must display the following acknowledgement:
19096  *    "This product includes cryptographic software written by
19097  *     Eric Young (eay@cryptsoft.com)"
19098  *    The word 'cryptographic' can be left out if the rouines from the library
19099  *    being used are not cryptographic related :-).
19100  * 4. If you include any Windows specific code (or a derivative thereof) from
19101  *    the apps directory (application code) you must include an acknowledgement:
19102  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19103  *
19104  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19105  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19106  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19107  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19108  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19109  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19110  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19111  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19112  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19113  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19114  * SUCH DAMAGE.
19115  *
19116  * The licence and distribution terms for any publically available version or
19117  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19118  * copied and put under another distribution licence
19119  * [including the GNU Public Licence.]
19120  */
19121 
19122 /*
19123  * Header for dynamic hash table routines Author - Eric Young
19124  */
19125 
19126 
19127 
19128 
19129 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
19130 /* e_os2.h */
19131 /* ====================================================================
19132  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
19133  *
19134  * Redistribution and use in source and binary forms, with or without
19135  * modification, are permitted provided that the following conditions
19136  * are met:
19137  *
19138  * 1. Redistributions of source code must retain the above copyright
19139  *    notice, this list of conditions and the following disclaimer.
19140  *
19141  * 2. Redistributions in binary form must reproduce the above copyright
19142  *    notice, this list of conditions and the following disclaimer in
19143  *    the documentation and/or other materials provided with the
19144  *    distribution.
19145  *
19146  * 3. All advertising materials mentioning features or use of this
19147  *    software must display the following acknowledgment:
19148  *    "This product includes software developed by the OpenSSL Project
19149  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
19150  *
19151  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
19152  *    endorse or promote products derived from this software without
19153  *    prior written permission. For written permission, please contact
19154  *    openssl-core@openssl.org.
19155  *
19156  * 5. Products derived from this software may not be called "OpenSSL"
19157  *    nor may "OpenSSL" appear in their names without prior written
19158  *    permission of the OpenSSL Project.
19159  *
19160  * 6. Redistributions of any form whatsoever must retain the following
19161  *    acknowledgment:
19162  *    "This product includes software developed by the OpenSSL Project
19163  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
19164  *
19165  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
19166  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19167  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19168  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
19169  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19170  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19171  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19172  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19173  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19174  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19175  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
19176  * OF THE POSSIBILITY OF SUCH DAMAGE.
19177  * ====================================================================
19178  *
19179  * This product includes cryptographic software written by Eric Young
19180  * (eay@cryptsoft.com).  This product includes software written by Tim
19181  * Hudson (tjh@cryptsoft.com).
19182  *
19183  */
19184 
19185 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
19186 /* opensslconf.h */
19187 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
19188 
19189 
19190 
19191 
19192 /* OpenSSL was configured with the following options: */
19193 # 108 "/usr/include/openssl/opensslconf.h" 3 4
19194 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
19195    asks for it.  This is a transient feature that is provided for those
19196    who haven't had the time to do the appropriate changes in their
19197    applications.  */
19198 # 204 "/usr/include/openssl/opensslconf.h" 3 4
19199 /* crypto/opensslconf.h.in */
19200 
19201 /* Generate 80386 code? */
19202 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
19203 # 67 "/usr/include/openssl/lhash.h" 2 3 4
19204 
19205 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1 3 4
19206 /*
19207  * CDDL HEADER START
19208  *
19209  * The contents of this file are subject to the terms of the
19210  * Common Development and Distribution License (the "License").
19211  * You may not use this file except in compliance with the License.
19212  *
19213  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
19214  * or http://www.opensolaris.org/os/licensing.
19215  * See the License for the specific language governing permissions
19216  * and limitations under the License.
19217  *
19218  * When distributing Covered Code, include this CDDL HEADER in each
19219  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19220  * If applicable, add the following below this CDDL HEADER, with the
19221  * fields enclosed by brackets "[]" replaced with your own identifying
19222  * information: Portions Copyright [yyyy] [name of copyright owner]
19223  *
19224  * CDDL HEADER END
19225  */
19226 
19227 /*
19228  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
19229  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
19230  */
19231 
19232 /*	Copyright (c) 1988 AT&T	*/
19233 /*	  All Rights Reserved  	*/
19234 
19235 /*
19236  * User-visible pieces of the ANSI C standard I/O package.
19237  */
19238 # 69 "/usr/include/openssl/lhash.h" 2 3 4
19239 
19240 
19241 
19242 # 1 "/usr/include/openssl/bio.h" 1 3 4
19243 /* crypto/bio/bio.h */
19244 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19245  * All rights reserved.
19246  *
19247  * This package is an SSL implementation written
19248  * by Eric Young (eay@cryptsoft.com).
19249  * The implementation was written so as to conform with Netscapes SSL.
19250  *
19251  * This library is free for commercial and non-commercial use as long as
19252  * the following conditions are aheared to.  The following conditions
19253  * apply to all code found in this distribution, be it the RC4, RSA,
19254  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19255  * included with this distribution is covered by the same copyright terms
19256  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19257  *
19258  * Copyright remains Eric Young's, and as such any Copyright notices in
19259  * the code are not to be removed.
19260  * If this package is used in a product, Eric Young should be given attribution
19261  * as the author of the parts of the library used.
19262  * This can be in the form of a textual message at program startup or
19263  * in documentation (online or textual) provided with the package.
19264  *
19265  * Redistribution and use in source and binary forms, with or without
19266  * modification, are permitted provided that the following conditions
19267  * are met:
19268  * 1. Redistributions of source code must retain the copyright
19269  *    notice, this list of conditions and the following disclaimer.
19270  * 2. Redistributions in binary form must reproduce the above copyright
19271  *    notice, this list of conditions and the following disclaimer in the
19272  *    documentation and/or other materials provided with the distribution.
19273  * 3. All advertising materials mentioning features or use of this software
19274  *    must display the following acknowledgement:
19275  *    "This product includes cryptographic software written by
19276  *     Eric Young (eay@cryptsoft.com)"
19277  *    The word 'cryptographic' can be left out if the rouines from the library
19278  *    being used are not cryptographic related :-).
19279  * 4. If you include any Windows specific code (or a derivative thereof) from
19280  *    the apps directory (application code) you must include an acknowledgement:
19281  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19282  *
19283  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19284  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19285  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19286  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19287  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19288  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19289  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19290  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19291  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19292  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19293  * SUCH DAMAGE.
19294  *
19295  * The licence and distribution terms for any publically available version or
19296  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19297  * copied and put under another distribution licence
19298  * [including the GNU Public Licence.]
19299  */
19300 # 73 "/usr/include/openssl/lhash.h" 2 3 4
19301 
19302 
19303 
19304 
19305 
19306 
19307 typedef struct lhash_node_st {
19308     void *data;
19309     struct lhash_node_st *next;
19310 
19311     unsigned long hash;
19312 
19313 } LHASH_NODE;
19314 
19315 typedef int (*LHASH_COMP_FN_TYPE) (const void *, const void *);
19316 typedef unsigned long (*LHASH_HASH_FN_TYPE) (const void *);
19317 typedef void (*LHASH_DOALL_FN_TYPE) (void *);
19318 typedef void (*LHASH_DOALL_ARG_FN_TYPE) (void *, void *);
19319 
19320 /*
19321  * Macros for declaring and implementing type-safe wrappers for LHASH
19322  * callbacks. This way, callbacks can be provided to LHASH structures without
19323  * function pointer casting and the macro-defined callbacks provide
19324  * per-variable casting before deferring to the underlying type-specific
19325  * callbacks. NB: It is possible to place a "static" in front of both the
19326  * DECLARE and IMPLEMENT macros if the functions are strictly internal.
19327  */
19328 
19329 /* First: "hash" functions */
19330 # 110 "/usr/include/openssl/lhash.h" 3 4
19331 /* Second: "compare" functions */
19332 # 120 "/usr/include/openssl/lhash.h" 3 4
19333 /* Third: "doall" functions */
19334 # 129 "/usr/include/openssl/lhash.h" 3 4
19335 /* Fourth: "doall_arg" functions */
19336 # 139 "/usr/include/openssl/lhash.h" 3 4
19337 typedef struct lhash_st {
19338     LHASH_NODE **b;
19339     LHASH_COMP_FN_TYPE comp;
19340     LHASH_HASH_FN_TYPE hash;
19341     unsigned int num_nodes;
19342     unsigned int num_alloc_nodes;
19343     unsigned int p;
19344     unsigned int pmax;
19345     unsigned long up_load; /* load times 256 */
19346     unsigned long down_load; /* load times 256 */
19347     unsigned long num_items;
19348     unsigned long num_expands;
19349     unsigned long num_expand_reallocs;
19350     unsigned long num_contracts;
19351     unsigned long num_contract_reallocs;
19352     unsigned long num_hash_calls;
19353     unsigned long num_comp_calls;
19354     unsigned long num_insert;
19355     unsigned long num_replace;
19356     unsigned long num_delete;
19357     unsigned long num_no_delete;
19358     unsigned long num_retrieve;
19359     unsigned long num_retrieve_miss;
19360     unsigned long num_hash_comps;
19361     int error;
19362 } _LHASH; /* Do not use _LHASH directly, use LHASH_OF
19363                                  * and friends */
19364 
19365 
19366 
19367 /*
19368  * Indicates a malloc() error in the last call, this is only bad in
19369  * lh_insert().
19370  */
19371 
19372 
19373 _LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c);
19374 void lh_free(_LHASH *lh);
19375 void *lh_insert(_LHASH *lh, void *data);
19376 void *lh_delete(_LHASH *lh, const void *data);
19377 void *lh_retrieve(_LHASH *lh, const void *data);
19378 void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func);
19379 void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg);
19380 unsigned long lh_strhash(const char *c);
19381 unsigned long lh_num_items(const _LHASH *lh);
19382 
19383 
19384 void lh_stats(const _LHASH *lh, FILE *out);
19385 void lh_node_stats(const _LHASH *lh, FILE *out);
19386 void lh_node_usage_stats(const _LHASH *lh, FILE *out);
19387 
19388 
19389 
19390 void lh_stats_bio(const _LHASH *lh, BIO *out);
19391 void lh_node_stats_bio(const _LHASH *lh, BIO *out);
19392 void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out);
19393 
19394 
19395 /* Type checking... */
19396 # 206 "/usr/include/openssl/lhash.h" 3 4
19397 /* Define wrapper functions. */
19398 # 233 "/usr/include/openssl/lhash.h" 3 4
19399 struct lhash_st_OPENSSL_STRING { int dummy; };
19400 struct lhash_st_OPENSSL_CSTRING { int dummy; };
19401 # 73 "/usr/include/openssl/x509_vfy.h" 2 3 4
19402 
19403 # 1 "/usr/include/openssl/bio.h" 1 3 4
19404 /* crypto/bio/bio.h */
19405 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19406  * All rights reserved.
19407  *
19408  * This package is an SSL implementation written
19409  * by Eric Young (eay@cryptsoft.com).
19410  * The implementation was written so as to conform with Netscapes SSL.
19411  *
19412  * This library is free for commercial and non-commercial use as long as
19413  * the following conditions are aheared to.  The following conditions
19414  * apply to all code found in this distribution, be it the RC4, RSA,
19415  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19416  * included with this distribution is covered by the same copyright terms
19417  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19418  *
19419  * Copyright remains Eric Young's, and as such any Copyright notices in
19420  * the code are not to be removed.
19421  * If this package is used in a product, Eric Young should be given attribution
19422  * as the author of the parts of the library used.
19423  * This can be in the form of a textual message at program startup or
19424  * in documentation (online or textual) provided with the package.
19425  *
19426  * Redistribution and use in source and binary forms, with or without
19427  * modification, are permitted provided that the following conditions
19428  * are met:
19429  * 1. Redistributions of source code must retain the copyright
19430  *    notice, this list of conditions and the following disclaimer.
19431  * 2. Redistributions in binary form must reproduce the above copyright
19432  *    notice, this list of conditions and the following disclaimer in the
19433  *    documentation and/or other materials provided with the distribution.
19434  * 3. All advertising materials mentioning features or use of this software
19435  *    must display the following acknowledgement:
19436  *    "This product includes cryptographic software written by
19437  *     Eric Young (eay@cryptsoft.com)"
19438  *    The word 'cryptographic' can be left out if the rouines from the library
19439  *    being used are not cryptographic related :-).
19440  * 4. If you include any Windows specific code (or a derivative thereof) from
19441  *    the apps directory (application code) you must include an acknowledgement:
19442  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19443  *
19444  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19445  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19446  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19447  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19448  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19449  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19450  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19451  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19452  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19453  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19454  * SUCH DAMAGE.
19455  *
19456  * The licence and distribution terms for any publically available version or
19457  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19458  * copied and put under another distribution licence
19459  * [including the GNU Public Licence.]
19460  */
19461 # 75 "/usr/include/openssl/x509_vfy.h" 2 3 4
19462 # 1 "/usr/include/openssl/crypto.h" 1 3 4
19463 /* crypto/crypto.h */
19464 /* ====================================================================
19465  * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
19466  *
19467  * Redistribution and use in source and binary forms, with or without
19468  * modification, are permitted provided that the following conditions
19469  * are met:
19470  *
19471  * 1. Redistributions of source code must retain the above copyright
19472  *    notice, this list of conditions and the following disclaimer.
19473  *
19474  * 2. Redistributions in binary form must reproduce the above copyright
19475  *    notice, this list of conditions and the following disclaimer in
19476  *    the documentation and/or other materials provided with the
19477  *    distribution.
19478  *
19479  * 3. All advertising materials mentioning features or use of this
19480  *    software must display the following acknowledgment:
19481  *    "This product includes software developed by the OpenSSL Project
19482  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
19483  *
19484  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
19485  *    endorse or promote products derived from this software without
19486  *    prior written permission. For written permission, please contact
19487  *    openssl-core@openssl.org.
19488  *
19489  * 5. Products derived from this software may not be called "OpenSSL"
19490  *    nor may "OpenSSL" appear in their names without prior written
19491  *    permission of the OpenSSL Project.
19492  *
19493  * 6. Redistributions of any form whatsoever must retain the following
19494  *    acknowledgment:
19495  *    "This product includes software developed by the OpenSSL Project
19496  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
19497  *
19498  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
19499  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19500  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19501  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
19502  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19503  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19504  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19505  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19506  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19507  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19508  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
19509  * OF THE POSSIBILITY OF SUCH DAMAGE.
19510  * ====================================================================
19511  *
19512  * This product includes cryptographic software written by Eric Young
19513  * (eay@cryptsoft.com).  This product includes software written by Tim
19514  * Hudson (tjh@cryptsoft.com).
19515  *
19516  */
19517 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
19518  * All rights reserved.
19519  *
19520  * This package is an SSL implementation written
19521  * by Eric Young (eay@cryptsoft.com).
19522  * The implementation was written so as to conform with Netscapes SSL.
19523  *
19524  * This library is free for commercial and non-commercial use as long as
19525  * the following conditions are aheared to.  The following conditions
19526  * apply to all code found in this distribution, be it the RC4, RSA,
19527  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
19528  * included with this distribution is covered by the same copyright terms
19529  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
19530  *
19531  * Copyright remains Eric Young's, and as such any Copyright notices in
19532  * the code are not to be removed.
19533  * If this package is used in a product, Eric Young should be given attribution
19534  * as the author of the parts of the library used.
19535  * This can be in the form of a textual message at program startup or
19536  * in documentation (online or textual) provided with the package.
19537  *
19538  * Redistribution and use in source and binary forms, with or without
19539  * modification, are permitted provided that the following conditions
19540  * are met:
19541  * 1. Redistributions of source code must retain the copyright
19542  *    notice, this list of conditions and the following disclaimer.
19543  * 2. Redistributions in binary form must reproduce the above copyright
19544  *    notice, this list of conditions and the following disclaimer in the
19545  *    documentation and/or other materials provided with the distribution.
19546  * 3. All advertising materials mentioning features or use of this software
19547  *    must display the following acknowledgement:
19548  *    "This product includes cryptographic software written by
19549  *     Eric Young (eay@cryptsoft.com)"
19550  *    The word 'cryptographic' can be left out if the rouines from the library
19551  *    being used are not cryptographic related :-).
19552  * 4. If you include any Windows specific code (or a derivative thereof) from
19553  *    the apps directory (application code) you must include an acknowledgement:
19554  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
19555  *
19556  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
19557  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19558  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19559  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19560  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19561  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19562  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19563  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19564  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
19565  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
19566  * SUCH DAMAGE.
19567  *
19568  * The licence and distribution terms for any publically available version or
19569  * derivative of this code cannot be changed.  i.e. this code cannot simply be
19570  * copied and put under another distribution licence
19571  * [including the GNU Public Licence.]
19572  */
19573 /* ====================================================================
19574  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
19575  * ECDH support in OpenSSL originally developed by
19576  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
19577  */
19578 # 76 "/usr/include/openssl/x509_vfy.h" 2 3 4
19579 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
19580 /* ====================================================================
19581  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
19582  *
19583  * Redistribution and use in source and binary forms, with or without
19584  * modification, are permitted provided that the following conditions
19585  * are met:
19586  *
19587  * 1. Redistributions of source code must retain the above copyright
19588  *    notice, this list of conditions and the following disclaimer.
19589  *
19590  * 2. Redistributions in binary form must reproduce the above copyright
19591  *    notice, this list of conditions and the following disclaimer in
19592  *    the documentation and/or other materials provided with the
19593  *    distribution.
19594  *
19595  * 3. All advertising materials mentioning features or use of this
19596  *    software must display the following acknowledgment:
19597  *    "This product includes software developed by the OpenSSL Project
19598  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
19599  *
19600  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
19601  *    endorse or promote products derived from this software without
19602  *    prior written permission. For written permission, please contact
19603  *    openssl-core@openssl.org.
19604  *
19605  * 5. Products derived from this software may not be called "OpenSSL"
19606  *    nor may "OpenSSL" appear in their names without prior written
19607  *    permission of the OpenSSL Project.
19608  *
19609  * 6. Redistributions of any form whatsoever must retain the following
19610  *    acknowledgment:
19611  *    "This product includes software developed by the OpenSSL Project
19612  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
19613  *
19614  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
19615  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19616  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19617  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
19618  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19619  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19620  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19621  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19622  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19623  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19624  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
19625  * OF THE POSSIBILITY OF SUCH DAMAGE.
19626  * ====================================================================
19627  *
19628  * This product includes cryptographic software written by Eric Young
19629  * (eay@cryptsoft.com).  This product includes software written by Tim
19630  * Hudson (tjh@cryptsoft.com).
19631  *
19632  */
19633 # 77 "/usr/include/openssl/x509_vfy.h" 2 3 4
19634 # 92 "/usr/include/openssl/x509_vfy.h" 3 4
19635 typedef struct x509_file_st {
19636     int num_paths; /* number of paths to files or directories */
19637     int num_alloced;
19638     char **paths; /* the list of paths or directories */
19639     int *path_type;
19640 } X509_CERT_FILE_CTX;
19641 
19642 /*******************************/
19643 /*-
19644 SSL_CTX -> X509_STORE
19645                 -> X509_LOOKUP
19646                         ->X509_LOOKUP_METHOD
19647                 -> X509_LOOKUP
19648                         ->X509_LOOKUP_METHOD
19649 
19650 SSL     -> X509_STORE_CTX
19651                 ->X509_STORE
19652 
19653 The X509_STORE holds the tables etc for verification stuff.
19654 A X509_STORE_CTX is used while validating a single certificate.
19655 The X509_STORE has X509_LOOKUPs for looking up certs.
19656 The X509_STORE then calls a function to actually verify the
19657 certificate chain.
19658 */
19659 
19660 
19661 
19662 
19663 
19664 
19665 
19666 typedef struct x509_object_st {
19667     /* one of the above types */
19668     int type;
19669     union {
19670         char *ptr;
19671         X509 *x509;
19672         X509_CRL *crl;
19673         EVP_PKEY *pkey;
19674     } data;
19675 } X509_OBJECT;
19676 
19677 typedef struct x509_lookup_st X509_LOOKUP;
19678 
19679 struct stack_st_X509_LOOKUP { _STACK stack; };
19680 struct stack_st_X509_OBJECT { _STACK stack; };
19681 
19682 /* This is a static that defines the function interface */
19683 typedef struct x509_lookup_method_st {
19684     const char *name;
19685     int (*new_item) (X509_LOOKUP *ctx);
19686     void (*free) (X509_LOOKUP *ctx);
19687     int (*init) (X509_LOOKUP *ctx);
19688     int (*shutdown) (X509_LOOKUP *ctx);
19689     int (*ctrl) (X509_LOOKUP *ctx, int cmd, const char *argc, long argl,
19690                  char **ret);
19691     int (*get_by_subject) (X509_LOOKUP *ctx, int type, X509_NAME *name,
19692                            X509_OBJECT *ret);
19693     int (*get_by_issuer_serial) (X509_LOOKUP *ctx, int type, X509_NAME *name,
19694                                  ASN1_INTEGER *serial, X509_OBJECT *ret);
19695     int (*get_by_fingerprint) (X509_LOOKUP *ctx, int type,
19696                                unsigned char *bytes, int len,
19697                                X509_OBJECT *ret);
19698     int (*get_by_alias) (X509_LOOKUP *ctx, int type, char *str, int len,
19699                          X509_OBJECT *ret);
19700 } X509_LOOKUP_METHOD;
19701 
19702 typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID;
19703 
19704 /*
19705  * This structure hold all parameters associated with a verify operation by
19706  * including an X509_VERIFY_PARAM structure in related structures the
19707  * parameters used can be customized
19708  */
19709 
19710 typedef struct X509_VERIFY_PARAM_st {
19711     char *name;
19712     time_t check_time; /* Time to use */
19713     unsigned long inh_flags; /* Inheritance flags */
19714     unsigned long flags; /* Various verify flags */
19715     int purpose; /* purpose to check untrusted certificates */
19716     int trust; /* trust setting to check */
19717     int depth; /* Verify depth */
19718     struct stack_st_ASN1_OBJECT *policies; /* Permissible policies */
19719     X509_VERIFY_PARAM_ID *id; /* opaque ID data */
19720 } X509_VERIFY_PARAM;
19721 
19722 struct stack_st_X509_VERIFY_PARAM { _STACK stack; };
19723 
19724 /*
19725  * This is used to hold everything.  It is used for all certificate
19726  * validation.  Once we have a certificate chain, the 'verify' function is
19727  * then called to actually check the cert chain.
19728  */
19729 struct x509_store_st {
19730     /* The following is a cache of trusted certs */
19731     int cache; /* if true, stash any hits */
19732     struct stack_st_X509_OBJECT *objs; /* Cache of all objects */
19733     /* These are external lookup methods */
19734     struct stack_st_X509_LOOKUP *get_cert_methods;
19735     X509_VERIFY_PARAM *param;
19736     /* Callbacks for various operations */
19737     /* called to verify a certificate */
19738     int (*verify) (X509_STORE_CTX *ctx);
19739     /* error callback */
19740     int (*verify_cb) (int ok, X509_STORE_CTX *ctx);
19741     /* get issuers cert from ctx */
19742     int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
19743     /* check issued */
19744     int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
19745     /* Check revocation status of chain */
19746     int (*check_revocation) (X509_STORE_CTX *ctx);
19747     /* retrieve CRL */
19748     int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x);
19749     /* Check CRL validity */
19750     int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl);
19751     /* Check certificate against CRL */
19752     int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
19753     struct stack_st_X509 *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm);
19754     struct stack_st_X509_CRL *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm);
19755     int (*cleanup) (X509_STORE_CTX *ctx);
19756     CRYPTO_EX_DATA ex_data;
19757     int references;
19758 } /* X509_STORE */ ;
19759 
19760 int X509_STORE_set_depth(X509_STORE *store, int depth);
19761 
19762 
19763 
19764 
19765 /* This is the functions plus an instance of the local variables. */
19766 struct x509_lookup_st {
19767     int init; /* have we been started */
19768     int skip; /* don't use us. */
19769     X509_LOOKUP_METHOD *method; /* the functions */
19770     char *method_data; /* method data */
19771     X509_STORE *store_ctx; /* who owns us */
19772 } /* X509_LOOKUP */ ;
19773 
19774 /*
19775  * This is a used when verifying cert chains.  Since the gathering of the
19776  * cert chain can take some time (and have to be 'retried', this needs to be
19777  * kept and passed around.
19778  */
19779 struct x509_store_ctx_st { /* X509_STORE_CTX */
19780     X509_STORE *ctx;
19781     /* used when looking up certs */
19782     int current_method;
19783     /* The following are set by the caller */
19784     /* The cert to check */
19785     X509 *cert;
19786     /* chain of X509s - untrusted - passed in */
19787     struct stack_st_X509 *untrusted;
19788     /* set of CRLs passed in */
19789     struct stack_st_X509_CRL *crls;
19790     X509_VERIFY_PARAM *param;
19791     /* Other info for use with get_issuer() */
19792     void *other_ctx;
19793     /* Callbacks for various operations */
19794     /* called to verify a certificate */
19795     int (*verify) (X509_STORE_CTX *ctx);
19796     /* error callback */
19797     int (*verify_cb) (int ok, X509_STORE_CTX *ctx);
19798     /* get issuers cert from ctx */
19799     int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
19800     /* check issued */
19801     int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
19802     /* Check revocation status of chain */
19803     int (*check_revocation) (X509_STORE_CTX *ctx);
19804     /* retrieve CRL */
19805     int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x);
19806     /* Check CRL validity */
19807     int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl);
19808     /* Check certificate against CRL */
19809     int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
19810     int (*check_policy) (X509_STORE_CTX *ctx);
19811     struct stack_st_X509 *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm);
19812     struct stack_st_X509_CRL *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm);
19813     int (*cleanup) (X509_STORE_CTX *ctx);
19814     /* The following is built up */
19815     /* if 0, rebuild chain */
19816     int valid;
19817     /* index of last untrusted cert */
19818     int last_untrusted;
19819     /* chain of X509s - built up and trusted */
19820     struct stack_st_X509 *chain;
19821     /* Valid policy tree */
19822     X509_POLICY_TREE *tree;
19823     /* Require explicit policy value */
19824     int explicit_policy;
19825     /* When something goes wrong, this is why */
19826     int error_depth;
19827     int error;
19828     X509 *current_cert;
19829     /* cert currently being tested as valid issuer */
19830     X509 *current_issuer;
19831     /* current CRL */
19832     X509_CRL *current_crl;
19833     /* score of current CRL */
19834     int current_crl_score;
19835     /* Reason mask */
19836     unsigned int current_reasons;
19837     /* For CRL path validation: parent context */
19838     X509_STORE_CTX *parent;
19839     CRYPTO_EX_DATA ex_data;
19840 } /* X509_STORE_CTX */ ;
19841 
19842 void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
19843 # 345 "/usr/include/openssl/x509_vfy.h" 3 4
19844 /* These are 'informational' when looking for issuer cert */
19845 # 377 "/usr/include/openssl/x509_vfy.h" 3 4
19846 /* Suite B mode algorithm violation */
19847 
19848 
19849 
19850 
19851 
19852 
19853 
19854 /* Host, email and IP check errors */
19855 
19856 
19857 
19858 
19859 /* Caller error */
19860 
19861 /* Issuer lookup error */
19862 
19863 
19864 
19865 
19866 /* Certificate verify flags */
19867 
19868 /* Send issuer+subject checks to verify_cb */
19869 
19870 /* Use check time instead of current time */
19871 
19872 /* Lookup CRLs */
19873 
19874 /* Lookup CRLs for whole chain */
19875 
19876 /* Ignore unhandled critical extensions */
19877 
19878 /* Disable workarounds for broken certificates */
19879 
19880 /* Enable proxy certificate validation */
19881 
19882 /* Enable policy checking */
19883 
19884 /* Policy variable require-explicit-policy */
19885 
19886 /* Policy variable inhibit-any-policy */
19887 
19888 /* Policy variable inhibit-policy-mapping */
19889 
19890 /* Notify callback that policy is OK */
19891 
19892 /* Extended CRL features such as indirect CRLs, alternate CRL signing keys */
19893 
19894 /* Delta CRL support */
19895 
19896 /* Check selfsigned CA signature */
19897 
19898 /* Use trusted store first */
19899 
19900 /* Suite B 128 bit only mode: not normally used */
19901 
19902 /* Suite B 192 bit only mode */
19903 
19904 /* Suite B 128 bit mode allowing 192 bit algorithms */
19905 
19906 
19907 /* Allow partial chains if at least one certificate is in trusted store */
19908 
19909 /*
19910  * If the initial chain is not trusted, do not attempt to build an alternative
19911  * chain. Alternate chain checking was introduced in 1.0.2b. Setting this flag
19912  * will force the behaviour to match that of previous versions.
19913  */
19914 # 453 "/usr/include/openssl/x509_vfy.h" 3 4
19915 /* Internal use: mask of policy related options */
19916 
19917 
19918 
19919 
19920 
19921 int X509_OBJECT_idx_by_subject(struct stack_st_X509_OBJECT *h, int type,
19922                                X509_NAME *name);
19923 X509_OBJECT *X509_OBJECT_retrieve_by_subject(struct stack_st_X509_OBJECT *h,
19924                                              int type, X509_NAME *name);
19925 X509_OBJECT *X509_OBJECT_retrieve_match(struct stack_st_X509_OBJECT *h,
19926                                         X509_OBJECT *x);
19927 void X509_OBJECT_up_ref_count(X509_OBJECT *a);
19928 void X509_OBJECT_free_contents(X509_OBJECT *a);
19929 X509_STORE *X509_STORE_new(void);
19930 void X509_STORE_free(X509_STORE *v);
19931 
19932 struct stack_st_X509 *X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm);
19933 struct stack_st_X509_CRL *X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm);
19934 int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags);
19935 int X509_STORE_set_purpose(X509_STORE *ctx, int purpose);
19936 int X509_STORE_set_trust(X509_STORE *ctx, int trust);
19937 int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm);
19938 
19939 void X509_STORE_set_verify_cb(X509_STORE *ctx,
19940                               int (*verify_cb) (int, X509_STORE_CTX *));
19941 
19942 void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx,
19943                                    struct stack_st_X509_CRL *(*cb) (X509_STORE_CTX
19944                                                               *ctx,
19945                                                               X509_NAME *nm));
19946 
19947 X509_STORE_CTX *X509_STORE_CTX_new(void);
19948 
19949 int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
19950 
19951 void X509_STORE_CTX_free(X509_STORE_CTX *ctx);
19952 int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store,
19953                         X509 *x509, struct stack_st_X509 *chain);
19954 void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, struct stack_st_X509 *sk);
19955 void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx);
19956 
19957 X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx);
19958 
19959 X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
19960 
19961 X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
19962 X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
19963 
19964 int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
19965 int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);
19966 
19967 int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name,
19968                               X509_OBJECT *ret);
19969 
19970 int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
19971                      long argl, char **ret);
19972 
19973 
19974 int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type);
19975 int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type);
19976 int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type);
19977 
19978 
19979 X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method);
19980 void X509_LOOKUP_free(X509_LOOKUP *ctx);
19981 int X509_LOOKUP_init(X509_LOOKUP *ctx);
19982 int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name,
19983                            X509_OBJECT *ret);
19984 int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name,
19985                                  ASN1_INTEGER *serial, X509_OBJECT *ret);
19986 int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type,
19987                                unsigned char *bytes, int len,
19988                                X509_OBJECT *ret);
19989 int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len,
19990                          X509_OBJECT *ret);
19991 int X509_LOOKUP_shutdown(X509_LOOKUP *ctx);
19992 
19993 
19994 int X509_STORE_load_locations(X509_STORE *ctx,
19995                               const char *file, const char *dir);
19996 int X509_STORE_set_default_paths(X509_STORE *ctx);
19997 
19998 
19999 int X509_STORE_CTX_get_ex_new_index(long argl, void *argp,
20000                                     CRYPTO_EX_new *new_func,
20001                                     CRYPTO_EX_dup *dup_func,
20002                                     CRYPTO_EX_free *free_func);
20003 int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data);
20004 void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx);
20005 int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
20006 void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s);
20007 int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
20008 X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
20009 X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx);
20010 X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx);
20011 X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx);
20012 struct stack_st_X509 *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
20013 struct stack_st_X509 *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx);
20014 void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x);
20015 void X509_STORE_CTX_set_chain(X509_STORE_CTX *c, struct stack_st_X509 *sk);
20016 void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, struct stack_st_X509_CRL *sk);
20017 int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose);
20018 int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust);
20019 int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose,
20020                                    int purpose, int trust);
20021 void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags);
20022 void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags,
20023                              time_t t);
20024 void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx,
20025                                   int (*verify_cb) (int, X509_STORE_CTX *));
20026 
20027 X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx);
20028 int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx);
20029 
20030 X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx);
20031 void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param);
20032 int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name);
20033 
20034 /* X509_VERIFY_PARAM functions */
20035 
20036 X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void);
20037 void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param);
20038 int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to,
20039                               const X509_VERIFY_PARAM *from);
20040 int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to,
20041                            const X509_VERIFY_PARAM *from);
20042 int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name);
20043 int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param,
20044                                 unsigned long flags);
20045 int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param,
20046                                   unsigned long flags);
20047 unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param);
20048 int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose);
20049 int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust);
20050 void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth);
20051 void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t);
20052 int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param,
20053                                   ASN1_OBJECT *policy);
20054 int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param,
20055                                     struct stack_st_ASN1_OBJECT *policies);
20056 
20057 int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param,
20058                                 const char *name, size_t namelen);
20059 int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param,
20060                                 const char *name, size_t namelen);
20061 void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param,
20062                                      unsigned int flags);
20063 char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *);
20064 int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param,
20065                                  const char *email, size_t emaillen);
20066 int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param,
20067                               const unsigned char *ip, size_t iplen);
20068 int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param,
20069                                   const char *ipasc);
20070 
20071 int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param);
20072 const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param);
20073 
20074 int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param);
20075 int X509_VERIFY_PARAM_get_count(void);
20076 const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id);
20077 const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name);
20078 void X509_VERIFY_PARAM_table_cleanup(void);
20079 
20080 int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy,
20081                       struct stack_st_X509 *certs,
20082                       struct stack_st_ASN1_OBJECT *policy_oids, unsigned int flags);
20083 
20084 void X509_policy_tree_free(X509_POLICY_TREE *tree);
20085 
20086 int X509_policy_tree_level_count(const X509_POLICY_TREE *tree);
20087 X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree,
20088                                                int i);
20089 
20090 struct stack_st_X509_POLICY_NODE *X509_policy_tree_get0_policies(const
20091                                                            X509_POLICY_TREE
20092                                                            *tree);
20093 
20094 struct stack_st_X509_POLICY_NODE *X509_policy_tree_get0_user_policies(const
20095                                                                 X509_POLICY_TREE
20096                                                                 *tree);
20097 
20098 int X509_policy_level_node_count(X509_POLICY_LEVEL *level);
20099 
20100 X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level,
20101                                               int i);
20102 
20103 const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node);
20104 
20105 struct stack_st_POLICYQUALINFO *X509_policy_node_get0_qualifiers(const
20106                                                            X509_POLICY_NODE
20107                                                            *node);
20108 const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE
20109                                                      *node);
20110 # 582 "/usr/include/openssl/x509.h" 2 3 4
20111 # 1 "/usr/include/openssl/pkcs7.h" 1 3 4
20112 /* crypto/pkcs7/pkcs7.h */
20113 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
20114  * All rights reserved.
20115  *
20116  * This package is an SSL implementation written
20117  * by Eric Young (eay@cryptsoft.com).
20118  * The implementation was written so as to conform with Netscapes SSL.
20119  *
20120  * This library is free for commercial and non-commercial use as long as
20121  * the following conditions are aheared to.  The following conditions
20122  * apply to all code found in this distribution, be it the RC4, RSA,
20123  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
20124  * included with this distribution is covered by the same copyright terms
20125  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
20126  *
20127  * Copyright remains Eric Young's, and as such any Copyright notices in
20128  * the code are not to be removed.
20129  * If this package is used in a product, Eric Young should be given attribution
20130  * as the author of the parts of the library used.
20131  * This can be in the form of a textual message at program startup or
20132  * in documentation (online or textual) provided with the package.
20133  *
20134  * Redistribution and use in source and binary forms, with or without
20135  * modification, are permitted provided that the following conditions
20136  * are met:
20137  * 1. Redistributions of source code must retain the copyright
20138  *    notice, this list of conditions and the following disclaimer.
20139  * 2. Redistributions in binary form must reproduce the above copyright
20140  *    notice, this list of conditions and the following disclaimer in the
20141  *    documentation and/or other materials provided with the distribution.
20142  * 3. All advertising materials mentioning features or use of this software
20143  *    must display the following acknowledgement:
20144  *    "This product includes cryptographic software written by
20145  *     Eric Young (eay@cryptsoft.com)"
20146  *    The word 'cryptographic' can be left out if the rouines from the library
20147  *    being used are not cryptographic related :-).
20148  * 4. If you include any Windows specific code (or a derivative thereof) from
20149  *    the apps directory (application code) you must include an acknowledgement:
20150  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
20151  *
20152  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
20153  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20154  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20155  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20156  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20157  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20158  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20159  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20160  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20161  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
20162  * SUCH DAMAGE.
20163  *
20164  * The licence and distribution terms for any publically available version or
20165  * derivative of this code cannot be changed.  i.e. this code cannot simply be
20166  * copied and put under another distribution licence
20167  * [including the GNU Public Licence.]
20168  */
20169 
20170 
20171 
20172 
20173 # 1 "/usr/include/openssl/asn1.h" 1 3 4
20174 /* crypto/asn1/asn1.h */
20175 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
20176  * All rights reserved.
20177  *
20178  * This package is an SSL implementation written
20179  * by Eric Young (eay@cryptsoft.com).
20180  * The implementation was written so as to conform with Netscapes SSL.
20181  *
20182  * This library is free for commercial and non-commercial use as long as
20183  * the following conditions are aheared to.  The following conditions
20184  * apply to all code found in this distribution, be it the RC4, RSA,
20185  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
20186  * included with this distribution is covered by the same copyright terms
20187  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
20188  *
20189  * Copyright remains Eric Young's, and as such any Copyright notices in
20190  * the code are not to be removed.
20191  * If this package is used in a product, Eric Young should be given attribution
20192  * as the author of the parts of the library used.
20193  * This can be in the form of a textual message at program startup or
20194  * in documentation (online or textual) provided with the package.
20195  *
20196  * Redistribution and use in source and binary forms, with or without
20197  * modification, are permitted provided that the following conditions
20198  * are met:
20199  * 1. Redistributions of source code must retain the copyright
20200  *    notice, this list of conditions and the following disclaimer.
20201  * 2. Redistributions in binary form must reproduce the above copyright
20202  *    notice, this list of conditions and the following disclaimer in the
20203  *    documentation and/or other materials provided with the distribution.
20204  * 3. All advertising materials mentioning features or use of this software
20205  *    must display the following acknowledgement:
20206  *    "This product includes cryptographic software written by
20207  *     Eric Young (eay@cryptsoft.com)"
20208  *    The word 'cryptographic' can be left out if the rouines from the library
20209  *    being used are not cryptographic related :-).
20210  * 4. If you include any Windows specific code (or a derivative thereof) from
20211  *    the apps directory (application code) you must include an acknowledgement:
20212  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
20213  *
20214  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
20215  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20216  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20217  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20218  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20219  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20220  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20221  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20222  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20223  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
20224  * SUCH DAMAGE.
20225  *
20226  * The licence and distribution terms for any publically available version or
20227  * derivative of this code cannot be changed.  i.e. this code cannot simply be
20228  * copied and put under another distribution licence
20229  * [including the GNU Public Licence.]
20230  */
20231 # 63 "/usr/include/openssl/pkcs7.h" 2 3 4
20232 # 1 "/usr/include/openssl/bio.h" 1 3 4
20233 /* crypto/bio/bio.h */
20234 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
20235  * All rights reserved.
20236  *
20237  * This package is an SSL implementation written
20238  * by Eric Young (eay@cryptsoft.com).
20239  * The implementation was written so as to conform with Netscapes SSL.
20240  *
20241  * This library is free for commercial and non-commercial use as long as
20242  * the following conditions are aheared to.  The following conditions
20243  * apply to all code found in this distribution, be it the RC4, RSA,
20244  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
20245  * included with this distribution is covered by the same copyright terms
20246  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
20247  *
20248  * Copyright remains Eric Young's, and as such any Copyright notices in
20249  * the code are not to be removed.
20250  * If this package is used in a product, Eric Young should be given attribution
20251  * as the author of the parts of the library used.
20252  * This can be in the form of a textual message at program startup or
20253  * in documentation (online or textual) provided with the package.
20254  *
20255  * Redistribution and use in source and binary forms, with or without
20256  * modification, are permitted provided that the following conditions
20257  * are met:
20258  * 1. Redistributions of source code must retain the copyright
20259  *    notice, this list of conditions and the following disclaimer.
20260  * 2. Redistributions in binary form must reproduce the above copyright
20261  *    notice, this list of conditions and the following disclaimer in the
20262  *    documentation and/or other materials provided with the distribution.
20263  * 3. All advertising materials mentioning features or use of this software
20264  *    must display the following acknowledgement:
20265  *    "This product includes cryptographic software written by
20266  *     Eric Young (eay@cryptsoft.com)"
20267  *    The word 'cryptographic' can be left out if the rouines from the library
20268  *    being used are not cryptographic related :-).
20269  * 4. If you include any Windows specific code (or a derivative thereof) from
20270  *    the apps directory (application code) you must include an acknowledgement:
20271  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
20272  *
20273  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
20274  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20275  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20276  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20277  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20278  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20279  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20280  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20281  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20282  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
20283  * SUCH DAMAGE.
20284  *
20285  * The licence and distribution terms for any publically available version or
20286  * derivative of this code cannot be changed.  i.e. this code cannot simply be
20287  * copied and put under another distribution licence
20288  * [including the GNU Public Licence.]
20289  */
20290 # 64 "/usr/include/openssl/pkcs7.h" 2 3 4
20291 # 1 "/usr/include/openssl/e_os2.h" 1 3 4
20292 /* e_os2.h */
20293 /* ====================================================================
20294  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
20295  *
20296  * Redistribution and use in source and binary forms, with or without
20297  * modification, are permitted provided that the following conditions
20298  * are met:
20299  *
20300  * 1. Redistributions of source code must retain the above copyright
20301  *    notice, this list of conditions and the following disclaimer.
20302  *
20303  * 2. Redistributions in binary form must reproduce the above copyright
20304  *    notice, this list of conditions and the following disclaimer in
20305  *    the documentation and/or other materials provided with the
20306  *    distribution.
20307  *
20308  * 3. All advertising materials mentioning features or use of this
20309  *    software must display the following acknowledgment:
20310  *    "This product includes software developed by the OpenSSL Project
20311  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20312  *
20313  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
20314  *    endorse or promote products derived from this software without
20315  *    prior written permission. For written permission, please contact
20316  *    openssl-core@openssl.org.
20317  *
20318  * 5. Products derived from this software may not be called "OpenSSL"
20319  *    nor may "OpenSSL" appear in their names without prior written
20320  *    permission of the OpenSSL Project.
20321  *
20322  * 6. Redistributions of any form whatsoever must retain the following
20323  *    acknowledgment:
20324  *    "This product includes software developed by the OpenSSL Project
20325  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
20326  *
20327  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
20328  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20329  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20330  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
20331  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20332  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20333  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20334  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20335  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
20336  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20337  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20338  * OF THE POSSIBILITY OF SUCH DAMAGE.
20339  * ====================================================================
20340  *
20341  * This product includes cryptographic software written by Eric Young
20342  * (eay@cryptsoft.com).  This product includes software written by Tim
20343  * Hudson (tjh@cryptsoft.com).
20344  *
20345  */
20346 
20347 # 1 "/usr/include/openssl/opensslconf.h" 1 3 4
20348 /* opensslconf.h */
20349 /* WARNING: Generated automatically from opensslconf.h.in by Configure. */
20350 
20351 
20352 
20353 
20354 /* OpenSSL was configured with the following options: */
20355 # 108 "/usr/include/openssl/opensslconf.h" 3 4
20356 /* The OPENSSL_NO_* macros are also defined as NO_* if the application
20357    asks for it.  This is a transient feature that is provided for those
20358    who haven't had the time to do the appropriate changes in their
20359    applications.  */
20360 # 204 "/usr/include/openssl/opensslconf.h" 3 4
20361 /* crypto/opensslconf.h.in */
20362 
20363 /* Generate 80386 code? */
20364 # 57 "/usr/include/openssl/e_os2.h" 2 3 4
20365 # 65 "/usr/include/openssl/pkcs7.h" 2 3 4
20366 
20367 # 1 "/usr/include/openssl/symhacks.h" 1 3 4
20368 /* ====================================================================
20369  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
20370  *
20371  * Redistribution and use in source and binary forms, with or without
20372  * modification, are permitted provided that the following conditions
20373  * are met:
20374  *
20375  * 1. Redistributions of source code must retain the above copyright
20376  *    notice, this list of conditions and the following disclaimer.
20377  *
20378  * 2. Redistributions in binary form must reproduce the above copyright
20379  *    notice, this list of conditions and the following disclaimer in
20380  *    the documentation and/or other materials provided with the
20381  *    distribution.
20382  *
20383  * 3. All advertising materials mentioning features or use of this
20384  *    software must display the following acknowledgment:
20385  *    "This product includes software developed by the OpenSSL Project
20386  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20387  *
20388  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
20389  *    endorse or promote products derived from this software without
20390  *    prior written permission. For written permission, please contact
20391  *    openssl-core@openssl.org.
20392  *
20393  * 5. Products derived from this software may not be called "OpenSSL"
20394  *    nor may "OpenSSL" appear in their names without prior written
20395  *    permission of the OpenSSL Project.
20396  *
20397  * 6. Redistributions of any form whatsoever must retain the following
20398  *    acknowledgment:
20399  *    "This product includes software developed by the OpenSSL Project
20400  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
20401  *
20402  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
20403  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20404  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20405  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
20406  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20407  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20408  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20409  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20410  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
20411  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20412  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20413  * OF THE POSSIBILITY OF SUCH DAMAGE.
20414  * ====================================================================
20415  *
20416  * This product includes cryptographic software written by Eric Young
20417  * (eay@cryptsoft.com).  This product includes software written by Tim
20418  * Hudson (tjh@cryptsoft.com).
20419  *
20420  */
20421 # 67 "/usr/include/openssl/pkcs7.h" 2 3 4
20422 # 1 "/usr/include/openssl/ossl_typ.h" 1 3 4
20423 /* ====================================================================
20424  * Copyright (c) 1998-2001 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 # 68 "/usr/include/openssl/pkcs7.h" 2 3 4
20477 # 79 "/usr/include/openssl/pkcs7.h" 3 4
20478 /*-
20479 Encryption_ID           DES-CBC
20480 Digest_ID               MD5
20481 Digest_Encryption_ID    rsaEncryption
20482 Key_Encryption_ID       rsaEncryption
20483 */
20484 
20485 typedef struct pkcs7_issuer_and_serial_st {
20486     X509_NAME *issuer;
20487     ASN1_INTEGER *serial;
20488 } PKCS7_ISSUER_AND_SERIAL;
20489 
20490 typedef struct pkcs7_signer_info_st {
20491     ASN1_INTEGER *version; /* version 1 */
20492     PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
20493     X509_ALGOR *digest_alg;
20494     struct stack_st_X509_ATTRIBUTE *auth_attr; /* [ 0 ] */
20495     X509_ALGOR *digest_enc_alg;
20496     ASN1_OCTET_STRING *enc_digest;
20497     struct stack_st_X509_ATTRIBUTE *unauth_attr; /* [ 1 ] */
20498     /* The private key to sign with */
20499     EVP_PKEY *pkey;
20500 } PKCS7_SIGNER_INFO;
20501 
20502 struct stack_st_PKCS7_SIGNER_INFO { _STACK stack; };
20503 
20504 
20505 typedef struct pkcs7_recip_info_st {
20506     ASN1_INTEGER *version; /* version 0 */
20507     PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
20508     X509_ALGOR *key_enc_algor;
20509     ASN1_OCTET_STRING *enc_key;
20510     X509 *cert; /* get the pub-key from this */
20511 } PKCS7_RECIP_INFO;
20512 
20513 struct stack_st_PKCS7_RECIP_INFO { _STACK stack; };
20514 
20515 
20516 typedef struct pkcs7_signed_st {
20517     ASN1_INTEGER *version; /* version 1 */
20518     struct stack_st_X509_ALGOR *md_algs; /* md used */
20519     struct stack_st_X509 *cert; /* [ 0 ] */
20520     struct stack_st_X509_CRL *crl; /* [ 1 ] */
20521     struct stack_st_PKCS7_SIGNER_INFO *signer_info;
20522     struct pkcs7_st *contents;
20523 } PKCS7_SIGNED;
20524 /*
20525  * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about
20526  * merging the two
20527  */
20528 
20529 typedef struct pkcs7_enc_content_st {
20530     ASN1_OBJECT *content_type;
20531     X509_ALGOR *algorithm;
20532     ASN1_OCTET_STRING *enc_data; /* [ 0 ] */
20533     const EVP_CIPHER *cipher;
20534 } PKCS7_ENC_CONTENT;
20535 
20536 typedef struct pkcs7_enveloped_st {
20537     ASN1_INTEGER *version; /* version 0 */
20538     struct stack_st_PKCS7_RECIP_INFO *recipientinfo;
20539     PKCS7_ENC_CONTENT *enc_data;
20540 } PKCS7_ENVELOPE;
20541 
20542 typedef struct pkcs7_signedandenveloped_st {
20543     ASN1_INTEGER *version; /* version 1 */
20544     struct stack_st_X509_ALGOR *md_algs; /* md used */
20545     struct stack_st_X509 *cert; /* [ 0 ] */
20546     struct stack_st_X509_CRL *crl; /* [ 1 ] */
20547     struct stack_st_PKCS7_SIGNER_INFO *signer_info;
20548     PKCS7_ENC_CONTENT *enc_data;
20549     struct stack_st_PKCS7_RECIP_INFO *recipientinfo;
20550 } PKCS7_SIGN_ENVELOPE;
20551 
20552 typedef struct pkcs7_digest_st {
20553     ASN1_INTEGER *version; /* version 0 */
20554     X509_ALGOR *md; /* md used */
20555     struct pkcs7_st *contents;
20556     ASN1_OCTET_STRING *digest;
20557 } PKCS7_DIGEST;
20558 
20559 typedef struct pkcs7_encrypted_st {
20560     ASN1_INTEGER *version; /* version 0 */
20561     PKCS7_ENC_CONTENT *enc_data;
20562 } PKCS7_ENCRYPT;
20563 
20564 typedef struct pkcs7_st {
20565     /*
20566      * The following is non NULL if it contains ASN1 encoding of this
20567      * structure
20568      */
20569     unsigned char *asn1;
20570     long length;
20571 
20572 
20573 
20574     int state; /* used during processing */
20575     int detached;
20576     ASN1_OBJECT *type;
20577     /* content as defined by the type */
20578     /*
20579      * all encryption/message digests are applied to the 'contents', leaving
20580      * out the 'type' field.
20581      */
20582     union {
20583         char *ptr;
20584         /* NID_pkcs7_data */
20585         ASN1_OCTET_STRING *data;
20586         /* NID_pkcs7_signed */
20587         PKCS7_SIGNED *sign;
20588         /* NID_pkcs7_enveloped */
20589         PKCS7_ENVELOPE *enveloped;
20590         /* NID_pkcs7_signedAndEnveloped */
20591         PKCS7_SIGN_ENVELOPE *signed_and_enveloped;
20592         /* NID_pkcs7_digest */
20593         PKCS7_DIGEST *digest;
20594         /* NID_pkcs7_encrypted */
20595         PKCS7_ENCRYPT *encrypted;
20596         /* Anything else */
20597         ASN1_TYPE *other;
20598     } d;
20599 } PKCS7;
20600 
20601 struct stack_st_PKCS7 { _STACK stack; };
20602 
20603 
20604 # 227 "/usr/include/openssl/pkcs7.h" 3 4
20605 /* S/MIME related flags */
20606 # 246 "/usr/include/openssl/pkcs7.h" 3 4
20607 /* Flags: for compatibility with older code */
20608 # 258 "/usr/include/openssl/pkcs7.h" 3 4
20609 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;
20610 
20611 int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,
20612                                    const EVP_MD *type, unsigned char *md,
20613                                    unsigned int *len);
20614 
20615 PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7);
20616 int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7);
20617 
20618 PKCS7 *PKCS7_dup(PKCS7 *p7);
20619 PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7);
20620 int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7);
20621 int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
20622 int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
20623 
20624 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;
20625 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;
20626 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;
20627 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;
20628 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;
20629 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;
20630 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;
20631 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;
20632 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;
20633 
20634 extern const ASN1_ITEM PKCS7_ATTR_SIGN_it;
20635 extern const ASN1_ITEM PKCS7_ATTR_VERIFY_it;
20636 
20637 int i2d_PKCS7_NDEF(PKCS7 *a, unsigned char **out);
20638 int PKCS7_print_ctx(BIO *out, PKCS7 *x, int indent, const ASN1_PCTX *pctx);
20639 
20640 long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
20641 
20642 int PKCS7_set_type(PKCS7 *p7, int type);
20643 int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
20644 int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
20645 int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
20646                           const EVP_MD *dgst);
20647 int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
20648 int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
20649 int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
20650 int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
20651 int PKCS7_content_new(PKCS7 *p7, int nid);
20652 int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
20653                      BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si);
20654 int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
20655                           X509 *x509);
20656 
20657 BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
20658 int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
20659 BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
20660 
20661 PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
20662                                        EVP_PKEY *pkey, const EVP_MD *dgst);
20663 X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
20664 int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
20665 struct stack_st_PKCS7_SIGNER_INFO *PKCS7_get_signer_info(PKCS7 *p7);
20666 
20667 PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
20668 void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
20669                                  X509_ALGOR **pdig, X509_ALGOR **psig);
20670 void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
20671 int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
20672 int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
20673 int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
20674 int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7);
20675 
20676 PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
20677 ASN1_OCTET_STRING *PKCS7_digest_from_attributes(struct stack_st_X509_ATTRIBUTE *sk);
20678 int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type,
20679                                void *data);
20680 int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
20681                         void *value);
20682 ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid);
20683 ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid);
20684 int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
20685                                 struct stack_st_X509_ATTRIBUTE *sk);
20686 int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,
20687                          struct stack_st_X509_ATTRIBUTE *sk);
20688 
20689 PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, struct stack_st_X509 *certs,
20690                   BIO *data, int flags);
20691 
20692 PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
20693                                          X509 *signcert, EVP_PKEY *pkey,
20694                                          const EVP_MD *md, int flags);
20695 
20696 int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
20697 int PKCS7_verify(PKCS7 *p7, struct stack_st_X509 *certs, X509_STORE *store,
20698                  BIO *indata, BIO *out, int flags);
20699 struct stack_st_X509 *PKCS7_get0_signers(PKCS7 *p7, struct stack_st_X509 *certs,
20700                                    int flags);
20701 PKCS7 *PKCS7_encrypt(struct stack_st_X509 *certs, BIO *in, const EVP_CIPHER *cipher,
20702                      int flags);
20703 int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data,
20704                   int flags);
20705 
20706 int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
20707                               struct stack_st_X509_ALGOR *cap);
20708 struct stack_st_X509_ALGOR *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
20709 int PKCS7_simple_smimecap(struct stack_st_X509_ALGOR *sk, int nid, int arg);
20710 
20711 int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
20712 int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
20713 int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
20714                              const unsigned char *md, int mdlen);
20715 
20716 int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
20717 PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
20718 
20719 BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7);
20720 
20721 /* BEGIN ERROR CODES */
20722 /*
20723  * The following lines are auto generated by the script mkerr.pl. Any changes
20724  * made after this point may be overwritten when the script is next run.
20725  */
20726 void ERR_load_PKCS7_strings(void);
20727 
20728 /* Error codes for the PKCS7 functions. */
20729 
20730 /* Function codes. */
20731 # 421 "/usr/include/openssl/pkcs7.h" 3 4
20732 /* Reason codes. */
20733 # 583 "/usr/include/openssl/x509.h" 2 3 4
20734 # 592 "/usr/include/openssl/x509.h" 3 4
20735 /* #define      X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */
20736 # 608 "/usr/include/openssl/x509.h" 3 4
20737 void X509_CRL_set_default_method(const X509_CRL_METHOD *meth);
20738 X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl),
20739                                      int (*crl_free) (X509_CRL *crl),
20740                                      int (*crl_lookup) (X509_CRL *crl,
20741                                                         X509_REVOKED **ret,
20742                                                         ASN1_INTEGER *ser,
20743                                                         X509_NAME *issuer),
20744                                      int (*crl_verify) (X509_CRL *crl,
20745                                                         EVP_PKEY *pk));
20746 void X509_CRL_METHOD_free(X509_CRL_METHOD *m);
20747 
20748 void X509_CRL_set_meth_data(X509_CRL *crl, void *dat);
20749 void *X509_CRL_get_meth_data(X509_CRL *crl);
20750 
20751 /*
20752  * This one is only used so that a binary form can output, as in
20753  * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf)
20754  */
20755 
20756 
20757 const char *X509_verify_cert_error_string(long n);
20758 
20759 
20760 int X509_verify(X509 *a, EVP_PKEY *r);
20761 
20762 int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r);
20763 int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r);
20764 int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r);
20765 
20766 NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len);
20767 char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x);
20768 EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x);
20769 int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);
20770 
20771 int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki);
20772 
20773 int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent);
20774 int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig);
20775 
20776 int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
20777 int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx);
20778 int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert);
20779 int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md);
20780 int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx);
20781 int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md);
20782 int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx);
20783 int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl);
20784 int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md);
20785 
20786 int X509_pubkey_digest(const X509 *data, const EVP_MD *type,
20787                        unsigned char *md, unsigned int *len);
20788 int X509_digest(const X509 *data, const EVP_MD *type,
20789                 unsigned char *md, unsigned int *len);
20790 int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type,
20791                     unsigned char *md, unsigned int *len);
20792 int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type,
20793                     unsigned char *md, unsigned int *len);
20794 int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type,
20795                      unsigned char *md, unsigned int *len);
20796 
20797 
20798 
20799 X509 *d2i_X509_fp(FILE *fp, X509 **x509);
20800 int i2d_X509_fp(FILE *fp, X509 *x509);
20801 X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
20802 int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl);
20803 X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req);
20804 int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req);
20805 
20806 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
20807 int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa);
20808 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
20809 int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa);
20810 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
20811 int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa);
20812 
20813 
20814 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
20815 int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
20816 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
20817 int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
20818 
20819 
20820 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey);
20821 int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey);
20822 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey);
20823 int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey);
20824 
20825 X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8);
20826 int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8);
20827 PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
20828                                                 PKCS8_PRIV_KEY_INFO **p8inf);
20829 int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf);
20830 int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key);
20831 int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
20832 EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
20833 int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
20834 EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
20835 
20836 
20837 
20838 X509 *d2i_X509_bio(BIO *bp, X509 **x509);
20839 int i2d_X509_bio(BIO *bp, X509 *x509);
20840 X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl);
20841 int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl);
20842 X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req);
20843 int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req);
20844 
20845 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
20846 int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa);
20847 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
20848 int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa);
20849 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
20850 int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa);
20851 
20852 
20853 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
20854 int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa);
20855 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa);
20856 int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa);
20857 
20858 
20859 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey);
20860 int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey);
20861 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey);
20862 int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey);
20863 
20864 X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8);
20865 int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8);
20866 PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
20867                                                  PKCS8_PRIV_KEY_INFO **p8inf);
20868 int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf);
20869 int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key);
20870 int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey);
20871 EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
20872 int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey);
20873 EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a);
20874 
20875 
20876 X509 *X509_dup(X509 *x509);
20877 X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa);
20878 X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex);
20879 X509_CRL *X509_CRL_dup(X509_CRL *crl);
20880 X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
20881 X509_REQ *X509_REQ_dup(X509_REQ *req);
20882 X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
20883 int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype,
20884                     void *pval);
20885 void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval,
20886                      X509_ALGOR *algor);
20887 void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
20888 int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);
20889 
20890 X509_NAME *X509_NAME_dup(X509_NAME *xn);
20891 X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
20892 
20893 int X509_cmp_time(const ASN1_TIME *s, time_t *t);
20894 int X509_cmp_current_time(const ASN1_TIME *s);
20895 ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
20896 ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s,
20897                             int offset_day, long offset_sec, time_t *t);
20898 ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);
20899 
20900 const char *X509_get_default_cert_area(void);
20901 const char *X509_get_default_cert_dir(void);
20902 const char *X509_get_default_cert_file(void);
20903 const char *X509_get_default_cert_dir_env(void);
20904 const char *X509_get_default_cert_file_env(void);
20905 const char *X509_get_default_private_dir(void);
20906 
20907 X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
20908 X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey);
20909 
20910 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;
20911 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;
20912 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;
20913 
20914 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;
20915 
20916 int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
20917 EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key);
20918 int X509_get_pubkey_parameters(EVP_PKEY *pkey, struct stack_st_X509 *chain);
20919 int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp);
20920 EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length);
20921 
20922 int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp);
20923 RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length);
20924 
20925 
20926 int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp);
20927 DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length);
20928 
20929 
20930 int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp);
20931 EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length);
20932 
20933 
20934 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;
20935 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;
20936 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;
20937 
20938 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;
20939 X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value);
20940 
20941 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;
20942 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;
20943 
20944 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;
20945 
20946 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;
20947 
20948 int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
20949 
20950 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;
20951 
20952 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;
20953 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;
20954 
20955 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;
20956 
20957 int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
20958                           CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
20959 int X509_set_ex_data(X509 *r, int idx, void *arg);
20960 void *X509_get_ex_data(X509 *r, int idx);
20961 int i2d_X509_AUX(X509 *a, unsigned char **pp);
20962 X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length);
20963 
20964 int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
20965 
20966 void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg,
20967                          const X509 *x);
20968 int X509_get_signature_nid(const X509 *x);
20969 
20970 int X509_alias_set1(X509 *x, unsigned char *name, int len);
20971 int X509_keyid_set1(X509 *x, unsigned char *id, int len);
20972 unsigned char *X509_alias_get0(X509 *x, int *len);
20973 unsigned char *X509_keyid_get0(X509 *x, int *len);
20974 int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *,
20975                                                                 int);
20976 int X509_TRUST_set(int *t, int trust);
20977 int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj);
20978 int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj);
20979 void X509_trust_clear(X509 *x);
20980 void X509_reject_clear(X509 *x);
20981 
20982 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;
20983 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;
20984 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;
20985 
20986 int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
20987 int X509_CRL_get0_by_serial(X509_CRL *crl,
20988                             X509_REVOKED **ret, ASN1_INTEGER *serial);
20989 int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x);
20990 
20991 X509_PKEY *X509_PKEY_new(void);
20992 void X509_PKEY_free(X509_PKEY *a);
20993 int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp);
20994 X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp,
20995                          long length);
20996 
20997 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;
20998 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;
20999 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;
21000 
21001 
21002 X509_INFO *X509_INFO_new(void);
21003 void X509_INFO_free(X509_INFO *a);
21004 char *X509_NAME_oneline(X509_NAME *a, char *buf, int size);
21005 
21006 int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1,
21007                 ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey);
21008 
21009 int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data,
21010                 unsigned char *md, unsigned int *len);
21011 
21012 int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1,
21013               X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
21014               char *data, EVP_PKEY *pkey, const EVP_MD *type);
21015 
21016 int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data,
21017                      unsigned char *md, unsigned int *len);
21018 
21019 int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,
21020                      ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey);
21021 
21022 int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1,
21023                    X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data,
21024                    EVP_PKEY *pkey, const EVP_MD *type);
21025 int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
21026                        X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
21027                        void *asn, EVP_MD_CTX *ctx);
21028 
21029 
21030 int X509_set_version(X509 *x, long version);
21031 int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
21032 ASN1_INTEGER *X509_get_serialNumber(X509 *x);
21033 int X509_set_issuer_name(X509 *x, X509_NAME *name);
21034 X509_NAME *X509_get_issuer_name(X509 *a);
21035 int X509_set_subject_name(X509 *x, X509_NAME *name);
21036 X509_NAME *X509_get_subject_name(X509 *a);
21037 int X509_set_notBefore(X509 *x, const ASN1_TIME *tm);
21038 int X509_set_notAfter(X509 *x, const ASN1_TIME *tm);
21039 int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
21040 EVP_PKEY *X509_get_pubkey(X509 *x);
21041 ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x);
21042 int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ );
21043 
21044 int X509_REQ_set_version(X509_REQ *x, long version);
21045 int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name);
21046 int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
21047 EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
21048 int X509_REQ_extension_nid(int nid);
21049 int *X509_REQ_get_extension_nids(void);
21050 void X509_REQ_set_extension_nids(int *nids);
21051 struct stack_st_X509_EXTENSION *X509_REQ_get_extensions(X509_REQ *req);
21052 int X509_REQ_add_extensions_nid(X509_REQ *req, struct stack_st_X509_EXTENSION *exts,
21053                                 int nid);
21054 int X509_REQ_add_extensions(X509_REQ *req, struct stack_st_X509_EXTENSION *exts);
21055 int X509_REQ_get_attr_count(const X509_REQ *req);
21056 int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos);
21057 int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj,
21058                              int lastpos);
21059 X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc);
21060 X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc);
21061 int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr);
21062 int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
21063                               const ASN1_OBJECT *obj, int type,
21064                               const unsigned char *bytes, int len);
21065 int X509_REQ_add1_attr_by_NID(X509_REQ *req,
21066                               int nid, int type,
21067                               const unsigned char *bytes, int len);
21068 int X509_REQ_add1_attr_by_txt(X509_REQ *req,
21069                               const char *attrname, int type,
21070                               const unsigned char *bytes, int len);
21071 
21072 int X509_CRL_set_version(X509_CRL *x, long version);
21073 int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
21074 int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm);
21075 int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
21076 int X509_CRL_sort(X509_CRL *crl);
21077 
21078 int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
21079 int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
21080 
21081 X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer,
21082                         EVP_PKEY *skey, const EVP_MD *md, unsigned int flags);
21083 
21084 int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey);
21085 
21086 int X509_check_private_key(X509 *x509, EVP_PKEY *pkey);
21087 int X509_chain_check_suiteb(int *perror_depth,
21088                             X509 *x, struct stack_st_X509 *chain,
21089                             unsigned long flags);
21090 int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags);
21091 struct stack_st_X509 *X509_chain_up_ref(struct stack_st_X509 *chain);
21092 
21093 int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b);
21094 unsigned long X509_issuer_and_serial_hash(X509 *a);
21095 
21096 int X509_issuer_name_cmp(const X509 *a, const X509 *b);
21097 unsigned long X509_issuer_name_hash(X509 *a);
21098 
21099 int X509_subject_name_cmp(const X509 *a, const X509 *b);
21100 unsigned long X509_subject_name_hash(X509 *x);
21101 
21102 
21103 unsigned long X509_issuer_name_hash_old(X509 *a);
21104 unsigned long X509_subject_name_hash_old(X509 *x);
21105 
21106 
21107 int X509_cmp(const X509 *a, const X509 *b);
21108 int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
21109 unsigned long X509_NAME_hash(X509_NAME *x);
21110 unsigned long X509_NAME_hash_old(X509_NAME *x);
21111 
21112 int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
21113 int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
21114 
21115 int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag,
21116                      unsigned long cflag);
21117 int X509_print_fp(FILE *bp, X509 *x);
21118 int X509_CRL_print_fp(FILE *bp, X509_CRL *x);
21119 int X509_REQ_print_fp(FILE *bp, X509_REQ *req);
21120 int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent,
21121                           unsigned long flags);
21122 
21123 
21124 
21125 int X509_NAME_print(BIO *bp, X509_NAME *name, int obase);
21126 int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent,
21127                        unsigned long flags);
21128 int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag,
21129                   unsigned long cflag);
21130 int X509_print(BIO *bp, X509 *x);
21131 int X509_ocspid_print(BIO *bp, X509 *x);
21132 int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent);
21133 int X509_CRL_print(BIO *bp, X509_CRL *x);
21134 int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag,
21135                       unsigned long cflag);
21136 int X509_REQ_print(BIO *bp, X509_REQ *req);
21137 
21138 
21139 int X509_NAME_entry_count(X509_NAME *name);
21140 int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len);
21141 int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
21142                               char *buf, int len);
21143 
21144 /*
21145  * NOTE: you should be passsing -1, not 0 as lastpos.  The functions that use
21146  * lastpos, search after that position on.
21147  */
21148 int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos);
21149 int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
21150                                int lastpos);
21151 X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
21152 X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
21153 int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne,
21154                         int loc, int set);
21155 int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
21156                                unsigned char *bytes, int len, int loc,
21157                                int set);
21158 int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
21159                                unsigned char *bytes, int len, int loc,
21160                                int set);
21161 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
21162                                                const char *field, int type,
21163                                                const unsigned char *bytes,
21164                                                int len);
21165 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
21166                                                int type, unsigned char *bytes,
21167                                                int len);
21168 int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
21169                                const unsigned char *bytes, int len, int loc,
21170                                int set);
21171 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
21172                                                ASN1_OBJECT *obj, int type,
21173                                                const unsigned char *bytes,
21174                                                int len);
21175 int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj);
21176 int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
21177                              const unsigned char *bytes, int len);
21178 ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne);
21179 ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
21180 
21181 int X509v3_get_ext_count(const struct stack_st_X509_EXTENSION *x);
21182 int X509v3_get_ext_by_NID(const struct stack_st_X509_EXTENSION *x,
21183                           int nid, int lastpos);
21184 int X509v3_get_ext_by_OBJ(const struct stack_st_X509_EXTENSION *x,
21185                           ASN1_OBJECT *obj, int lastpos);
21186 int X509v3_get_ext_by_critical(const struct stack_st_X509_EXTENSION *x,
21187                                int crit, int lastpos);
21188 X509_EXTENSION *X509v3_get_ext(const struct stack_st_X509_EXTENSION *x, int loc);
21189 X509_EXTENSION *X509v3_delete_ext(struct stack_st_X509_EXTENSION *x, int loc);
21190 struct stack_st_X509_EXTENSION *X509v3_add_ext(struct stack_st_X509_EXTENSION **x,
21191                                          X509_EXTENSION *ex, int loc);
21192 
21193 int X509_get_ext_count(X509 *x);
21194 int X509_get_ext_by_NID(X509 *x, int nid, int lastpos);
21195 int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos);
21196 int X509_get_ext_by_critical(X509 *x, int crit, int lastpos);
21197 X509_EXTENSION *X509_get_ext(X509 *x, int loc);
21198 X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
21199 int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
21200 void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
21201 int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
21202                       unsigned long flags);
21203 
21204 int X509_CRL_get_ext_count(X509_CRL *x);
21205 int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos);
21206 int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos);
21207 int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos);
21208 X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc);
21209 X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
21210 int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
21211 void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx);
21212 int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit,
21213                           unsigned long flags);
21214 
21215 int X509_REVOKED_get_ext_count(X509_REVOKED *x);
21216 int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos);
21217 int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj,
21218                                 int lastpos);
21219 int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos);
21220 X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc);
21221 X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc);
21222 int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc);
21223 void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
21224 int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit,
21225                               unsigned long flags);
21226 
21227 X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
21228                                              int nid, int crit,
21229                                              ASN1_OCTET_STRING *data);
21230 X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
21231                                              ASN1_OBJECT *obj, int crit,
21232                                              ASN1_OCTET_STRING *data);
21233 int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj);
21234 int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
21235 int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data);
21236 ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
21237 ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
21238 int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
21239 
21240 int X509at_get_attr_count(const struct stack_st_X509_ATTRIBUTE *x);
21241 int X509at_get_attr_by_NID(const struct stack_st_X509_ATTRIBUTE *x, int nid,
21242                            int lastpos);
21243 int X509at_get_attr_by_OBJ(const struct stack_st_X509_ATTRIBUTE *sk,
21244                            ASN1_OBJECT *obj, int lastpos);
21245 X509_ATTRIBUTE *X509at_get_attr(const struct stack_st_X509_ATTRIBUTE *x, int loc);
21246 X509_ATTRIBUTE *X509at_delete_attr(struct stack_st_X509_ATTRIBUTE *x, int loc);
21247 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr(struct stack_st_X509_ATTRIBUTE **x,
21248                                            X509_ATTRIBUTE *attr);
21249 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_OBJ(struct stack_st_X509_ATTRIBUTE
21250                                                   **x, const ASN1_OBJECT *obj,
21251                                                   int type,
21252                                                   const unsigned char *bytes,
21253                                                   int len);
21254 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_NID(struct stack_st_X509_ATTRIBUTE
21255                                                   **x, int nid, int type,
21256                                                   const unsigned char *bytes,
21257                                                   int len);
21258 struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_txt(struct stack_st_X509_ATTRIBUTE
21259                                                   **x, const char *attrname,
21260                                                   int type,
21261                                                   const unsigned char *bytes,
21262                                                   int len);
21263 void *X509at_get0_data_by_OBJ(struct stack_st_X509_ATTRIBUTE *x, ASN1_OBJECT *obj,
21264                               int lastpos, int type);
21265 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
21266                                              int atrtype, const void *data,
21267                                              int len);
21268 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
21269                                              const ASN1_OBJECT *obj,
21270                                              int atrtype, const void *data,
21271                                              int len);
21272 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
21273                                              const char *atrname, int type,
21274                                              const unsigned char *bytes,
21275                                              int len);
21276 int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj);
21277 int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype,
21278                              const void *data, int len);
21279 void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype,
21280                                void *data);
21281 int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr);
21282 ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr);
21283 ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx);
21284 
21285 int EVP_PKEY_get_attr_count(const EVP_PKEY *key);
21286 int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos);
21287 int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj,
21288                              int lastpos);
21289 X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc);
21290 X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc);
21291 int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr);
21292 int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key,
21293                               const ASN1_OBJECT *obj, int type,
21294                               const unsigned char *bytes, int len);
21295 int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key,
21296                               int nid, int type,
21297                               const unsigned char *bytes, int len);
21298 int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key,
21299                               const char *attrname, int type,
21300                               const unsigned char *bytes, int len);
21301 
21302 int X509_verify_cert(X509_STORE_CTX *ctx);
21303 
21304 /* lookup a cert from a X509 STACK */
21305 X509 *X509_find_by_issuer_and_serial(struct stack_st_X509 *sk, X509_NAME *name,
21306                                      ASN1_INTEGER *serial);
21307 X509 *X509_find_by_subject(struct stack_st_X509 *sk, X509_NAME *name);
21308 
21309 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;
21310 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;
21311 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;
21312 
21313 int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter,
21314                          const unsigned char *salt, int saltlen);
21315 
21316 X509_ALGOR *PKCS5_pbe_set(int alg, int iter,
21317                           const unsigned char *salt, int saltlen);
21318 X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
21319                            unsigned char *salt, int saltlen);
21320 X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter,
21321                               unsigned char *salt, int saltlen,
21322                               unsigned char *aiv, int prf_nid);
21323 
21324 X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen,
21325                              int prf_nid, int keylen);
21326 
21327 /* PKCS#8 utilities */
21328 
21329 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;
21330 
21331 EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8);
21332 PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);
21333 PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken);
21334 PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken);
21335 
21336 int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
21337                     int version, int ptype, void *pval,
21338                     unsigned char *penc, int penclen);
21339 int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg,
21340                     const unsigned char **pk, int *ppklen,
21341                     X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8);
21342 
21343 int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj,
21344                            int ptype, void *pval,
21345                            unsigned char *penc, int penclen);
21346 int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg,
21347                            const unsigned char **pk, int *ppklen,
21348                            X509_ALGOR **pa, X509_PUBKEY *pub);
21349 
21350 int X509_check_trust(X509 *x, int id, int flags);
21351 int X509_TRUST_get_count(void);
21352 X509_TRUST *X509_TRUST_get0(int idx);
21353 int X509_TRUST_get_by_id(int id);
21354 int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int),
21355                    char *name, int arg1, void *arg2);
21356 void X509_TRUST_cleanup(void);
21357 int X509_TRUST_get_flags(X509_TRUST *xp);
21358 char *X509_TRUST_get0_name(X509_TRUST *xp);
21359 int X509_TRUST_get_trust(X509_TRUST *xp);
21360 
21361 /* BEGIN ERROR CODES */
21362 /*
21363  * The following lines are auto generated by the script mkerr.pl. Any changes
21364  * made after this point may be overwritten when the script is next run.
21365  */
21366 
21367 void ERR_load_X509_strings(void);
21368 
21369 /* Error codes for the X509 functions. */
21370 
21371 /* Function codes. */
21372 # 1291 "/usr/include/openssl/x509.h" 3 4
21373 /* Reason codes. */
21374 # 45 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
21375 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 1
21376 /*
21377  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
21378  *
21379  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21380  * Use is subject to license terms.
21381  */
21382 
21383 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
21384 /*	  All Rights Reserved  	*/
21385 
21386 /*
21387  * BIND 4.9.3:
21388  *
21389  * Copyright (c) 1980, 1983, 1988, 1993
21390  *	The Regents of the University of California.  All rights reserved.
21391  *
21392  * Redistribution and use in source and binary forms, with or without
21393  * modification, are permitted provided that the following conditions
21394  * are met:
21395  * 1. Redistributions of source code must retain the above copyright
21396  *    notice, this list of conditions and the following disclaimer.
21397  * 2. Redistributions in binary form must reproduce the above copyright
21398  *    notice, this list of conditions and the following disclaimer in the
21399  *    documentation and/or other materials provided with the distribution.
21400  * 3. All advertising materials mentioning features or use of this software
21401  *    must display the following acknowledgement:
21402  *	This product includes software developed by the University of
21403  *	California, Berkeley and its contributors.
21404  * 4. Neither the name of the University nor the names of its contributors
21405  *    may be used to endorse or promote products derived from this software
21406  *    without specific prior written permission.
21407  *
21408  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21409  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21410  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21411  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21412  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21413  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21414  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21415  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21416  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21417  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
21418  * SUCH DAMAGE.
21419  * -
21420  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
21421  *
21422  * Permission to use, copy, modify, and distribute this software for any
21423  * purpose with or without fee is hereby granted, provided that the above
21424  * copyright notice and this permission notice appear in all copies, and that
21425  * the name of Digital Equipment Corporation not be used in advertising or
21426  * publicity pertaining to distribution of the document or software without
21427  * specific, written prior permission.
21428  *
21429  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
21430  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
21431  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
21432  * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
21433  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
21434  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
21435  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
21436  * SOFTWARE.
21437  * --Copyright--
21438  *
21439  * End BIND 4.9.3
21440  */
21441 
21442 /*
21443  * Structures returned by network data base library.
21444  * All addresses are supplied in host order, and
21445  * returned in network order (suitable for use in system calls).
21446  */
21447 
21448 
21449 
21450 
21451 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
21452 /*
21453  * CDDL HEADER START
21454  *
21455  * The contents of this file are subject to the terms of the
21456  * Common Development and Distribution License (the "License").
21457  * You may not use this file except in compliance with the License.
21458  *
21459  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21460  * or http://www.opensolaris.org/os/licensing.
21461  * See the License for the specific language governing permissions
21462  * and limitations under the License.
21463  *
21464  * When distributing Covered Code, include this CDDL HEADER in each
21465  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21466  * If applicable, add the following below this CDDL HEADER, with the
21467  * fields enclosed by brackets "[]" replaced with your own identifying
21468  * information: Portions Copyright [yyyy] [name of copyright owner]
21469  *
21470  * CDDL HEADER END
21471  */
21472 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
21473 /*	  All Rights Reserved  	*/
21474 
21475 
21476 /*
21477  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21478  * Use is subject to license terms.
21479  *
21480  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
21481  * Copyright 2016 Joyent, Inc.
21482  */
21483 # 77 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
21484 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 1
21485 /*
21486  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21487  * Use is subject to license terms.
21488  *
21489  * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
21490  */
21491 /*
21492  * Copyright (c) 1982, 1986 Regents of the University of California.
21493  * All rights reserved.
21494  *
21495  * Redistribution and use in source and binary forms are permitted
21496  * provided that this notice is preserved and that due credit is given
21497  * to the University of California at Berkeley. The name of the University
21498  * may not be used to endorse or promote products derived from this
21499  * software without specific prior written permission. This software
21500  * is provided ``as is'' without express or implied warranty.
21501  */
21502 
21503 /*
21504  * Constants and structures defined by the internet system,
21505  * according to following documents
21506  *
21507  * Internet ASSIGNED NUMBERS (RFC1700) and its successors:
21508  *	http://www.iana.org/assignments/protocol-numbers
21509  *	http://www.iana.org/assignments/port-numbers
21510  * Basic Socket Interface Extensions for IPv6 (RFC2133 and its successors)
21511  *
21512  */
21513 
21514 
21515 
21516 
21517 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
21518 /*
21519  * CDDL HEADER START
21520  *
21521  * The contents of this file are subject to the terms of the
21522  * Common Development and Distribution License (the "License").
21523  * You may not use this file except in compliance with the License.
21524  *
21525  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21526  * or http://www.opensolaris.org/os/licensing.
21527  * See the License for the specific language governing permissions
21528  * and limitations under the License.
21529  *
21530  * When distributing Covered Code, include this CDDL HEADER in each
21531  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21532  * If applicable, add the following below this CDDL HEADER, with the
21533  * fields enclosed by brackets "[]" replaced with your own identifying
21534  * information: Portions Copyright [yyyy] [name of copyright owner]
21535  *
21536  * CDDL HEADER END
21537  */
21538 
21539 /*
21540  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
21541  * Copyright 2016 Joyent, Inc.
21542  *
21543  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
21544  * Use is subject to license terms.
21545  */
21546 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
21547 
21548 
21549 
21550 
21551 
21552 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
21553 /*
21554  * CDDL HEADER START
21555  *
21556  * The contents of this file are subject to the terms of the
21557  * Common Development and Distribution License (the "License").
21558  * You may not use this file except in compliance with the License.
21559  *
21560  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21561  * or http://www.opensolaris.org/os/licensing.
21562  * See the License for the specific language governing permissions
21563  * and limitations under the License.
21564  *
21565  * When distributing Covered Code, include this CDDL HEADER in each
21566  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21567  * If applicable, add the following below this CDDL HEADER, with the
21568  * fields enclosed by brackets "[]" replaced with your own identifying
21569  * information: Portions Copyright [yyyy] [name of copyright owner]
21570  *
21571  * CDDL HEADER END
21572  */
21573 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
21574 /*	  All Rights Reserved  	*/
21575 
21576 
21577 /*
21578  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21579  * Use is subject to license terms.
21580  *
21581  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
21582  * Copyright 2016 Joyent, Inc.
21583  */
21584 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
21585 
21586 
21587 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 1
21588 /*
21589  * CDDL HEADER START
21590  *
21591  * The contents of this file are subject to the terms of the
21592  * Common Development and Distribution License (the "License").
21593  * You may not use this file except in compliance with the License.
21594  *
21595  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21596  * or http://www.opensolaris.org/os/licensing.
21597  * See the License for the specific language governing permissions
21598  * and limitations under the License.
21599  *
21600  * When distributing Covered Code, include this CDDL HEADER in each
21601  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21602  * If applicable, add the following below this CDDL HEADER, with the
21603  * fields enclosed by brackets "[]" replaced with your own identifying
21604  * information: Portions Copyright [yyyy] [name of copyright owner]
21605  *
21606  * CDDL HEADER END
21607  */
21608 /*
21609  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21610  * Use is subject to license terms.
21611  */
21612 
21613 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
21614 /*	  All Rights Reserved	*/
21615 
21616 /*
21617  * Portions of this source code were derived from Berkeley 4.3 BSD
21618  * under license from the Regents of the University of California.
21619  */
21620 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h"
21621 typedef uint16_t sa_family_t;
21622 
21623 
21624 /*
21625  * Structure used by kernel to store most
21626  * addresses.
21627  */
21628 struct sockaddr {
21629  sa_family_t sa_family; /* address family */
21630  char sa_data[14]; /* up to 14 bytes of direct address */
21631 };
21632 
21633 
21634 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/un.h" 1
21635 /*
21636  * CDDL HEADER START
21637  *
21638  * The contents of this file are subject to the terms of the
21639  * Common Development and Distribution License (the "License").
21640  * You may not use this file except in compliance with the License.
21641  *
21642  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21643  * or http://www.opensolaris.org/os/licensing.
21644  * See the License for the specific language governing permissions
21645  * and limitations under the License.
21646  *
21647  * When distributing Covered Code, include this CDDL HEADER in each
21648  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21649  * If applicable, add the following below this CDDL HEADER, with the
21650  * fields enclosed by brackets "[]" replaced with your own identifying
21651  * information: Portions Copyright [yyyy] [name of copyright owner]
21652  *
21653  * CDDL HEADER END
21654  */
21655 /*
21656  * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
21657  */
21658 
21659 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
21660 /*	  All Rights Reserved  	*/
21661 
21662 /*
21663  * University Copyright- Copyright (c) 1982, 1986, 1988
21664  * The Regents of the University of California
21665  * All Rights Reserved
21666  *
21667  * University Acknowledgment- Portions of this document are derived from
21668  * software developed by the University of California, Berkeley, and its
21669  * contributors.
21670  */
21671 # 50 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/un.h"
21672 /*
21673  * Definitions for UNIX IPC domain.
21674  */
21675 struct sockaddr_un {
21676  sa_family_t sun_family; /* AF_UNIX */
21677  char sun_path[108]; /* path name (gag) */
21678 };
21679 
21680 
21681 
21682 /*
21683  * NOTE: If we ever go to BSD-style sun_len + sun_family, this macro needs to
21684  * change.
21685  *
21686  * Also, include a strlen() prototype, and we have to protect it w.r.t.
21687  * UNIX{98,03}.  And because there's strlen, we need size_t as well.
21688  */
21689 # 76 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/un.h"
21690 extern size_t strlen(const char *);
21691 # 57 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 2
21692 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/net/if_dl.h" 1
21693 /*
21694  * Copyright 1993-2003 Sun Microsystems, Inc.  All rights reserved.
21695  * Use is subject to license terms.
21696  */
21697 /*
21698  * Copyright (c) 1990, 1993
21699  *	The Regents of the University of California.  All rights reserved.
21700  *
21701  * Redistribution and use in source and binary forms, with or without
21702  * modification, are permitted provided that the following conditions
21703  * are met:
21704  * 1. Redistributions of source code must retain the above copyright
21705  *    notice, this list of conditions and the following disclaimer.
21706  * 2. Redistributions in binary form must reproduce the above copyright
21707  *    notice, this list of conditions and the following disclaimer in the
21708  *    documentation and/or other materials provided with the distribution.
21709  * 3. All advertising materials mentioning features or use of this software
21710  *    must display the following acknowledgement:
21711  *	This product includes software developed by the University of
21712  *	California, Berkeley and its contributors.
21713  * 4. Neither the name of the University nor the names of its contributors
21714  *    may be used to endorse or promote products derived from this software
21715  *    without specific prior written permission.
21716  *
21717  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21718  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21719  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21720  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21721  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21722  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21723  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21724  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21725  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21726  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
21727  * SUCH DAMAGE.
21728  */
21729 
21730 
21731 
21732 
21733 #pragma ident "%Z%%M%	%I%	%E% SMI"
21734 /* from UCB 8.1 (Berkeley) 6/10/93 */
21735 
21736 
21737 
21738 
21739 
21740 /*
21741  * A Link-Level Sockaddr may specify the interface in one of two
21742  * ways: either by means of a system-provided index number (computed
21743  * anew and possibly differently on every reboot), or by a human-readable
21744  * string such as "il0" (for managerial convenience).
21745  *
21746  * Census taking actions, such as something akin to SIOCGCONF would return
21747  * both the index and the human name.
21748  *
21749  * High volume transactions (such as giving a link-level ``from'' address
21750  * in a recvfrom or recvmsg call) may be likely only to provide the indexed
21751  * form, (which requires fewer copy operations and less space).
21752  *
21753  * The form and interpretation  of the link-level address is purely a matter
21754  * of convention between the device driver and its consumers; however, it is
21755  * expected that all drivers for an interface of a given if_type will agree.
21756  */
21757 
21758 /*
21759  * Structure of a Link-Level sockaddr:
21760  */
21761 struct sockaddr_dl {
21762  ushort_t sdl_family; /* AF_LINK */
21763  ushort_t sdl_index; /* if != 0, system given index for interface */
21764  uchar_t sdl_type; /* interface type */
21765  uchar_t sdl_nlen; /* interface name length, no trailing 0 reqd. */
21766  uchar_t sdl_alen; /* link level address length */
21767  uchar_t sdl_slen; /* link layer selector length */
21768  char sdl_data[244]; /* contains both if name and ll address */
21769 };
21770 
21771 
21772 
21773 
21774 extern char *_link_ntoa(const unsigned char *, char *, int, int);
21775 extern unsigned char *_link_aton(const char *, int *);
21776 # 58 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 2
21777 
21778 
21779 
21780 /*
21781  * sockaddr_storage:
21782  * Common superset of at least AF_INET, AF_INET6 and AF_LINK sockaddr
21783  * structures. Has sufficient size and alignment for those sockaddrs.
21784  */
21785 
21786 /*
21787  * Desired maximum size, alignment size and related types.
21788  */
21789 
21790 
21791 /*
21792  * To represent desired sockaddr max alignment for platform, a
21793  * type is chosen which may depend on implementation platform architecture.
21794  * Type chosen based on alignment size restrictions from <sys/isa_defs.h>.
21795  * We desire to force up to (but no more than) 64-bit (8 byte) alignment,
21796  * on platforms where it is possible to do so. (e.g not possible on ia32).
21797  * For all currently supported platforms by our implementation
21798  * in <sys/isa_defs.h>, (i.e. sparc, sparcv9, ia32, ia64)
21799  * type "double" is suitable for that intent.
21800  *
21801  * Note: Type "double" is chosen over the more obvious integer type int64_t.
21802  *   int64_t is not a valid type for strict ANSI/ISO C compilation on ILP32.
21803  */
21804 typedef double sockaddr_maxalign_t;
21805 
21806 
21807 
21808 /*
21809  * Definitions used for sockaddr_storage structure paddings design.
21810  */
21811 
21812 
21813 
21814 
21815 struct sockaddr_storage {
21816  sa_family_t ss_family; /* Address family */
21817  /* Following fields are implementation specific */
21818  char _ss_pad1[((sizeof (sockaddr_maxalign_t)) - sizeof (sa_family_t))];
21819  sockaddr_maxalign_t _ss_align;
21820  char _ss_pad2[(256 - (sizeof (sa_family_t)+ ((sizeof (sockaddr_maxalign_t)) - sizeof (sa_family_t)) + (sizeof (sockaddr_maxalign_t))))];
21821 };
21822 
21823 
21824 /*
21825  * To be compatible with the Linux interfaces used, this structure is
21826  * placed in socket_impl.h so that an include for <sys/socket.h> will
21827  * pickup this structure. This structure is for use with PF_PACKET
21828  * sockets.
21829  */
21830 struct sockaddr_ll {
21831  uint16_t sll_family;
21832  uint16_t sll_protocol;
21833  int32_t sll_ifindex;
21834  uint16_t sll_hatype;
21835  uint8_t sll_pkttype;
21836  uint8_t sll_halen;
21837  uint8_t sll_addr[8];
21838 };
21839 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
21840 
21841 
21842 
21843 
21844 
21845 /*
21846  * The socklen definitions are reproduced here from sys/socket.h so as to
21847  * not introduce that namespace into existing users of netinet/in.h.
21848  */
21849 
21850 
21851 
21852 typedef uint32_t socklen_t;
21853 
21854 
21855 
21856 
21857 
21858 typedef void *Psocklen_t;
21859 
21860 
21861 
21862 
21863 
21864 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 1
21865 /*
21866  * CDDL HEADER START
21867  *
21868  * The contents of this file are subject to the terms of the
21869  * Common Development and Distribution License (the "License").
21870  * You may not use this file except in compliance with the License.
21871  *
21872  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21873  * or http://www.opensolaris.org/os/licensing.
21874  * See the License for the specific language governing permissions
21875  * and limitations under the License.
21876  *
21877  * When distributing Covered Code, include this CDDL HEADER in each
21878  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21879  * If applicable, add the following below this CDDL HEADER, with the
21880  * fields enclosed by brackets "[]" replaced with your own identifying
21881  * information: Portions Copyright [yyyy] [name of copyright owner]
21882  *
21883  * CDDL HEADER END
21884  */
21885 /*
21886  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
21887  * Use is subject to license terms.
21888  */
21889 
21890 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
21891 /*	  All Rights Reserved  	*/
21892 
21893 
21894 
21895 
21896 
21897 /*
21898  * For source compatibility
21899  */
21900 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
21901 /*
21902  * CDDL HEADER START
21903  *
21904  * The contents of this file are subject to the terms of the
21905  * Common Development and Distribution License (the "License").
21906  * You may not use this file except in compliance with the License.
21907  *
21908  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21909  * or http://www.opensolaris.org/os/licensing.
21910  * See the License for the specific language governing permissions
21911  * and limitations under the License.
21912  *
21913  *
21914  * When distributing Covered Code, include this CDDL HEADER in each
21915  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21916  * If applicable, add the following below this CDDL HEADER, with the
21917  * fields enclosed by brackets "[]" replaced with your own identifying
21918  * information: Portions Copyright [yyyy] [name of copyright owner]
21919  *
21920  * CDDL HEADER END
21921  */
21922 
21923 /*
21924  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
21925  * Use is subject to license terms.
21926  * Copyright 2016 Joyent, Inc.
21927  */
21928 # 37 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
21929 
21930 
21931 
21932 
21933 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h" 1
21934 /*
21935  * CDDL HEADER START
21936  *
21937  * The contents of this file are subject to the terms of the
21938  * Common Development and Distribution License, Version 1.0 only
21939  * (the "License").  You may not use this file except in compliance
21940  * with the License.
21941  *
21942  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
21943  * or http://www.opensolaris.org/os/licensing.
21944  * See the License for the specific language governing permissions
21945  * and limitations under the License.
21946  *
21947  * When distributing Covered Code, include this CDDL HEADER in each
21948  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
21949  * If applicable, add the following below this CDDL HEADER, with the
21950  * fields enclosed by brackets "[]" replaced with your own identifying
21951  * information: Portions Copyright [yyyy] [name of copyright owner]
21952  *
21953  * CDDL HEADER END
21954  */
21955 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
21956 /*	  All Rights Reserved  	*/
21957 
21958 
21959 /*
21960  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
21961  *
21962  * Copyright (c) 1995, 1998 by Sun Microsystems, Inc.
21963  * All rights reserved.
21964  */
21965 
21966 /*
21967  * Copyright 2015, Joyent, Inc.
21968  */
21969 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h"
21970 /*
21971  * Structure of file descriptor/event pairs supplied in
21972  * the poll arrays.
21973  */
21974 typedef struct pollfd {
21975  int fd; /* file desc to poll */
21976  short events; /* events of interest on fd */
21977  short revents; /* events that occurred on fd */
21978 } pollfd_t;
21979 
21980 typedef unsigned long nfds_t;
21981 
21982 /*
21983  * Testable select events
21984  */
21985 # 70 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h"
21986 /*
21987  * Non-testable poll events (may not be specified in events field,
21988  * but may be returned in revents field).
21989  */
21990 
21991 
21992 
21993 
21994 /*
21995  * These events will never be specified in revents, but may be specified in
21996  * events to control /dev/poll behavior.
21997  */
21998 # 152 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/poll.h"
21999 int poll(struct pollfd *, nfds_t, int);
22000 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
22001 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/strmdep.h" 1
22002 /*
22003  * CDDL HEADER START
22004  *
22005  * The contents of this file are subject to the terms of the
22006  * Common Development and Distribution License, Version 1.0 only
22007  * (the "License").  You may not use this file except in compliance
22008  * with the License.
22009  *
22010  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22011  * or http://www.opensolaris.org/os/licensing.
22012  * See the License for the specific language governing permissions
22013  * and limitations under the License.
22014  *
22015  * When distributing Covered Code, include this CDDL HEADER in each
22016  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22017  * If applicable, add the following below this CDDL HEADER, with the
22018  * fields enclosed by brackets "[]" replaced with your own identifying
22019  * information: Portions Copyright [yyyy] [name of copyright owner]
22020  *
22021  * CDDL HEADER END
22022  */
22023 /*
22024  * Copyright (c) 1997-1998 by Sun Microsystems, Inc.
22025  * All rights reserved.
22026  */
22027 
22028 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22029 /*	  All Rights Reserved  	*/
22030 
22031 
22032 
22033 
22034 
22035 #pragma ident "%Z%%M%	%I%	%E% SMI"
22036 
22037 
22038 
22039 
22040 
22041 /*
22042  * This file contains all machine-dependent declarations
22043  * in STREAMS.
22044  */
22045 
22046 /*
22047  * Copy data from one data buffer to another.
22048  * The addresses must be word aligned - if not, use bcopy!
22049  */
22050 
22051 
22052 /*
22053  * save the address of the calling function on the 3b2 to
22054  * enable tracking of who is allocating message blocks
22055  */
22056 
22057 
22058 /*
22059  * macro to check pointer alignment
22060  * (true if alignment is sufficient for worst case)
22061  */
22062 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
22063 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/cred.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 (the "License").
22069  * You may not use this file except in compliance with the License.
22070  *
22071  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22072  * or http://www.opensolaris.org/os/licensing.
22073  * See the License for the specific language governing permissions
22074  * and limitations under the License.
22075  *
22076  * When distributing Covered Code, include this CDDL HEADER in each
22077  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22078  * If applicable, add the following below this CDDL HEADER, with the
22079  * fields enclosed by brackets "[]" replaced with your own identifying
22080  * information: Portions Copyright [yyyy] [name of copyright owner]
22081  *
22082  * CDDL HEADER END
22083  */
22084 /*
22085  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22086  * Use is subject to license terms.
22087  */
22088 
22089 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
22090 /*	  All Rights Reserved  	*/
22091 
22092 /*
22093  * Portions of this source code were derived from Berkeley 4.3 BSD
22094  * under license from the Regents of the University of California.
22095  */
22096 
22097 
22098 
22099 
22100 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22101 /*
22102  * CDDL HEADER START
22103  *
22104  * The contents of this file are subject to the terms of the
22105  * Common Development and Distribution License (the "License").
22106  * You may not use this file except in compliance with the License.
22107  *
22108  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22109  * or http://www.opensolaris.org/os/licensing.
22110  * See the License for the specific language governing permissions
22111  * and limitations under the License.
22112  *
22113  * When distributing Covered Code, include this CDDL HEADER in each
22114  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22115  * If applicable, add the following below this CDDL HEADER, with the
22116  * fields enclosed by brackets "[]" replaced with your own identifying
22117  * information: Portions Copyright [yyyy] [name of copyright owner]
22118  *
22119  * CDDL HEADER END
22120  */
22121 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22122 /*	  All Rights Reserved  	*/
22123 
22124 
22125 /*
22126  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22127  * Use is subject to license terms.
22128  *
22129  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22130  * Copyright 2016 Joyent, Inc.
22131  */
22132 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/cred.h" 2
22133 
22134 
22135 
22136 
22137 
22138 /*
22139  * The credential is an opaque kernel private data structure defined in
22140  * <sys/cred_impl.h>.
22141  */
22142 
22143 typedef struct cred cred_t;
22144 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
22145 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 1
22146 /*
22147  * CDDL HEADER START
22148  *
22149  * The contents of this file are subject to the terms of the
22150  * Common Development and Distribution License, Version 1.0 only
22151  * (the "License").  You may not use this file except in compliance
22152  * with the License.
22153  *
22154  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22155  * or http://www.opensolaris.org/os/licensing.
22156  * See the License for the specific language governing permissions
22157  * and limitations under the License.
22158  *
22159  * When distributing Covered Code, include this CDDL HEADER in each
22160  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22161  * If applicable, add the following below this CDDL HEADER, with the
22162  * fields enclosed by brackets "[]" replaced with your own identifying
22163  * information: Portions Copyright [yyyy] [name of copyright owner]
22164  *
22165  * CDDL HEADER END
22166  */
22167 /*
22168  * Copyright (c) 1991-1998 by Sun Microsystems, Inc.
22169  * All rights reserved.
22170  */
22171 
22172 /*
22173  * t_lock.h:	Prototypes for disp_locks, plus include files
22174  *		that describe the interfaces to kernel synch.
22175  *		objects.
22176  */
22177 
22178 
22179 
22180 
22181 #pragma ident "%Z%%M%	%I%	%E% SMI"
22182 
22183 
22184 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h" 1
22185 /*
22186  * CDDL HEADER START
22187  *
22188  * The contents of this file are subject to the terms of the
22189  * Common Development and Distribution License (the "License").
22190  * You may not use this file except in compliance with the License.
22191  *
22192  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22193  * or http://www.opensolaris.org/os/licensing.
22194  * See the License for the specific language governing permissions
22195  * and limitations under the License.
22196  *
22197  * When distributing Covered Code, include this CDDL HEADER in each
22198  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22199  * If applicable, add the following below this CDDL HEADER, with the
22200  * fields enclosed by brackets "[]" replaced with your own identifying
22201  * information: Portions Copyright [yyyy] [name of copyright owner]
22202  *
22203  * CDDL HEADER END
22204  */
22205 /*
22206  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
22207  * Use is subject to license terms.
22208  * Copyright 2016 Joyent, Inc.
22209  */
22210 
22211 
22212 
22213 
22214 #pragma ident "%Z%%M%	%I%	%E% SMI"
22215 
22216 
22217 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22218 /*
22219  * CDDL HEADER START
22220  *
22221  * The contents of this file are subject to the terms of the
22222  * Common Development and Distribution License (the "License").
22223  * You may not use this file except in compliance with the License.
22224  *
22225  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22226  * or http://www.opensolaris.org/os/licensing.
22227  * See the License for the specific language governing permissions
22228  * and limitations under the License.
22229  *
22230  * When distributing Covered Code, include this CDDL HEADER in each
22231  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22232  * If applicable, add the following below this CDDL HEADER, with the
22233  * fields enclosed by brackets "[]" replaced with your own identifying
22234  * information: Portions Copyright [yyyy] [name of copyright owner]
22235  *
22236  * CDDL HEADER END
22237  */
22238 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22239 /*	  All Rights Reserved  	*/
22240 
22241 
22242 /*
22243  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22244  * Use is subject to license terms.
22245  *
22246  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22247  * Copyright 2016 Joyent, Inc.
22248  */
22249 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h" 2
22250 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 1
22251 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22252 /*	  All Rights Reserved  	*/
22253 
22254 
22255 /*
22256  * Copyright (c) 1982, 1986, 1993 Regents of the University of California.
22257  * All rights reserved.  The Berkeley software License Agreement
22258  * specifies the terms and conditions for redistribution.
22259  */
22260 
22261 /*
22262  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
22263  *
22264  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22265  * Use is subject to license terms.
22266  *
22267  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22268  */
22269 
22270 /*
22271  * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
22272  */
22273 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h" 2
22274 # 61 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h"
22275 typedef lock_t disp_lock_t; /* dispatcher lock type */
22276 
22277 /*
22278  * SPIN_LOCK() macro indicates whether lock is implemented as a spin lock or
22279  * an adaptive mutex, depending on what interrupt levels use it.
22280  */
22281 
22282 
22283 /*
22284  * Macro to control loops which spin on a lock and then check state
22285  * periodically.  Its passed an integer, and returns a boolean value
22286  * that if true indicates its a good time to get the scheduler lock and
22287  * check the state of the current owner of the lock.
22288  */
22289 
22290 
22291 /*
22292  * Externs for CLOCK_LOCK and clock resolution
22293  */
22294 extern volatile uint32_t hres_lock;
22295 extern hrtime_t hrtime_base;
22296 extern int clock_res;
22297 
22298 
22299 
22300 /*
22301  * The definitions of the symbolic interrupt levels:
22302  *
22303  *   CLOCK_LEVEL =>  The level at which one must be to block the clock.
22304  *
22305  *   LOCK_LEVEL  =>  The highest level at which one may block (and thus the
22306  *                   highest level at which one may acquire adaptive locks)
22307  *                   Also the highest level at which one may be preempted.
22308  *
22309  *   DISP_LEVEL  =>  The level at which one must be to perform dispatcher
22310  *                   operations.
22311  *
22312  * The constraints on the platform:
22313  *
22314  *  - CLOCK_LEVEL must be less than or equal to LOCK_LEVEL
22315  *  - LOCK_LEVEL must be less than DISP_LEVEL
22316  *  - DISP_LEVEL should be as close to LOCK_LEVEL as possible
22317  *
22318  * Note that LOCK_LEVEL and CLOCK_LEVEL have historically always been equal;
22319  * changing this relationship is probably possible but not advised.
22320  *
22321  */
22322 # 117 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/machlock.h"
22323 /*
22324  * The following mask is for the cpu_intr_actv bits corresponding to
22325  * high-level PILs. It should equal:
22326  * ((((1 << PIL_MAX + 1) - 1) >> LOCK_LEVEL + 1) << LOCK_LEVEL + 1)
22327  */
22328 
22329 
22330 /*
22331  * The semaphore code depends on being able to represent a lock plus
22332  * owner in a single 32-bit word.  (Mutexes used to have a similar
22333  * dependency, but no longer.)  Thus the owner must contain at most
22334  * 24 significant bits.  At present only threads and semaphores
22335  * must be aware of this vile constraint.  Different ISAs may handle this
22336  * differently depending on their capabilities (e.g. compare-and-swap)
22337  * and limitations (e.g. constraints on alignment and/or KERNELBASE).
22338  */
22339 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22340 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 1
22341 /*
22342  * CDDL HEADER START
22343  *
22344  * The contents of this file are subject to the terms of the
22345  * Common Development and Distribution License (the "License").
22346  * You may not use this file except in compliance with the License.
22347  *
22348  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22349  * or http://www.opensolaris.org/os/licensing.
22350  * See the License for the specific language governing permissions
22351  * and limitations under the License.
22352  *
22353  * When distributing Covered Code, include this CDDL HEADER in each
22354  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22355  * If applicable, add the following below this CDDL HEADER, with the
22356  * fields enclosed by brackets "[]" replaced with your own identifying
22357  * information: Portions Copyright [yyyy] [name of copyright owner]
22358  *
22359  * CDDL HEADER END
22360  */
22361 
22362 /*
22363  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
22364  * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
22365  */
22366 
22367 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
22368 /*	  All Rights Reserved  	*/
22369 
22370 /*
22371  * University Copyright- Copyright (c) 1982, 1986, 1988
22372  * The Regents of the University of California
22373  * All Rights Reserved
22374  *
22375  * University Acknowledgment- Portions of this document are derived from
22376  * software developed by the University of California, Berkeley, and its
22377  * contributors.
22378  */
22379 
22380 
22381 
22382 
22383 
22384 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22385 /*
22386  * CDDL HEADER START
22387  *
22388  * The contents of this file are subject to the terms of the
22389  * Common Development and Distribution License (the "License").
22390  * You may not use this file except in compliance with the License.
22391  *
22392  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22393  * or http://www.opensolaris.org/os/licensing.
22394  * See the License for the specific language governing permissions
22395  * and limitations under the License.
22396  *
22397  * When distributing Covered Code, include this CDDL HEADER in each
22398  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22399  * If applicable, add the following below this CDDL HEADER, with the
22400  * fields enclosed by brackets "[]" replaced with your own identifying
22401  * information: Portions Copyright [yyyy] [name of copyright owner]
22402  *
22403  * CDDL HEADER END
22404  */
22405 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22406 /*	  All Rights Reserved  	*/
22407 
22408 
22409 /*
22410  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22411  * Use is subject to license terms.
22412  *
22413  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22414  * Copyright 2016 Joyent, Inc.
22415  */
22416 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22417 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
22418 /*
22419  * CDDL HEADER START
22420  *
22421  * The contents of this file are subject to the terms of the
22422  * Common Development and Distribution License (the "License").
22423  * You may not use this file except in compliance with the License.
22424  *
22425  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22426  * or http://www.opensolaris.org/os/licensing.
22427  * See the License for the specific language governing permissions
22428  * and limitations under the License.
22429  *
22430  *
22431  * When distributing Covered Code, include this CDDL HEADER in each
22432  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22433  * If applicable, add the following below this CDDL HEADER, with the
22434  * fields enclosed by brackets "[]" replaced with your own identifying
22435  * information: Portions Copyright [yyyy] [name of copyright owner]
22436  *
22437  * CDDL HEADER END
22438  */
22439 
22440 /*
22441  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
22442  * Use is subject to license terms.
22443  * Copyright 2016 Joyent, Inc.
22444  */
22445 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22446 
22447 
22448 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/null.h" 1
22449 /*
22450  * This file and its contents are supplied under the terms of the
22451  * Common Development and Distribution License ("CDDL"), version 1.0.
22452  * You may only use this file in accordance with the terms of version
22453  * 1.0 of the CDDL.
22454  *
22455  * A full copy of the text of the CDDL should have accompanied this
22456  * source.  A copy of the CDDL is also available via the Internet at
22457  * http://www.illumos.org/license/CDDL.
22458  */
22459 
22460 /*
22461  * Copyright 2014-2016 PALO, Richard.
22462  */
22463 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22464 
22465 
22466 
22467 
22468 
22469 /*
22470  * Fundamental variables; don't change too often.
22471  */
22472 
22473 /*
22474  * _POSIX_VDISABLE has historically been defined in <sys/param.h> since
22475  * an early merge with AT&T source.  It has also historically been defined
22476  * in <sys/termios.h>. The POSIX standard, IEEE Std. 1003.1-1988 initially
22477  * required the existence of _POSIX_VDISABLE in <sys/termios.h>.
22478  * Subsequent versions of the IEEE Standard as well as the X/Open
22479  * specifications required that _POSIX_VDISABLE be defined in <unistd.h>
22480  * while still allowing for it's existence in other headers.  With the
22481  * introduction of XPG6, _POSIX_VDISABLE can only be defined in <unistd.h>.
22482  */
22483 # 123 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22484     /* compatibility purposes only	*/
22485     /* and will be removed in a	*/
22486     /* later release		*/
22487 
22488 /*
22489  * These define the maximum and minimum allowable values of the
22490  * configurable parameter NGROUPS_MAX.
22491  */
22492 
22493 
22494 
22495 
22496 /*
22497  * NGROUPS_MAX_DEFAULT: *MUST* match NGROUPS_MAX value in limits.h.
22498  */
22499 
22500 
22501 /*
22502  * Default process priority.  Keep it in sync with limits.h.
22503  */
22504 
22505 
22506 /*
22507  * Fundamental constants of the implementation--cannot be changed easily.
22508  */
22509 # 171 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22510 /* REMOTE -- whether machine is primary, secondary, or regular */
22511 
22512 
22513 
22514 /*
22515  * MAXPATHLEN defines the longest permissible path length,
22516  * including the terminating null, after expanding symbolic links.
22517  * TYPICALMAXPATHLEN is used in a few places as an optimization
22518  * with a local buffer on the stack to avoid kmem_alloc().
22519  * MAXSYMLINKS defines the maximum number of symbolic links
22520  * that may be expanded in a path name. It should be set high
22521  * enough to allow all legitimate uses, but halt infinite loops
22522  * reasonably quickly.
22523  * MAXNAMELEN is the length (including the terminating null) of
22524  * the longest permissible file (component) name.
22525  */
22526 
22527 
22528 
22529 
22530 
22531 /*
22532  * MAXLINKNAMELEN defines the longest possible permitted datalink name,
22533  * including the terminating NUL.  Note that this must not be larger
22534  * than related networking constants such as LIFNAMSIZ.
22535  */
22536 
22537 
22538 
22539 
22540 
22541 
22542 /*
22543  * The following are defined to be the same as
22544  * defined in /usr/include/limits.h.  They are
22545  * needed for pipe and FIFO compatibility.
22546  */
22547 # 220 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22548 /* macros replacing interleaving functions */
22549 
22550 
22551 
22552 /*
22553  * File system parameters and macros.
22554  *
22555  * The file system is made out of blocks of at most MAXBSIZE units,
22556  * with smaller units (fragments) only in the last direct block.
22557  * MAXBSIZE primarily determines the size of buffers in the buffer
22558  * pool. It may be made larger without any effect on existing
22559  * file systems; however making it smaller make make some file
22560  * systems unmountable.
22561  *
22562  * Note that the blocked devices are assumed to have DEV_BSIZE
22563  * "sectors" and that fragments must be some multiple of this size.
22564  */
22565 # 261 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22566 /*	64 bit versions of btodb and dbtob */
22567 # 276 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22568 /*
22569  * Size of arg list passed in by user.
22570  */
22571 # 287 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22572 /*
22573  * Scale factor for scaled integers used to count
22574  * %cpu time and load averages.
22575  */
22576 
22577 
22578 
22579 /*
22580  * Delay units are in microseconds.
22581  *
22582  * XXX	These macros are not part of the DDI!
22583  */
22584 # 317 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22585 /*
22586  * The following is to free utilities from machine dependencies within
22587  * an architecture. Must be included after definition of DEV_BSIZE.
22588  */
22589 # 471 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h"
22590 /*
22591  * The following are assorted machine dependent values which can be
22592  * obtained in a machine independent manner through sysconf(2) or
22593  * sysinfo(2). In order to guarantee that these provide the expected
22594  * value at all times, the System Private interface (leading underscore)
22595  * is used.
22596  */
22597 
22598 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/unistd.h" 1
22599 /*
22600  * CDDL HEADER START
22601  *
22602  * The contents of this file are subject to the terms of the
22603  * Common Development and Distribution License (the "License").
22604  * You may not use this file except in compliance with the License.
22605  *
22606  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22607  * or http://www.opensolaris.org/os/licensing.
22608  * See the License for the specific language governing permissions
22609  * and limitations under the License.
22610  *
22611  * When distributing Covered Code, include this CDDL HEADER in each
22612  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22613  * If applicable, add the following below this CDDL HEADER, with the
22614  * fields enclosed by brackets "[]" replaced with your own identifying
22615  * information: Portions Copyright [yyyy] [name of copyright owner]
22616  *
22617  * CDDL HEADER END
22618  */
22619 
22620 /*
22621  *	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
22622  *	  All Rights Reserved
22623  *
22624  */
22625 
22626 /*
22627  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22628  * Use is subject to license terms.
22629  */
22630 
22631 /*
22632  * WARNING: This is an implementation-specific header,
22633  * its contents are not guaranteed. Applications
22634  * should include <unistd.h> and not this header.
22635  */
22636 # 480 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 2
22637 
22638 
22639 
22640 
22641 
22642 
22643 extern long _sysconf(int); /* System Private interface to sysconf() */
22644 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22645 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/mutex.h" 1
22646 /*
22647  * CDDL HEADER START
22648  *
22649  * The contents of this file are subject to the terms of the
22650  * Common Development and Distribution License (the "License").
22651  * You may not use this file except in compliance with the License.
22652  *
22653  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22654  * or http://www.opensolaris.org/os/licensing.
22655  * See the License for the specific language governing permissions
22656  * and limitations under the License.
22657  *
22658  * When distributing Covered Code, include this CDDL HEADER in each
22659  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22660  * If applicable, add the following below this CDDL HEADER, with the
22661  * fields enclosed by brackets "[]" replaced with your own identifying
22662  * information: Portions Copyright [yyyy] [name of copyright owner]
22663  *
22664  * CDDL HEADER END
22665  */
22666 /*
22667  * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
22668  */
22669 
22670 
22671 
22672 
22673 
22674 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22675 /*
22676  * CDDL HEADER START
22677  *
22678  * The contents of this file are subject to the terms of the
22679  * Common Development and Distribution License (the "License").
22680  * You may not use this file except in compliance with the License.
22681  *
22682  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22683  * or http://www.opensolaris.org/os/licensing.
22684  * See the License for the specific language governing permissions
22685  * and limitations under the License.
22686  *
22687  * When distributing Covered Code, include this CDDL HEADER in each
22688  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22689  * If applicable, add the following below this CDDL HEADER, with the
22690  * fields enclosed by brackets "[]" replaced with your own identifying
22691  * information: Portions Copyright [yyyy] [name of copyright owner]
22692  *
22693  * CDDL HEADER END
22694  */
22695 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22696 /*	  All Rights Reserved  	*/
22697 
22698 
22699 /*
22700  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22701  * Use is subject to license terms.
22702  *
22703  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22704  * Copyright 2016 Joyent, Inc.
22705  */
22706 # 30 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/mutex.h" 2
22707 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/mutex.h"
22708 /*
22709  * Public interface to mutual exclusion locks.  See mutex(9F) for details.
22710  *
22711  * The basic mutex type is MUTEX_ADAPTIVE, which is expected to be used
22712  * in almost all of the kernel.  MUTEX_SPIN provides interrupt blocking
22713  * and must be used in interrupt handlers above LOCK_LEVEL.  The iblock
22714  * cookie argument to mutex_init() encodes the interrupt level to block.
22715  * The iblock cookie must be NULL for adaptive locks.
22716  *
22717  * MUTEX_DEFAULT is the type usually specified (except in drivers) to
22718  * mutex_init().  It is identical to MUTEX_ADAPTIVE.
22719  *
22720  * MUTEX_DRIVER is always used by drivers.  mutex_init() converts this to
22721  * either MUTEX_ADAPTIVE or MUTEX_SPIN depending on the iblock cookie.
22722  *
22723  * Mutex statistics can be gathered on the fly, without rebooting or
22724  * recompiling the kernel, via the lockstat driver (lockstat(7D)).
22725  */
22726 typedef enum {
22727  MUTEX_ADAPTIVE = 0, /* spin if owner is running, otherwise block */
22728  MUTEX_SPIN = 1, /* block interrupts and spin */
22729  MUTEX_DRIVER = 4, /* driver (DDI) mutex */
22730  MUTEX_DEFAULT = 6 /* kernel default mutex */
22731 } kmutex_type_t;
22732 
22733 typedef struct mutex {
22734 
22735 
22736 
22737  void *_opaque[2];
22738 
22739 } kmutex_t;
22740 # 42 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22741 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/rwlock.h" 1
22742 /*
22743  * CDDL HEADER START
22744  *
22745  * The contents of this file are subject to the terms of the
22746  * Common Development and Distribution License (the "License").
22747  * You may not use this file except in compliance with the License.
22748  *
22749  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22750  * or http://www.opensolaris.org/os/licensing.
22751  * See the License for the specific language governing permissions
22752  * and limitations under the License.
22753  *
22754  * When distributing Covered Code, include this CDDL HEADER in each
22755  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22756  * If applicable, add the following below this CDDL HEADER, with the
22757  * fields enclosed by brackets "[]" replaced with your own identifying
22758  * information: Portions Copyright [yyyy] [name of copyright owner]
22759  *
22760  * CDDL HEADER END
22761  */
22762 /*
22763  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
22764  * Use is subject to license terms.
22765  */
22766 
22767 /*
22768  * Copyright (c) 2013, Joyent, Inc.  All rights reserved.
22769  */
22770 
22771 
22772 
22773 
22774 /*
22775  * Public interface to readers/writer locks.  See rwlock(9F) for details.
22776  */
22777 
22778 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22779 /*
22780  * CDDL HEADER START
22781  *
22782  * The contents of this file are subject to the terms of the
22783  * Common Development and Distribution License (the "License").
22784  * You may not use this file except in compliance with the License.
22785  *
22786  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22787  * or http://www.opensolaris.org/os/licensing.
22788  * See the License for the specific language governing permissions
22789  * and limitations under the License.
22790  *
22791  * When distributing Covered Code, include this CDDL HEADER in each
22792  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22793  * If applicable, add the following below this CDDL HEADER, with the
22794  * fields enclosed by brackets "[]" replaced with your own identifying
22795  * information: Portions Copyright [yyyy] [name of copyright owner]
22796  *
22797  * CDDL HEADER END
22798  */
22799 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22800 /*	  All Rights Reserved  	*/
22801 
22802 
22803 /*
22804  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22805  * Use is subject to license terms.
22806  *
22807  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22808  * Copyright 2016 Joyent, Inc.
22809  */
22810 # 38 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/rwlock.h" 2
22811 
22812 
22813 
22814 
22815 
22816 
22817 
22818 typedef enum {
22819  RW_DRIVER = 2, /* driver (DDI) rwlock */
22820  RW_DEFAULT = 4 /* kernel default rwlock */
22821 } krw_type_t;
22822 
22823 typedef enum {
22824  RW_WRITER,
22825  RW_READER,
22826  RW_READER_STARVEWRITER
22827 } krw_t;
22828 
22829 typedef struct _krwlock {
22830  void *_opaque[1];
22831 } krwlock_t;
22832 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22833 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/semaphore.h" 1
22834 /*
22835  * CDDL HEADER START
22836  *
22837  * The contents of this file are subject to the terms of the
22838  * Common Development and Distribution License, Version 1.0 only
22839  * (the "License").  You may not use this file except in compliance
22840  * with the License.
22841  *
22842  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22843  * or http://www.opensolaris.org/os/licensing.
22844  * See the License for the specific language governing permissions
22845  * and limitations under the License.
22846  *
22847  * When distributing Covered Code, include this CDDL HEADER in each
22848  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22849  * If applicable, add the following below this CDDL HEADER, with the
22850  * fields enclosed by brackets "[]" replaced with your own identifying
22851  * information: Portions Copyright [yyyy] [name of copyright owner]
22852  *
22853  * CDDL HEADER END
22854  */
22855 /*
22856  * Copyright (c) 1993-1998 by Sun Microsystems, Inc.
22857  * All rights reserved.
22858  */
22859 
22860 
22861 
22862 
22863 #pragma ident "%Z%%M%	%I%	%E% SMI"
22864 
22865 /*
22866  * Public interface to semaphores.  See semaphore(9F) for details.
22867  */
22868 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/semaphore.h"
22869 typedef enum {
22870  SEMA_DEFAULT,
22871  SEMA_DRIVER
22872 } ksema_type_t;
22873 
22874 typedef struct _ksema {
22875  void * _opaque[2]; /* 2 words on 4 byte alignment */
22876 } ksema_t;
22877 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22878 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h" 1
22879 /*
22880  * CDDL HEADER START
22881  *
22882  * The contents of this file are subject to the terms of the
22883  * Common Development and Distribution License (the "License").
22884  * You may not use this file except in compliance with the License.
22885  *
22886  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22887  * or http://www.opensolaris.org/os/licensing.
22888  * See the License for the specific language governing permissions
22889  * and limitations under the License.
22890  *
22891  * When distributing Covered Code, include this CDDL HEADER in each
22892  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22893  * If applicable, add the following below this CDDL HEADER, with the
22894  * fields enclosed by brackets "[]" replaced with your own identifying
22895  * information: Portions Copyright [yyyy] [name of copyright owner]
22896  *
22897  * CDDL HEADER END
22898  */
22899 /*
22900  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22901  * Use is subject to license terms.
22902  */
22903 
22904 /*
22905  * Copyright (c) 2012 by Delphix. All rights reserved.
22906  */
22907 
22908 /*
22909  * condvar.h:
22910  *
22911  * definitions for thread synchronization primitives: condition variables
22912  * This is the public part of the interface to condition variables. The
22913  * private (implementation-specific) part is in <arch>/sys/condvar_impl.h.
22914  */
22915 
22916 
22917 
22918 
22919 
22920 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
22921 /*
22922  * CDDL HEADER START
22923  *
22924  * The contents of this file are subject to the terms of the
22925  * Common Development and Distribution License (the "License").
22926  * You may not use this file except in compliance with the License.
22927  *
22928  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
22929  * or http://www.opensolaris.org/os/licensing.
22930  * See the License for the specific language governing permissions
22931  * and limitations under the License.
22932  *
22933  * When distributing Covered Code, include this CDDL HEADER in each
22934  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
22935  * If applicable, add the following below this CDDL HEADER, with the
22936  * fields enclosed by brackets "[]" replaced with your own identifying
22937  * information: Portions Copyright [yyyy] [name of copyright owner]
22938  *
22939  * CDDL HEADER END
22940  */
22941 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22942 /*	  All Rights Reserved  	*/
22943 
22944 
22945 /*
22946  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22947  * Use is subject to license terms.
22948  *
22949  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22950  * Copyright 2016 Joyent, Inc.
22951  */
22952 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h" 2
22953 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/time.h" 1
22954 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22955 /*	  All Rights Reserved  	*/
22956 
22957 
22958 /*
22959  * Copyright (c) 1982, 1986, 1993 Regents of the University of California.
22960  * All rights reserved.  The Berkeley software License Agreement
22961  * specifies the terms and conditions for redistribution.
22962  */
22963 
22964 /*
22965  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
22966  *
22967  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
22968  * Use is subject to license terms.
22969  *
22970  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
22971  */
22972 
22973 /*
22974  * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
22975  */
22976 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h" 2
22977 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/condvar.h"
22978 /*
22979  * Condtion variables.
22980  */
22981 
22982 typedef struct _kcondvar {
22983  ushort_t _opaque;
22984 } kcondvar_t;
22985 
22986 typedef enum {
22987  CV_DEFAULT,
22988  CV_DRIVER
22989 } kcv_type_t;
22990 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h" 2
22991 # 53 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/t_lock.h"
22992 /*
22993  * Mutual exclusion locks described in common/sys/mutex.h.
22994  *
22995  * Semaphores described in common/sys/semaphore.h.
22996  *
22997  * Readers/Writer locks described in common/sys/rwlock.h.
22998  *
22999  * Condition variables described in common/sys/condvar.h
23000  */
23001 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
23002 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h" 1
23003 /*
23004  * CDDL HEADER START
23005  *
23006  * The contents of this file are subject to the terms of the
23007  * Common Development and Distribution License, Version 1.0 only
23008  * (the "License").  You may not use this file except in compliance
23009  * with the License.
23010  *
23011  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23012  * or http://www.opensolaris.org/os/licensing.
23013  * See the License for the specific language governing permissions
23014  * and limitations under the License.
23015  *
23016  * When distributing Covered Code, include this CDDL HEADER in each
23017  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23018  * If applicable, add the following below this CDDL HEADER, with the
23019  * fields enclosed by brackets "[]" replaced with your own identifying
23020  * information: Portions Copyright [yyyy] [name of copyright owner]
23021  *
23022  * CDDL HEADER END
23023  */
23024 /*
23025  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
23026  * Use is subject to license terms.
23027  */
23028 
23029 
23030 
23031 
23032 #pragma ident "%Z%%M%	%I%	%E% SMI"
23033 # 40 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h"
23034 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
23035 /*
23036  * CDDL HEADER START
23037  *
23038  * The contents of this file are subject to the terms of the
23039  * Common Development and Distribution License (the "License").
23040  * You may not use this file except in compliance with the License.
23041  *
23042  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23043  * or http://www.opensolaris.org/os/licensing.
23044  * See the License for the specific language governing permissions
23045  * and limitations under the License.
23046  *
23047  *
23048  * When distributing Covered Code, include this CDDL HEADER in each
23049  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23050  * If applicable, add the following below this CDDL HEADER, with the
23051  * fields enclosed by brackets "[]" replaced with your own identifying
23052  * information: Portions Copyright [yyyy] [name of copyright owner]
23053  *
23054  * CDDL HEADER END
23055  */
23056 
23057 /*
23058  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23059  * Use is subject to license terms.
23060  * Copyright 2016 Joyent, Inc.
23061  */
23062 # 41 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h" 2
23063 # 69 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/model.h"
23064 /*
23065  * XXX	Ick.  This type needs to be visible outside the above guard because
23066  * the proc structure is visible outside the _KERNEL | _KMEMUSER guard.
23067  * If we can make proc internals less visible, (which we obviously should)
23068  * then this can be invisible too.
23069  */
23070 typedef unsigned int model_t;
23071 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h" 2
23072 
23073 
23074 
23075 
23076 
23077 /*
23078  * Data queue.
23079  *
23080  * NOTE: The *only* public fields are documented in queue(9S).
23081  *       Everything else is implementation-private.
23082  *
23083  * The locking rules for the queue_t structure are extremely subtle and vary
23084  * widely depending on the field in question.  As such, each field is
23085  * annotated according to the following legend:
23086  *
23087  *   Q9S: The field is documented in queue(9S) and may be accessed without
23088  *        locks by a STREAMS module when inside an entry point (e.g., put(9E)).
23089  *        However, no fields can be directly modified unless q_lock is held
23090  *        (which is not possible in a DDI compliant STREAMS module), with the
23091  *        following exceptions:
23092  *
23093  *	   - q_ptr: can be modified as per the rules of the STREAMS module.
23094  *		    The STREAMS framework ignores q_ptr and thus imposes *no*
23095  *		    locking rules on it.
23096  *         - q_qinfo: can be modified before qprocson().
23097  *
23098  *	   - q_minpsz, q_maxpsz, q_hiwat, q_lowat: can be modified as per the
23099  *		    rules of the STREAMS module.  The STREAMS framework never
23100  *		    modifies these fields, and is tolerant of temporarily
23101  *		    stale field values.
23102  *
23103  *	  In general, the STREAMS framework employs one of the following
23104  *	  techniques to ensure STREAMS modules can safely access Q9S fields:
23105  *
23106  *	   - The field is only modified by the framework when the stream is
23107  *	     locked with strlock() (q_next).
23108  *
23109  *	   - The field is modified by the framework, but the modifies are
23110  *	     atomic, and temporarily stale values are harmless (q_count,
23111  *	     q_first, q_last).
23112  *
23113  *	   - The field is modified by the framework, but the field's visible
23114  *	     values are either constant or directly under the control
23115  *	     of the STREAMS module itself (q_flag).
23116  *
23117  *   QLK: The field must be accessed or modified under q_lock, except when
23118  *        the stream has been locked with strlock().  If multiple q_locks must
23119  *        be acquired, q_locks at higher addresses must be taken first.
23120  *
23121  *   STR: The field can be accessed without a lock, but must be modified under
23122  *	  strlock().
23123  *
23124  *   SQLK: The field must be accessed or modified under SQLOCK().
23125  *
23126  *   NOLK: The field can be accessed without a lock, but can only be modified
23127  *	   when the queue_t is not known to any other threads.
23128  *
23129  *   SVLK: The field must be accessed or modified under the service_queue lock.
23130  *         Note that service_lock must be taken after any needed q_locks,
23131  *	   and that no other lock should be taken while service_lock is held.
23132  *
23133  * In addition, it is always acceptable to modify a field that is not yet
23134  * known to any other threads -- and other special case exceptions exist in
23135  * the code.  Also, q_lock is used with q_wait to implement a stream head
23136  * monitor for reads and writes.
23137  */
23138 typedef struct queue {
23139  struct qinit *q_qinfo; /* Q9S: Q processing procedure  */
23140  struct msgb *q_first; /* Q9S: first message in Q	*/
23141  struct msgb *q_last; /* Q9S: last message in Q	*/
23142  struct queue *q_next; /* Q9S: next Q in stream	*/
23143  struct queue *q_link; /* SVLK: next Q for scheduling	*/
23144  void *q_ptr; /* Q9S: module-specific data	*/
23145  size_t q_count; /* Q9S: number of bytes on Q	*/
23146  uint_t q_flag; /* Q9S: Q state			*/
23147  ssize_t q_minpsz; /* Q9S: smallest packet OK on Q */
23148  ssize_t q_maxpsz; /* Q9S: largest packet OK on Q	*/
23149  size_t q_hiwat; /* Q9S: Q high water mark	*/
23150  size_t q_lowat; /* Q9S: Q low water mark	*/
23151  struct qband *q_bandp; /* QLK: band flow information	*/
23152  kmutex_t q_lock; /* NOLK: structure lock		*/
23153  struct stdata *q_stream; /* NOLK: stream backpointer	*/
23154  struct syncq *q_syncq; /* NOLK: associated syncq 	*/
23155  unsigned char q_nband; /* QLK: number of bands		*/
23156  kcondvar_t q_wait; /* NOLK: read/write sleep CV	*/
23157  struct queue *q_nfsrv; /* STR: next Q with svc routine */
23158  ushort_t q_draining; /* QLK: Q is draining		*/
23159  short q_struiot; /* QLK: sync streams Q UIO mode	*/
23160  clock_t q_qtstamp; /* QLK: when Q was enabled	*/
23161  size_t q_mblkcnt; /* QLK: mblk count		*/
23162  uint_t q_syncqmsgs; /* QLK: syncq message count	*/
23163  size_t q_rwcnt; /* QLK: # threads in rwnext()	*/
23164  pri_t q_spri; /* QLK: Q scheduling priority	*/
23165 
23166  /*
23167 	 * Syncq scheduling
23168 	 */
23169  struct msgb *q_sqhead; /* QLK: first syncq message	*/
23170  struct msgb *q_sqtail; /* QLK: last syncq message 	*/
23171  struct queue *q_sqnext; /* SQLK: next Q on syncq list	*/
23172  struct queue *q_sqprev; /* SQLK: prev Q on syncq list 	*/
23173  uint_t q_sqflags; /* SQLK: syncq flags		*/
23174  clock_t q_sqtstamp; /* SQLK: when Q was scheduled for sq */
23175 
23176  /*
23177 	 * NOLK: Reference to the queue's module's implementation
23178 	 * structure. This will be NULL for queues associated with drivers.
23179 	 */
23180  struct fmodsw_impl *q_fp;
23181 } queue_t;
23182 
23183 /*
23184  * Queue flags; unused flags not documented in queue(9S) can be recycled.
23185  */
23186 # 169 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23187 /*	UNUSED		0x00000200	   was QHLIST			*/
23188 /* 	UNUSED 		0x00000400	   was QUNSAFE			*/
23189 
23190 
23191 
23192 
23193 
23194 
23195      /* all MT type flags		*/
23196 
23197 
23198 
23199 
23200 
23201 
23202 /*	UNUSED		0x00400000	   was QHOT			*/
23203 /*	UNUSED		0x00800000	   was QNEXTHOT			*/
23204 /* 	UNUSED		0x01000000	   was _QNEXTLESS		*/
23205 
23206 
23207 
23208 
23209      /* direct interface to/from sockfs */
23210 
23211 /* queue sqflags (protected by SQLOCK). */
23212 
23213 
23214      /* This is also noted by the	*/
23215      /* q_draining field, but this one is */
23216      /* protected by SQLOCK */
23217 
23218 /*
23219  * Structure that describes the separate information
23220  * for each priority band in the queue.
23221  */
23222 typedef struct qband {
23223  struct qband *qb_next; /* next band's info */
23224  size_t qb_count; /* number of bytes in band */
23225  struct msgb *qb_first; /* beginning of band's data */
23226  struct msgb *qb_last; /* end of band's data */
23227  size_t qb_hiwat; /* high water mark for band */
23228  size_t qb_lowat; /* low water mark for band */
23229  uint_t qb_flag; /* see below */
23230  size_t qb_mblkcnt; /* mblk counter for runaway msgs */
23231 } qband_t;
23232 
23233 /*
23234  * qband flags
23235  */
23236 
23237 
23238 
23239 
23240 /*
23241  * Maximum number of bands.
23242  */
23243 
23244 
23245 /*
23246  * Fields that can be manipulated through strqset() and strqget().
23247  */
23248 typedef enum qfields {
23249  QHIWAT = 0, /* q_hiwat or qb_hiwat */
23250  QLOWAT = 1, /* q_lowat or qb_lowat */
23251  QMAXPSZ = 2, /* q_maxpsz */
23252  QMINPSZ = 3, /* q_minpsz */
23253  QCOUNT = 4, /* q_count or qb_count */
23254  QFIRST = 5, /* q_first or qb_first */
23255  QLAST = 6, /* q_last or qb_last */
23256  QFLAG = 7, /* q_flag or qb_flag */
23257  QSTRUIOT = 8, /* q_struiot */
23258  QBAD = 9
23259 } qfields_t;
23260 
23261 /*
23262  * Module information structure
23263  */
23264 struct module_info {
23265  ushort_t mi_idnum; /* module id number */
23266  char *mi_idname; /* module name */
23267  ssize_t mi_minpsz; /* min packet size accepted */
23268  ssize_t mi_maxpsz; /* max packet size accepted */
23269  size_t mi_hiwat; /* hi-water mark */
23270  size_t mi_lowat; /* lo-water mark */
23271 };
23272 
23273 /*
23274  * queue information structure (with Synchronous STREAMS extensions)
23275  */
23276 struct qinit {
23277  int (*qi_putp)(); /* put procedure */
23278  int (*qi_srvp)(); /* service procedure */
23279  int (*qi_qopen)(); /* called on startup */
23280  int (*qi_qclose)(); /* called on finish */
23281  int (*qi_qadmin)(); /* for future use */
23282  struct module_info *qi_minfo; /* module information structure */
23283  struct module_stat *qi_mstat; /* module statistics structure */
23284  int (*qi_rwp)(); /* r/w procedure */
23285  int (*qi_infop)(); /* information procedure */
23286  int qi_struiot; /* stream uio type for struio() */
23287 };
23288 
23289 /*
23290  * Values for qi_struiot and q_struiot:
23291  */
23292 
23293 
23294 
23295 
23296 /*
23297  * Streamtab (used in cdevsw and fmodsw to point to module or driver)
23298  */
23299 struct streamtab {
23300  struct qinit *st_rdinit;
23301  struct qinit *st_wrinit;
23302  struct qinit *st_muxrinit;
23303  struct qinit *st_muxwinit;
23304 };
23305 
23306 /*
23307  * Structure sent to mux drivers to indicate a link.
23308  */
23309 struct linkblk {
23310  queue_t *l_qtop; /* lowest level write queue of upper stream */
23311     /* (set to NULL for persistent links) */
23312  queue_t *l_qbot; /* highest level write queue of lower stream */
23313  int l_index; /* index for lower stream. */
23314 };
23315 
23316 /*
23317  * Esballoc data buffer freeing routine
23318  */
23319 typedef struct free_rtn {
23320  void (*free_func)();
23321  caddr_t free_arg;
23322 } frtn_t;
23323 
23324 /*
23325  * Data block descriptor
23326  *
23327  * NOTE: db_base, db_lim, db_ref and db_type are the *only* public fields,
23328  * as described in datab(9S).  Everything else is implementation-private.
23329  */
23330 
23331 
23332 
23333 typedef struct datab {
23334  frtn_t *db_frtnp;
23335  unsigned char *db_base;
23336  unsigned char *db_lim;
23337  unsigned char db_ref;
23338  unsigned char db_type;
23339  unsigned char db_flags;
23340  unsigned char db_struioflag;
23341  pid_t db_cpid; /* cached pid, needs verification */
23342  void *db_cache; /* kmem cache descriptor */
23343  struct msgb *db_mblk;
23344  void (*db_free)(struct msgb *, struct datab *);
23345  void (*db_lastfree)(struct msgb *, struct datab *);
23346  intptr_t db_cksumstart;
23347  intptr_t db_cksumend;
23348  intptr_t db_cksumstuff;
23349  union {
23350   double enforce_alignment;
23351   unsigned char data[8];
23352   struct {
23353    union {
23354     uint32_t u32;
23355     uint16_t u16;
23356    } cksum_val; /* used to store calculated cksum */
23357    uint16_t flags;
23358    uint16_t pad;
23359   } cksum;
23360   /*
23361 		 * Union used for future extensions (pointer to data ?).
23362 		 */
23363  } db_struioun;
23364  struct fthdr *db_fthdr;
23365  cred_t *db_credp; /* credential */
23366 } dblk_t;
23367 
23368 
23369 
23370 
23371 /*
23372  * Accessor macros for private dblk_t fields (the rest are in <sys/strsun.h>).
23373  */
23374 
23375 
23376 
23377 /*
23378  * Used by GLDv2 to store the TCI information.
23379  */
23380 
23381 
23382 /*
23383  * Message block descriptor
23384  */
23385 typedef struct msgb {
23386  struct msgb *b_next;
23387  struct msgb *b_prev;
23388  struct msgb *b_cont;
23389  unsigned char *b_rptr;
23390  unsigned char *b_wptr;
23391  struct datab *b_datap;
23392  unsigned char b_band;
23393  unsigned char b_tag;
23394  unsigned short b_flag;
23395  queue_t *b_queue; /* for sync queues */
23396 } mblk_t;
23397 
23398 /*
23399  * bcache descriptor
23400  */
23401 typedef struct bcache {
23402  kmutex_t mutex;
23403  struct kmem_cache *buffer_cache;
23404  struct kmem_cache *dblk_cache;
23405  int alloc;
23406  int destroy;
23407  size_t size;
23408  uint_t align;
23409 } bcache_t;
23410 
23411 /*
23412  * db_flags values (all implementation private!)
23413  */
23414 
23415 
23416 
23417 
23418 /*
23419  * db_struioflag values:
23420  */
23421 
23422 
23423 
23424 
23425 
23426 
23427 /*
23428  * Message flags.  These are interpreted by the stream head.
23429  */
23430 
23431 
23432     /* write side of stream */
23433 
23434 /*	UNUSED		0x08	   was MSGNOGET (can be recycled) */
23435 
23436 
23437 
23438 
23439 /*
23440  * Streams message types.
23441  */
23442 
23443 /*
23444  * Data and protocol messages (regular and priority)
23445  */
23446 
23447 
23448 
23449 
23450 /*
23451  * Control messages (regular and priority)
23452  */
23453 # 445 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23454 /*
23455  * Control messages (high priority; go to head of queue)
23456  */
23457 # 468 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23458 /*
23459  * Queue message class definitions.
23460  */
23461 
23462 
23463 
23464 /*
23465  *  IOCTL structure - this structure is the format of the M_IOCTL message type.
23466  */
23467 # 488 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23468 struct iocblk {
23469  int ioc_cmd; /* ioctl command type */
23470  cred_t *ioc_cr; /* full credentials */
23471  uint_t ioc_id; /* ioctl id */
23472  size_t ioc_count; /* count of bytes in data field */
23473  int ioc_error; /* error code */
23474  int ioc_rval; /* return value  */
23475  int ioc_fill1;
23476  uint_t ioc_flag; /* see below */
23477  int ioc_filler[2]; /* reserved for future use */
23478 };
23479 
23480 
23481 typedef struct iocblk *IOCP;
23482 
23483 /* {ioc,cp}_flags values */
23484 
23485 
23486 
23487 
23488 
23489 
23490 
23491 /*
23492  *	Is the ioctl data formatted for our native model?
23493  */
23494 
23495 
23496 
23497 /*
23498  * structure for the M_COPYIN and M_COPYOUT message types.
23499  */
23500 # 531 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23501 struct copyreq {
23502  int cq_cmd; /* ioctl command (from ioc_cmd) */
23503  cred_t *cq_cr; /* full credentials */
23504  uint_t cq_id; /* ioctl id (from ioc_id) */
23505  caddr_t cq_addr; /* address to copy data to/from */
23506  size_t cq_size; /* number of bytes to copy */
23507  uint_t cq_flag; /* must be zero */
23508  mblk_t *cq_private; /* private state information */
23509  int cq_filler[4]; /* reserved for future use */
23510 };
23511 
23512 
23513 /*
23514  * structure for the M_IOCDATA message type.
23515  */
23516 # 557 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23517 struct copyresp {
23518  int cp_cmd; /* ioctl command (from ioc_cmd) */
23519  cred_t *cp_cr; /* full credentials */
23520  uint_t cp_id; /* ioctl id (from ioc_id) */
23521  caddr_t cp_rval; /* status of request: 0 -> success */
23522      /* 		non-zero -> failure */
23523  size_t cp_pad1;
23524  uint_t cp_pad2;
23525  mblk_t *cp_private; /* private state information */
23526  uint_t cp_flag; /* datamodel IOC_ flags; see above */
23527  int cp_filler[3];
23528 };
23529 
23530 
23531 /*
23532  * Since these structures are all intended to travel in the same message
23533  * at different stages of a STREAMS ioctl, this union is used to determine
23534  * the message size in strdoioctl().
23535  */
23536 union ioctypes {
23537  struct iocblk iocblk;
23538  struct copyreq copyreq;
23539  struct copyresp copyresp;
23540 };
23541 
23542 /*
23543  * Options structure for M_SETOPTS message.  This is sent upstream
23544  * by a module or driver to set stream head options.
23545  */
23546 struct stroptions {
23547  uint_t so_flags; /* options to set */
23548  short so_readopt; /* read option */
23549  ushort_t so_wroff; /* write offset */
23550  ssize_t so_minpsz; /* minimum read packet size */
23551  ssize_t so_maxpsz; /* maximum read packet size */
23552  size_t so_hiwat; /* read queue high water mark */
23553  size_t so_lowat; /* read queue low water mark */
23554  unsigned char so_band; /* band for water marks */
23555  ushort_t so_erropt; /* error option */
23556  ssize_t so_maxblk; /* maximum message block size */
23557  ushort_t so_copyopt; /* copy options (see stropts.h) */
23558  ushort_t so_tail; /* space available at the end */
23559 };
23560 
23561 /* flags for stream options set message */
23562 # 673 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/stream.h"
23563 /*
23564  * Miscellaneous parameters and flags.
23565  */
23566 
23567 /*
23568  * Values for stream flag in open to indicate module open, clone open,
23569  * and the return value for failure.
23570  */
23571 
23572 
23573 
23574 
23575 /*
23576  * Priority definitions for block allocation.
23577  */
23578 
23579 
23580 
23581 
23582 /*
23583  * Value for packet size that denotes infinity
23584  */
23585 
23586 
23587 /*
23588  * Flags for flushq()
23589  */
23590 
23591 
23592 
23593 /*
23594  * Flag for transparent ioctls
23595  */
23596 
23597 
23598 /*
23599  * Stream head default high/low water marks
23600  */
23601 
23602 
23603 
23604 /*
23605  * qwriter perimeter types
23606  */
23607 
23608 
23609 
23610 /*
23611  * Definitions of Streams macros and function interfaces.
23612  */
23613 
23614 /*
23615  * canenable - check if queue can be enabled by putq().
23616  */
23617 
23618 
23619 /*
23620  * Test if data block type is one of the data messages (i.e. not a control
23621  * message).
23622  */
23623 
23624 
23625 
23626 
23627 
23628 
23629 
23630 /*
23631  * Extract queue class of message block.
23632  */
23633 
23634 
23635 /*
23636  * Align address on next lower word boundary.
23637  */
23638 
23639 
23640 /*
23641  * Find the max size of data block.
23642  */
23643 # 68 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
23644 
23645 /*
23646  * Symbols such as htonl() are required to be exposed through this file,
23647  * per XNS Issue 5. This is achieved by inclusion of <sys/byteorder.h>
23648  */
23649 
23650 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h" 1
23651 /*
23652  * CDDL HEADER START
23653  *
23654  * The contents of this file are subject to the terms of the
23655  * Common Development and Distribution License (the "License").
23656  * You may not use this file except in compliance with the License.
23657  *
23658  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23659  * or http://www.opensolaris.org/os/licensing.
23660  * See the License for the specific language governing permissions
23661  * and limitations under the License.
23662  *
23663  * When distributing Covered Code, include this CDDL HEADER in each
23664  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23665  * If applicable, add the following below this CDDL HEADER, with the
23666  * fields enclosed by brackets "[]" replaced with your own identifying
23667  * information: Portions Copyright [yyyy] [name of copyright owner]
23668  *
23669  * CDDL HEADER END
23670  */
23671 
23672 /*
23673  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23674  * Use is subject to license terms.
23675  */
23676 
23677 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
23678 /*	  All Rights Reserved  	*/
23679 
23680 /*
23681  * University Copyright- Copyright (c) 1982, 1986, 1988
23682  * The Regents of the University of California
23683  * All Rights Reserved
23684  *
23685  * University Acknowledgment- Portions of this document are derived from
23686  * software developed by the University of California, Berkeley, and its
23687  * contributors.
23688  */
23689 
23690 
23691 
23692 
23693 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/isa_defs.h" 1
23694 /*
23695  * CDDL HEADER START
23696  *
23697  * The contents of this file are subject to the terms of the
23698  * Common Development and Distribution License (the "License").
23699  * You may not use this file except in compliance with the License.
23700  *
23701  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23702  * or http://www.opensolaris.org/os/licensing.
23703  * See the License for the specific language governing permissions
23704  * and limitations under the License.
23705  *
23706  *
23707  * When distributing Covered Code, include this CDDL HEADER in each
23708  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23709  * If applicable, add the following below this CDDL HEADER, with the
23710  * fields enclosed by brackets "[]" replaced with your own identifying
23711  * information: Portions Copyright [yyyy] [name of copyright owner]
23712  *
23713  * CDDL HEADER END
23714  */
23715 
23716 /*
23717  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23718  * Use is subject to license terms.
23719  * Copyright 2016 Joyent, Inc.
23720  */
23721 # 44 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h" 2
23722 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/int_types.h" 1
23723 /*
23724  * CDDL HEADER START
23725  *
23726  * The contents of this file are subject to the terms of the
23727  * Common Development and Distribution License, Version 1.0 only
23728  * (the "License").  You may not use this file except in compliance
23729  * with the License.
23730  *
23731  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23732  * or http://www.opensolaris.org/os/licensing.
23733  * See the License for the specific language governing permissions
23734  * and limitations under the License.
23735  *
23736  * When distributing Covered Code, include this CDDL HEADER in each
23737  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23738  * If applicable, add the following below this CDDL HEADER, with the
23739  * fields enclosed by brackets "[]" replaced with your own identifying
23740  * information: Portions Copyright [yyyy] [name of copyright owner]
23741  *
23742  * CDDL HEADER END
23743  */
23744 /*
23745  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
23746  *
23747  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
23748  * Use is subject to license terms.
23749  */
23750 # 45 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h" 2
23751 # 55 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23752 /*
23753  * macros for conversion between host and (internet) network byte order
23754  */
23755 # 74 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23756 typedef uint16_t in_port_t;
23757 
23758 
23759 
23760 
23761 typedef uint32_t in_addr_t;
23762 
23763 
23764 
23765 extern uint32_t htonl(uint32_t);
23766 extern uint16_t htons(uint16_t);
23767 extern uint32_t ntohl(uint32_t);
23768 extern uint16_t ntohs(uint16_t);
23769 # 96 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23770 extern uint64_t htonll(uint64_t);
23771 extern uint64_t ntohll(uint64_t);
23772 
23773 
23774 
23775 
23776 
23777 
23778 /*
23779  * Macros to reverse byte order
23780  */
23781 # 141 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23782 /*
23783  * Macros to convert from a specific byte order to/from native byte order
23784  */
23785 # 164 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23786 /*
23787  * Macros to read unaligned values from a specific byte order to
23788  * native byte order
23789  */
23790 # 204 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/byteorder.h"
23791 /*
23792  * Macros to write unaligned values from native byte order to a specific byte
23793  * order.
23794  */
23795 # 75 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 2
23796 
23797 
23798 
23799 
23800 
23801 
23802 
23803 /*
23804  * Note: IPv4 address data structures usage conventions.
23805  * The "in_addr_t" type below (required by Unix standards)
23806  * is NOT a typedef of "struct in_addr" and violates the usual
23807  * conventions where "struct <name>" and <name>_t are corresponding
23808  * typedefs.
23809  * To minimize confusion, kernel data structures/usage prefers use
23810  * of "ipaddr_t" as atomic uint32_t type and avoid using "in_addr_t"
23811  * The user level APIs continue to follow the historic popular
23812  * practice of using "struct in_addr".
23813  */
23814 
23815 
23816 
23817 
23818 
23819 
23820 
23821 typedef uint32_t ipaddr_t;
23822 
23823 
23824 
23825 
23826 struct in6_addr {
23827  union {
23828   /*
23829 		 * Note: Static initalizers of "union" type assume
23830 		 * the constant on the RHS is the type of the first member
23831 		 * of union.
23832 		 * To make static initializers (and efficient usage) work,
23833 		 * the order of members exposed to user and kernel view of
23834 		 * this data structure is different.
23835 		 * User environment sees specified uint8_t type as first
23836 		 * member whereas kernel sees most efficient type as
23837 		 * first member.
23838 		 */
23839 
23840 
23841 
23842 
23843   uint8_t _S6_u8[16]; /* IPv6 address */
23844   uint32_t _S6_u32[4]; /* IPv6 address */
23845 
23846   uint32_t __S6_align; /* Align on 32 bit boundary */
23847  } _S6_un;
23848 };
23849 
23850 
23851 
23852 
23853 
23854 
23855 
23856 typedef struct in6_addr in6_addr_t;
23857 # 144 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23858 /*
23859  * Protocols
23860  *
23861  * Some of these constant names are copied for the DTrace IP provider in
23862  * usr/src/lib/libdtrace/common/{ip.d.in, ip.sed.in}, which should be kept
23863  * in sync.
23864  */
23865 # 177 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23866       /* Transmission Protocol */
23867 # 186 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23868 /*
23869  * Port/socket numbers: network standard functions
23870  *
23871  * Entries should exist here for each port number compiled into an ON
23872  * component, such as snoop.
23873  */
23874 # 208 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23875 /*
23876  * Port/socket numbers: host specific functions
23877  */
23878 # 229 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23879 /*
23880  * Internet Key Exchange (IKE) ports
23881  */
23882 
23883 
23884 
23885 /*
23886  * UNIX TCP sockets
23887  */
23888 
23889 
23890 
23891 
23892 
23893 
23894 /*
23895  * UNIX UDP sockets
23896  */
23897 
23898 
23899 
23900 
23901 
23902 
23903 
23904 /*
23905  * DHCPv6 UDP ports
23906  */
23907 
23908 
23909 
23910 
23911 
23912 /*
23913  * Ports < IPPORT_RESERVED are reserved for
23914  * privileged processes (e.g. root).
23915  * Ports > IPPORT_USERRESERVED are reserved
23916  * for servers, not necessarily privileged.
23917  */
23918 
23919 
23920 
23921 /*
23922  * Link numbers
23923  */
23924 
23925 
23926 
23927 
23928 /*
23929  * IPv4 Internet address
23930  *	This definition contains obsolete fields for compatibility
23931  *	with SunOS 3.x and 4.2bsd.  The presence of subnets renders
23932  *	divisions into fixed fields misleading at best.  New code
23933  *	should use only the s_addr field.
23934  */
23935 # 293 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23936 struct in_addr {
23937  union {
23938   struct { uint8_t s_b1, s_b2, s_b3, s_b4; } S_un_b;
23939   struct { uint16_t s_w1, s_w2; } S_un_w;
23940 
23941   uint32_t S_addr;
23942 
23943 
23944 
23945  } S_un;
23946 
23947 
23948 
23949 
23950 
23951 
23952 };
23953 
23954 /*
23955  * Definitions of bits in internet address integers.
23956  * On subnets, the decomposition of addresses to host and net parts
23957  * is done according to subnet mask, not the masks here.
23958  *
23959  * Note that with the introduction of CIDR, IN_CLASSA, IN_CLASSB,
23960  * IN_CLASSC, IN_CLASSD and IN_CLASSE macros have become "de-facto
23961  * obsolete". IN_MULTICAST macro should be used to test if a address
23962  * is a multicast address.
23963  */
23964 # 348 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23965 /*
23966  * We have removed CLASS E checks from the kernel
23967  * But we preserve these defines for userland in order
23968  * to avoid compile  breakage of some 3rd party piece of software
23969  */
23970 # 369 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23971 /* Scoped IPv4 prefixes (in host byte-order) */
23972 # 379 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
23973 /* RFC 3927 IPv4 link local address (i in host byte-order) */
23974 
23975 
23976 /* Well known 6to4 Relay Router Anycast address defined in RFC 3068 */
23977 
23978 
23979 
23980 
23981 
23982 
23983 /*
23984  * Define a macro to stuff the loopback address into an Internet address
23985  */
23986 
23987 
23988 
23989 
23990 
23991 
23992 /*
23993  * IPv4 Socket address.
23994  */
23995 struct sockaddr_in {
23996  sa_family_t sin_family;
23997  in_port_t sin_port;
23998  struct in_addr sin_addr;
23999 
24000  char sin_zero[8];
24001 
24002 
24003 
24004 };
24005 
24006 
24007 /*
24008  * IPv6 socket address.
24009  */
24010 struct sockaddr_in6 {
24011  sa_family_t sin6_family;
24012  in_port_t sin6_port;
24013  uint32_t sin6_flowinfo;
24014  struct in6_addr sin6_addr;
24015  uint32_t sin6_scope_id; /* Depends on scope of sin6_addr */
24016  uint32_t __sin6_src_id; /* Impl. specific - UDP replies */
24017 };
24018 
24019 /*
24020  * Macros for accessing the traffic class and flow label fields from
24021  * sin6_flowinfo.
24022  * These are designed to be applied to a 32-bit value.
24023  */
24024 # 438 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24025 /* masks */
24026 
24027 
24028 
24029 
24030 
24031 /*
24032  * Note: Macros IN6ADDR_ANY_INIT and IN6ADDR_LOOPBACK_INIT are for
24033  * use as RHS of Static initializers of "struct in6_addr" (or in6_addr_t)
24034  * only. They need to be different for User/Kernel versions because union
24035  * component data structure is defined differently (it is identical at
24036  * binary representation level).
24037  *
24038  * const struct in6_addr IN6ADDR_ANY_INIT;
24039  * const struct in6_addr IN6ADDR_LOOPBACK_INIT;
24040  */
24041 # 478 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24042 /*
24043  * RFC 2553 specifies the following macros. Their type is defined
24044  * as "int" in the RFC but they only have boolean significance
24045  * (zero or non-zero). For the purposes of our comment notation,
24046  * we assume a hypothetical type "bool" defined as follows to
24047  * write the prototypes assumed for macros in our comments better.
24048  *
24049  * typedef int bool;
24050  */
24051 
24052 /*
24053  * IN6 macros used to test for special IPv6 addresses
24054  * (Mostly from spec)
24055  *
24056  * bool  IN6_IS_ADDR_UNSPECIFIED (const struct in6_addr *);
24057  * bool  IN6_IS_ADDR_LOOPBACK    (const struct in6_addr *);
24058  * bool  IN6_IS_ADDR_MULTICAST   (const struct in6_addr *);
24059  * bool  IN6_IS_ADDR_LINKLOCAL   (const struct in6_addr *);
24060  * bool  IN6_IS_ADDR_SITELOCAL   (const struct in6_addr *);
24061  * bool  IN6_IS_ADDR_V4MAPPED    (const struct in6_addr *);
24062  * bool  IN6_IS_ADDR_V4MAPPED_ANY(const struct in6_addr *); -- Not from RFC2553
24063  * bool  IN6_IS_ADDR_V4COMPAT    (const struct in6_addr *);
24064  * bool  IN6_IS_ADDR_MC_RESERVED (const struct in6_addr *); -- Not from RFC2553
24065  * bool  IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *);
24066  * bool  IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *);
24067  * bool  IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *);
24068  * bool  IN6_IS_ADDR_MC_ORGLOCAL (const struct in6_addr *);
24069  * bool  IN6_IS_ADDR_MC_GLOBAL   (const struct in6_addr *);
24070  * bool  IN6_IS_ADDR_6TO4	 (const struct in6_addr *); -- Not from RFC2553
24071  * bool  IN6_ARE_6TO4_PREFIX_EQUAL(const struct in6_addr *,
24072  *	     const struct in6_addr *);			    -- Not from RFC2553
24073  * bool  IN6_IS_ADDR_LINKSCOPE	 (const struct in6addr  *); -- Not from RFC2553
24074  */
24075 # 568 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24076 /*
24077  * IN6_IS_ADDR_V4MAPPED - A IPv4 mapped INADDR_ANY
24078  * Note: This macro is currently NOT defined in RFC2553 specification
24079  * and not a standard macro that portable applications should use.
24080  */
24081 # 587 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24082 /* Exclude loopback and unspecified address */
24083 # 605 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24084 /*
24085  * Note:
24086  * IN6_IS_ADDR_MC_RESERVED macro is currently NOT defined in RFC2553
24087  * specification and not a standard macro that portable applications
24088  * should use.
24089  */
24090 # 660 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24091 /*
24092  * The IN6_IS_ADDR_MC_SOLICITEDNODE macro is not defined in any standard or
24093  * RFC, and shouldn't be used by portable applications.  It is used to see
24094  * if an address is a solicited-node multicast address, which is prefixed
24095  * with ff02:0:0:0:0:1:ff00::/104.
24096  */
24097 # 680 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24098 /*
24099  * Macros to a) test for 6to4 IPv6 address, and b) to test if two
24100  * 6to4 addresses have the same /48 prefix, and, hence, are from the
24101  * same 6to4 site.
24102  */
24103 # 699 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24104 /*
24105  * IN6_IS_ADDR_LINKSCOPE
24106  * Identifies an address as being either link-local, link-local multicast or
24107  * node-local multicast.  All types of addresses are considered to be unique
24108  * within the scope of a given link.
24109  */
24110 
24111 
24112 
24113 
24114 /*
24115  * Useful utility macros for operations with IPv6 addresses
24116  * Note: These macros are NOT defined in the RFC2553 or any other
24117  * standard specification and are not standard macros that portable
24118  * applications should use.
24119  */
24120 
24121 /*
24122  * IN6_V4MAPPED_TO_INADDR
24123  * IN6_V4MAPPED_TO_IPADDR
24124  *	Assign a IPv4-Mapped IPv6 address to an IPv4 address.
24125  *	Note: These macros are NOT defined in RFC2553 or any other standard
24126  *	specification and are not macros that portable applications should
24127  *	use.
24128  *
24129  * void IN6_V4MAPPED_TO_INADDR(const in6_addr_t *v6, struct in_addr *v4);
24130  * void IN6_V4MAPPED_TO_IPADDR(const in6_addr_t *v6, ipaddr_t v4);
24131  *
24132  */
24133 
24134 
24135 
24136 
24137 
24138 /*
24139  * IN6_INADDR_TO_V4MAPPED
24140  * IN6_IPADDR_TO_V4MAPPED
24141  *	Assign a IPv4 address address to an IPv6 address as a IPv4-mapped
24142  *	address.
24143  *	Note: These macros are NOT defined in RFC2553 or any other standard
24144  *	specification and are not macros that portable applications should
24145  *	use.
24146  *
24147  * void IN6_INADDR_TO_V4MAPPED(const struct in_addr *v4, in6_addr_t *v6);
24148  * void IN6_IPADDR_TO_V4MAPPED(const ipaddr_t v4, in6_addr_t *v6);
24149  *
24150  */
24151 # 770 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24152 /*
24153  * IN6_6TO4_TO_V4ADDR
24154  *	Extract the embedded IPv4 address from the prefix to a 6to4 IPv6
24155  *      address.
24156  *	Note: This macro is NOT defined in RFC2553 or any other standard
24157  *	specification and is not a macro that portable applications should
24158  *	use.
24159  *	Note: we don't use the IPADDR form of the macro because we need
24160  *	to do a bytewise copy; the V4ADDR in the 6to4 address is not
24161  *	32-bit aligned.
24162  *
24163  * void IN6_6TO4_TO_V4ADDR(const in6_addr_t *v6, struct in_addr *v4);
24164  *
24165  */
24166 
24167 
24168 
24169 
24170 
24171 
24172 /*
24173  * IN6_V4ADDR_TO_6TO4
24174  *	Given an IPv4 address and an IPv6 address for output, a 6to4 address
24175  *	will be created from the IPv4 Address.
24176  *	Note:  This method for creating 6to4 addresses is not standardized
24177  *	outside of Solaris.  The newly created 6to4 address will be of the form
24178  *	2002:<V4ADDR>:<SUBNETID>::<HOSTID>, where SUBNETID will equal 0 and
24179  *	HOSTID will equal 1.
24180  *
24181  * void IN6_V4ADDR_TO_6TO4(const struct in_addr *v4, in6_addr_t *v6)
24182  *
24183  */
24184 # 828 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24185 /*
24186  * IN6_ARE_ADDR_EQUAL (defined in RFC2292)
24187  *	 Compares if IPv6 addresses are equal.
24188  * Note: Compares in order of high likelyhood of a miss so we minimize
24189  * compares. (Current heuristic order, compare in reverse order of
24190  * uint32_t units)
24191  *
24192  * bool  IN6_ARE_ADDR_EQUAL(const struct in6_addr *,
24193  *			    const struct in6_addr *);
24194  */
24195 
24196 
24197 
24198 
24199 
24200 
24201 /*
24202  * IN6_ARE_PREFIXEDADDR_EQUAL (not defined in RFCs)
24203  *	Compares if prefixed parts of IPv6 addresses are equal.
24204  *
24205  * uint32_t IN6_MASK_FROM_PREFIX(int, int);
24206  * bool     IN6_ARE_PREFIXEDADDR_EQUAL(const struct in6_addr *,
24207  *				       const struct in6_addr *,
24208  *				       int);
24209  */
24210 # 879 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24211 /*
24212  * Options for use with [gs]etsockopt at the IP level.
24213  *
24214  * Note: Some of the IP_ namespace has conflict with and
24215  * and is exposed through <xti.h>. (It also requires exposing
24216  * options not implemented). The options with potential
24217  * for conflicts use #ifndef guards.
24218  */
24219 # 919 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24220 /*
24221  * IP_PKTINFO and IP_RECVPKTINFO have same value. Size of argument passed in
24222  * is used to differentiate b/w the two.
24223  */
24224 
24225 
24226 
24227 
24228 
24229 /*
24230  * Different preferences that can be requested from IPSEC protocols.
24231  */
24232 
24233 
24234 
24235 
24236 /*
24237  * This can be used with the setsockopt() call to set per socket security
24238  * options. When the application uses per-socket API, we will reflect
24239  * the request on both outbound and inbound packets.
24240  */
24241 
24242 typedef struct ipsec_req {
24243  uint_t ipsr_ah_req; /* AH request */
24244  uint_t ipsr_esp_req; /* ESP request */
24245  uint_t ipsr_self_encap_req; /* Self-Encap request */
24246  uint8_t ipsr_auth_alg; /* Auth algs for AH */
24247  uint8_t ipsr_esp_alg; /* Encr algs for ESP */
24248  uint8_t ipsr_esp_auth_alg; /* Auth algs for ESP */
24249 } ipsec_req_t;
24250 
24251 /*
24252  * MCAST_* options are protocol-independent.  The actual definitions
24253  * are with the v6 options below; this comment is here to note the
24254  * namespace usage.
24255  *
24256  * #define	MCAST_JOIN_GROUP	0x29
24257  * #define	MCAST_LEAVE_GROUP	0x2a
24258  * #define	MCAST_BLOCK_SOURCE	0x2b
24259  * #define	MCAST_UNBLOCK_SOURCE	0x2c
24260  * #define	MCAST_JOIN_SOURCE_GROUP	0x2d
24261  * #define	MCAST_LEAVE_SOURCE_GROUP 0x2e
24262  */
24263 
24264 
24265 /*
24266  * SunOS private (potentially not portable) IP_ option names
24267  */
24268 
24269 
24270 
24271 /* can be reused		0x44 */
24272 
24273 
24274 /*
24275  * Option values and names (when !_XPG5) shared with <xti_inet.h>
24276  */
24277 # 988 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24278 /*
24279  * The following option values are reserved by <xti_inet.h>
24280  *
24281  * T_IP_OPTIONS	0x107	 -  IP per-packet options
24282  * T_IP_TOS	0x108	 -  IP per packet type of service
24283  */
24284 
24285 /*
24286  * Default value constants for multicast attributes controlled by
24287  * IP*_MULTICAST_LOOP and IP*_MULTICAST_{TTL,HOPS} options.
24288  */
24289 
24290 
24291 
24292 
24293 /*
24294  * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
24295  */
24296 struct ip_mreq {
24297  struct in_addr imr_multiaddr; /* IP multicast address of group */
24298  struct in_addr imr_interface; /* local IP address of interface */
24299 };
24300 
24301 /*
24302  * Argument structure for IP_BLOCK_SOURCE, IP_UNBLOCK_SOURCE,
24303  * IP_ADD_SOURCE_MEMBERSHIP, and IP_DROP_SOURCE_MEMBERSHIP.
24304  */
24305 struct ip_mreq_source {
24306  struct in_addr imr_multiaddr; /* IP address of group */
24307  struct in_addr imr_sourceaddr; /* IP address of source */
24308  struct in_addr imr_interface; /* IP address of interface */
24309 };
24310 
24311 /*
24312  * Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP on
24313  * IPv6 addresses.
24314  */
24315 struct ipv6_mreq {
24316  struct in6_addr ipv6mr_multiaddr; /* IPv6 multicast addr */
24317  unsigned int ipv6mr_interface; /* interface index */
24318 };
24319 
24320 /*
24321  * Use #pragma pack() construct to force 32-bit alignment on amd64.
24322  * This is needed to keep the structure size and offsets consistent
24323  * between a 32-bit app and the 64-bit amd64 kernel in structures
24324  * where 64-bit alignment would create gaps (in this case, structures
24325  * which have a uint32_t followed by a struct sockaddr_storage).
24326  */
24327 
24328 
24329 
24330 
24331 /*
24332  * Argument structure for MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP.
24333  */
24334 struct group_req {
24335  uint32_t gr_interface; /* interface index */
24336  struct sockaddr_storage gr_group; /* group address */
24337 };
24338 
24339 /*
24340  * Argument structure for MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE,
24341  * MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP.
24342  */
24343 struct group_source_req {
24344  uint32_t gsr_interface; /* interface index */
24345  struct sockaddr_storage gsr_group; /* group address */
24346  struct sockaddr_storage gsr_source; /* source address */
24347 };
24348 
24349 /*
24350  * Argument for SIOC[GS]MSFILTER ioctls
24351  */
24352 struct group_filter {
24353  uint32_t gf_interface; /* interface index */
24354  struct sockaddr_storage gf_group; /* multicast address */
24355  uint32_t gf_fmode; /* filter mode */
24356  uint32_t gf_numsrc; /* number of sources */
24357  struct sockaddr_storage gf_slist[1]; /* source address */
24358 };
24359 # 1078 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24360 /*
24361  * Argument for SIOC[GS]IPMSFILTER ioctls (IPv4-specific)
24362  */
24363 struct ip_msfilter {
24364  struct in_addr imsf_multiaddr; /* IP multicast address of group */
24365  struct in_addr imsf_interface; /* local IP address of interface */
24366  uint32_t imsf_fmode; /* filter mode */
24367  uint32_t imsf_numsrc; /* number of sources in src_list */
24368  struct in_addr imsf_slist[1]; /* start of source list */
24369 };
24370 
24371 
24372 
24373 
24374 
24375 /*
24376  * Multicast source filter manipulation functions in libsocket;
24377  * defined in RFC 3678.
24378  */
24379 int setsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, uint32_t,
24380    uint_t, struct sockaddr_storage *);
24381 
24382 int getsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, uint32_t *,
24383    uint_t *, struct sockaddr_storage *);
24384 
24385 int setipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t,
24386    uint32_t, struct in_addr *);
24387 
24388 int getipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t *,
24389    uint32_t *, struct in_addr *);
24390 
24391 /*
24392  * Definitions needed for [gs]etsourcefilter(), [gs]etipv4sourcefilter()
24393  */
24394 
24395 
24396 
24397 /*
24398  * Argument struct for IP_PKTINFO option
24399  */
24400 typedef struct in_pktinfo {
24401  unsigned int ipi_ifindex; /* send/recv interface index */
24402  struct in_addr ipi_spec_dst; /* matched source address */
24403  struct in_addr ipi_addr; /* src/dst address in IP hdr */
24404 } in_pktinfo_t;
24405 
24406 /*
24407  * Argument struct for IPV6_PKTINFO option
24408  */
24409 struct in6_pktinfo {
24410  struct in6_addr ipi6_addr; /* src/dst IPv6 address */
24411  unsigned int ipi6_ifindex; /* send/recv interface index */
24412 };
24413 
24414 /*
24415  * Argument struct for IPV6_MTUINFO option
24416  */
24417 struct ip6_mtuinfo {
24418  struct sockaddr_in6 ip6m_addr; /* dst address including zone ID */
24419  uint32_t ip6m_mtu; /* path MTU in host byte order */
24420 };
24421 
24422 /*
24423  * IPv6 routing header types
24424  */
24425 
24426 
24427 extern socklen_t inet6_rth_space(int type, int segments);
24428 extern void *inet6_rth_init(void *bp, socklen_t bp_len, int type, int segments);
24429 extern int inet6_rth_add(void *bp, const struct in6_addr *addr);
24430 extern int inet6_rth_reverse(const void *in, void *out);
24431 extern int inet6_rth_segments(const void *bp);
24432 extern struct in6_addr *inet6_rth_getaddr(const void *bp, int index);
24433 
24434 extern int inet6_opt_init(void *extbuf, socklen_t extlen);
24435 extern int inet6_opt_append(void *extbuf, socklen_t extlen, int offset,
24436  uint8_t type, socklen_t len, uint_t align, void **databufp);
24437 extern int inet6_opt_finish(void *extbuf, socklen_t extlen, int offset);
24438 extern int inet6_opt_set_val(void *databuf, int offset, void *val,
24439  socklen_t vallen);
24440 extern int inet6_opt_next(void *extbuf, socklen_t extlen, int offset,
24441  uint8_t *typep, socklen_t *lenp, void **databufp);
24442 extern int inet6_opt_find(void *extbufp, socklen_t extlen, int offset,
24443  uint8_t type, socklen_t *lenp, void **databufp);
24444 extern int inet6_opt_get_val(void *databuf, int offset, void *val,
24445  socklen_t vallen);
24446 
24447 
24448 /*
24449  * Argument structure for IP_ADD_PROXY_ADDR.
24450  * Note that this is an unstable, experimental interface. It may change
24451  * later. Don't use it unless you know what it is.
24452  */
24453 typedef struct {
24454  struct in_addr in_prefix_addr;
24455  unsigned int in_prefix_len;
24456 } in_prefix_t;
24457 
24458 
24459 
24460 /*
24461  * IPv6 options
24462  */
24463 
24464      /* packets. */
24465      /* argument type: uint_t */
24466 
24467      /* multicast packets. */
24468      /* argument type: struct in6_addr */
24469 
24470      /* multicast packets. */
24471      /* argument type: uint_t */
24472 
24473      /* multicast packets on same socket. */
24474      /* argument type: uint_t */
24475 
24476      /* argument type: struct ipv6_mreq */
24477 
24478      /* argument type: struct ipv6_mreq */
24479 
24480 /*
24481  * Other XPG6 constants.
24482  */
24483 
24484      /* decimal notation. */
24485 
24486      /* standard colon-hex notation. */
24487 
24488 
24489 
24490 
24491 
24492 /*
24493  * IPV6_ADD_MEMBERSHIP and IPV6_DROP_MEMBERSHIP are being kept
24494  * for backward compatibility. They have the same meaning as IPV6_JOIN_GROUP
24495  * and IPV6_LEAVE_GROUP respectively.
24496  */
24497 
24498      /* argument type: struct ipv6_mreq */
24499 
24500      /* argument type: struct ipv6_mreq */
24501 
24502 
24503      /* arg type: "struct in6_pktingo" - */
24504 
24505 
24506 
24507 
24508      /* the routing header */
24509 
24510 
24511      /* the routing header */
24512 
24513 
24514 
24515 
24516 /*
24517  * This options exists for backwards compatability and should no longer be
24518  * used.  Use IPV6_RECVDSTOPTS instead.
24519  */
24520 
24521 
24522 
24523 
24524 /*
24525  * enable/disable IPV6_RTHDRDSTOPTS.  Now obsolete.  IPV6_RECVDSTOPTS enables
24526  * the receipt of both headers.
24527  */
24528 # 1259 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24529 /*
24530  * enable/disable receipt of both both IPV6_DSTOPTS headers.
24531  */
24532 
24533 
24534 /*
24535  * protocol-independent multicast membership options.
24536  */
24537 
24538 
24539 
24540 
24541 
24542 
24543 
24544 /* 32Bit field for IPV6_SRC_PREFERENCES */
24545 # 1295 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h"
24546 /*
24547  * SunOS private (potentially not portable) IPV6_ option names
24548  */
24549 
24550 
24551      /* unspecified (all zeros) */
24552 
24553 /*
24554  * Miscellaneous IPv6 constants.
24555  */
24556 
24557 
24558 
24559 
24560 /*
24561  * Extern declarations for pre-defined global const variables
24562  */
24563 
24564 
24565 
24566 extern const struct in6_addr in6addr_any;
24567 extern const struct in6_addr in6addr_loopback;
24568 # 78 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
24569 
24570 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 1
24571 /*
24572  * CDDL HEADER START
24573  *
24574  * The contents of this file are subject to the terms of the
24575  * Common Development and Distribution License (the "License").
24576  * You may not use this file except in compliance with the License.
24577  *
24578  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24579  * or http://www.opensolaris.org/os/licensing.
24580  * See the License for the specific language governing permissions
24581  * and limitations under the License.
24582  *
24583  * When distributing Covered Code, include this CDDL HEADER in each
24584  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24585  * If applicable, add the following below this CDDL HEADER, with the
24586  * fields enclosed by brackets "[]" replaced with your own identifying
24587  * information: Portions Copyright [yyyy] [name of copyright owner]
24588  *
24589  * CDDL HEADER END
24590  */
24591 /*
24592  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24593  *
24594  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24595  */
24596 
24597 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
24598 /*	  All Rights Reserved	*/
24599 
24600 /*
24601  * University Copyright- Copyright (c) 1982, 1986, 1988
24602  * The Regents of the University of California
24603  * All Rights Reserved
24604  *
24605  * University Acknowledgment- Portions of this document are derived from
24606  * software developed by the University of California, Berkeley, and its
24607  * contributors.
24608  */
24609 
24610 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
24611 
24612 
24613 
24614 
24615 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
24616 /*
24617  * CDDL HEADER START
24618  *
24619  * The contents of this file are subject to the terms of the
24620  * Common Development and Distribution License (the "License").
24621  * You may not use this file except in compliance with the License.
24622  *
24623  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24624  * or http://www.opensolaris.org/os/licensing.
24625  * See the License for the specific language governing permissions
24626  * and limitations under the License.
24627  *
24628  * When distributing Covered Code, include this CDDL HEADER in each
24629  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24630  * If applicable, add the following below this CDDL HEADER, with the
24631  * fields enclosed by brackets "[]" replaced with your own identifying
24632  * information: Portions Copyright [yyyy] [name of copyright owner]
24633  *
24634  * CDDL HEADER END
24635  */
24636 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
24637 /*	  All Rights Reserved  	*/
24638 
24639 
24640 /*
24641  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24642  * Use is subject to license terms.
24643  *
24644  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24645  * Copyright 2016 Joyent, Inc.
24646  */
24647 # 46 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
24648 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h" 1
24649 /*
24650  * CDDL HEADER START
24651  *
24652  * The contents of this file are subject to the terms of the
24653  * Common Development and Distribution License (the "License").
24654  * You may not use this file except in compliance with the License.
24655  *
24656  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24657  * or http://www.opensolaris.org/os/licensing.
24658  * See the License for the specific language governing permissions
24659  * and limitations under the License.
24660  *
24661  * When distributing Covered Code, include this CDDL HEADER in each
24662  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24663  * If applicable, add the following below this CDDL HEADER, with the
24664  * fields enclosed by brackets "[]" replaced with your own identifying
24665  * information: Portions Copyright [yyyy] [name of copyright owner]
24666  *
24667  * CDDL HEADER END
24668  */
24669 /*
24670  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24671  *
24672  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
24673  * Use is subject to license terms.
24674  *
24675  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24676  * Copyright (c) 2015, Joyent, Inc.  All rights reserved.
24677  */
24678 
24679 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
24680 /*	  All Rights Reserved  	*/
24681 
24682 /*
24683  * University Copyright- Copyright (c) 1982, 1986, 1988
24684  * The Regents of the University of California
24685  * All Rights Reserved
24686  *
24687  * University Acknowledgment- Portions of this document are derived from
24688  * software developed by the University of California, Berkeley, and its
24689  * contributors.
24690  */
24691 
24692 
24693 
24694 
24695 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
24696 /*
24697  * CDDL HEADER START
24698  *
24699  * The contents of this file are subject to the terms of the
24700  * Common Development and Distribution License (the "License").
24701  * You may not use this file except in compliance with the License.
24702  *
24703  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24704  * or http://www.opensolaris.org/os/licensing.
24705  * See the License for the specific language governing permissions
24706  * and limitations under the License.
24707  *
24708  * When distributing Covered Code, include this CDDL HEADER in each
24709  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24710  * If applicable, add the following below this CDDL HEADER, with the
24711  * fields enclosed by brackets "[]" replaced with your own identifying
24712  * information: Portions Copyright [yyyy] [name of copyright owner]
24713  *
24714  * CDDL HEADER END
24715  */
24716 
24717 /*
24718  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
24719  * Copyright 2016 Joyent, Inc.
24720  *
24721  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24722  * Use is subject to license terms.
24723  */
24724 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h" 2
24725 
24726 
24727 
24728 
24729 
24730 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
24731 /*
24732  * CDDL HEADER START
24733  *
24734  * The contents of this file are subject to the terms of the
24735  * Common Development and Distribution License (the "License").
24736  * You may not use this file except in compliance with the License.
24737  *
24738  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24739  * or http://www.opensolaris.org/os/licensing.
24740  * See the License for the specific language governing permissions
24741  * and limitations under the License.
24742  *
24743  * When distributing Covered Code, include this CDDL HEADER in each
24744  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24745  * If applicable, add the following below this CDDL HEADER, with the
24746  * fields enclosed by brackets "[]" replaced with your own identifying
24747  * information: Portions Copyright [yyyy] [name of copyright owner]
24748  *
24749  * CDDL HEADER END
24750  */
24751 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
24752 /*	  All Rights Reserved  	*/
24753 
24754 
24755 /*
24756  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24757  * Use is subject to license terms.
24758  *
24759  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24760  * Copyright 2016 Joyent, Inc.
24761  */
24762 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h" 2
24763 
24764 /*
24765  * I/O parameter information.  A uio structure describes the I/O which
24766  * is to be performed by an operation.  Typically the data movement will
24767  * be performed by a routine such as uiomove(), which updates the uio
24768  * structure to reflect what was done.
24769  */
24770 
24771 
24772 
24773 
24774 
24775 
24776 
24777 typedef struct iovec {
24778  caddr_t iov_base;
24779 
24780 
24781 
24782  long iov_len;
24783 
24784 } iovec_t;
24785 # 90 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24786 /*
24787  * Segment flag values.
24788  */
24789 typedef enum uio_seg { UIO_USERSPACE, UIO_SYSSPACE, UIO_USERISPACE } uio_seg_t;
24790 
24791 typedef struct uio {
24792  iovec_t *uio_iov; /* pointer to array of iovecs */
24793  int uio_iovcnt; /* number of iovecs */
24794  lloff_t _uio_offset; /* file offset */
24795  uio_seg_t uio_segflg; /* address space (kernel or user) */
24796  uint16_t uio_fmode; /* file mode flags */
24797  uint16_t uio_extflg; /* extended flags */
24798  lloff_t _uio_limit; /* u-limit (maximum byte offset) */
24799  ssize_t uio_resid; /* residual count */
24800 } uio_t;
24801 
24802 /*
24803  * Extended uio_t uioa_t used for asynchronous uio.
24804  *
24805  * Note: UIOA_IOV_MAX is defined and used as it is in "fs/vncalls.c"
24806  *	 as there isn't a formal definition of IOV_MAX for the kernel.
24807  */
24808 
24809 
24810 typedef struct uioa_page_s { /* locked uio_iov state */
24811  int uioa_pfncnt; /* count of pfn_t(s) in *uioa_ppp */
24812  void **uioa_ppp; /* page_t or pfn_t arrary */
24813  caddr_t uioa_base; /* address base */
24814  size_t uioa_len; /* span length */
24815 } uioa_page_t;
24816 
24817 typedef struct uioa_s {
24818  iovec_t *uio_iov; /* pointer to array of iovecs */
24819  int uio_iovcnt; /* number of iovecs */
24820  lloff_t _uio_offset; /* file offset */
24821  uio_seg_t uio_segflg; /* address space (kernel or user) */
24822  uint16_t uio_fmode; /* file mode flags */
24823  uint16_t uio_extflg; /* extended flags */
24824  lloff_t _uio_limit; /* u-limit (maximum byte offset) */
24825  ssize_t uio_resid; /* residual count */
24826  /*
24827 	 * uioa extended members.
24828 	 */
24829  uint32_t uioa_state; /* state of asynch i/o */
24830  ssize_t uioa_mbytes; /* bytes that have been uioamove()ed */
24831  uioa_page_t *uioa_lcur; /* pointer into uioa_locked[] */
24832  void **uioa_lppp; /* pointer into lcur->uioa_ppp[] */
24833  void *uioa_hwst[4]; /* opaque hardware state */
24834  uioa_page_t uioa_locked[16]; /* Per iov locked pages */
24835 } uioa_t;
24836 
24837 /*
24838  * uio extensions
24839  *
24840  * PSARC 2009/478: Copy Reduction Interfaces
24841  */
24842 typedef enum xuio_type {
24843  UIOTYPE_ASYNCIO,
24844  UIOTYPE_ZEROCOPY
24845 } xuio_type_t;
24846 
24847 typedef struct xuio {
24848  uio_t xu_uio; /* Embedded UIO structure */
24849 
24850  /* Extended uio fields */
24851  enum xuio_type xu_type; /* What kind of uio structure? */
24852  union {
24853   /* Async I/O Support, intend to replace uioa_t. */
24854   struct {
24855    uint32_t xu_a_state; /* state of async i/o */
24856    /* bytes that have been uioamove()ed */
24857    ssize_t xu_a_mbytes;
24858    uioa_page_t *xu_a_lcur; /* pointer into uioa_locked[] */
24859    /* pointer into lcur->uioa_ppp[] */
24860    void **xu_a_lppp;
24861    void *xu_a_hwst[4]; /* opaque hardware state */
24862    /* Per iov locked pages */
24863    uioa_page_t xu_a_locked[16];
24864   } xu_aio;
24865 
24866   /*
24867 		 * Copy Reduction Support -- facilate loaning / returning of
24868 		 * filesystem cache buffers.
24869 		 */
24870   struct {
24871    int xu_zc_rw; /* read or write buffer */
24872    void *xu_zc_priv; /* fs specific */
24873   } xu_zc;
24874  } xu_ext;
24875 } xuio_t;
24876 # 207 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24877 /*
24878  * I/O direction.
24879  */
24880 typedef enum uio_rw { UIO_READ, UIO_WRITE } uio_rw_t;
24881 
24882 /*
24883  * uio_extflg: extended flags
24884  *
24885  * NOTE: This flag will be used in uiomove to determine if non-temporal
24886  * access, ie, access bypassing caches, should be used.  Filesystems that
24887  * don't initialize this field could experience suboptimal performance due to
24888  * the random data the field contains.
24889  *
24890  * NOTE: This flag is also used by uioasync callers to pass an extended
24891  * uio_t (uioa_t), to uioasync enabled consumers. Unlike above all
24892  * consumers of a uioa_t require the uio_extflg to be initialized.
24893  */
24894 
24895 
24896 
24897 
24898 
24899 
24900 /*
24901  * Global uioasync capability shadow state.
24902  */
24903 typedef struct uioasync_s {
24904  boolean_t enabled; /* Is uioasync enabled? */
24905  size_t mincnt; /* Minimum byte count for use of */
24906 } uioasync_t;
24907 # 257 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24908 extern ssize_t readv(int, const struct iovec *, int);
24909 extern ssize_t writev(int, const struct iovec *, int);
24910 
24911 /*
24912  * When in the large file compilation environment,
24913  * map preadv/pwritev to their 64 bit offset versions
24914  */
24915 
24916 
24917 
24918 # 266 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24919 #pragma redefine_extname preadv preadv64
24920 # 266 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24921 
24922 
24923 # 267 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24924 #pragma redefine_extname pwritev pwritev64
24925 # 267 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24926 
24927 
24928 
24929 
24930 
24931 
24932 
24933 /* In the LP64 compilation environment, the APIs are already large file */
24934 # 285 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/uio.h"
24935 extern ssize_t preadv(int, const struct iovec *, int, off_t);
24936 extern ssize_t pwritev(int, const struct iovec *, int, off_t);
24937 
24938 /*
24939  * preadv64 and pwritev64 should be defined when:
24940  * - Using the transitional compilation environment, and not
24941  *     the large file compilation environment.
24942  */
24943 
24944 
24945 extern ssize_t preadv64(int, const struct iovec *, int, off64_t);
24946 extern ssize_t pwritev64(int, const struct iovec *, int, off64_t);
24947 # 47 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
24948 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
24949 /*
24950  * CDDL HEADER START
24951  *
24952  * The contents of this file are subject to the terms of the
24953  * Common Development and Distribution License (the "License").
24954  * You may not use this file except in compliance with the License.
24955  *
24956  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24957  * or http://www.opensolaris.org/os/licensing.
24958  * See the License for the specific language governing permissions
24959  * and limitations under the License.
24960  *
24961  * When distributing Covered Code, include this CDDL HEADER in each
24962  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24963  * If applicable, add the following below this CDDL HEADER, with the
24964  * fields enclosed by brackets "[]" replaced with your own identifying
24965  * information: Portions Copyright [yyyy] [name of copyright owner]
24966  *
24967  * CDDL HEADER END
24968  */
24969 
24970 /*
24971  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
24972  * Copyright 2016 Joyent, Inc.
24973  *
24974  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24975  * Use is subject to license terms.
24976  */
24977 # 48 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
24978 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket_impl.h" 1
24979 /*
24980  * CDDL HEADER START
24981  *
24982  * The contents of this file are subject to the terms of the
24983  * Common Development and Distribution License (the "License").
24984  * You may not use this file except in compliance with the License.
24985  *
24986  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
24987  * or http://www.opensolaris.org/os/licensing.
24988  * See the License for the specific language governing permissions
24989  * and limitations under the License.
24990  *
24991  * When distributing Covered Code, include this CDDL HEADER in each
24992  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
24993  * If applicable, add the following below this CDDL HEADER, with the
24994  * fields enclosed by brackets "[]" replaced with your own identifying
24995  * information: Portions Copyright [yyyy] [name of copyright owner]
24996  *
24997  * CDDL HEADER END
24998  */
24999 /*
25000  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25001  * Use is subject to license terms.
25002  */
25003 
25004 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
25005 /*	  All Rights Reserved	*/
25006 
25007 /*
25008  * Portions of this source code were derived from Berkeley 4.3 BSD
25009  * under license from the Regents of the University of California.
25010  */
25011 # 49 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25012 
25013 
25014 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/netconfig.h" 1
25015 /*
25016  * CDDL HEADER START
25017  *
25018  * The contents of this file are subject to the terms of the
25019  * Common Development and Distribution License, Version 1.0 only
25020  * (the "License").  You may not use this file except in compliance
25021  * with the License.
25022  *
25023  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25024  * or http://www.opensolaris.org/os/licensing.
25025  * See the License for the specific language governing permissions
25026  * and limitations under the License.
25027  *
25028  * When distributing Covered Code, include this CDDL HEADER in each
25029  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25030  * If applicable, add the following below this CDDL HEADER, with the
25031  * fields enclosed by brackets "[]" replaced with your own identifying
25032  * information: Portions Copyright [yyyy] [name of copyright owner]
25033  *
25034  * CDDL HEADER END
25035  */
25036 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
25037 /*	  All Rights Reserved  	*/
25038 
25039 
25040 /*
25041  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
25042  *
25043  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
25044  * Use is subject to license terms.
25045  */
25046 # 43 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/netconfig.h"
25047 struct netconfig {
25048  char *nc_netid; /* network identifier		*/
25049  unsigned int nc_semantics; /* defined below		*/
25050  unsigned int nc_flag; /* defined below		*/
25051  char *nc_protofmly; /* protocol family name		*/
25052  char *nc_proto; /* protocol name		*/
25053  char *nc_device; /* device name for network id	*/
25054  unsigned int nc_nlookups; /* # of entries in nc_lookups	*/
25055  char **nc_lookups; /* list of lookup directories	*/
25056  unsigned int nc_unused[8]; /* borrowed for lockd etc.	*/
25057 };
25058 
25059 typedef struct {
25060  struct netconfig **nc_head;
25061  struct netconfig **nc_curr;
25062 } NCONF_HANDLE;
25063 
25064 /*
25065  *	Values of nc_semantics
25066  */
25067 
25068 
25069 
25070 
25071 
25072 /*
25073  * NOT FOR PUBLIC USE, Solaris internal only.
25074  * This value of nc_semantics is strictly for use of Remote Direct
25075  * Memory Access provider interfaces in Solaris only and not for
25076  * general use. Do not use this value for general purpose user or
25077  * kernel programming. If used the behavior is undefined.
25078  * This is a PRIVATE interface to be used by Solaris kRPC only.
25079  */
25080 
25081 
25082 /*
25083  *	Values of nc_flag
25084  */
25085 
25086 
25087 
25088 
25089 
25090 /*
25091  *	Values of nc_protofmly
25092  */
25093 # 114 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/netconfig.h"
25094 /*
25095  * NOT FOR PUBLIC USE, Solaris internal only.
25096  * This value of nc_semantics is strictly for use of Remote Direct
25097  * Memory Access provider interfaces in Solaris only and not for
25098  * general use. Do not use this value for general purpose user or
25099  * kernel programming. If used the behavior is undefined.
25100  * This is a PRIVATE interface to be used by Solaris kRPC only.
25101  */
25102 
25103 
25104 /*
25105  *	Values for nc_proto
25106  */
25107 
25108 
25109 
25110 
25111 
25112 
25113 /*
25114  * 	Values for nc_proto for "rdma" protofmly
25115  */
25116 
25117 
25118 
25119 
25120 extern void *setnetconfig(void);
25121 extern int endnetconfig(void *);
25122 extern struct netconfig *getnetconfig(void *);
25123 extern struct netconfig *getnetconfigent(const char *);
25124 extern void freenetconfigent(struct netconfig *);
25125 extern void *setnetpath(void);
25126 extern int endnetpath(void *);
25127 extern struct netconfig *getnetpath(void *);
25128 extern void nc_perror(const char *);
25129 extern char *nc_sperror(void);
25130 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25131 
25132 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netinet/in.h" 1
25133 /*
25134  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25135  * Use is subject to license terms.
25136  *
25137  * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
25138  */
25139 /*
25140  * Copyright (c) 1982, 1986 Regents of the University of California.
25141  * All rights reserved.
25142  *
25143  * Redistribution and use in source and binary forms are permitted
25144  * provided that this notice is preserved and that due credit is given
25145  * to the University of California at Berkeley. The name of the University
25146  * may not be used to endorse or promote products derived from this
25147  * software without specific prior written permission. This software
25148  * is provided ``as is'' without express or implied warranty.
25149  */
25150 
25151 /*
25152  * Constants and structures defined by the internet system,
25153  * according to following documents
25154  *
25155  * Internet ASSIGNED NUMBERS (RFC1700) and its successors:
25156  *	http://www.iana.org/assignments/protocol-numbers
25157  *	http://www.iana.org/assignments/port-numbers
25158  * Basic Socket Interface Extensions for IPv6 (RFC2133 and its successors)
25159  *
25160  */
25161 # 54 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h" 2
25162 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25163 /*
25164  * Definitions related to sockets: types, address families, options.
25165  */
25166 # 94 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25167 /*
25168  * Types
25169  */
25170 # 110 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25171 /*
25172  * Flags for socket() and accept4()
25173  */
25174 
25175 
25176 
25177 
25178 /*
25179  * Option flags per-socket.
25180  */
25181 # 132 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25182 /*
25183  * Socket options are passed using a signed integer, but it is also rare
25184  * for more than one to ever be passed at the same time with setsockopt
25185  * and only one at a time can be retrieved with getsockopt.
25186  *
25187  * Since the lower numbers cannot be renumbered for compatibility reasons,
25188  * it would seem that we need to start a new number space (0x40000000 -
25189  * 0x7fffffff) for those that don't need to be stored as a bit flag
25190  * somewhere. This limits the flag options to 30 but that seems to be
25191  * plenty, anyway. 0x40000000 is reserved for future use.
25192  */
25193 # 159 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25194 /*
25195  * N.B.: The following definition is present only for compatibility
25196  * with release 3.0.  It will disappear in later releases.
25197  */
25198 
25199 
25200 /*
25201  * Additional options, not kept in so_options.
25202  */
25203 # 183 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25204 /* "Socket"-level control message types: */
25205 # 200 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25206 /*
25207  * Socket filter options
25208  */
25209 
25210 
25211 
25212 
25213 
25214 /*
25215  * Structure returned by FIL_LIST
25216  */
25217 struct fil_info {
25218  int fi_flags; /* see below (FILF_*) */
25219  int fi_pos; /* position (0 is bottom) */
25220  char fi_name[32]; /* filter name */
25221 };
25222 # 237 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25223 /*
25224  * Structure used for manipulating linger option.
25225  */
25226 struct linger {
25227  int l_onoff; /* option on/off */
25228  int l_linger; /* linger time */
25229 };
25230 
25231 /*
25232  * Levels for (get/set)sockopt() that don't apply to a specific protocol.
25233  */
25234 
25235 
25236 
25237 
25238 
25239 
25240 
25241 /*
25242  * Address families.
25243  *
25244  * Some of these constant names are copied for the DTrace IP provider in
25245  * usr/src/lib/libdtrace/common/{ip.d.in, ip.sed.in}, which should be kept
25246  * in sync.
25247  */
25248 # 300 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25249 /*
25250  * Protocol families, same as address families for now.
25251  */
25252 # 341 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25253 /*
25254  * Maximum queue length specifiable by listen.
25255  */
25256 
25257 
25258 /*
25259  * Message header for recvmsg and sendmsg calls.
25260  */
25261 struct msghdr {
25262  void *msg_name; /* optional address */
25263  socklen_t msg_namelen; /* size of address */
25264  struct iovec *msg_iov; /* scatter/gather array */
25265  int msg_iovlen; /* # elements in msg_iov */
25266 
25267 
25268 
25269 
25270 
25271 
25272  caddr_t msg_accrights; /* access rights sent/received */
25273  int msg_accrightslen;
25274 
25275 };
25276 # 412 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25277 /* Added for XPGv2 compliance */
25278 
25279 
25280 
25281 
25282 
25283      /* with left over data */
25284 /* End of XPGv2 compliance */
25285 # 438 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25286 /* Added for XPGv2 compliance */
25287 
25288 
25289 
25290 
25291 struct cmsghdr {
25292  socklen_t cmsg_len; /* data byte count, including hdr */
25293  int cmsg_level; /* originating protocol */
25294  int cmsg_type; /* protocol-specific type */
25295 };
25296 # 528 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/socket.h"
25297 extern int accept(int, struct sockaddr *, Psocklen_t);
25298 extern int accept4(int, struct sockaddr *, Psocklen_t, int);
25299 extern int bind(int, const struct sockaddr *, socklen_t);
25300 extern int connect(int, const struct sockaddr *, socklen_t);
25301 extern int getpeername(int, struct sockaddr *, Psocklen_t);
25302 extern int getsockname(int, struct sockaddr *, Psocklen_t);
25303 extern int getsockopt(int, int, int, void *, Psocklen_t);
25304 extern int listen(int, int); /* XXX - fixme???  where do I go */
25305 extern int socketpair(int, int, int, int *);
25306 extern ssize_t recv(int, void *, size_t, int);
25307 extern ssize_t recvfrom(int, void *, size_t, int,
25308  struct sockaddr *, Psocklen_t);
25309 extern ssize_t recvmsg(int, struct msghdr *, int);
25310 extern ssize_t send(int, const void *, size_t, int);
25311 extern ssize_t sendmsg(int, const struct msghdr *, int);
25312 extern ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *,
25313  socklen_t);
25314 extern int setsockopt(int, int, int, const void *, socklen_t);
25315 extern int shutdown(int, int);
25316 extern int socket(int, int, int);
25317 
25318 
25319 extern int sockatmark(int);
25320 # 80 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
25321 
25322 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/feature_tests.h" 1
25323 /*
25324  * CDDL HEADER START
25325  *
25326  * The contents of this file are subject to the terms of the
25327  * Common Development and Distribution License (the "License").
25328  * You may not use this file except in compliance with the License.
25329  *
25330  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25331  * or http://www.opensolaris.org/os/licensing.
25332  * See the License for the specific language governing permissions
25333  * and limitations under the License.
25334  *
25335  * When distributing Covered Code, include this CDDL HEADER in each
25336  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25337  * If applicable, add the following below this CDDL HEADER, with the
25338  * fields enclosed by brackets "[]" replaced with your own identifying
25339  * information: Portions Copyright [yyyy] [name of copyright owner]
25340  *
25341  * CDDL HEADER END
25342  */
25343 
25344 /*
25345  * Copyright 2013 Garrett D'Amore <garrett@damore.org>
25346  * Copyright 2016 Joyent, Inc.
25347  *
25348  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25349  * Use is subject to license terms.
25350  */
25351 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h" 2
25352 # 96 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25353 struct hostent {
25354  char *h_name; /* official name of host */
25355  char **h_aliases; /* alias list */
25356  int h_addrtype; /* host address type */
25357  int h_length; /* length of address */
25358  char **h_addr_list; /* list of addresses from name server */
25359 
25360 };
25361 
25362 
25363 /*
25364  * addrinfo introduced with IPv6 for Protocol-Independent Hostname
25365  * and Service Name Translation.
25366  */
25367 
25368 
25369 struct addrinfo {
25370  int ai_flags; /* AI_PASSIVE, AI_CANONNAME, ... */
25371  int ai_family; /* PF_xxx */
25372  int ai_socktype; /* SOCK_xxx */
25373  int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
25374 
25375 
25376 
25377  socklen_t ai_addrlen;
25378  char *ai_canonname; /* canonical name for hostname */
25379  struct sockaddr *ai_addr; /* binary address */
25380  struct addrinfo *ai_next; /* next structure in linked list */
25381 };
25382 
25383 /*
25384  * The flag 0x8000 is currently reserved for private use between libnsl and
25385  * libsocket. See lib/libsocket/inet/getaddrinfo.c for more information.
25386  */
25387 /* addrinfo flags */
25388 
25389 
25390 
25391 
25392 
25393 /* getipnodebyname() flags */
25394 
25395 
25396 
25397 
25398 
25399 /*
25400  * These were defined in RFC 2553 but not SUSv3
25401  * or RFC 3493 which obsoleted 2553.
25402  */
25403 
25404 
25405 
25406 /* addrinfo errors */
25407 # 166 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25408 /* getnameinfo flags */
25409 
25410 
25411 
25412 
25413 
25414 
25415 
25416 /* Not listed in any standards document */
25417 
25418 
25419 
25420 /* getnameinfo max sizes as defined in RFC 2553 obsoleted in RFC 3493 */
25421 
25422 
25423 
25424 
25425 
25426 /*
25427  * Scope delimit character
25428  */
25429 
25430 
25431 
25432 /*
25433  * Algorithm entry for /etc/inet/ipsecalgs which defines IPsec protocols
25434  * and algorithms.
25435  */
25436 
25437 typedef struct ipsecalgent {
25438  char **a_names; /* algorithm names */
25439  int a_proto_num; /* protocol number */
25440  int a_alg_num; /* algorithm number */
25441  char *a_mech_name; /* encryption framework mechanism name */
25442  int *a_block_sizes; /* supported block sizes */
25443  int *a_key_sizes; /* supported key sizes */
25444  int a_key_increment; /* key size increment */
25445  int *a_mech_params; /* mechanism specific parameters */
25446  int a_alg_flags; /* algorithm flags */
25447 } ipsecalgent_t;
25448 
25449 /* well-known IPsec protocol numbers */
25450 
25451 
25452 
25453 
25454 
25455 /*
25456  * Assumption here is that a network number
25457  * fits in 32 bits -- probably a poor one.
25458  */
25459 struct netent {
25460  char *n_name; /* official name of net */
25461  char **n_aliases; /* alias list */
25462  int n_addrtype; /* net address type */
25463  in_addr_t n_net; /* network # */
25464 };
25465 
25466 struct protoent {
25467  char *p_name; /* official protocol name */
25468  char **p_aliases; /* alias list */
25469  int p_proto; /* protocol # */
25470 };
25471 
25472 struct servent {
25473  char *s_name; /* official service name */
25474  char **s_aliases; /* alias list */
25475  int s_port; /* port # */
25476  char *s_proto; /* protocol to use */
25477 };
25478 
25479 
25480 struct hostent *gethostbyname_r
25481  (const char *, struct hostent *, char *, int, int *h_errnop);
25482 struct hostent *gethostbyaddr_r
25483  (const char *, int, int, struct hostent *, char *, int, int *h_errnop);
25484 struct hostent *getipnodebyname(const char *, int, int, int *);
25485 struct hostent *getipnodebyaddr(const void *, size_t, int, int *);
25486 void freehostent(struct hostent *);
25487 struct hostent *gethostent_r(struct hostent *, char *, int, int *h_errnop);
25488 
25489 struct servent *getservbyname_r
25490  (const char *name, const char *, struct servent *, char *, int);
25491 struct servent *getservbyport_r
25492  (int port, const char *, struct servent *, char *, int);
25493 struct servent *getservent_r(struct servent *, char *, int);
25494 
25495 struct netent *getnetbyname_r
25496  (const char *, struct netent *, char *, int);
25497 struct netent *getnetbyaddr_r(long, int, struct netent *, char *, int);
25498 struct netent *getnetent_r(struct netent *, char *, int);
25499 
25500 struct protoent *getprotobyname_r
25501  (const char *, struct protoent *, char *, int);
25502 struct protoent *getprotobynumber_r
25503  (int, struct protoent *, char *, int);
25504 struct protoent *getprotoent_r(struct protoent *, char *, int);
25505 
25506 int getnetgrent_r(char **, char **, char **, char *, int);
25507 int innetgr(const char *, const char *, const char *, const char *);
25508 
25509 
25510 /* Old interfaces that return a pointer to a static area;  MT-unsafe */
25511 struct hostent *gethostbyname(const char *);
25512 struct hostent *gethostent(void);
25513 struct netent *getnetbyaddr(in_addr_t, int);
25514 struct netent *getnetbyname(const char *);
25515 struct netent *getnetent(void);
25516 struct protoent *getprotobyname(const char *);
25517 struct protoent *getprotobynumber(int);
25518 struct protoent *getprotoent(void);
25519 struct servent *getservbyname(const char *, const char *);
25520 struct servent *getservbyport(int, const char *);
25521 struct servent *getservent(void);
25522 
25523 /* gethostbyaddr() second argument is a size_t only in unix95/unix98 */
25524 
25525 struct hostent *gethostbyaddr(const void *, socklen_t, int);
25526 
25527 
25528 
25529 
25530 
25531 int endhostent(void);
25532 int endnetent(void);
25533 int endprotoent(void);
25534 int endservent(void);
25535 int sethostent(int);
25536 int setnetent(int);
25537 int setprotoent(int);
25538 int setservent(int);
25539 # 318 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25540 int getaddrinfo(const char *,
25541    const char *,
25542    const struct addrinfo *,
25543    struct addrinfo **);
25544 void freeaddrinfo(struct addrinfo *);
25545 const char *gai_strerror(int);
25546 int getnameinfo(const struct sockaddr *,
25547    socklen_t, char *, socklen_t,
25548    char *, socklen_t, int);
25549 
25550 
25551 
25552 int getnetgrent(char **, char **, char **);
25553 int setnetgrent(const char *);
25554 int endnetgrent(void);
25555 int rcmd(char **, unsigned short,
25556  const char *, const char *, const char *, int *);
25557 int rcmd_af(char **, unsigned short,
25558  const char *, const char *, const char *, int *, int);
25559 int rresvport_af(int *, int);
25560 int rresvport_addr(int *, struct sockaddr_storage *);
25561 int rexec(char **, unsigned short,
25562  const char *, const char *, const char *, int *);
25563 int rexec_af(char **, unsigned short,
25564  const char *, const char *, const char *, int *, int);
25565 int rresvport(int *);
25566 int ruserok(const char *, int, const char *, const char *);
25567 /* BIND */
25568 struct hostent *gethostbyname2(const char *, int);
25569 void herror(const char *);
25570 const char *hstrerror(int);
25571 /* End BIND */
25572 
25573 /* IPsec algorithm prototype definitions */
25574 struct ipsecalgent *getipsecalgbyname(const char *, int, int *);
25575 struct ipsecalgent *getipsecalgbynum(int, int, int *);
25576 int getipsecprotobyname(const char *doi_name);
25577 char *getipsecprotobynum(int doi_domain);
25578 void freeipsecalgent(struct ipsecalgent *ptr);
25579 /* END IPsec algorithm prototype definitions */
25580 
25581 
25582 
25583 /*
25584  * Error return codes from gethostbyname() and gethostbyaddr()
25585  * (when using the resolver)
25586  */
25587 
25588 extern int h_errno;
25589 # 377 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25590 /*
25591  * Error return codes from gethostbyname() and gethostbyaddr()
25592  * (left in extern int h_errno).
25593  */
25594 # 389 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/netdb.h"
25595 /* BIND */
25596 
25597 
25598 /* End BIND */
25599 # 46 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
25600 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 1
25601 /*
25602  * CDDL HEADER START
25603  *
25604  * The contents of this file are subject to the terms of the
25605  * Common Development and Distribution License, Version 1.0 only
25606  * (the "License").  You may not use this file except in compliance
25607  * with the License.
25608  *
25609  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25610  * or http://www.opensolaris.org/os/licensing.
25611  * See the License for the specific language governing permissions
25612  * and limitations under the License.
25613  *
25614  * When distributing Covered Code, include this CDDL HEADER in each
25615  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25616  * If applicable, add the following below this CDDL HEADER, with the
25617  * fields enclosed by brackets "[]" replaced with your own identifying
25618  * information: Portions Copyright [yyyy] [name of copyright owner]
25619  *
25620  * CDDL HEADER END
25621  */
25622 /*
25623  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25624  * Use is subject to license terms.
25625  */
25626 
25627 
25628 
25629 
25630 #pragma ident "%Z%%M%	%I%	%E% SMI"
25631 
25632 
25633 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/types.h" 1
25634 /*
25635  * CDDL HEADER START
25636  *
25637  * The contents of this file are subject to the terms of the
25638  * Common Development and Distribution License (the "License").
25639  * You may not use this file except in compliance with the License.
25640  *
25641  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25642  * or http://www.opensolaris.org/os/licensing.
25643  * See the License for the specific language governing permissions
25644  * and limitations under the License.
25645  *
25646  * When distributing Covered Code, include this CDDL HEADER in each
25647  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25648  * If applicable, add the following below this CDDL HEADER, with the
25649  * fields enclosed by brackets "[]" replaced with your own identifying
25650  * information: Portions Copyright [yyyy] [name of copyright owner]
25651  *
25652  * CDDL HEADER END
25653  */
25654 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
25655 /*	  All Rights Reserved  	*/
25656 
25657 
25658 /*
25659  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25660  * Use is subject to license terms.
25661  *
25662  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
25663  * Copyright 2016 Joyent, Inc.
25664  */
25665 # 34 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 2
25666 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h" 1
25667 /*
25668  * CDDL HEADER START
25669  *
25670  * The contents of this file are subject to the terms of the
25671  * Common Development and Distribution License, Version 1.0 only
25672  * (the "License").  You may not use this file except in compliance
25673  * with the License.
25674  *
25675  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25676  * or http://www.opensolaris.org/os/licensing.
25677  * See the License for the specific language governing permissions
25678  * and limitations under the License.
25679  *
25680  * When distributing Covered Code, include this CDDL HEADER in each
25681  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25682  * If applicable, add the following below this CDDL HEADER, with the
25683  * fields enclosed by brackets "[]" replaced with your own identifying
25684  * information: Portions Copyright [yyyy] [name of copyright owner]
25685  *
25686  * CDDL HEADER END
25687  */
25688 /*
25689  * Copyright 2000 Sun Microsystems, Inc.  All rights reserved.
25690  * Use is subject to license terms.
25691  */
25692 
25693 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
25694 /*	  All Rights Reserved  	*/
25695 
25696 /*
25697  * University Copyright- Copyright (c) 1982, 1986, 1988
25698  * The Regents of the University of California
25699  * All Rights Reserved
25700  *
25701  * University Acknowledgment- Portions of this document are derived from
25702  * software developed by the University of California, Berkeley, and its
25703  * contributors.
25704  */
25705 
25706 
25707 
25708 
25709 #pragma ident "%Z%%M%	%I%	%E% SMI"
25710 
25711 
25712 
25713 
25714 
25715 /*
25716  * Error codes
25717  */
25718 # 102 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25719 /* Filesystem Quotas */
25720 
25721 
25722 /* Convergent Error Returns */
25723 # 116 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25724 /* Interprocess Robust Locks */
25725 
25726 
25727 
25728 /* stream problems */
25729 # 136 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25730 /* Interprocess Robust Locks */
25731 # 148 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25732 /* shared library problems */
25733 # 162 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25734 /* BSD Networking Software */
25735  /* argument errors */
25736 # 174 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25737     /* protocol family */
25738 
25739 
25740  /* operational errors */
25741 
25742 
25743 
25744     /* of reset */
25745 
25746 
25747 
25748 
25749 
25750 /* XENIX has 135 - 142 */
25751 # 198 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/errno.h"
25752 /* SUN Network File System */
25753 # 35 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 2
25754 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/parseURL.h" 1
25755 /*
25756  * CDDL HEADER START
25757  *
25758  * The contents of this file are subject to the terms of the
25759  * Common Development and Distribution License, Version 1.0 only
25760  * (the "License").  You may not use this file except in compliance
25761  * with the License.
25762  *
25763  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25764  * or http://www.opensolaris.org/os/licensing.
25765  * See the License for the specific language governing permissions
25766  * and limitations under the License.
25767  *
25768  * When distributing Covered Code, include this CDDL HEADER in each
25769  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25770  * If applicable, add the following below this CDDL HEADER, with the
25771  * fields enclosed by brackets "[]" replaced with your own identifying
25772  * information: Portions Copyright [yyyy] [name of copyright owner]
25773  *
25774  * CDDL HEADER END
25775  */
25776 /*
25777  * Copyright 2002-2003 Sun Microsystems, Inc.  All rights reserved.
25778  * Use is subject to license terms.
25779  */
25780 
25781 
25782 
25783 
25784 #pragma ident "%Z%%M%	%I%	%E% SMI"
25785 
25786 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/sys/param.h" 1
25787 /*
25788  * CDDL HEADER START
25789  *
25790  * The contents of this file are subject to the terms of the
25791  * Common Development and Distribution License (the "License").
25792  * You may not use this file except in compliance with the License.
25793  *
25794  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25795  * or http://www.opensolaris.org/os/licensing.
25796  * See the License for the specific language governing permissions
25797  * and limitations under the License.
25798  *
25799  * When distributing Covered Code, include this CDDL HEADER in each
25800  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25801  * If applicable, add the following below this CDDL HEADER, with the
25802  * fields enclosed by brackets "[]" replaced with your own identifying
25803  * information: Portions Copyright [yyyy] [name of copyright owner]
25804  *
25805  * CDDL HEADER END
25806  */
25807 
25808 /*
25809  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
25810  * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
25811  */
25812 
25813 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
25814 /*	  All Rights Reserved  	*/
25815 
25816 /*
25817  * University Copyright- Copyright (c) 1982, 1986, 1988
25818  * The Regents of the University of California
25819  * All Rights Reserved
25820  *
25821  * University Acknowledgment- Portions of this document are derived from
25822  * software developed by the University of California, Berkeley, and its
25823  * contributors.
25824  */
25825 # 33 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/parseURL.h" 2
25826 # 52 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/parseURL.h"
25827 typedef struct {
25828  char hostname[256];
25829  ushort_t port;
25830 } url_hport_t;
25831 
25832 typedef struct {
25833  boolean_t https;
25834  url_hport_t hport;
25835  char abspath[1024];
25836 } url_t;
25837 
25838 extern int url_parse_hostport(const char *, url_hport_t *, ushort_t);
25839 extern int url_parse(const char *, url_t *);
25840 # 36 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h" 2
25841 
25842 
25843 
25844 
25845 
25846 /* State information returned by http_conn_info() */
25847 typedef struct {
25848  url_t uri; /* URI last loaded */
25849  url_hport_t proxy; /* proxy, if any being used */
25850  boolean_t keepalive; /* Keepalive setting being used */
25851  uint_t read_timeout; /* Timeout to use for socket reads */
25852 } http_conninfo_t;
25853 
25854 
25855 /* Structure for version of the http file */
25856 typedef struct {
25857  uint_t maj_ver; /* Major version */
25858  uint_t min_ver; /* Minor version */
25859  uint_t micro_ver; /* Micro version */
25860 } boot_http_ver_t;
25861 
25862 /* Internal Libhttp errors */
25863 
25864 
25865 
25866     /* necessarily the underlying transport */
25867     /* connection). */
25868 
25869     /* error. */
25870 
25871 
25872 
25873     /* No matching entry */
25874 # 82 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/boot_http.h"
25875 /* Sources of errors */
25876 
25877 
25878 
25879 
25880 
25881 
25882 
25883 typedef struct {
25884  uint_t code; /* status code */
25885  char *statusmsg; /* status message */
25886  uint_t nresphdrs; /* number of response headers */
25887 } http_respinfo_t;
25888 
25889 
25890 typedef void *http_handle_t;
25891 
25892 boot_http_ver_t const *http_get_version(void);
25893 void http_set_p12_format(int);
25894 void http_set_verbose(boolean_t);
25895 int http_set_cipher_list(const char *);
25896 http_handle_t http_srv_init(const url_t *);
25897 int http_set_proxy(http_handle_t, const url_hport_t *);
25898 int http_set_keepalive(http_handle_t, boolean_t);
25899 int http_set_socket_read_timeout(http_handle_t, uint_t);
25900 int http_set_basic_auth(http_handle_t, const char *, const char *);
25901 int http_set_random_file(http_handle_t, const char *);
25902 int http_set_certificate_authority_file(const char *);
25903 int http_set_client_certificate_file(http_handle_t, const char *);
25904 int http_set_password(http_handle_t, const char *);
25905 int http_set_key_file_password(http_handle_t, const char *);
25906 int http_set_private_key_file(http_handle_t, const char *);
25907 
25908 int http_srv_connect(http_handle_t);
25909 int http_head_request(http_handle_t, const char *);
25910 int http_get_request(http_handle_t, const char *);
25911 int http_get_range_request(http_handle_t, const char *, offset_t, offset_t);
25912 void http_free_respinfo(http_respinfo_t *);
25913 int http_process_headers(http_handle_t, http_respinfo_t **);
25914 int http_process_part_headers(http_handle_t, http_respinfo_t **);
25915 char *http_get_header_value(http_handle_t, const char *);
25916 char *http_get_response_header(http_handle_t, uint_t);
25917 int http_read_body(http_handle_t, char *, size_t);
25918 int http_srv_disconnect(http_handle_t);
25919 int http_srv_close(http_handle_t);
25920 http_conninfo_t *http_get_conn_info(http_handle_t);
25921 int http_conn_is_https(http_handle_t, boolean_t *);
25922 ulong_t http_get_lasterr(http_handle_t, uint_t *);
25923 void http_decode_err(ulong_t, int *, int *, int *);
25924 char const *http_errorstr(uint_t, ulong_t);
25925 # 47 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
25926 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkgerr.h" 1
25927 /*
25928  * CDDL HEADER START
25929  *
25930  * The contents of this file are subject to the terms of the
25931  * Common Development and Distribution License (the "License").
25932  * You may not use this file except in compliance with the License.
25933  *
25934  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25935  * or http://www.opensolaris.org/os/licensing.
25936  * See the License for the specific language governing permissions
25937  * and limitations under the License.
25938  *
25939  * When distributing Covered Code, include this CDDL HEADER in each
25940  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25941  * If applicable, add the following below this CDDL HEADER, with the
25942  * fields enclosed by brackets "[]" replaced with your own identifying
25943  * information: Portions Copyright [yyyy] [name of copyright owner]
25944  *
25945  * CDDL HEADER END
25946  */
25947 
25948 /*
25949  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
25950  * Use is subject to license terms.
25951  */
25952 
25953 
25954 
25955 
25956 
25957 /*
25958  * Module:	pkgerr.h
25959  * Description:
25960  *
25961  *   Implements error routines to handle the creation,
25962  *   management, and destruction of error objects, which
25963  *   hold error messages and codes returned from libpkg
25964  *   routines that support the objects defined herein.
25965  */
25966 
25967 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/stdio.h" 1
25968 /*
25969  * CDDL HEADER START
25970  *
25971  * The contents of this file are subject to the terms of the
25972  * Common Development and Distribution License (the "License").
25973  * You may not use this file except in compliance with the License.
25974  *
25975  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25976  * or http://www.opensolaris.org/os/licensing.
25977  * See the License for the specific language governing permissions
25978  * and limitations under the License.
25979  *
25980  * When distributing Covered Code, include this CDDL HEADER in each
25981  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25982  * If applicable, add the following below this CDDL HEADER, with the
25983  * fields enclosed by brackets "[]" replaced with your own identifying
25984  * information: Portions Copyright [yyyy] [name of copyright owner]
25985  *
25986  * CDDL HEADER END
25987  */
25988 
25989 /*
25990  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
25991  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
25992  */
25993 
25994 /*	Copyright (c) 1988 AT&T	*/
25995 /*	  All Rights Reserved  	*/
25996 
25997 /*
25998  * User-visible pieces of the ANSI C standard I/O package.
25999  */
26000 # 42 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkgerr.h" 2
26001 
26002 
26003 
26004 
26005 
26006 /*
26007  * Public Definitions
26008  */
26009 
26010 typedef enum {
26011  PKGERR_OK = 0,
26012  PKGERR_EXIST,
26013  PKGERR_READ,
26014  PKGERR_CORRUPT,
26015  PKGERR_PARSE,
26016  PKGERR_BADPASS,
26017  PKGERR_BADALIAS,
26018  PKGERR_INTERNAL,
26019  PKGERR_UNSUP,
26020  PKGERR_NOALIAS,
26021  PKGERR_NOALIASMATCH,
26022  PKGERR_MULTIPLE,
26023  PKGERR_INCOMPLETE,
26024  PKGERR_NOPRIVKEY,
26025  PKGERR_NOPUBKEY,
26026  PKGERR_NOCACERT,
26027  PKGERR_NOMEM,
26028  PKGERR_CHAIN,
26029  PKGERR_LOCKED,
26030  PKGERR_WRITE,
26031  PKGERR_UNLOCK,
26032  PKGERR_TIME,
26033  PKGERR_DUPLICATE,
26034  PKGERR_WEB,
26035  PKGERR_VERIFY
26036 } PKG_ERR_CODE;
26037 
26038 /*
26039  * Public Structures
26040  */
26041 
26042 /* external reference to PKG_ERR object (contents private) */
26043 typedef PKG_ERR_CODE pkg_err_t;
26044 
26045 typedef struct _pkg_err_struct PKG_ERR;
26046 
26047 /*
26048  * Public Methods
26049  */
26050 
26051 PKG_ERR *pkgerr_new();
26052 void pkgerr_add(PKG_ERR *, PKG_ERR_CODE, char *, ...);
26053 void pkgerr_clear(PKG_ERR *);
26054 int pkgerr_dump(PKG_ERR *, FILE *);
26055 int pkgerr_num(PKG_ERR *);
26056 char *pkgerr_get(PKG_ERR *, int);
26057 void pkgerr_free(PKG_ERR *);
26058 # 48 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
26059 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 1
26060 /*
26061  * CDDL HEADER START
26062  *
26063  * The contents of this file are subject to the terms of the
26064  * Common Development and Distribution License (the "License").
26065  * You may not use this file except in compliance with the License.
26066  *
26067  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26068  * or http://www.opensolaris.org/os/licensing.
26069  * See the License for the specific language governing permissions
26070  * and limitations under the License.
26071  *
26072  * When distributing Covered Code, include this CDDL HEADER in each
26073  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26074  * If applicable, add the following below this CDDL HEADER, with the
26075  * fields enclosed by brackets "[]" replaced with your own identifying
26076  * information: Portions Copyright [yyyy] [name of copyright owner]
26077  *
26078  * CDDL HEADER END
26079  */
26080 
26081 /*
26082  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
26083  * Use is subject to license terms.
26084  */
26085 
26086 
26087 
26088 
26089 
26090 /*
26091  * Module:	keystore.h
26092  * Description:	This module contains the structure definitions for processing
26093  *		package keystore files.
26094  */
26095 
26096 
26097 
26098 
26099 
26100 # 1 "/usr/include/openssl/evp.h" 1 3 4
26101 /* crypto/evp/evp.h */
26102 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
26103  * All rights reserved.
26104  *
26105  * This package is an SSL implementation written
26106  * by Eric Young (eay@cryptsoft.com).
26107  * The implementation was written so as to conform with Netscapes SSL.
26108  *
26109  * This library is free for commercial and non-commercial use as long as
26110  * the following conditions are aheared to.  The following conditions
26111  * apply to all code found in this distribution, be it the RC4, RSA,
26112  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
26113  * included with this distribution is covered by the same copyright terms
26114  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
26115  *
26116  * Copyright remains Eric Young's, and as such any Copyright notices in
26117  * the code are not to be removed.
26118  * If this package is used in a product, Eric Young should be given attribution
26119  * as the author of the parts of the library used.
26120  * This can be in the form of a textual message at program startup or
26121  * in documentation (online or textual) provided with the package.
26122  *
26123  * Redistribution and use in source and binary forms, with or without
26124  * modification, are permitted provided that the following conditions
26125  * are met:
26126  * 1. Redistributions of source code must retain the copyright
26127  *    notice, this list of conditions and the following disclaimer.
26128  * 2. Redistributions in binary form must reproduce the above copyright
26129  *    notice, this list of conditions and the following disclaimer in the
26130  *    documentation and/or other materials provided with the distribution.
26131  * 3. All advertising materials mentioning features or use of this software
26132  *    must display the following acknowledgement:
26133  *    "This product includes cryptographic software written by
26134  *     Eric Young (eay@cryptsoft.com)"
26135  *    The word 'cryptographic' can be left out if the rouines from the library
26136  *    being used are not cryptographic related :-).
26137  * 4. If you include any Windows specific code (or a derivative thereof) from
26138  *    the apps directory (application code) you must include an acknowledgement:
26139  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
26140  *
26141  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
26142  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26143  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26144  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26145  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26146  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26147  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26148  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26149  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26150  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26151  * SUCH DAMAGE.
26152  *
26153  * The licence and distribution terms for any publically available version or
26154  * derivative of this code cannot be changed.  i.e. this code cannot simply be
26155  * copied and put under another distribution licence
26156  * [including the GNU Public Licence.]
26157  */
26158 # 42 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 2
26159 # 1 "/usr/include/openssl/x509.h" 1 3 4
26160 /* crypto/x509/x509.h */
26161 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
26162  * All rights reserved.
26163  *
26164  * This package is an SSL implementation written
26165  * by Eric Young (eay@cryptsoft.com).
26166  * The implementation was written so as to conform with Netscapes SSL.
26167  *
26168  * This library is free for commercial and non-commercial use as long as
26169  * the following conditions are aheared to.  The following conditions
26170  * apply to all code found in this distribution, be it the RC4, RSA,
26171  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
26172  * included with this distribution is covered by the same copyright terms
26173  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
26174  *
26175  * Copyright remains Eric Young's, and as such any Copyright notices in
26176  * the code are not to be removed.
26177  * If this package is used in a product, Eric Young should be given attribution
26178  * as the author of the parts of the library used.
26179  * This can be in the form of a textual message at program startup or
26180  * in documentation (online or textual) provided with the package.
26181  *
26182  * Redistribution and use in source and binary forms, with or without
26183  * modification, are permitted provided that the following conditions
26184  * are met:
26185  * 1. Redistributions of source code must retain the copyright
26186  *    notice, this list of conditions and the following disclaimer.
26187  * 2. Redistributions in binary form must reproduce the above copyright
26188  *    notice, this list of conditions and the following disclaimer in the
26189  *    documentation and/or other materials provided with the distribution.
26190  * 3. All advertising materials mentioning features or use of this software
26191  *    must display the following acknowledgement:
26192  *    "This product includes cryptographic software written by
26193  *     Eric Young (eay@cryptsoft.com)"
26194  *    The word 'cryptographic' can be left out if the rouines from the library
26195  *    being used are not cryptographic related :-).
26196  * 4. If you include any Windows specific code (or a derivative thereof) from
26197  *    the apps directory (application code) you must include an acknowledgement:
26198  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
26199  *
26200  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
26201  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26202  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26203  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26204  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26205  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26206  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26207  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26208  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26209  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26210  * SUCH DAMAGE.
26211  *
26212  * The licence and distribution terms for any publically available version or
26213  * derivative of this code cannot be changed.  i.e. this code cannot simply be
26214  * copied and put under another distribution licence
26215  * [including the GNU Public Licence.]
26216  */
26217 /* ====================================================================
26218  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
26219  * ECDH support in OpenSSL originally developed by
26220  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
26221  */
26222 # 43 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 2
26223 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkgerr.h" 1
26224 /*
26225  * CDDL HEADER START
26226  *
26227  * The contents of this file are subject to the terms of the
26228  * Common Development and Distribution License (the "License").
26229  * You may not use this file except in compliance with the License.
26230  *
26231  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26232  * or http://www.opensolaris.org/os/licensing.
26233  * See the License for the specific language governing permissions
26234  * and limitations under the License.
26235  *
26236  * When distributing Covered Code, include this CDDL HEADER in each
26237  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26238  * If applicable, add the following below this CDDL HEADER, with the
26239  * fields enclosed by brackets "[]" replaced with your own identifying
26240  * information: Portions Copyright [yyyy] [name of copyright owner]
26241  *
26242  * CDDL HEADER END
26243  */
26244 
26245 /*
26246  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
26247  * Use is subject to license terms.
26248  */
26249 # 44 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/keystore.h" 2
26250 
26251 /* keystore structures */
26252 
26253 /* this opaque type represents a keystore */
26254 typedef void *keystore_handle_t;
26255 
26256 /* flags passed to open_keystore */
26257 
26258 /* opens keystore read-only.  Attempts to modify results in an error */
26259 
26260 
26261 /* opens keystore read-write */
26262 
26263 
26264 /*
26265  * tells open_keystore to fall back to app-generic paths in the case that
26266  * the app-specific paths do not exist.
26267  */
26268 
26269 
26270 /*
26271  * tells open_keystore to use the app-specific paths no matter what,
26272  * failing if they cannot be used for any reason.
26273  */
26274 
26275 
26276 /* masks off various types of flags */
26277 
26278 
26279 
26280 /* default is read-only, soft */
26281 
26282 
26283 
26284 /*
26285  * possible encoding formats used by the library, used
26286  * by print_cert
26287  */
26288 typedef enum {
26289  KEYSTORE_FORMAT_PEM,
26290  KEYSTORE_FORMAT_DER,
26291  KEYSTORE_FORMAT_TEXT
26292 } keystore_encoding_format_t;
26293 
26294 /*
26295  * structure passed back to password callback for determining how
26296  * to prompt for passphrase, and where to record errors
26297  */
26298 typedef struct {
26299  PKG_ERR *err;
26300 } keystore_passphrase_data;
26301 
26302 
26303 /* max length of a passphrase.  One could use a short story! */
26304 
26305 
26306 /* callback for collecting passphrase when open_keystore() is called */
26307 typedef int keystore_passphrase_cb(char *, int, int, void *);
26308 
26309 /* names of the individual files within the keystore path */
26310 
26311 
26312 
26313 
26314 /* keystore.c */
26315 extern int open_keystore(PKG_ERR *, char *, char *,
26316     keystore_passphrase_cb, long flags, keystore_handle_t *);
26317 
26318 extern int print_certs(PKG_ERR *, keystore_handle_t, char *,
26319     keystore_encoding_format_t, FILE *);
26320 
26321 extern int check_cert(PKG_ERR *, X509 *);
26322 
26323 extern int check_cert_and_key(PKG_ERR *, X509 *, EVP_PKEY *);
26324 
26325 extern int print_cert(PKG_ERR *, X509 *,
26326     keystore_encoding_format_t, char *, boolean_t, FILE *);
26327 
26328 extern int close_keystore(PKG_ERR *, keystore_handle_t,
26329     keystore_passphrase_cb);
26330 
26331 extern int merge_ca_cert(PKG_ERR *, X509 *, keystore_handle_t);
26332 extern int merge_cert_and_key(PKG_ERR *, X509 *, EVP_PKEY *,
26333     char *, keystore_handle_t);
26334 
26335 extern int delete_cert_and_keys(PKG_ERR *, keystore_handle_t,
26336     char *);
26337 
26338 extern int find_key_cert_pair(PKG_ERR *, keystore_handle_t,
26339     char *, EVP_PKEY **, X509 **);
26340 
26341 extern int find_ca_certs(PKG_ERR *, keystore_handle_t,
26342     struct stack_st_X509 **);
26343 
26344 extern int find_cl_certs(PKG_ERR *, keystore_handle_t,
26345     struct stack_st_X509 **);
26346 # 49 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
26347 # 1 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/cfext.h" 1
26348 /*
26349  * CDDL HEADER START
26350  *
26351  * The contents of this file are subject to the terms of the
26352  * Common Development and Distribution License (the "License").
26353  * You may not use this file except in compliance with the License.
26354  *
26355  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26356  * or http://www.opensolaris.org/os/licensing.
26357  * See the License for the specific language governing permissions
26358  * and limitations under the License.
26359  *
26360  * When distributing Covered Code, include this CDDL HEADER in each
26361  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26362  * If applicable, add the following below this CDDL HEADER, with the
26363  * fields enclosed by brackets "[]" replaced with your own identifying
26364  * information: Portions Copyright [yyyy] [name of copyright owner]
26365  *
26366  * CDDL HEADER END
26367  */
26368 
26369 /*
26370  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26371  * Use is subject to license terms.
26372  */
26373 # 35 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/cfext.h"
26374 # 1 "/home/git3/dehawe/titanic_53/proto/root_i386/usr/include/pkgstrct.h" 1
26375 /*
26376  * CDDL HEADER START
26377  *
26378  * The contents of this file are subject to the terms of the
26379  * Common Development and Distribution License (the "License").
26380  * You may not use this file except in compliance with the License.
26381  *
26382  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
26383  * or http://www.opensolaris.org/os/licensing.
26384  * See the License for the specific language governing permissions
26385  * and limitations under the License.
26386  *
26387  * When distributing Covered Code, include this CDDL HEADER in each
26388  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
26389  * If applicable, add the following below this CDDL HEADER, with the
26390  * fields enclosed by brackets "[]" replaced with your own identifying
26391  * information: Portions Copyright [yyyy] [name of copyright owner]
26392  *
26393  * CDDL HEADER END
26394  */
26395 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
26396 /*	  All Rights Reserved  	*/
26397 
26398 /*
26399  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
26400  * Use is subject to license terms.
26401  */
26402 # 36 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/cfext.h" 2
26403 
26404 struct mergstat {
26405  unsigned setuid:1; /* pkgmap entry has setuid */
26406  unsigned setgid:1; /* ... and/or setgid bit set */
26407  unsigned contchg:1; /* contents of the files different */
26408  unsigned attrchg:1; /* attributes are different */
26409  unsigned shared:1; /* > 1 pkg associated with this */
26410  unsigned osetuid:1; /* installed set[ug]id process ... */
26411  unsigned osetgid:1; /* ... being overwritten by pkg. */
26412  unsigned rogue:1; /* conflicting file not owned by a package */
26413  unsigned dir2nondir:1; /* was a directory & now a non-directory */
26414  unsigned replace:1; /* merge makes no sense for this object pair */
26415  unsigned denied:1; /* for some reason this was not allowed in */
26416  unsigned preloaded:1; /* already checked in a prior pkg op */
26417  unsigned processed:1; /* already installed or removed */
26418  unsigned parentsyml2dir:1;
26419  /* parent directory changed from symlink to a directory */
26420 };
26421 
26422 /*
26423  * This is information required by pkgadd for fast operation. A
26424  * cfextra struct is tagged to each cfent structure requiring
26425  * processing. This is how we avoid some unneeded repetition. The
26426  * entries incorporating the word 'local' refer to the path that
26427  * gets us to the delivered package file. In other words, to install
26428  * a file we usually copy from 'local' to 'path' below. In the case
26429  * of a link, where no actual copying takes place, local is the source
26430  * of the link. Note that environment variables are not evaluated in
26431  * the locals unless they are links since the literal path is how
26432  * pkgadd finds the entry under the reloc directory.
26433  */
26434 struct cfextra {
26435  struct cfent cf_ent; /* basic contents file entry */
26436  struct mergstat mstat; /* merge status for installs */
26437  uint32_t fsys_value; /* fstab[] entry index */
26438  uint32_t fsys_base; /* actual base filesystem in fs_tab[] */
26439  char *client_path; /* the client-relative path */
26440  char *server_path; /* the server-relative path */
26441  char *map_path; /* as read from the pkgmap */
26442  char *client_local; /* client_relative local */
26443  char *server_local; /* server relative local */
26444 };
26445 # 50 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h" 2
26446 
26447 /*
26448  * The contents database file interface.
26449  */
26450 
26451 typedef struct pkg_server *PKGserver;
26452 
26453 /* Some commands modify the internal database: add them here */
26454 # 82 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26455 typedef enum {
26456  INVALID, /* Not initialized */
26457  NEVER, /* Don't start, does check if it is running. */
26458  FLUSH_LOG, /* Run it once to incorporate the log. */
26459  RUN_ONCE, /* Run until the current client stops. */
26460  TIMEOUT, /* Run until a timeout occurs. */
26461  PERMANENT, /* Run until it is externally terminated. */
26462  DEFAULTMODE = TIMEOUT /* The default mode, must come last */
26463 } start_mode_t;
26464 
26465 typedef struct pkgcmd {
26466  int cmd;
26467  char buf[1];
26468 } pkgcmd_t;
26469 
26470 typedef struct pkgfilter {
26471  int cmd;
26472  int len;
26473  char buf[1];
26474 } pkgfilter_t;
26475 
26476 /*
26477  * Virtual File Protocol definitions
26478  */
26479 
26480 /*
26481  * flags associated with virtual file protocol operations; note that these flags
26482  * may only occupy the low order 16 bits of the 32-bit unsigned flag.
26483  */
26484 
26485 typedef unsigned long VFPFLAGS_T;
26486 # 121 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26487 /* virtual file protocol object */
26488 
26489 typedef struct _vfp VFP_T;
26490 
26491 /* structure behind the virtual file protocol object */
26492 
26493 struct _vfp {
26494  FILE *_vfpFile; /* -> opened FILE */
26495  char *_vfpCurr; /* -> current byte to read/write */
26496  char *_vfpHighWater; /* -> last byte modified */
26497  char *_vfpEnd; /* -> last data byte */
26498  char *_vfpPath; /* -> path associated with FILE */
26499  char *_vfpStart; /* -> first data byte */
26500  void *_vfpExtra; /* undefined */
26501  size_t _vfpSize; /* size of mapped/allocated area */
26502  size_t _vfpMapSize; /* # mapped bytes */
26503  VFPFLAGS_T _vfpFlags; /* flags associated with vfp/data */
26504  int _vfpOverflow; /* non-zero if buffer write overflow */
26505  blkcnt_t _vfpCkStBlocks; /* checkpoint # blocks */
26506  dev_t _vfpCkDev; /* checkpoint device i.d. */
26507  ino_t _vfpCkIno; /* checkpoint inode # */
26508  off_t _vfpCkSize; /* checkpoint size */
26509  time_t _vfpCkMtime; /* checkpoint modification time */
26510 };
26511 
26512 /*
26513  * get highest modified byte (length) contained in vfp
26514  *
26515  * determine number of bytes to write - it will be the highest of:
26516  *  -- the current pointer into the file - this is updated whenever
26517  *	the location of the file is changed by a single byte
26518  *  -- the last "high water mark" - the last known location that
26519  *	was written to the file - updated only when the location
26520  *	of the file is directly changed - e.g. vfpSetCurrCharPtr,
26521  *	vfpTruncate, vfpRewind.
26522  * this reduces the "bookkeeping" that needs to be done to know
26523  * how many bytes to write out to the file - typically a file is
26524  * written sequentially so the current file pointer is sufficient
26525  * to determine how many bytes to write out.
26526  */
26527 # 169 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26528 /*
26529  * increment current pointer by specified delta
26530  * if the delta exceeds the buffer size, set pointer to buffer end
26531  */
26532 # 185 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26533 /* get the path associated with the vfp */
26534 
26535 
26536 /* get a string from the vfp into a fixed size buffer */
26537 # 207 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26538 /* get number of bytes remaining to read */
26539 
26540 
26541 
26542 
26543 /* get number of bytes remaining to write */
26544 
26545 
26546 
26547 
26548 /* put current character and increment to next */
26549 
26550 
26551 
26552 
26553 
26554 
26555 /* put integer to current character and increment */
26556 
26557 
26558 /* put long to current character and increment */
26559 
26560 
26561 /* get current character and increment to next */
26562 
26563 
26564 /* get current character - do not increment */
26565 
26566 
26567 /* get pointer to current character */
26568 
26569 
26570 /* increment current character pointer */
26571 
26572 
26573 /* decrement current character pointer */
26574 
26575 
26576 /* get pointer to first data byte in buffer */
26577 
26578 
26579 /* get pointer to last data byte in buffer */
26580 
26581 
26582 /* set pointer to current character */
26583 
26584 
26585 
26586 
26587 
26588 
26589 /* set pointer to last data byte in buffer */
26590 # 267 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26591 /* seek to end of file - one past last data byte in file */
26592 
26593 
26594 /* get number of bytes between current char and specified char */
26595 
26596 
26597 
26598 /* put string to current character and increment */
26599 # 284 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26600 /* put fixed number of bytes to current character and increment */
26601 # 298 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26602 /* put format one arg to current character and increment */
26603 
26604 
26605 
26606 
26607 
26608 
26609 
26610 struct dm_buf {
26611  char *text_buffer; /* start of allocated buffer */
26612  int offset; /* number of bytes into the text_buffer */
26613  int allocation; /* size of buffer in bytes */
26614 };
26615 
26616 /* This structure is used to hold a dynamically growing string */
26617 
26618 struct dstr {
26619  char *pc;
26620  int len;
26621  int max;
26622 };
26623 
26624 /* setmapmode() defines */
26625 # 330 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26626 /* max length for printed attributes */
26627 
26628 
26629 /*
26630  * These three defines indicate that the prototype file contains a '?'
26631  * meaning do not specify this data in the pkgmap entry.
26632  */
26633 # 366 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26634 /* Settings for network admin defaults */
26635 # 377 "/home/git3/dehawe/titanic_53/usr/src/lib/libpkg/common/pkglib.h"
26636 /* package header magic tokens */
26637 
26638 
26639 
26640 /* name of security files */
26641 
26642 
26643 
26644 
26645 
26646 
26647 /*
26648  * The next three mean that no mode, owner or group was specified or that the
26649  * one specified is invalid for some reason. Sometimes this is an error in
26650  * which case it is generally converted to CUR* with a warning. Other times
26651  * it means "look it up" by stating the existing file system object pointred
26652  * to in the prototype file.
26653  */
26654 
26655 
26656 
26657 
26658 /* string comparitor abbreviators */
26659 
26660 
26661 
26662 
26663 
26664 
26665 extern FILE *epopen(char *cmd, char *mode);
26666 extern char **gpkglist(char *dir, char **pkg, char **catg);
26667 extern int is_not_valid_length(char **category);
26668 extern int is_not_valid_category(char **category, char *progname);
26669 extern int is_same_CATEGORY(char **category, char *installed_category);
26670 extern char **get_categories(char *catg_arg);
26671 
26672 extern void pkglist_cont(char *keyword);
26673 extern char **pkgalias(char *pkg);
26674 extern char *get_prog_name(void);
26675 extern char *set_prog_name(char *name);
26676 extern int averify(int fix, char *ftype, char *path, struct ainfo *ainfo);
26677 extern int ckparam(char *param, char *value);
26678 extern int ckvolseq(char *dir, int part, int nparts);
26679 extern int cverify(int fix, char *ftype, char *path, struct cinfo *cinfo,
26680    int allow_checksum);
26681 extern unsigned long compute_checksum(int *r_cksumerr, char *a_path);
26682 extern int fverify(int fix, char *ftype, char *path, struct ainfo *ainfo,
26683       struct cinfo *cinfo);
26684 extern char *getErrbufAddr(void);
26685 extern int getErrbufSize(void);
26686 extern char *getErrstr(void);
26687 extern void setErrstr(char *errstr);
26688 extern int devtype(char *alias, struct pkgdev *devp);
26689 extern int ds_totread; /* total number of parts read */
26690 extern int ds_close(int pkgendflg);
26691 extern int ds_findpkg(char *device, char *pkg);
26692 extern int ds_getinfo(char *string);
26693 extern int ds_getpkg(char *device, int n, char *dstdir);
26694 extern int ds_ginit(char *device);
26695 extern boolean_t ds_fd_open(void);
26696 extern int ds_init(char *device, char **pkg, char *norewind);
26697 extern int BIO_ds_dump_header(PKG_ERR *, BIO *);
26698 extern int BIO_ds_dump(PKG_ERR *, char *, BIO *);
26699 extern int BIO_dump_cmd(char *cmd, BIO *bio);
26700 extern int ds_next(char *, char *);
26701 extern int ds_readbuf(char *device);
26702 extern int epclose(FILE *pp);
26703 extern int esystem(char *cmd, int ifd, int ofd);
26704 extern int e_ExecCmdArray(int *r_status, char **r_results,
26705    char *a_inputFile, char *a_cmd, char **a_args);
26706 extern int e_ExecCmdList(int *r_status, char **r_results,
26707    char *a_inputFile, char *a_cmd, ...);
26708 extern int gpkgmap(struct cfent *ept, FILE *fp);
26709 extern int gpkgmapvfp(struct cfent *ept, VFP_T *fpv);
26710 extern void setmapmode(int mode_no);
26711 extern int isFdRemote(int a_fd);
26712 extern int isFstypeRemote(char *a_fstype);
26713 extern int isPathRemote(char *a_path);
26714 extern int iscpio(char *path, int *iscomp);
26715 extern int isdir(char *path);
26716 extern int isfile(char *dir, char *file);
26717 extern int fmkdir(char *a_path, int a_mode);
26718 extern int pkgexecl(char *filein, char *fileout, char *uname, char *gname,
26719    ...);
26720 extern int pkgexecv(char *filein, char *fileout, char *uname, char *gname,
26721    char *arg[]);
26722 extern int pkghead(char *device);
26723 extern int pkgmount(struct pkgdev *devp, char *pkg, int part, int nparts,
26724    int getvolflg);
26725 extern int pkgtrans(char *device1, char *device2, char **pkg,
26726    int options, keystore_handle_t, char *);
26727 extern int pkgumount(struct pkgdev *devp);
26728 extern int ppkgmap(struct cfent *ept, FILE *fp);
26729 extern int putcfile(struct cfent *ept, FILE *fp);
26730 extern int putcvfpfile(struct cfent *ept, VFP_T *vfp);
26731 extern int rrmdir(char *path);
26732 extern void set_memalloc_failure_func(void (*)(int));
26733 extern void *xmalloc(size_t size);
26734 extern void *xrealloc(void *ptr, size_t size);
26735 extern char *xstrdup(char *str);
26736 extern void set_passphrase_prompt(char *);
26737 extern void set_passphrase_passarg(char *);
26738 extern int pkg_passphrase_cb(char *, int, int, void *);
26739 
26740 extern int srchcfile(struct cfent *ept, char *path, PKGserver server);
26741 extern struct group *cgrgid(gid_t gid);
26742 extern struct group *cgrnam(char *nam);
26743 extern struct passwd *cpwnam(char *nam);
26744 extern struct passwd *cpwuid(uid_t uid);
26745 extern struct group *clgrgid(gid_t gid);
26746 extern struct group *clgrnam(char *nam);
26747 extern struct passwd *clpwnam(char *nam);
26748 extern struct passwd *clpwuid(uid_t uid);
26749 extern void basepath(char *path, char *basedir, char *ir);
26750 extern void canonize(char *file);
26751 extern void canonize_slashes(char *file);
26752 extern void checksum_off(void);
26753 extern void checksum_on(void);
26754 extern void cvtpath(char *path, char *copy);
26755 extern void ds_order(char *list[]);
26756 extern void ds_putinfo(char *buf, size_t);
26757 extern void ds_skiptoend(char *device);
26758 extern void ecleanup(void);
26759 /*PRINTFLIKE1*/
26760 extern void logerr(char *fmt, ...);
26761 extern int mappath(int flag, char *path);
26762 extern int mapvar(int flag, char *varname);
26763 /*PRINTFLIKE1*/
26764 extern void progerr(char *fmt, ...);
26765 extern void pkgerr(PKG_ERR *);
26766 extern void rpterr(void);
26767 extern void tputcfent(struct cfent *ept, FILE *fp);
26768 extern void set_nonABI_symlinks(void);
26769 extern int nonABI_symlinks(void);
26770 extern void disable_attribute_check(void);
26771 extern int get_disable_attribute_check(void);
26772 
26773 /* security.c */
26774 extern void sec_init(void);
26775 extern char *get_subject_display_name(X509 *);
26776 extern char *get_issuer_display_name(X509 *);
26777 extern char *get_serial_num(X509 *);
26778 extern char *get_fingerprint(X509 *, const EVP_MD *);
26779 extern int get_cert_chain(PKG_ERR *, X509 *, struct stack_st_X509 *,
26780     struct stack_st_X509 *, struct stack_st_X509 **);
26781 
26782 /* pkgstr.c */
26783 void pkgstrConvertUllToTimeString_r(unsigned long long a_time,
26784    char *a_buf, int a_bufLen);
26785 char *pkgstrConvertPathToBasename(char *a_path);
26786 char *pkgstrConvertPathToDirname(char *a_path);
26787 char *pkgstrDup(char *a_str);
26788 char *pkgstrLocatePathBasename(char *a_path);
26789 void pkgstrScaleNumericString(char *a_buf, unsigned long long scale);
26790 void pkgstrAddToken(char **a_old, char *a_new, char a_separator);
26791 boolean_t pkgstrContainsToken(char *a_string, char *a_token,
26792    char *a_separators);
26793 void pkgstrExpandTokens(char **a_old, char *a_string,
26794    char a_separator, char *a_separators);
26795 char *pkgstrGetToken(char *r_sep, char *a_string, int a_index,
26796    char *a_separators);
26797 void pkgstrGetToken_r(char *r_sep, char *a_string, int a_index,
26798    char *a_separators, char *a_buf, int a_bufLen);
26799 unsigned long pkgstrNumTokens(char *a_string, char *a_separators);
26800 char *pkgstrPrintf(char *a_format, ...);
26801 void pkgstrPrintf_r(char *a_buf, int a_bufLen, char *a_format, ...);
26802 void pkgstrRemoveToken(char **r_string, char *a_token,
26803    char *a_separators, int a_index);
26804 void pkgstrRemoveLeadingWhitespace(char **a_str);
26805 /* vfpops.c */
26806 extern int vfpCheckpointFile(VFP_T **r_destVfp, VFP_T **a_vfp,
26807    char *a_path);
26808 extern int vfpCheckpointOpen(VFP_T **a_cvfp, VFP_T **r_vfp, char *a_path,
26809    char *a_mode, VFPFLAGS_T a_flags);
26810 extern int vfpClearModified(VFP_T *a_vfp);
26811 extern int vfpClose(VFP_T **r_vfp);
26812 extern int vfpGetModified(VFP_T *a_vfp);
26813 extern int vfpOpen(VFP_T **r_vfp, char *a_path, char *a_mode,
26814    VFPFLAGS_T a_flags);
26815 extern void vfpRewind(VFP_T *a_vfp);
26816 extern ssize_t vfpSafePwrite(int a_fildes, void *a_buf,
26817    size_t a_nbyte, off_t a_offset);
26818 extern ssize_t vfpSafeWrite(int a_fildes, void *a_buf, size_t a_nbyte);
26819 extern int vfpSetFlags(VFP_T *a_vfp, VFPFLAGS_T a_flags);
26820 extern int vfpSetModified(VFP_T *a_vfp);
26821 extern int vfpSetSize(VFP_T *a_vfp, size_t a_size);
26822 extern void vfpTruncate(VFP_T *a_vfp);
26823 extern int vfpWriteToFile(VFP_T *a_vfp, char *a_path);
26824 
26825 /* handlelocalfs.c */
26826 boolean_t enable_local_fs(void);
26827 boolean_t restore_local_fs(void);
26828 
26829 /* pkgserv.c */
26830 extern PKGserver pkgopenserver(const char *, const char *, boolean_t);
26831 extern void pkgcloseserver(PKGserver);
26832 extern int pkgcmd(PKGserver, void *, size_t, char **, size_t *,
26833     int *);
26834 extern boolean_t pkgsync_needed(const char *, const char *, boolean_t);
26835 extern int pkgsync(const char *, const char *, boolean_t);
26836 extern int pkgservercommitfile(VFP_T *, PKGserver);
26837 extern int pkgopenfilter(PKGserver server, const char *pkginst);
26838 extern void pkgclosefilter(PKGserver);
26839 extern char *pkggetentry(PKGserver, int *, int *);
26840 extern char *pkggetentry_named(PKGserver, const char *, int *,
26841     int *);
26842 extern void pkgserversetmode(start_mode_t);
26843 extern start_mode_t pkgservergetmode(void);
26844 extern start_mode_t pkgparsemode(const char *);
26845 extern char *pkgmodeargument(start_mode_t);
26846 # 39 "cmdexec.c" 2
26847 
26848 
26849 
26850 
26851 
26852 
26853 static void usage(void);
26854 static int docmd(char *cmd, char *file, char *input);
26855 
26856 int
26857 main(int argc, char *argv[])
26858 {
26859  FILE *fpout, *fp;
26860  char line[256],
26861   *pt,
26862   *keyword, /* keyword = install || remove */
26863   *input, /* sed input file */
26864   *cmd,
26865   *srcfile, /* sed data file */
26866   *destfile; /* target file to be updated */
26867  int flag;
26868  char *prog;
26869 
26870  (void) setlocale(6, "");
26871 
26872 
26873 
26874 
26875  (void) textdomain(TEXT_DOMAIN);
26876 
26877  prog = set_prog_name(argv[0]);
26878 
26879  if (getuid()) {
26880   progerr(gettext("You must be \"root\" for %s to execute properly."), prog);
26881   exit(1);
26882  }
26883 
26884  if (argc != 5)
26885   usage();
26886 
26887  cmd = argv[1];
26888  keyword = argv[2];
26889  srcfile = argv[3];
26890  destfile = argv[4];
26891 
26892  srcfile = argv[3];
26893  if ((fp = fopen(srcfile, "r")) == 0) {
26894   progerr(gettext("unable to open %s"), srcfile);
26895   exit(1);
26896  }
26897 
26898  input = tempnam(0, "sedinp");
26899  if ((fpout = fopen(input, "w")) == 0) {
26900   progerr(gettext("unable to open %s"), input);
26901   exit(2);
26902  }
26903 
26904  flag = (-1);
26905  while (fgets(line, 256, fp)) {
26906   for (pt = line; isspace(*pt); /* void */)
26907    ++pt;
26908   if (*pt == '#')
26909    continue;
26910   if (*pt == '!') {
26911    if (flag > 0)
26912     break; /* no more lines to read */
26913    pt = strtok(pt+1, " \t\n");
26914    if (!pt) {
26915     progerr(gettext("null token after '!'"));
26916     exit(1);
26917    }
26918    flag = (strcmp(pt, keyword) ? 0 : 1);
26919   } else if (flag == 1) { /* bug # 1083359 */
26920    (void) fputs(line, fpout);
26921   }
26922  }
26923  (void) fclose(fpout);
26924  if (flag > 0) {
26925   if (docmd(cmd, destfile, input)) {
26926    progerr(gettext("command failed <%s>"), cmd);
26927    exit(1);
26928   }
26929  }
26930  (void) unlink(input);
26931  return (0);
26932 }
26933 
26934 static int
26935 docmd(char *cmd, char *file, char *input)
26936 {
26937  char *tempout;
26938  char command[256];
26939 
26940  tempout = tempnam(0, "temp1");
26941  if (!tempout)
26942   return (-1);
26943 
26944  (void) sprintf(command, "%s -f %s <%s >%s", cmd, input, file, tempout);
26945  if (system(command))
26946   return (-1);
26947 
26948  (void) sprintf(command, "cp %s %s", tempout, file);
26949  if (system(command))
26950   return (-1);
26951 
26952  (void) unlink(tempout);
26953  free(tempout);
26954  return (0);
26955 }
26956 
26957 static void
26958 usage(void)
26959 {
26960  (void) fprintf((&__iob[2]), gettext("usage: %s cmd keyword src dest\n"),
26961      get_prog_name());
26962  exit(2);
26963 }
26964