blob: ed889e91c7cc7aaee2cf608f4951d810bff103e0 [file] [log] [blame]
Vishal Bhoj82c80712015-12-15 21:13:33 +05301/** @file
2 Root include file to support building OpenSSL Crypto Library.
3
4Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials
6are licensed and made available under the terms and conditions of the BSD License
7which accompanies this distribution. The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef __OPEN_SSL_SUPPORT_H__
16#define __OPEN_SSL_SUPPORT_H__
17
18#include <Base.h>
19#include <Library/BaseLib.h>
20#include <Library/BaseMemoryLib.h>
21#include <Library/MemoryAllocationLib.h>
22#include <Library/DebugLib.h>
23
24//
25// File operations are not required for building Open SSL,
26// so FILE is mapped to VOID * to pass build
27//
28typedef VOID *FILE;
29
30//
31// Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h
32//
33#if !defined(__CC_ARM) // if va_list is not already defined
34#define va_list VA_LIST
35#define va_arg VA_ARG
36#define va_start VA_START
37#define va_end VA_END
38#else // __CC_ARM
39#define va_start(Marker, Parameter) __va_start(Marker, Parameter)
40#define va_arg(Marker, TYPE) __va_arg(Marker, TYPE)
41#define va_end(Marker) ((void)0)
42#endif
43
44//
45// #defines from EFI Application Toolkit required to buiild Open SSL
46//
47#define ENOMEM 12 /* Cannot allocate memory */
48#define EINVAL 22 /* Invalid argument */
49#define BUFSIZ 1024 /* size of buffer used by setbuf */
50#define INT_MAX 2147483647 /* max value for an int */
51#define INT_MIN (-2147483647-1) /* min value for an int */
52#define LONG_MAX 2147483647L /* max value for a long */
53#define LONG_MIN (-2147483647-1) /* min value for a long */
54#define ULONG_MAX 0xffffffff /* max value for an unsigned long */
55#define LOG_DAEMON (3<<3) /* system daemons */
56#define LOG_EMERG 0 /* system is unusable */
57#define LOG_ALERT 1 /* action must be taken immediately */
58#define LOG_CRIT 2 /* critical conditions */
59#define LOG_ERR 3 /* error conditions */
60#define LOG_WARNING 4 /* warning conditions */
61#define LOG_NOTICE 5 /* normal but significant condition */
62#define LOG_INFO 6 /* informational */
63#define LOG_DEBUG 7 /* debug-level messages */
64#define LOG_PID 0x01 /* log the pid with each message */
65#define LOG_CONS 0x02 /* log on the console if errors in sending */
66
67//
68// Macros from EFI Application Toolkit required to buiild Open SSL
69//
70/* The offsetof() macro calculates the offset of a structure member
71 in its structure. Unfortunately this cannot be written down
72 portably, hence it is provided by a Standard C header file.
73 For pre-Standard C compilers, here is a version that usually works
74 (but watch out!): */
75#define offsetof(type, member) OFFSET_OF (type, member)
76
77//
78// Basic types from EFI Application Toolkit required to buiild Open SSL
79//
80typedef UINTN size_t;
81typedef INTN ssize_t;
82typedef INT64 off_t;
83typedef UINT16 mode_t;
84typedef long time_t;
85typedef unsigned long clock_t;
86typedef UINT32 uid_t;
87typedef UINT32 gid_t;
88typedef UINT32 ino_t;
89typedef UINT32 dev_t;
90typedef UINT16 nlink_t;
91typedef int pid_t;
92typedef void *DIR;
93typedef void __sighandler_t (int);
94
95//
96// Structures from EFI Application Toolkit required to buiild Open SSL
97//
98struct tm {
99 int tm_sec; /* seconds after the minute [0-60] */
100 int tm_min; /* minutes after the hour [0-59] */
101 int tm_hour; /* hours since midnight [0-23] */
102 int tm_mday; /* day of the month [1-31] */
103 int tm_mon; /* months since January [0-11] */
104 int tm_year; /* years since 1900 */
105 int tm_wday; /* days since Sunday [0-6] */
106 int tm_yday; /* days since January 1 [0-365] */
107 int tm_isdst; /* Daylight Savings Time flag */
108 long tm_gmtoff; /* offset from CUT in seconds */
109 char *tm_zone; /* timezone abbreviation */
110};
111
112struct dirent {
113 UINT32 d_fileno; /* file number of entry */
114 UINT16 d_reclen; /* length of this record */
115 UINT8 d_type; /* file type, see below */
116 UINT8 d_namlen; /* length of string in d_name */
117 char d_name[255 + 1]; /* name must be no longer than this */
118};
119
120struct stat {
121 dev_t st_dev; /* inode's device */
122 ino_t st_ino; /* inode's number */
123 mode_t st_mode; /* inode protection mode */
124 nlink_t st_nlink; /* number of hard links */
125 uid_t st_uid; /* user ID of the file's owner */
126 gid_t st_gid; /* group ID of the file's group */
127 dev_t st_rdev; /* device type */
128 time_t st_atime; /* time of last access */
129 long st_atimensec; /* nsec of last access */
130 time_t st_mtime; /* time of last data modification */
131 long st_mtimensec; /* nsec of last data modification */
132 time_t st_ctime; /* time of last file status change */
133 long st_ctimensec; /* nsec of last file status change */
134 off_t st_size; /* file size, in bytes */
135 INT64 st_blocks; /* blocks allocated for file */
136 UINT32 st_blksize; /* optimal blocksize for I/O */
137 UINT32 st_flags; /* user defined flags for file */
138 UINT32 st_gen; /* file generation number */
139 INT32 st_lspare;
140 INT64 st_qspare[2];
141};
142
143//
144// Externs from EFI Application Toolkit required to buiild Open SSL
145//
146extern int errno;
147
148//
149// Function prototypes from EFI Application Toolkit required to buiild Open SSL
150//
151void *malloc (size_t);
152void *realloc (void *, size_t);
153void free (void *);
154int isdigit (int);
155int isspace (int);
156int tolower (int);
157int isupper (int);
158int isxdigit (int);
159int isalnum (int);
160void *memcpy (void *, const void *, size_t);
161void *memset (void *, int, size_t);
162void *memchr (const void *, int, size_t);
163int memcmp (const void *, const void *, size_t);
164void *memmove (void *, const void *, size_t);
165int strcmp (const char *, const char *);
166int strncmp (const char *, const char *, size_t);
167char *strcpy (char *, const char *);
168char *strncpy (char *, const char *, size_t);
169size_t strlen (const char *);
170char *strcat (char *, const char *);
171char *strchr (const char *, int);
172int strcasecmp (const char *, const char *);
173int strncasecmp (const char *, const char *, size_t);
174char *strncpy (char *, const char *, size_t);
175int strncmp (const char *, const char *, size_t);
176char *strrchr (const char *, int);
177unsigned long strtoul (const char *, char **, int);
178long strtol (const char *, char **, int);
179int printf (const char *, ...);
180int sscanf (const char *, const char *, ...);
181int open (const char *, int, ...);
182int chmod (const char *, mode_t);
183int stat (const char *, struct stat *);
184off_t lseek (int, off_t, int);
185ssize_t read (int, void *, size_t);
186ssize_t write (int, const void *, size_t);
187int close (int);
188FILE *fopen (const char *, const char *);
189size_t fread (void *, size_t, size_t, FILE *);
190size_t fwrite (const void *, size_t, size_t, FILE *);
191char *fgets (char *, int, FILE *);
192int fputs (const char *, FILE *);
193int fprintf (FILE *, const char *, ...);
194int vfprintf (FILE *, const char *, VA_LIST);
195int fflush (FILE *);
196int fclose (FILE *);
197DIR *opendir (const char *);
198struct dirent *readdir (DIR *);
199int closedir (DIR *);
200void openlog (const char *, int, int);
201void closelog (void);
202void syslog (int, const char *, ...);
203time_t time (time_t *);
204struct tm *localtime (const time_t *);
205struct tm *gmtime (const time_t *);
206struct tm *gmtime_r (const time_t *, struct tm *);
207uid_t getuid (void);
208uid_t geteuid (void);
209gid_t getgid (void);
210gid_t getegid (void);
211void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
212char *getenv (const char *);
213void exit (int);
214void abort (void);
215__sighandler_t *signal (int, __sighandler_t *);
216
217//
218// Global variables from EFI Application Toolkit required to buiild Open SSL
219//
220extern FILE *stderr;
221extern FILE *stdin;
222extern FILE *stdout;
223
224//
225// Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions
226//
227#define memcpy(dest,source,count) CopyMem(dest,source,(UINTN)(count))
228#define memset(dest,ch,count) SetMem(dest,(UINTN)(count),(UINT8)(ch))
229#define memchr(buf,ch,count) ScanMem8(buf,(UINTN)(count),(UINT8)ch)
230#define memcmp(buf1,buf2,count) (int)(CompareMem(buf1,buf2,(UINTN)(count)))
231#define memmove(dest,source,count) CopyMem(dest,source,(UINTN)(count))
232#define strcmp AsciiStrCmp
233#define strncmp(string1,string2,count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count)))
234#define strcpy(strDest,strSource) AsciiStrCpy(strDest,strSource)
235#define strncpy(strDest,strSource,count) AsciiStrnCpy(strDest,strSource,(UINTN)count)
236#define strlen(str) (size_t)(AsciiStrLen(str))
237#define strcat(strDest,strSource) AsciiStrCat(strDest,strSource)
238#define strchr(str,ch) ScanMem8((VOID *)(str),AsciiStrSize(str),(UINT8)ch)
239#define abort() ASSERT (FALSE)
240#define assert(expression)
241#define localtime(timer) NULL
242#define gmtime_r(timer,result) (result = NULL)
243
244#endif