1*6236dae4SAndroid Build Coastguard Worker #ifndef HEADER_CURL_SETUP_VMS_H
2*6236dae4SAndroid Build Coastguard Worker #define HEADER_CURL_SETUP_VMS_H
3*6236dae4SAndroid Build Coastguard Worker /***************************************************************************
4*6236dae4SAndroid Build Coastguard Worker * _ _ ____ _
5*6236dae4SAndroid Build Coastguard Worker * Project ___| | | | _ \| |
6*6236dae4SAndroid Build Coastguard Worker * / __| | | | |_) | |
7*6236dae4SAndroid Build Coastguard Worker * | (__| |_| | _ <| |___
8*6236dae4SAndroid Build Coastguard Worker * \___|\___/|_| \_\_____|
9*6236dae4SAndroid Build Coastguard Worker *
10*6236dae4SAndroid Build Coastguard Worker * Copyright (C) Daniel Stenberg, <[email protected]>, et al.
11*6236dae4SAndroid Build Coastguard Worker *
12*6236dae4SAndroid Build Coastguard Worker * This software is licensed as described in the file COPYING, which
13*6236dae4SAndroid Build Coastguard Worker * you should have received as part of this distribution. The terms
14*6236dae4SAndroid Build Coastguard Worker * are also available at https://curl.se/docs/copyright.html.
15*6236dae4SAndroid Build Coastguard Worker *
16*6236dae4SAndroid Build Coastguard Worker * You may opt to use, copy, modify, merge, publish, distribute and/or sell
17*6236dae4SAndroid Build Coastguard Worker * copies of the Software, and permit persons to whom the Software is
18*6236dae4SAndroid Build Coastguard Worker * furnished to do so, under the terms of the COPYING file.
19*6236dae4SAndroid Build Coastguard Worker *
20*6236dae4SAndroid Build Coastguard Worker * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21*6236dae4SAndroid Build Coastguard Worker * KIND, either express or implied.
22*6236dae4SAndroid Build Coastguard Worker *
23*6236dae4SAndroid Build Coastguard Worker * SPDX-License-Identifier: curl
24*6236dae4SAndroid Build Coastguard Worker *
25*6236dae4SAndroid Build Coastguard Worker ***************************************************************************/
26*6236dae4SAndroid Build Coastguard Worker
27*6236dae4SAndroid Build Coastguard Worker /* */
28*6236dae4SAndroid Build Coastguard Worker /* JEM, 12/30/12, VMS now generates config.h, so only define wrappers for */
29*6236dae4SAndroid Build Coastguard Worker /* getenv(), getpwuid() and provide is_vms_shell() */
30*6236dae4SAndroid Build Coastguard Worker /* Also need upper case symbols for system services, and */
31*6236dae4SAndroid Build Coastguard Worker /* OpenSSL, and some Kerberos image */
32*6236dae4SAndroid Build Coastguard Worker
33*6236dae4SAndroid Build Coastguard Worker #ifdef __DECC
34*6236dae4SAndroid Build Coastguard Worker #pragma message save
35*6236dae4SAndroid Build Coastguard Worker #pragma message disable dollarid
36*6236dae4SAndroid Build Coastguard Worker #endif
37*6236dae4SAndroid Build Coastguard Worker
38*6236dae4SAndroid Build Coastguard Worker /* Hide the stuff we are overriding */
39*6236dae4SAndroid Build Coastguard Worker #define getenv decc_getenv
40*6236dae4SAndroid Build Coastguard Worker #ifdef __DECC
41*6236dae4SAndroid Build Coastguard Worker # if __INITIAL_POINTER_SIZE != 64
42*6236dae4SAndroid Build Coastguard Worker # define getpwuid decc_getpwuid
43*6236dae4SAndroid Build Coastguard Worker # endif
44*6236dae4SAndroid Build Coastguard Worker #endif
45*6236dae4SAndroid Build Coastguard Worker #include <stdlib.h>
46*6236dae4SAndroid Build Coastguard Worker char *decc$getenv(const char *__name);
47*6236dae4SAndroid Build Coastguard Worker #include <pwd.h>
48*6236dae4SAndroid Build Coastguard Worker
49*6236dae4SAndroid Build Coastguard Worker #include <string.h>
50*6236dae4SAndroid Build Coastguard Worker #include <unixlib.h>
51*6236dae4SAndroid Build Coastguard Worker
52*6236dae4SAndroid Build Coastguard Worker #undef getenv
53*6236dae4SAndroid Build Coastguard Worker #undef getpwuid
54*6236dae4SAndroid Build Coastguard Worker #define getenv vms_getenv
55*6236dae4SAndroid Build Coastguard Worker #define getpwuid vms_getpwuid
56*6236dae4SAndroid Build Coastguard Worker
57*6236dae4SAndroid Build Coastguard Worker /* VAX needs these in upper case when compiling exact case */
58*6236dae4SAndroid Build Coastguard Worker #define sys$assign SYS$ASSIGN
59*6236dae4SAndroid Build Coastguard Worker #define sys$dassgn SYS$DASSGN
60*6236dae4SAndroid Build Coastguard Worker #define sys$qiow SYS$QIOW
61*6236dae4SAndroid Build Coastguard Worker
62*6236dae4SAndroid Build Coastguard Worker #ifdef __DECC
63*6236dae4SAndroid Build Coastguard Worker # if __INITIAL_POINTER_SIZE
64*6236dae4SAndroid Build Coastguard Worker # pragma __pointer_size __save
65*6236dae4SAndroid Build Coastguard Worker # endif
66*6236dae4SAndroid Build Coastguard Worker #endif
67*6236dae4SAndroid Build Coastguard Worker
68*6236dae4SAndroid Build Coastguard Worker #if __USE_LONG_GID_T
69*6236dae4SAndroid Build Coastguard Worker # define decc_getpwuid DECC$__LONG_GID_GETPWUID
70*6236dae4SAndroid Build Coastguard Worker #else
71*6236dae4SAndroid Build Coastguard Worker # if __INITIAL_POINTER_SIZE
72*6236dae4SAndroid Build Coastguard Worker # define decc_getpwuid decc$__32_getpwuid
73*6236dae4SAndroid Build Coastguard Worker # else
74*6236dae4SAndroid Build Coastguard Worker # define decc_getpwuid decc$getpwuid
75*6236dae4SAndroid Build Coastguard Worker # endif
76*6236dae4SAndroid Build Coastguard Worker #endif
77*6236dae4SAndroid Build Coastguard Worker
78*6236dae4SAndroid Build Coastguard Worker struct passwd *decc_getpwuid(uid_t uid);
79*6236dae4SAndroid Build Coastguard Worker
80*6236dae4SAndroid Build Coastguard Worker #ifdef __DECC
81*6236dae4SAndroid Build Coastguard Worker # if __INITIAL_POINTER_SIZE == 32
82*6236dae4SAndroid Build Coastguard Worker /* Translate the path, but only if the path is a VMS file specification */
83*6236dae4SAndroid Build Coastguard Worker /* The translation is usually only needed for older versions of VMS */
vms_translate_path(const char * path)84*6236dae4SAndroid Build Coastguard Worker static char *vms_translate_path(const char *path)
85*6236dae4SAndroid Build Coastguard Worker {
86*6236dae4SAndroid Build Coastguard Worker char *unix_path;
87*6236dae4SAndroid Build Coastguard Worker char *test_str;
88*6236dae4SAndroid Build Coastguard Worker
89*6236dae4SAndroid Build Coastguard Worker /* See if the result is in VMS format, if not, we are done */
90*6236dae4SAndroid Build Coastguard Worker /* Assume that this is a PATH, not just some data */
91*6236dae4SAndroid Build Coastguard Worker test_str = strpbrk(path, ":[<^");
92*6236dae4SAndroid Build Coastguard Worker if(!test_str) {
93*6236dae4SAndroid Build Coastguard Worker return (char *)path;
94*6236dae4SAndroid Build Coastguard Worker }
95*6236dae4SAndroid Build Coastguard Worker
96*6236dae4SAndroid Build Coastguard Worker unix_path = decc$translate_vms(path);
97*6236dae4SAndroid Build Coastguard Worker
98*6236dae4SAndroid Build Coastguard Worker if((int)unix_path <= 0) {
99*6236dae4SAndroid Build Coastguard Worker /* We can not translate it, so return the original string */
100*6236dae4SAndroid Build Coastguard Worker return (char *)path;
101*6236dae4SAndroid Build Coastguard Worker }
102*6236dae4SAndroid Build Coastguard Worker }
103*6236dae4SAndroid Build Coastguard Worker # else
104*6236dae4SAndroid Build Coastguard Worker /* VMS translate path is actually not needed on the current 64-bit */
105*6236dae4SAndroid Build Coastguard Worker /* VMS platforms, so instead of figuring out the pointer settings */
106*6236dae4SAndroid Build Coastguard Worker /* Change it to a noop */
107*6236dae4SAndroid Build Coastguard Worker # define vms_translate_path(__path) __path
108*6236dae4SAndroid Build Coastguard Worker # endif
109*6236dae4SAndroid Build Coastguard Worker #endif
110*6236dae4SAndroid Build Coastguard Worker
111*6236dae4SAndroid Build Coastguard Worker #ifdef __DECC
112*6236dae4SAndroid Build Coastguard Worker # if __INITIAL_POINTER_SIZE
113*6236dae4SAndroid Build Coastguard Worker # pragma __pointer_size __restore
114*6236dae4SAndroid Build Coastguard Worker # endif
115*6236dae4SAndroid Build Coastguard Worker #endif
116*6236dae4SAndroid Build Coastguard Worker
vms_getenv(const char * envvar)117*6236dae4SAndroid Build Coastguard Worker static char *vms_getenv(const char *envvar)
118*6236dae4SAndroid Build Coastguard Worker {
119*6236dae4SAndroid Build Coastguard Worker char *result;
120*6236dae4SAndroid Build Coastguard Worker char *vms_path;
121*6236dae4SAndroid Build Coastguard Worker
122*6236dae4SAndroid Build Coastguard Worker /* first use the DECC getenv() function */
123*6236dae4SAndroid Build Coastguard Worker result = decc$getenv(envvar);
124*6236dae4SAndroid Build Coastguard Worker if(!result) {
125*6236dae4SAndroid Build Coastguard Worker return result;
126*6236dae4SAndroid Build Coastguard Worker }
127*6236dae4SAndroid Build Coastguard Worker
128*6236dae4SAndroid Build Coastguard Worker vms_path = result;
129*6236dae4SAndroid Build Coastguard Worker result = vms_translate_path(vms_path);
130*6236dae4SAndroid Build Coastguard Worker
131*6236dae4SAndroid Build Coastguard Worker /* note that if you backport this to use VAX C RTL, that the VAX C RTL */
132*6236dae4SAndroid Build Coastguard Worker /* may do a malloc(2048) for each call to getenv(), so you will need */
133*6236dae4SAndroid Build Coastguard Worker /* to add a free(vms_path) */
134*6236dae4SAndroid Build Coastguard Worker /* Do not do a free() for DEC C RTL builds, which should be used for */
135*6236dae4SAndroid Build Coastguard Worker /* VMS 5.5-2 and later, even if using GCC */
136*6236dae4SAndroid Build Coastguard Worker
137*6236dae4SAndroid Build Coastguard Worker return result;
138*6236dae4SAndroid Build Coastguard Worker }
139*6236dae4SAndroid Build Coastguard Worker
140*6236dae4SAndroid Build Coastguard Worker
141*6236dae4SAndroid Build Coastguard Worker static struct passwd vms_passwd_cache;
142*6236dae4SAndroid Build Coastguard Worker
vms_getpwuid(uid_t uid)143*6236dae4SAndroid Build Coastguard Worker static struct passwd *vms_getpwuid(uid_t uid)
144*6236dae4SAndroid Build Coastguard Worker {
145*6236dae4SAndroid Build Coastguard Worker struct passwd *my_passwd;
146*6236dae4SAndroid Build Coastguard Worker
147*6236dae4SAndroid Build Coastguard Worker /* Hack needed to support 64-bit builds, decc_getpwnam is 32-bit only */
148*6236dae4SAndroid Build Coastguard Worker #ifdef __DECC
149*6236dae4SAndroid Build Coastguard Worker # if __INITIAL_POINTER_SIZE
150*6236dae4SAndroid Build Coastguard Worker __char_ptr32 unix_path;
151*6236dae4SAndroid Build Coastguard Worker # else
152*6236dae4SAndroid Build Coastguard Worker char *unix_path;
153*6236dae4SAndroid Build Coastguard Worker # endif
154*6236dae4SAndroid Build Coastguard Worker #else
155*6236dae4SAndroid Build Coastguard Worker char *unix_path;
156*6236dae4SAndroid Build Coastguard Worker #endif
157*6236dae4SAndroid Build Coastguard Worker
158*6236dae4SAndroid Build Coastguard Worker my_passwd = decc_getpwuid(uid);
159*6236dae4SAndroid Build Coastguard Worker if(!my_passwd) {
160*6236dae4SAndroid Build Coastguard Worker return my_passwd;
161*6236dae4SAndroid Build Coastguard Worker }
162*6236dae4SAndroid Build Coastguard Worker
163*6236dae4SAndroid Build Coastguard Worker unix_path = vms_translate_path(my_passwd->pw_dir);
164*6236dae4SAndroid Build Coastguard Worker
165*6236dae4SAndroid Build Coastguard Worker if((long)unix_path <= 0) {
166*6236dae4SAndroid Build Coastguard Worker /* We can not translate it, so return the original string */
167*6236dae4SAndroid Build Coastguard Worker return my_passwd;
168*6236dae4SAndroid Build Coastguard Worker }
169*6236dae4SAndroid Build Coastguard Worker
170*6236dae4SAndroid Build Coastguard Worker /* If no changes needed just return it */
171*6236dae4SAndroid Build Coastguard Worker if(unix_path == my_passwd->pw_dir) {
172*6236dae4SAndroid Build Coastguard Worker return my_passwd;
173*6236dae4SAndroid Build Coastguard Worker }
174*6236dae4SAndroid Build Coastguard Worker
175*6236dae4SAndroid Build Coastguard Worker /* Need to copy the structure returned */
176*6236dae4SAndroid Build Coastguard Worker /* Since curl is only using pw_dir, no need to fix up */
177*6236dae4SAndroid Build Coastguard Worker /* the pw_shell when running under Bash */
178*6236dae4SAndroid Build Coastguard Worker vms_passwd_cache.pw_name = my_passwd->pw_name;
179*6236dae4SAndroid Build Coastguard Worker vms_passwd_cache.pw_uid = my_passwd->pw_uid;
180*6236dae4SAndroid Build Coastguard Worker vms_passwd_cache.pw_gid = my_passwd->pw_uid;
181*6236dae4SAndroid Build Coastguard Worker vms_passwd_cache.pw_dir = unix_path;
182*6236dae4SAndroid Build Coastguard Worker vms_passwd_cache.pw_shell = my_passwd->pw_shell;
183*6236dae4SAndroid Build Coastguard Worker
184*6236dae4SAndroid Build Coastguard Worker return &vms_passwd_cache;
185*6236dae4SAndroid Build Coastguard Worker }
186*6236dae4SAndroid Build Coastguard Worker
187*6236dae4SAndroid Build Coastguard Worker #ifdef __DECC
188*6236dae4SAndroid Build Coastguard Worker #pragma message restore
189*6236dae4SAndroid Build Coastguard Worker #endif
190*6236dae4SAndroid Build Coastguard Worker
191*6236dae4SAndroid Build Coastguard Worker /* Bug - VMS OpenSSL and Kerberos universal symbols are in uppercase only */
192*6236dae4SAndroid Build Coastguard Worker /* VMS libraries should have universal symbols in exact and uppercase */
193*6236dae4SAndroid Build Coastguard Worker
194*6236dae4SAndroid Build Coastguard Worker #define ASN1_INTEGER_get ASN1_INTEGER_GET
195*6236dae4SAndroid Build Coastguard Worker #define ASN1_STRING_data ASN1_STRING_DATA
196*6236dae4SAndroid Build Coastguard Worker #define ASN1_STRING_length ASN1_STRING_LENGTH
197*6236dae4SAndroid Build Coastguard Worker #define ASN1_STRING_print ASN1_STRING_PRINT
198*6236dae4SAndroid Build Coastguard Worker #define ASN1_STRING_to_UTF8 ASN1_STRING_TO_UTF8
199*6236dae4SAndroid Build Coastguard Worker #define ASN1_STRING_type ASN1_STRING_TYPE
200*6236dae4SAndroid Build Coastguard Worker #define BIO_ctrl BIO_CTRL
201*6236dae4SAndroid Build Coastguard Worker #define BIO_free BIO_FREE
202*6236dae4SAndroid Build Coastguard Worker #define BIO_new BIO_NEW
203*6236dae4SAndroid Build Coastguard Worker #define BIO_s_mem BIO_S_MEM
204*6236dae4SAndroid Build Coastguard Worker #define BN_bn2bin BN_BN2BIN
205*6236dae4SAndroid Build Coastguard Worker #define BN_num_bits BN_NUM_BITS
206*6236dae4SAndroid Build Coastguard Worker #define CRYPTO_cleanup_all_ex_data CRYPTO_CLEANUP_ALL_EX_DATA
207*6236dae4SAndroid Build Coastguard Worker #define CRYPTO_free CRYPTO_FREE
208*6236dae4SAndroid Build Coastguard Worker #define CRYPTO_malloc CRYPTO_MALLOC
209*6236dae4SAndroid Build Coastguard Worker #define CONF_modules_load_file CONF_MODULES_LOAD_FILE
210*6236dae4SAndroid Build Coastguard Worker #ifdef __VAX
211*6236dae4SAndroid Build Coastguard Worker # ifdef VMS_OLD_SSL
212*6236dae4SAndroid Build Coastguard Worker /* Ancient OpenSSL on VAX/VMS missing this constant */
213*6236dae4SAndroid Build Coastguard Worker # define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
214*6236dae4SAndroid Build Coastguard Worker # undef CONF_modules_load_file
CONF_modules_load_file(const char * filename,const char * appname,unsigned long flags)215*6236dae4SAndroid Build Coastguard Worker static int CONF_modules_load_file(const char *filename,
216*6236dae4SAndroid Build Coastguard Worker const char *appname,
217*6236dae4SAndroid Build Coastguard Worker unsigned long flags) {
218*6236dae4SAndroid Build Coastguard Worker return 1;
219*6236dae4SAndroid Build Coastguard Worker }
220*6236dae4SAndroid Build Coastguard Worker # endif
221*6236dae4SAndroid Build Coastguard Worker #endif
222*6236dae4SAndroid Build Coastguard Worker #define DES_ecb_encrypt DES_ECB_ENCRYPT
223*6236dae4SAndroid Build Coastguard Worker #define DES_set_key DES_SET_KEY
224*6236dae4SAndroid Build Coastguard Worker #define DES_set_odd_parity DES_SET_ODD_PARITY
225*6236dae4SAndroid Build Coastguard Worker #define ENGINE_ctrl ENGINE_CTRL
226*6236dae4SAndroid Build Coastguard Worker #define ENGINE_ctrl_cmd ENGINE_CTRL_CMD
227*6236dae4SAndroid Build Coastguard Worker #define ENGINE_finish ENGINE_FINISH
228*6236dae4SAndroid Build Coastguard Worker #define ENGINE_free ENGINE_FREE
229*6236dae4SAndroid Build Coastguard Worker #define ENGINE_get_first ENGINE_GET_FIRST
230*6236dae4SAndroid Build Coastguard Worker #define ENGINE_get_id ENGINE_GET_ID
231*6236dae4SAndroid Build Coastguard Worker #define ENGINE_get_next ENGINE_GET_NEXT
232*6236dae4SAndroid Build Coastguard Worker #define ENGINE_init ENGINE_INIT
233*6236dae4SAndroid Build Coastguard Worker #define ENGINE_load_builtin_engines ENGINE_LOAD_BUILTIN_ENGINES
234*6236dae4SAndroid Build Coastguard Worker #define ENGINE_load_private_key ENGINE_LOAD_PRIVATE_KEY
235*6236dae4SAndroid Build Coastguard Worker #define ENGINE_set_default ENGINE_SET_DEFAULT
236*6236dae4SAndroid Build Coastguard Worker #define ERR_clear_error ERR_CLEAR_ERROR
237*6236dae4SAndroid Build Coastguard Worker #define ERR_error_string ERR_ERROR_STRING
238*6236dae4SAndroid Build Coastguard Worker #define ERR_error_string_n ERR_ERROR_STRING_N
239*6236dae4SAndroid Build Coastguard Worker #define ERR_free_strings ERR_FREE_STRINGS
240*6236dae4SAndroid Build Coastguard Worker #define ERR_get_error ERR_GET_ERROR
241*6236dae4SAndroid Build Coastguard Worker #define ERR_peek_error ERR_PEEK_ERROR
242*6236dae4SAndroid Build Coastguard Worker #define ERR_remove_state ERR_REMOVE_STATE
243*6236dae4SAndroid Build Coastguard Worker #define EVP_PKEY_copy_parameters EVP_PKEY_COPY_PARAMETERS
244*6236dae4SAndroid Build Coastguard Worker #define EVP_PKEY_free EVP_PKEY_FREE
245*6236dae4SAndroid Build Coastguard Worker #define EVP_cleanup EVP_CLEANUP
246*6236dae4SAndroid Build Coastguard Worker #define GENERAL_NAMES_free GENERAL_NAMES_FREE
247*6236dae4SAndroid Build Coastguard Worker #define i2d_X509_PUBKEY I2D_X509_PUBKEY
248*6236dae4SAndroid Build Coastguard Worker #define MD4_Final MD4_FINAL
249*6236dae4SAndroid Build Coastguard Worker #define MD4_Init MD4_INIT
250*6236dae4SAndroid Build Coastguard Worker #define MD4_Update MD4_UPDATE
251*6236dae4SAndroid Build Coastguard Worker #define MD5_Final MD5_FINAL
252*6236dae4SAndroid Build Coastguard Worker #define MD5_Init MD5_INIT
253*6236dae4SAndroid Build Coastguard Worker #define MD5_Update MD5_UPDATE
254*6236dae4SAndroid Build Coastguard Worker #define OPENSSL_add_all_algo_noconf OPENSSL_ADD_ALL_ALGO_NOCONF
255*6236dae4SAndroid Build Coastguard Worker #ifndef __VAX
256*6236dae4SAndroid Build Coastguard Worker #define OPENSSL_load_builtin_modules OPENSSL_LOAD_BUILTIN_MODULES
257*6236dae4SAndroid Build Coastguard Worker #endif
258*6236dae4SAndroid Build Coastguard Worker #define PEM_read_X509 PEM_READ_X509
259*6236dae4SAndroid Build Coastguard Worker #define PEM_write_bio_X509 PEM_WRITE_BIO_X509
260*6236dae4SAndroid Build Coastguard Worker #define PKCS12_PBE_add PKCS12_PBE_ADD
261*6236dae4SAndroid Build Coastguard Worker #define PKCS12_free PKCS12_FREE
262*6236dae4SAndroid Build Coastguard Worker #define PKCS12_parse PKCS12_PARSE
263*6236dae4SAndroid Build Coastguard Worker #define RAND_add RAND_ADD
264*6236dae4SAndroid Build Coastguard Worker #define RAND_bytes RAND_BYTES
265*6236dae4SAndroid Build Coastguard Worker #define RAND_file_name RAND_FILE_NAME
266*6236dae4SAndroid Build Coastguard Worker #define RAND_load_file RAND_LOAD_FILE
267*6236dae4SAndroid Build Coastguard Worker #define RAND_status RAND_STATUS
268*6236dae4SAndroid Build Coastguard Worker #define SSL_CIPHER_get_name SSL_CIPHER_GET_NAME
269*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_add_client_CA SSL_CTX_ADD_CLIENT_CA
270*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_callback_ctrl SSL_CTX_CALLBACK_CTRL
271*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_check_private_key SSL_CTX_CHECK_PRIVATE_KEY
272*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_ctrl SSL_CTX_CTRL
273*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_free SSL_CTX_FREE
274*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_get_cert_store SSL_CTX_GET_CERT_STORE
275*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_load_verify_locations SSL_CTX_LOAD_VERIFY_LOCATIONS
276*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_new SSL_CTX_NEW
277*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_set_cipher_list SSL_CTX_SET_CIPHER_LIST
278*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_set_def_passwd_cb_ud SSL_CTX_SET_DEF_PASSWD_CB_UD
279*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_set_default_passwd_cb SSL_CTX_SET_DEFAULT_PASSWD_CB
280*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_set_msg_callback SSL_CTX_SET_MSG_CALLBACK
281*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_set_verify SSL_CTX_SET_VERIFY
282*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_use_PrivateKey SSL_CTX_USE_PRIVATEKEY
283*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_use_PrivateKey_file SSL_CTX_USE_PRIVATEKEY_FILE
284*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_use_cert_chain_file SSL_CTX_USE_CERT_CHAIN_FILE
285*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_use_certificate SSL_CTX_USE_CERTIFICATE
286*6236dae4SAndroid Build Coastguard Worker #define SSL_CTX_use_certificate_file SSL_CTX_USE_CERTIFICATE_FILE
287*6236dae4SAndroid Build Coastguard Worker #define SSL_SESSION_free SSL_SESSION_FREE
288*6236dae4SAndroid Build Coastguard Worker #define SSL_connect SSL_CONNECT
289*6236dae4SAndroid Build Coastguard Worker #define SSL_free SSL_FREE
290*6236dae4SAndroid Build Coastguard Worker #define SSL_get1_session SSL_GET1_SESSION
291*6236dae4SAndroid Build Coastguard Worker #define SSL_get_certificate SSL_GET_CERTIFICATE
292*6236dae4SAndroid Build Coastguard Worker #define SSL_get_current_cipher SSL_GET_CURRENT_CIPHER
293*6236dae4SAndroid Build Coastguard Worker #define SSL_get_error SSL_GET_ERROR
294*6236dae4SAndroid Build Coastguard Worker #define SSL_get_peer_cert_chain SSL_GET_PEER_CERT_CHAIN
295*6236dae4SAndroid Build Coastguard Worker #define SSL_get_peer_certificate SSL_GET_PEER_CERTIFICATE
296*6236dae4SAndroid Build Coastguard Worker #define SSL_get_privatekey SSL_GET_PRIVATEKEY
297*6236dae4SAndroid Build Coastguard Worker #define SSL_get_session SSL_GET_SESSION
298*6236dae4SAndroid Build Coastguard Worker #define SSL_get_shutdown SSL_GET_SHUTDOWN
299*6236dae4SAndroid Build Coastguard Worker #define SSL_get_verify_result SSL_GET_VERIFY_RESULT
300*6236dae4SAndroid Build Coastguard Worker #define SSL_library_init SSL_LIBRARY_INIT
301*6236dae4SAndroid Build Coastguard Worker #define SSL_load_error_strings SSL_LOAD_ERROR_STRINGS
302*6236dae4SAndroid Build Coastguard Worker #define SSL_new SSL_NEW
303*6236dae4SAndroid Build Coastguard Worker #define SSL_peek SSL_PEEK
304*6236dae4SAndroid Build Coastguard Worker #define SSL_pending SSL_PENDING
305*6236dae4SAndroid Build Coastguard Worker #define SSL_read SSL_READ
306*6236dae4SAndroid Build Coastguard Worker #define SSL_set_connect_state SSL_SET_CONNECT_STATE
307*6236dae4SAndroid Build Coastguard Worker #define SSL_set_fd SSL_SET_FD
308*6236dae4SAndroid Build Coastguard Worker #define SSL_set_session SSL_SET_SESSION
309*6236dae4SAndroid Build Coastguard Worker #define SSL_shutdown SSL_SHUTDOWN
310*6236dae4SAndroid Build Coastguard Worker #define SSL_version SSL_VERSION
311*6236dae4SAndroid Build Coastguard Worker #define SSL_write SSL_WRITE
312*6236dae4SAndroid Build Coastguard Worker #define SSLeay SSLEAY
313*6236dae4SAndroid Build Coastguard Worker #define SSLv23_client_method SSLV23_CLIENT_METHOD
314*6236dae4SAndroid Build Coastguard Worker #define SSLv3_client_method SSLV3_CLIENT_METHOD
315*6236dae4SAndroid Build Coastguard Worker #define TLSv1_client_method TLSV1_CLIENT_METHOD
316*6236dae4SAndroid Build Coastguard Worker #define UI_create_method UI_CREATE_METHOD
317*6236dae4SAndroid Build Coastguard Worker #define UI_destroy_method UI_DESTROY_METHOD
318*6236dae4SAndroid Build Coastguard Worker #define UI_get0_user_data UI_GET0_USER_DATA
319*6236dae4SAndroid Build Coastguard Worker #define UI_get_input_flags UI_GET_INPUT_FLAGS
320*6236dae4SAndroid Build Coastguard Worker #define UI_get_string_type UI_GET_STRING_TYPE
321*6236dae4SAndroid Build Coastguard Worker #define UI_create_method UI_CREATE_METHOD
322*6236dae4SAndroid Build Coastguard Worker #define UI_destroy_method UI_DESTROY_METHOD
323*6236dae4SAndroid Build Coastguard Worker #define UI_method_get_closer UI_METHOD_GET_CLOSER
324*6236dae4SAndroid Build Coastguard Worker #define UI_method_get_opener UI_METHOD_GET_OPENER
325*6236dae4SAndroid Build Coastguard Worker #define UI_method_get_reader UI_METHOD_GET_READER
326*6236dae4SAndroid Build Coastguard Worker #define UI_method_get_writer UI_METHOD_GET_WRITER
327*6236dae4SAndroid Build Coastguard Worker #define UI_method_set_closer UI_METHOD_SET_CLOSER
328*6236dae4SAndroid Build Coastguard Worker #define UI_method_set_opener UI_METHOD_SET_OPENER
329*6236dae4SAndroid Build Coastguard Worker #define UI_method_set_reader UI_METHOD_SET_READER
330*6236dae4SAndroid Build Coastguard Worker #define UI_method_set_writer UI_METHOD_SET_WRITER
331*6236dae4SAndroid Build Coastguard Worker #define UI_OpenSSL UI_OPENSSL
332*6236dae4SAndroid Build Coastguard Worker #define UI_set_result UI_SET_RESULT
333*6236dae4SAndroid Build Coastguard Worker #define X509V3_EXT_print X509V3_EXT_PRINT
334*6236dae4SAndroid Build Coastguard Worker #define X509_EXTENSION_get_critical X509_EXTENSION_GET_CRITICAL
335*6236dae4SAndroid Build Coastguard Worker #define X509_EXTENSION_get_data X509_EXTENSION_GET_DATA
336*6236dae4SAndroid Build Coastguard Worker #define X509_EXTENSION_get_object X509_EXTENSION_GET_OBJECT
337*6236dae4SAndroid Build Coastguard Worker #define X509_LOOKUP_file X509_LOOKUP_FILE
338*6236dae4SAndroid Build Coastguard Worker #define X509_NAME_ENTRY_get_data X509_NAME_ENTRY_GET_DATA
339*6236dae4SAndroid Build Coastguard Worker #define X509_NAME_get_entry X509_NAME_GET_ENTRY
340*6236dae4SAndroid Build Coastguard Worker #define X509_NAME_get_index_by_NID X509_NAME_GET_INDEX_BY_NID
341*6236dae4SAndroid Build Coastguard Worker #define X509_NAME_print_ex X509_NAME_PRINT_EX
342*6236dae4SAndroid Build Coastguard Worker #define X509_STORE_CTX_get_current_cert X509_STORE_CTX_GET_CURRENT_CERT
343*6236dae4SAndroid Build Coastguard Worker #define X509_STORE_add_lookup X509_STORE_ADD_LOOKUP
344*6236dae4SAndroid Build Coastguard Worker #define X509_STORE_set_flags X509_STORE_SET_FLAGS
345*6236dae4SAndroid Build Coastguard Worker #define X509_check_issued X509_CHECK_ISSUED
346*6236dae4SAndroid Build Coastguard Worker #define X509_free X509_FREE
347*6236dae4SAndroid Build Coastguard Worker #define X509_get_ext_d2i X509_GET_EXT_D2I
348*6236dae4SAndroid Build Coastguard Worker #define X509_get_issuer_name X509_GET_ISSUER_NAME
349*6236dae4SAndroid Build Coastguard Worker #define X509_get_pubkey X509_GET_PUBKEY
350*6236dae4SAndroid Build Coastguard Worker #define X509_get_serialNumber X509_GET_SERIALNUMBER
351*6236dae4SAndroid Build Coastguard Worker #define X509_get_subject_name X509_GET_SUBJECT_NAME
352*6236dae4SAndroid Build Coastguard Worker #define X509_load_crl_file X509_LOAD_CRL_FILE
353*6236dae4SAndroid Build Coastguard Worker #define X509_verify_cert_error_string X509_VERIFY_CERT_ERROR_STRING
354*6236dae4SAndroid Build Coastguard Worker #define d2i_PKCS12_fp D2I_PKCS12_FP
355*6236dae4SAndroid Build Coastguard Worker #define i2t_ASN1_OBJECT I2T_ASN1_OBJECT
356*6236dae4SAndroid Build Coastguard Worker #define sk_num SK_NUM
357*6236dae4SAndroid Build Coastguard Worker #define sk_pop SK_POP
358*6236dae4SAndroid Build Coastguard Worker #define sk_pop_free SK_POP_FREE
359*6236dae4SAndroid Build Coastguard Worker #define sk_value SK_VALUE
360*6236dae4SAndroid Build Coastguard Worker #ifdef __VAX
361*6236dae4SAndroid Build Coastguard Worker #define OPENSSL_NO_SHA256
362*6236dae4SAndroid Build Coastguard Worker #endif
363*6236dae4SAndroid Build Coastguard Worker #define SHA256_Final SHA256_FINAL
364*6236dae4SAndroid Build Coastguard Worker #define SHA256_Init SHA256_INIT
365*6236dae4SAndroid Build Coastguard Worker #define SHA256_Update SHA256_UPDATE
366*6236dae4SAndroid Build Coastguard Worker
367*6236dae4SAndroid Build Coastguard Worker #define USE_UPPERCASE_GSSAPI 1
368*6236dae4SAndroid Build Coastguard Worker #define gss_seal GSS_SEAL
369*6236dae4SAndroid Build Coastguard Worker #define gss_unseal GSS_UNSEAL
370*6236dae4SAndroid Build Coastguard Worker
371*6236dae4SAndroid Build Coastguard Worker #define USE_UPPERCASE_KRBAPI 1
372*6236dae4SAndroid Build Coastguard Worker
373*6236dae4SAndroid Build Coastguard Worker /* AI_NUMERICHOST needed for IP V6 support in Curl */
374*6236dae4SAndroid Build Coastguard Worker #ifdef HAVE_NETDB_H
375*6236dae4SAndroid Build Coastguard Worker #include <netdb.h>
376*6236dae4SAndroid Build Coastguard Worker #ifndef AI_NUMERICHOST
377*6236dae4SAndroid Build Coastguard Worker #ifdef USE_IPV6
378*6236dae4SAndroid Build Coastguard Worker #undef USE_IPV6
379*6236dae4SAndroid Build Coastguard Worker #endif
380*6236dae4SAndroid Build Coastguard Worker #endif
381*6236dae4SAndroid Build Coastguard Worker #endif
382*6236dae4SAndroid Build Coastguard Worker
383*6236dae4SAndroid Build Coastguard Worker /* VAX symbols are always in uppercase */
384*6236dae4SAndroid Build Coastguard Worker #ifdef __VAX
385*6236dae4SAndroid Build Coastguard Worker #define inflate INFLATE
386*6236dae4SAndroid Build Coastguard Worker #define inflateEnd INFLATEEND
387*6236dae4SAndroid Build Coastguard Worker #define inflateInit2_ INFLATEINIT2_
388*6236dae4SAndroid Build Coastguard Worker #define inflateInit_ INFLATEINIT_
389*6236dae4SAndroid Build Coastguard Worker #define zlibVersion ZLIBVERSION
390*6236dae4SAndroid Build Coastguard Worker #endif
391*6236dae4SAndroid Build Coastguard Worker
392*6236dae4SAndroid Build Coastguard Worker /* Older VAX OpenSSL port defines these as Macros */
393*6236dae4SAndroid Build Coastguard Worker /* Need to include the headers first and then redefine */
394*6236dae4SAndroid Build Coastguard Worker /* that way a newer port will also work if some one has one */
395*6236dae4SAndroid Build Coastguard Worker #ifdef __VAX
396*6236dae4SAndroid Build Coastguard Worker
397*6236dae4SAndroid Build Coastguard Worker # if (OPENSSL_VERSION_NUMBER < 0x00907001L)
398*6236dae4SAndroid Build Coastguard Worker # define des_set_odd_parity DES_SET_ODD_PARITY
399*6236dae4SAndroid Build Coastguard Worker # define des_set_key DES_SET_KEY
400*6236dae4SAndroid Build Coastguard Worker # define des_ecb_encrypt DES_ECB_ENCRYPT
401*6236dae4SAndroid Build Coastguard Worker
402*6236dae4SAndroid Build Coastguard Worker # endif
403*6236dae4SAndroid Build Coastguard Worker # include <openssl/evp.h>
404*6236dae4SAndroid Build Coastguard Worker # ifndef OpenSSL_add_all_algorithms
405*6236dae4SAndroid Build Coastguard Worker # define OpenSSL_add_all_algorithms OPENSSL_ADD_ALL_ALGORITHMS
406*6236dae4SAndroid Build Coastguard Worker void OPENSSL_ADD_ALL_ALGORITHMS(void);
407*6236dae4SAndroid Build Coastguard Worker # endif
408*6236dae4SAndroid Build Coastguard Worker
409*6236dae4SAndroid Build Coastguard Worker /* Curl defines these to lower case and VAX needs them in upper case */
410*6236dae4SAndroid Build Coastguard Worker /* So we need static routines */
411*6236dae4SAndroid Build Coastguard Worker # if (OPENSSL_VERSION_NUMBER < 0x00907001L)
412*6236dae4SAndroid Build Coastguard Worker
413*6236dae4SAndroid Build Coastguard Worker # undef des_set_odd_parity
414*6236dae4SAndroid Build Coastguard Worker # undef DES_set_odd_parity
415*6236dae4SAndroid Build Coastguard Worker # undef des_set_key
416*6236dae4SAndroid Build Coastguard Worker # undef DES_set_key
417*6236dae4SAndroid Build Coastguard Worker # undef des_ecb_encrypt
418*6236dae4SAndroid Build Coastguard Worker # undef DES_ecb_encrypt
419*6236dae4SAndroid Build Coastguard Worker
des_set_odd_parity(des_cblock * key)420*6236dae4SAndroid Build Coastguard Worker static void des_set_odd_parity(des_cblock *key) {
421*6236dae4SAndroid Build Coastguard Worker DES_SET_ODD_PARITY(key);
422*6236dae4SAndroid Build Coastguard Worker }
423*6236dae4SAndroid Build Coastguard Worker
des_set_key(const_des_cblock * key,des_key_schedule schedule)424*6236dae4SAndroid Build Coastguard Worker static int des_set_key(const_des_cblock *key,
425*6236dae4SAndroid Build Coastguard Worker des_key_schedule schedule) {
426*6236dae4SAndroid Build Coastguard Worker return DES_SET_KEY(key, schedule);
427*6236dae4SAndroid Build Coastguard Worker }
428*6236dae4SAndroid Build Coastguard Worker
des_ecb_encrypt(const_des_cblock * input,des_cblock * output,des_key_schedule ks,int enc)429*6236dae4SAndroid Build Coastguard Worker static void des_ecb_encrypt(const_des_cblock *input,
430*6236dae4SAndroid Build Coastguard Worker des_cblock *output,
431*6236dae4SAndroid Build Coastguard Worker des_key_schedule ks, int enc) {
432*6236dae4SAndroid Build Coastguard Worker DES_ECB_ENCRYPT(input, output, ks, enc);
433*6236dae4SAndroid Build Coastguard Worker }
434*6236dae4SAndroid Build Coastguard Worker #endif
435*6236dae4SAndroid Build Coastguard Worker /* Need this to stop a macro redefinition error */
436*6236dae4SAndroid Build Coastguard Worker #if OPENSSL_VERSION_NUMBER < 0x00907000L
437*6236dae4SAndroid Build Coastguard Worker # ifdef X509_STORE_set_flags
438*6236dae4SAndroid Build Coastguard Worker # undef X509_STORE_set_flags
439*6236dae4SAndroid Build Coastguard Worker # define X509_STORE_set_flags(x,y) Curl_nop_stmt
440*6236dae4SAndroid Build Coastguard Worker # endif
441*6236dae4SAndroid Build Coastguard Worker #endif
442*6236dae4SAndroid Build Coastguard Worker #endif
443*6236dae4SAndroid Build Coastguard Worker
444*6236dae4SAndroid Build Coastguard Worker #endif /* HEADER_CURL_SETUP_VMS_H */
445