though the change is mostly in the more lenient direction, and
legacy behaviour is preserved as much as possible.
[Emilia Käsper]
-
+ *) Fix no-stdio build.
+ [ David Woodhouse <David.Woodhouse@intel.com> and also
+ Ivan Nestlerode <ivan.nestlerode@sonos.com> ]
*) New testing framework
The testing framework has been largely rewritten and is now using
perl and the perl modules Test::Harness and an extended variant of
if (defined($disabled{"ec"}) || defined($disabled{"dsa"})
- || defined($disabled{"dh"}))
+ || defined($disabled{"dh"}) || defined($disabled{"stdio"}))
{
$disabled{"gost"} = "forced";
}
tasn_typ.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
tasn_typ.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
tasn_typ.o: ../../include/openssl/symhacks.h tasn_typ.c
-tasn_utl.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
-tasn_utl.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
+tasn_utl.o: ../../e_os.h ../../include/openssl/asn1.h
+tasn_utl.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
+tasn_utl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
tasn_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
tasn_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
tasn_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
tasn_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
tasn_utl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-tasn_utl.o: ../../include/openssl/symhacks.h asn1_locl.h tasn_utl.c
+tasn_utl.o: ../../include/openssl/symhacks.h ../include/internal/cryptlib.h
+tasn_utl.o: asn1_locl.h tasn_utl.c
x_algor.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
x_algor.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
return 1;
}
+#ifndef OPENSSL_NO_STDIO
static int send_fp_chars(void *arg, const void *buf, int len)
{
if (!arg)
return 0;
return 1;
}
+#endif
typedef int char_io (void *arg, const void *buf, int len);
#include <stddef.h>
#include <string.h>
+#include <internal/cryptlib.h>
#include <openssl/asn1.h>
#include <openssl/asn1t.h>
#include <openssl/objects.h>
return (ret);
}
+#else
+
+static int file_write(BIO *b, const char *in, int inl)
+{
+ return -1;
+}
+static int file_read(BIO *b, char *out, int outl)
+{
+ return -1;
+}
+static int file_puts(BIO *bp, const char *str)
+{
+ return -1;
+}
+static int file_gets(BIO *bp, char *buf, int size)
+{
+ return 0;
+}
+static long file_ctrl(BIO *b, int cmd, long num, void *ptr)
+{
+ return 0;
+}
+static int file_new(BIO *bi)
+{
+ return 0;
+}
+static int file_free(BIO *a)
+{
+ return 0;
+}
+
+static BIO_METHOD methods_filep = {
+ BIO_TYPE_FILE,
+ "FILE pointer",
+ file_write,
+ file_read,
+ file_puts,
+ file_gets,
+ file_ctrl,
+ file_new,
+ file_free,
+ NULL,
+};
+
+BIO_METHOD *BIO_s_file(void)
+{
+ return (&methods_filep);
+}
+
+BIO *BIO_new_file(const char *filename, const char *mode)
+{
+ return NULL;
+}
+
# endif /* OPENSSL_NO_STDIO */
#endif /* HEADER_BSS_FILE_C */
ENGINE_load_builtin_engines();
#endif
ERR_clear_error();
+#ifndef OPENSSL_SYS_UEFI
CONF_modules_load_file(NULL, config_name,
CONF_MFLAGS_DEFAULT_SECTION |
CONF_MFLAGS_IGNORE_MISSING_FILE);
+#endif
}
void OPENSSL_no_config()
}
# if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM) && !defined(I386_ONLY)
+#include <stdio.h>
# define OPENSSL_CPUID_SETUP
typedef uint64_t IA32CAP;
void OPENSSL_cpuid_setup(void)
#else
void OPENSSL_showfatal(const char *fmta, ...)
{
+#ifndef OPENSSL_NO_STDIO
va_list ap;
va_start(ap, fmta);
vfprintf(stderr, fmta, ap);
va_end(ap);
+#endif
}
int OPENSSL_isservice(void)
#endif
}
-void *OPENSSL_stderr(void)
-{
- return stderr;
-}
-
int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len)
{
size_t i;
#include <openssl/ui.h>
#include <openssl/crypto.h>
+#ifndef BUFSIZ
+#define BUFSIZ 256
+#endif
+
int DES_read_password(DES_cblock *key, const char *prompt, int verify)
{
int ok;
ec_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
ec_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
ec_err.o: ../../include/openssl/symhacks.h ec_err.c
-ec_key.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
-ec_key.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
-ec_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
-ec_key.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-ec_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h
-ec_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-ec_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-ec_key.o: ../../include/openssl/symhacks.h ec_key.c ec_lcl.h
+ec_key.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
+ec_key.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
+ec_key.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
+ec_key.o: ../../include/openssl/ec.h ../../include/openssl/err.h
+ec_key.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+ec_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+ec_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
+ec_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+ec_key.o: ../include/internal/cryptlib.h ec_key.c ec_lcl.h
ec_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
ec_lib.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
ec_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
* contributed to the OpenSSL project.
*/
+#include <internal/cryptlib.h>
#include <string.h>
#include "ec_lcl.h"
#include <openssl/err.h>
* this is no longer automatic in ENGINE_load_builtin_engines().
*/
#define TEST_ENG_OPENSSL_RC4
+#ifndef OPENSSL_NO_STDIO
#define TEST_ENG_OPENSSL_PKEY
+#endif
/* #define TEST_ENG_OPENSSL_HMAC */
/* #define TEST_ENG_OPENSSL_HMAC_INIT */
/* #define TEST_ENG_OPENSSL_RC4_OTHERS */
void OPENSSL_cpuid_setup(void);
extern unsigned int OPENSSL_ia32cap_P[];
void OPENSSL_showfatal(const char *fmta, ...);
-void *OPENSSL_stderr(void);
extern int OPENSSL_NONPIC_relocated;
#ifdef __cplusplus
--pointer->references;
#ifdef REF_CHECK
if (pointer->references < 0) {
- fprintf(stderr,
- "CRYPTO_destroy_dynlockid, bad reference count\n");
+ OPENSSL_showfatal("CRYPTO_destroy_dynlockid, bad reference count\n");
abort();
} else
#endif
static int do_pk8pkey(BIO *bp, EVP_PKEY *x, int isder,
int nid, const EVP_CIPHER *enc,
char *kstr, int klen, pem_password_cb *cb, void *u);
+
+#ifndef OPENSSL_NO_STDIO
static int do_pk8pkey_fp(FILE *bp, EVP_PKEY *x, int isder,
int nid, const EVP_CIPHER *enc,
char *kstr, int klen, pem_password_cb *cb, void *u);
-
+#endif
/*
* These functions write a private key in PKCS#8 format: it is a "drop in"
* replacement for PEM_write_bio_PrivateKey() and friends. As usual if 'enc'
ts_rsp_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/ts.h
ts_rsp_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
ts_rsp_sign.o: ../../include/openssl/x509v3.h ../include/internal/cryptlib.h
-ts_rsp_sign.o: ../include/internal/x509_int.h ts_lcl.h ts_rsp_sign.c
+ts_rsp_sign.o: ts_lcl.h ts_rsp_sign.c
ts_rsp_utils.o: ../../e_os.h ../../include/openssl/asn1.h
ts_rsp_utils.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
ts_rsp_utils.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
ts_rsp_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/ts.h
ts_rsp_verify.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
ts_rsp_verify.o: ../../include/openssl/x509v3.h ../include/internal/cryptlib.h
-ts_rsp_verify.o: ../include/internal/x509_int.h ts_lcl.h ts_rsp_verify.c
+ts_rsp_verify.o: ts_lcl.h ts_rsp_verify.c
ts_verify_ctx.o: ../../e_os.h ../../include/openssl/asn1.h
ts_verify_ctx.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
ts_verify_ctx.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
#include <string.h>
#include "ui_locl.h"
+#ifndef BUFSIZ
+#define BUFSIZ 256
+#endif
+
int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt,
int verify)
{
# include <sys/stat.h>
#endif
+
#include <openssl/lhash.h>
#include <openssl/x509.h>
#include "internal/x509_int.h"
#include <openssl/x509.h>
#include <openssl/pem.h>
-#ifndef OPENSSL_NO_STDIO
-
static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
long argl, char **ret);
static X509_LOOKUP_METHOD x509_file_lookup = {
sk_X509_INFO_pop_free(inf, X509_INFO_free);
return count;
}
-
-#endif /* OPENSSL_NO_STDIO */
#include <openssl/crypto.h>
#include <openssl/x509.h>
-#ifndef OPENSSL_NO_STDIO
int X509_STORE_set_default_paths(X509_STORE *ctx)
{
X509_LOOKUP *lookup;
return (0);
return (1);
}
-
-#endif
# undef REF_PRINT
# define REF_PRINT(a,b) fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a)
# endif
+# if defined(OPENSSL_NO_STDIO) && defined(REF_CHECK)
+# error "Cannot have REF_CHECK with no-stdio"
+# endif
+# if defined(OPENSSL_NO_STDIO) && defined(REF_PRINT)
+# error "Cannot have REF_PRINT with no-stdio"
+# endif
# ifndef DEVRANDOM
/*
int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
asn1_ps_func **psuffix_free);
-# ifndef OPENSSL_NO_STDIO
BIO_METHOD *BIO_s_file(void);
BIO *BIO_new_file(const char *filename, const char *mode);
+# define BIO_s_file_internal BIO_s_file
+# ifndef OPENSSL_NO_STDIO
BIO *BIO_new_fp(FILE *stream, int close_flag);
-# define BIO_s_file_internal BIO_s_file
# endif
BIO *BIO_new(BIO_METHOD *type);
int BIO_set(BIO *a, BIO_METHOD *type);
long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group,
const char *name);
void CONF_free(LHASH_OF(CONF_VALUE) *conf);
+#ifndef OPENSSL_NO_STDIO
int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out);
+#endif
int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out);
void OPENSSL_config(const char *config_name);
char *NCONF_get_string(const CONF *conf, const char *group, const char *name);
int NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
long *result);
+#ifndef OPENSSL_NO_STDIO
int NCONF_dump_fp(const CONF *conf, FILE *out);
+#endif
int NCONF_dump_bio(const CONF *conf, BIO *out);
#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r)
# define DECLARE_PEM_read_fp(name, type) /**/
# define DECLARE_PEM_write_fp(name, type) /**/
+# define DECLARE_PEM_write_fp_const(name, type) /**/
# define DECLARE_PEM_write_cb_fp(name, type) /**/
# else
unsigned char *kstr, int klen,
pem_password_cb *cd, void *u);
+#ifndef OPENSSL_NO_STDIO
int PEM_read(FILE *fp, char **name, char **header,
unsigned char **data, long *len);
int PEM_write(FILE *fp, const char *name, const char *hdr,
int klen, pem_password_cb *callback, void *u);
STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
pem_password_cb *cb, void *u);
+#endif
int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type,
EVP_MD *md_type, unsigned char **ek, int *ekl,
EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
void *u);
+#ifndef OPENSSL_NO_STDIO
int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
char *kstr, int klen,
pem_password_cb *cb, void *u);
int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
char *kstr, int klen, pem_password_cb *cd,
void *u);
-
+#endif
EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x);
int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x);
/* Set serverinfo data for the current active cert. */
__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo,
size_t serverinfo_length);
-# ifndef OPENSSL_NO_STDIO
__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file);
-# endif /* NO_STDIO */
-# ifndef OPENSSL_NO_STDIO
__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type);
__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
const char *file);
-# ifndef OPENSSL_SYS_VMS
+# ifndef OPENSSL_SYS_VMS
int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
const char *dir);
-# endif
-
# endif
void SSL_load_error_strings(void);
TS_REQ *TS_REQ_dup(TS_REQ *a);
+#ifndef OPENSSL_NO_STDIO
TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a);
int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a);
+#endif
TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a);
int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a);
TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a);
+#ifndef OPENSSL_NO_STDIO
TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a);
int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a);
-TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT **a);
-int i2d_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT *a);
+#endif
+TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a);
+int i2d_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT *a);
TS_RESP *TS_RESP_new(void);
void TS_RESP_free(TS_RESP *a);
TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token);
TS_RESP *TS_RESP_dup(TS_RESP *a);
+#ifndef OPENSSL_NO_STDIO
TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a);
int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a);
-TS_RESP *d2i_TS_RESP_bio(BIO *fp, TS_RESP **a);
-int i2d_TS_RESP_bio(BIO *fp, TS_RESP *a);
+#endif
+TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a);
+int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a);
TS_STATUS_INFO *TS_STATUS_INFO_new(void);
void TS_STATUS_INFO_free(TS_STATUS_INFO *a);
long length);
TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a);
+#ifndef OPENSSL_NO_STDIO
TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a);
int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a);
-TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO **a);
-int i2d_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO *a);
+#endif
+TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a);
+int i2d_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO *a);
TS_ACCURACY *TS_ACCURACY_new(void);
void TS_ACCURACY_free(TS_ACCURACY *a);
X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx);
X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
-
X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
long argl, char **ret);
-# ifndef OPENSSL_NO_STDIO
int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type);
int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type);
int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type);
-# endif
X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method);
void X509_LOOKUP_free(X509_LOOKUP *ctx);
X509_OBJECT *ret);
int X509_LOOKUP_shutdown(X509_LOOKUP *ctx);
-# ifndef OPENSSL_NO_STDIO
int X509_STORE_load_locations(X509_STORE *ctx,
const char *file, const char *dir);
int X509_STORE_set_default_paths(X509_STORE *ctx);
-# endif
int X509_STORE_CTX_get_ex_new_index(long argl, void *argp,
CRYPTO_EX_new *new_func,
int ml);
int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag,
int indent);
+#ifndef OPENSSL_NO_STDIO
int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
-
+#endif
int X509V3_extensions_print(BIO *out, char *title,
STACK_OF(X509_EXTENSION) *exts,
unsigned long flag, int indent);
return (X509_NAME_cmp(*a, *b));
}
-#ifndef OPENSSL_NO_STDIO
/**
* Load CA certs from a file into a ::STACK. Note that it is somewhat misnamed;
* it doesn't really have anything to do with clients (except that a common use
ERR_clear_error();
return (ret);
}
-#endif
/**
* Add a file of certs to a stack.
return (ssl->ctx);
}
-#ifndef OPENSSL_NO_STDIO
int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx)
{
return (X509_STORE_set_default_paths(ctx->cert_store));
{
return (X509_STORE_load_locations(ctx->cert_store, CAfile, CApath));
}
-#endif
void SSL_set_info_callback(SSL *ssl,
void (*cb) (const SSL *ssl, int type, int val))
return 1;
}
-#ifndef OPENSSL_NO_STDIO
int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file)
{
unsigned char *serverinfo = NULL;
BIO_free(bin);
return ret;
}
-#endif /* OPENSSL_NO_STDIO */
gmdifftest.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
gmdifftest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
gmdifftest.o: gmdifftest.c
-gost2814789test.o: ../e_os.h ../engines/ccgost/gost89.h
-gost2814789test.o: ../include/openssl/asn1.h ../include/openssl/bio.h
-gost2814789test.o: ../include/openssl/buffer.h ../include/openssl/conf.h
-gost2814789test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
-gost2814789test.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
-gost2814789test.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
-gost2814789test.o: ../include/openssl/err.h ../include/openssl/evp.h
-gost2814789test.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
-gost2814789test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
-gost2814789test.o: ../include/openssl/opensslconf.h
-gost2814789test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-gost2814789test.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
-gost2814789test.o: ../include/openssl/sha.h ../include/openssl/stack.h
-gost2814789test.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
-gost2814789test.o: ../include/openssl/x509_vfy.h gost2814789test.c
+gost2814789test.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
+gost2814789test.o: gost2814789test.c
heartbeat_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
heartbeat_test.o: ../include/openssl/bn.h ../include/openssl/buffer.h
heartbeat_test.o: ../include/openssl/comp.h ../include/openssl/crypto.h
BIO_new_accept 79 EXIST::FUNCTION:
BIO_new_connect 80 EXIST::FUNCTION:
BIO_new_fd 81 EXIST::FUNCTION:
-BIO_new_file 82 EXIST::FUNCTION:STDIO
+BIO_new_file 82 EXIST::FUNCTION:
BIO_new_fp 83 EXIST::FUNCTION:STDIO
BIO_new_socket 84 EXIST::FUNCTION:
BIO_pop 85 EXIST::FUNCTION:
BIO_s_accept 90 EXIST::FUNCTION:
BIO_s_connect 91 EXIST::FUNCTION:
BIO_s_fd 92 EXIST::FUNCTION:
-BIO_s_file 93 EXIST::FUNCTION:STDIO
+BIO_s_file 93 EXIST::FUNCTION:
BIO_s_mem 95 EXIST::FUNCTION:
BIO_s_null 96 EXIST::FUNCTION:
BIO_s_proxy_client 97 NOEXIST::FUNCTION:
OBJ_obj2nid 364 EXIST::FUNCTION:
OBJ_sn2nid 365 EXIST::FUNCTION:
OBJ_txt2nid 366 EXIST::FUNCTION:
-PEM_ASN1_read 367 EXIST::FUNCTION:
+PEM_ASN1_read 367 EXIST::FUNCTION:STDIO
PEM_ASN1_read_bio 368 EXIST::FUNCTION:
-PEM_ASN1_write 369 EXIST::FUNCTION:
+PEM_ASN1_write 369 EXIST::FUNCTION:STDIO
PEM_ASN1_write_bio 370 EXIST::FUNCTION:
PEM_SealFinal 371 EXIST::FUNCTION:RSA
PEM_SealInit 372 EXIST::FUNCTION:RSA
PEM_SignFinal 374 EXIST::FUNCTION:
PEM_SignInit 375 EXIST::FUNCTION:
PEM_SignUpdate 376 EXIST::FUNCTION:
-PEM_X509_INFO_read 377 EXIST::FUNCTION:
+PEM_X509_INFO_read 377 EXIST::FUNCTION:STDIO
PEM_X509_INFO_read_bio 378 EXIST::FUNCTION:
PEM_X509_INFO_write_bio 379 EXIST::FUNCTION:
PEM_dek_info 380 EXIST::FUNCTION:
PEM_do_header 381 EXIST::FUNCTION:
PEM_get_EVP_CIPHER_INFO 382 EXIST::FUNCTION:
PEM_proc_type 383 EXIST::FUNCTION:
-PEM_read 384 EXIST::FUNCTION:
+PEM_read 384 EXIST::FUNCTION:STDIO
PEM_read_DHparams 385 EXIST::FUNCTION:DH
PEM_read_DSAPrivateKey 386 EXIST::FUNCTION:DSA
PEM_read_DSAparams 387 EXIST::FUNCTION:DSA
PEM_read_bio_X509 401 EXIST::FUNCTION:
PEM_read_bio_X509_CRL 402 EXIST::FUNCTION:
PEM_read_bio_X509_REQ 403 EXIST::FUNCTION:
-PEM_write 404 EXIST::FUNCTION:
+PEM_write 404 EXIST::FUNCTION:STDIO
PEM_write_DHparams 405 EXIST::FUNCTION:DH
PEM_write_DSAPrivateKey 406 EXIST::FUNCTION:DSA
PEM_write_DSAparams 407 EXIST::FUNCTION:DSA
X509_STORE_add_lookup 625 EXIST::FUNCTION:
X509_STORE_free 626 EXIST::FUNCTION:
X509_STORE_get_by_subject 627 EXIST::FUNCTION:
-X509_STORE_load_locations 628 EXIST::FUNCTION:STDIO
+X509_STORE_load_locations 628 EXIST::FUNCTION:
X509_STORE_new 629 EXIST::FUNCTION:
-X509_STORE_set_default_paths 630 EXIST::FUNCTION:STDIO
+X509_STORE_set_default_paths 630 EXIST::FUNCTION:
X509_VAL_free 631 EXIST::FUNCTION:
X509_VAL_new 632 EXIST::FUNCTION:
X509_add_ext 633 EXIST::FUNCTION:
X509_issuer_and_serial_hash 660 EXIST::FUNCTION:
X509_issuer_name_cmp 661 EXIST::FUNCTION:
X509_issuer_name_hash 662 EXIST::FUNCTION:
-X509_load_cert_file 663 EXIST::FUNCTION:STDIO
+X509_load_cert_file 663 EXIST::FUNCTION:
X509_new 664 EXIST::FUNCTION:
X509_print 665 EXIST::FUNCTION:
X509_print_fp 666 EXIST::FUNCTION:STDIO
BIO_copy_next_retry 955 EXIST::FUNCTION:
RSA_flags 956 EXIST::FUNCTION:RSA
X509_STORE_add_crl 957 EXIST::FUNCTION:
-X509_load_crl_file 958 EXIST::FUNCTION:STDIO
+X509_load_crl_file 958 EXIST::FUNCTION:
EVP_rc2_40_cbc 959 EXIST::FUNCTION:RC2
EVP_rc4_40 960 EXIST::FUNCTION:RC4
EVP_CIPHER_CTX_init 961 EXIST::FUNCTION:
X509V3_EXT_get 1178 EXIST::FUNCTION:
X509V3_EXT_get_nid 1179 EXIST::FUNCTION:
X509V3_EXT_print 1180 EXIST::FUNCTION:
-X509V3_EXT_print_fp 1181 EXIST::FUNCTION:
+X509V3_EXT_print_fp 1181 EXIST::FUNCTION:STDIO
X509V3_add_standard_extensions 1182 EXIST::FUNCTION:
X509V3_add_value 1183 EXIST::FUNCTION:
X509V3_add_value_bool 1184 EXIST::FUNCTION:
PKCS5_PBKDF2_HMAC_SHA1 1795 EXIST::FUNCTION:
PKCS5_v2_PBE_keyivgen 1796 EXIST::FUNCTION:
PEM_write_bio_PKCS8PrivateKey 1797 EXIST::FUNCTION:
-PEM_write_PKCS8PrivateKey 1798 EXIST::FUNCTION:
+PEM_write_PKCS8PrivateKey 1798 EXIST::FUNCTION:STDIO
BIO_ctrl_get_read_request 1799 EXIST::FUNCTION:
BIO_ctrl_pending 1800 EXIST::FUNCTION:
BIO_ctrl_wpending 1801 EXIST::FUNCTION:
X509_STORE_CTX_free 1969 EXIST::FUNCTION:
EVP_PKEY_set1_DSA 1970 EXIST::FUNCTION:DSA
i2d_DSA_PUBKEY_fp 1971 EXIST::FUNCTION:DSA,STDIO
-X509_load_cert_crl_file 1972 EXIST::FUNCTION:STDIO
+X509_load_cert_crl_file 1972 EXIST::FUNCTION:
ASN1_TIME_new 1973 EXIST::FUNCTION:
i2d_RSA_PUBKEY 1974 EXIST::FUNCTION:RSA
X509_STORE_CTX_purpose_inherit 1976 EXIST::FUNCTION:
CRYPTO_pop_info 2162 EXIST::FUNCTION:
CRYPTO_push_info_ 2163 EXIST::FUNCTION:
CRYPTO_set_mem_debug_options 2164 EXIST::FUNCTION:
-PEM_write_PKCS8PrivateKey_nid 2165 EXIST::FUNCTION:
+PEM_write_PKCS8PrivateKey_nid 2165 EXIST::FUNCTION:STDIO
PEM_write_bio_PKCS8PrivateKey_nid 2166 EXIST:!VMS:FUNCTION:
PEM_write_bio_PKCS8PrivKey_nid 2166 EXIST:VMS:FUNCTION:
d2i_PKCS8PrivateKey_bio 2167 EXIST::FUNCTION:
d2i_ASN1_NULL 2169 EXIST::FUNCTION:
ASN1_NULL_new 2170 EXIST::FUNCTION:
i2d_PKCS8PrivateKey_bio 2171 EXIST::FUNCTION:
-i2d_PKCS8PrivateKey_fp 2172 EXIST::FUNCTION:
+i2d_PKCS8PrivateKey_fp 2172 EXIST::FUNCTION:STDIO
i2d_ASN1_NULL 2173 EXIST::FUNCTION:
-i2d_PKCS8PrivateKey_nid_fp 2174 EXIST::FUNCTION:
-d2i_PKCS8PrivateKey_fp 2175 EXIST::FUNCTION:
+i2d_PKCS8PrivateKey_nid_fp 2174 EXIST::FUNCTION:STDIO
+d2i_PKCS8PrivateKey_fp 2175 EXIST::FUNCTION:STDIO
i2d_PKCS8PrivateKey_nid_bio 2176 EXIST::FUNCTION:
i2d_PKCS8PrivateKeyInfo_fp 2177 EXIST::FUNCTION:STDIO
i2d_PKCS8PrivateKeyInfo_bio 2178 EXIST::FUNCTION:
NCONF_get_string 2280 EXIST::FUNCTION:
NCONF_free 2281 EXIST::FUNCTION:
NCONF_get_number 2282 NOEXIST::FUNCTION:
-CONF_dump_fp 2283 EXIST::FUNCTION:
+CONF_dump_fp 2283 EXIST::FUNCTION:STDIO
NCONF_load_bio 2284 EXIST::FUNCTION:
-NCONF_dump_fp 2285 EXIST::FUNCTION:
+NCONF_dump_fp 2285 EXIST::FUNCTION:STDIO
NCONF_get_section 2286 EXIST::FUNCTION:
NCONF_dump_bio 2287 EXIST::FUNCTION:
CONF_dump_bio 2288 EXIST::FUNCTION:
JPAKE_STEP2_init 4113 EXIST::FUNCTION:JPAKE
pqueue_size 4114 EXIST::FUNCTION:
i2d_TS_ACCURACY 4115 EXIST::FUNCTION:
-i2d_TS_MSG_IMPRINT_fp 4116 EXIST::FUNCTION:
+i2d_TS_MSG_IMPRINT_fp 4116 EXIST::FUNCTION:STDIO
i2d_TS_MSG_IMPRINT 4117 EXIST::FUNCTION:
EVP_PKEY_print_public 4118 EXIST::FUNCTION:
EVP_PKEY_CTX_new 4119 EXIST::FUNCTION:
ENGINE_register_pkey_meths 4129 EXIST::FUNCTION:ENGINE
EVP_PKEY_asn1_add0 4130 EXIST::FUNCTION:
PKCS7_add0_attrib_signing_time 4131 EXIST::FUNCTION:
-i2d_TS_TST_INFO_fp 4132 EXIST::FUNCTION:
+i2d_TS_TST_INFO_fp 4132 EXIST::FUNCTION:STDIO
BIO_asn1_get_prefix 4133 EXIST::FUNCTION:
TS_TST_INFO_set_time 4134 EXIST::FUNCTION:
EVP_PKEY_meth_set_decrypt 4135 EXIST::FUNCTION:
EVP_PKEY_set_type_str 4136 EXIST::FUNCTION:
EVP_PKEY_CTX_get_keygen_info 4137 EXIST::FUNCTION:
TS_REQ_set_policy_id 4138 EXIST::FUNCTION:
-d2i_TS_RESP_fp 4139 EXIST::FUNCTION:
+d2i_TS_RESP_fp 4139 EXIST::FUNCTION:STDIO
ENGINE_get_pkey_asn1_meth_engine 4140 EXIST:!VMS:FUNCTION:ENGINE
ENGINE_get_pkey_asn1_meth_eng 4140 EXIST:VMS:FUNCTION:ENGINE
WHIRLPOOL_Init 4141 EXIST::FUNCTION:WHIRLPOOL
ASN1_PCTX_get_oid_flags 4274 EXIST::FUNCTION:
TS_TST_INFO_add_ext 4275 EXIST::FUNCTION:
EVP_PKEY_meth_set_derive 4276 EXIST::FUNCTION:
-i2d_TS_RESP_fp 4277 EXIST::FUNCTION:
+i2d_TS_RESP_fp 4277 EXIST::FUNCTION:STDIO
i2d_TS_MSG_IMPRINT_bio 4278 EXIST::FUNCTION:
TS_RESP_CTX_set_accuracy 4279 EXIST::FUNCTION:
TS_REQ_set_nonce 4280 EXIST::FUNCTION:
X509_CRL_set_meth_data 4303 EXIST::FUNCTION:
PKCS8_pkey_set0 4304 EXIST::FUNCTION:
ASN1_STRING_copy 4305 EXIST::FUNCTION:
-d2i_TS_TST_INFO_fp 4306 EXIST::FUNCTION:
+d2i_TS_TST_INFO_fp 4306 EXIST::FUNCTION:STDIO
X509_CRL_match 4307 EXIST::FUNCTION:
EVP_PKEY_asn1_set_private 4308 EXIST::FUNCTION:
TS_TST_INFO_get_ext_d2i 4309 EXIST::FUNCTION:
CRYPTO_THREADID_set_callback 4346 EXIST::FUNCTION:
TS_CONF_set_serial 4347 EXIST::FUNCTION:
TS_TST_INFO_free 4348 EXIST::FUNCTION:
-d2i_TS_REQ_fp 4349 EXIST::FUNCTION:
+d2i_TS_REQ_fp 4349 EXIST::FUNCTION:STDIO
TS_RESP_verify_response 4350 EXIST::FUNCTION:
i2d_ESS_ISSUER_SERIAL 4351 EXIST::FUNCTION:
TS_ACCURACY_get_seconds 4352 EXIST::FUNCTION:
EVP_PKEY_CTX_free 4430 EXIST::FUNCTION:
ISSUING_DIST_POINT_it 4431 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
ISSUING_DIST_POINT_it 4431 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-d2i_TS_MSG_IMPRINT_fp 4432 EXIST::FUNCTION:
+d2i_TS_MSG_IMPRINT_fp 4432 EXIST::FUNCTION:STDIO
X509_STORE_get1_certs 4433 EXIST::FUNCTION:
EVP_PKEY_CTX_get_operation 4434 EXIST::FUNCTION:
d2i_ESS_SIGNING_CERT 4435 EXIST::FUNCTION:
GENERAL_NAME_cmp 4506 EXIST::FUNCTION:
d2i_ASN1_SET_ANY 4507 EXIST::FUNCTION:
ENGINE_set_pkey_meths 4508 EXIST::FUNCTION:ENGINE
-i2d_TS_REQ_fp 4509 EXIST::FUNCTION:
+i2d_TS_REQ_fp 4509 EXIST::FUNCTION:STDIO
d2i_ASN1_SEQUENCE_ANY 4510 EXIST::FUNCTION:
GENERAL_NAME_get0_otherName 4511 EXIST::FUNCTION:
d2i_ESS_CERT_ID 4512 EXIST::FUNCTION:
ASN1_item_sign_ctx 4671 EXIST::FUNCTION:
EC_GFp_nistp521_method 4672 EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
EC_GFp_nistp256_method 4673 EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
-OPENSSL_stderr 4674 EXIST::FUNCTION:
+OPENSSL_stderr 4674 NOEXIST::FUNCTION:
OPENSSL_cpuid_setup 4675 EXIST::FUNCTION:
OPENSSL_showfatal 4676 EXIST::FUNCTION:
BIO_new_dgram_sctp 4677 EXIST::FUNCTION:SCTP
TS_VERIFY_CTX_add_flags 4974 EXIST::FUNCTION:
TS_STATUS_INFO_set_status 4975 EXIST::FUNCTION:
TS_VERIFY_CTX_set_store 4976 EXIST::FUNCTION:
-EVP_PKEY_meth_get_decrypt 4977 EXIST::FUNCTION:
-EVP_PKEY_meth_get_derive 4978 EXIST::FUNCTION:
-EVP_PKEY_meth_get_verify 4979 EXIST::FUNCTION:
-EVP_PKEY_meth_get_ctrl 4980 EXIST::FUNCTION:
-EVP_PKEY_meth_get_verifyctx 4981 EXIST::FUNCTION:
-EVP_PKEY_meth_get_paramgen 4982 EXIST::FUNCTION:
-EVP_PKEY_meth_get_init 4983 EXIST::FUNCTION:
-EVP_PKEY_meth_get_cleanup 4984 EXIST::FUNCTION:
-EVP_PKEY_meth_get_keygen 4985 EXIST::FUNCTION:
-EVP_PKEY_meth_get_signctx 4986 EXIST::FUNCTION:
-EVP_PKEY_meth_get_sign 4987 EXIST::FUNCTION:
-EVP_PKEY_meth_get_copy 4988 EXIST::FUNCTION:
-EVP_PKEY_meth_get_verify_recover 4989 EXIST::FUNCTION:
-EVP_PKEY_meth_get_encrypt 4990 EXIST::FUNCTION:
+EVP_PKEY_meth_get_signctx 4977 EXIST::FUNCTION:
+EVP_PKEY_meth_get_paramgen 4978 EXIST::FUNCTION:
+EVP_PKEY_meth_get_encrypt 4979 EXIST::FUNCTION:
+EVP_PKEY_meth_get_keygen 4980 EXIST::FUNCTION:
+EVP_PKEY_meth_get_verify_recover 4981 EXIST::FUNCTION:
+EVP_PKEY_meth_get_cleanup 4982 EXIST::FUNCTION:
+EVP_PKEY_meth_get_verify 4984 EXIST::FUNCTION:
+EVP_PKEY_meth_get_init 4985 EXIST::FUNCTION:
+EVP_PKEY_meth_get_sign 4986 EXIST::FUNCTION:
+EVP_PKEY_meth_get_verifyctx 4987 EXIST::FUNCTION:
+EVP_PKEY_meth_get_ctrl 4988 EXIST::FUNCTION:
+EVP_PKEY_meth_get_derive 4989 EXIST::FUNCTION:
+EVP_PKEY_meth_get_decrypt 4990 EXIST::FUNCTION:
+EVP_PKEY_meth_get_copy 4991 EXIST::FUNCTION:
X509_get0_subject_key_id 4991 EXIST::FUNCTION:
+declare_dh_bn 4992 EXIST::FUNCTION:DH
i2d_re_X509_CRL_tbs 4992 EXIST::FUNCTION:
X509_REQ_get_X509_PUBKEY 4993 EXIST::FUNCTION:
X509_REQ_get0_signature 4994 EXIST::FUNCTION:
SSL_CTX_set_verify 21 EXIST::FUNCTION:
SSL_CTX_use_PrivateKey 22 EXIST::FUNCTION:
SSL_CTX_use_PrivateKey_ASN1 23 EXIST::FUNCTION:
-SSL_CTX_use_PrivateKey_file 24 EXIST::FUNCTION:STDIO
+SSL_CTX_use_PrivateKey_file 24 EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey 25 EXIST::FUNCTION:RSA
SSL_CTX_use_RSAPrivateKey_ASN1 26 EXIST::FUNCTION:RSA
-SSL_CTX_use_RSAPrivateKey_file 27 EXIST::FUNCTION:RSA,STDIO
+SSL_CTX_use_RSAPrivateKey_file 27 EXIST::FUNCTION:RSA
SSL_CTX_use_certificate 28 EXIST::FUNCTION:
SSL_CTX_use_certificate_ASN1 29 EXIST::FUNCTION:
-SSL_CTX_use_certificate_file 30 EXIST::FUNCTION:STDIO
+SSL_CTX_use_certificate_file 30 EXIST::FUNCTION:
SSL_SESSION_free 31 EXIST::FUNCTION:
SSL_SESSION_new 32 EXIST::FUNCTION:
SSL_SESSION_print 33 EXIST::FUNCTION:
SSL_get_verify_mode 70 EXIST::FUNCTION:
SSL_get_version 71 EXIST::FUNCTION:
SSL_get_wbio 72 EXIST::FUNCTION:
-SSL_load_client_CA_file 73 EXIST::FUNCTION:STDIO
+SSL_load_client_CA_file 73 EXIST::FUNCTION:
SSL_load_error_strings 74 EXIST::FUNCTION:
SSL_new 75 EXIST::FUNCTION:
SSL_peek 76 EXIST::FUNCTION:
SSL_state_string_long 98 EXIST::FUNCTION:
SSL_use_PrivateKey 99 EXIST::FUNCTION:
SSL_use_PrivateKey_ASN1 100 EXIST::FUNCTION:
-SSL_use_PrivateKey_file 101 EXIST::FUNCTION:STDIO
+SSL_use_PrivateKey_file 101 EXIST::FUNCTION:
SSL_use_RSAPrivateKey 102 EXIST::FUNCTION:RSA
SSL_use_RSAPrivateKey_ASN1 103 EXIST::FUNCTION:RSA
-SSL_use_RSAPrivateKey_file 104 EXIST::FUNCTION:RSA,STDIO
+SSL_use_RSAPrivateKey_file 104 EXIST::FUNCTION:RSA
SSL_use_certificate 105 EXIST::FUNCTION:
SSL_use_certificate_ASN1 106 EXIST::FUNCTION:
-SSL_use_certificate_file 107 EXIST::FUNCTION:STDIO
+SSL_use_certificate_file 107 EXIST::FUNCTION:
SSL_write 108 EXIST::FUNCTION:
SSLeay_add_ssl_algorithms 109 NOEXIST::FUNCTION:
SSLv23_client_method 110 NOEXIST::FUNCTION:
SSL_want 182 EXIST::FUNCTION:
SSL_library_init 183 EXIST::FUNCTION:
SSL_COMP_add_compression_method 184 EXIST::FUNCTION:
-SSL_add_file_cert_subjects_to_stack 185 EXIST:!VMS:FUNCTION:STDIO
-SSL_add_file_cert_subjs_to_stk 185 EXIST:VMS:FUNCTION:STDIO
+SSL_add_file_cert_subjects_to_stack 185 EXIST:!VMS:FUNCTION:
+SSL_add_file_cert_subjs_to_stk 185 EXIST:VMS:FUNCTION:
SSL_set_tmp_rsa_callback 186 EXIST::FUNCTION:RSA
SSL_set_tmp_dh_callback 187 EXIST::FUNCTION:DH
-SSL_add_dir_cert_subjects_to_stack 188 EXIST:!VMS:FUNCTION:STDIO
-SSL_add_dir_cert_subjs_to_stk 188 EXIST:VMS:FUNCTION:STDIO
+SSL_add_dir_cert_subjects_to_stack 188 EXIST:!VMS:FUNCTION:
+SSL_add_dir_cert_subjs_to_stk 188 EXIST:VMS:FUNCTION:
SSL_set_session_id_context 189 EXIST::FUNCTION:
-SSL_CTX_use_certificate_chain_file 222 EXIST:!VMS:FUNCTION:STDIO
-SSL_CTX_use_cert_chain_file 222 EXIST:VMS:FUNCTION:STDIO
+SSL_CTX_use_certificate_chain_file 222 EXIST:!VMS:FUNCTION:
+SSL_CTX_use_cert_chain_file 222 EXIST:VMS:FUNCTION:
SSL_CTX_set_verify_depth 225 EXIST::FUNCTION:
SSL_set_verify_depth 226 EXIST::FUNCTION:
SSL_CTX_get_verify_depth 228 EXIST::FUNCTION:
SSL_CTX_set_cli_supp_data 403 NOEXIST::FUNCTION:
DTLSv1_2_method 404 EXIST::FUNCTION:
DTLS_server_method 405 EXIST::FUNCTION:
-SSL_CTX_use_serverinfo_file 406 EXIST::FUNCTION:STDIO
+SSL_CTX_use_serverinfo_file 406 EXIST::FUNCTION:
SSL_COMP_free_compress_methods 407 NOEXIST::FUNCTION:
SSL_COMP_free_compression_methods 407 EXIST:!VMS:FUNCTION:
SSL_COMP_free_compr_methods 407 EXIST:VMS:FUNCTION:
SSL_set_rbio 430 EXIST::FUNCTION:
SSL_CIPHER_get_digest_nid 431 EXIST::FUNCTION:
SSL_CIPHER_get_cipher_nid 432 EXIST::FUNCTION:
-SSL_use_certificate_chain_file 433 EXIST::FUNCTION:STDIO
+SSL_use_certificate_chain_file 433 EXIST::FUNCTION:
TLS_server_method 434 EXIST::FUNCTION:
TLS_method 435 EXIST::FUNCTION:
TLS_client_method 436 EXIST::FUNCTION: