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