Add a few more no-op stubs for cURL compatibility.

With these stubs, cURL should not need any BoringSSL #ifdefs at all,
except for their OCSP #ifdefs (which can switch to the more generally
useful OPENSSL_NO_OCSP) and the workaround for wincrypt.h macro
collisions. That we intentionally leave to the consumer rather than add
a partial hack that makes the build sensitive to include order.

(I'll send them a patch upstream once this cycles in.)

Change-Id: I815fe67e51e80e9aafa9b91ae68867ca1ff1d623
Reviewed-on: https://boringssl-review.googlesource.com/6980
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/conf/conf.c b/crypto/conf/conf.c
index e098a2c..7512dd0 100644
--- a/crypto/conf/conf.c
+++ b/crypto/conf/conf.c
@@ -776,3 +776,10 @@
     lstart = p + 1;
   }
 }
+
+int CONF_modules_load_file(CONF_MUST_BE_NULL *filename, const char *appname,
+                           unsigned long flags) {
+  return 1;
+}
+
+void CONF_modules_free(void) {}
diff --git a/crypto/crypto.c b/crypto/crypto.c
index ace1c82..da8807d 100644
--- a/crypto/crypto.c
+++ b/crypto/crypto.c
@@ -138,3 +138,5 @@
 }
 
 void ENGINE_load_builtin_engines(void) {}
+
+void OPENSSL_load_builtin_modules(void) {}
diff --git a/crypto/rand/rand.c b/crypto/rand/rand.c
index 892b4ba..82087ba 100644
--- a/crypto/rand/rand.c
+++ b/crypto/rand/rand.c
@@ -209,6 +209,8 @@
   }
 }
 
+const char *RAND_file_name(char *buf, size_t num) { return NULL; }
+
 void RAND_add(const void *buf, int num, double entropy) {}
 
 int RAND_egd(const char *path) {
diff --git a/include/openssl/conf.h b/include/openssl/conf.h
index a2741a8..0d2b61d 100644
--- a/include/openssl/conf.h
+++ b/include/openssl/conf.h
@@ -131,6 +131,28 @@
                     int (*list_cb)(const char *elem, int len, void *usr),
                     void *arg);
 
+
+/* Deprecated functions */
+
+/* These defines do nothing but are provided to make old code easier to
+ * compile. */
+#define CONF_MFLAGS_DEFAULT_SECTION 0
+#define CONF_MFLAGS_IGNORE_MISSING_FILE 0
+
+typedef struct conf_must_be_null_st CONF_MUST_BE_NULL;
+
+/* CONF_modules_load_file returns one. |filename| was originally a string, with
+ * NULL indicating the default. BoringSSL does not support configuration files,
+ * so this stub emulates the "default" no-op file but intentionally breaks
+ * compilation of consumers actively attempting to use this subsystem. */
+OPENSSL_EXPORT int CONF_modules_load_file(CONF_MUST_BE_NULL *filename,
+                                          const char *appname,
+                                          unsigned long flags);
+
+/* CONF_modules_free does nothing. */
+OPENSSL_EXPORT void CONF_modules_free(void);
+
+
 #if defined(__cplusplus)
 }  /* extern C */
 #endif
diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h
index b421884..193c8c3 100644
--- a/include/openssl/crypto.h
+++ b/include/openssl/crypto.h
@@ -60,6 +60,9 @@
 /* ENGINE_load_builtin_engines does nothing. */
 OPENSSL_EXPORT void ENGINE_load_builtin_engines(void);
 
+/* OPENSSL_load_builtin_modules does nothing. */
+OPENSSL_EXPORT void OPENSSL_load_builtin_modules(void);
+
 
 #if defined(__cplusplus)
 }  /* extern C */
diff --git a/include/openssl/rand.h b/include/openssl/rand.h
index 3a8e357..2c9c969 100644
--- a/include/openssl/rand.h
+++ b/include/openssl/rand.h
@@ -75,6 +75,9 @@
 /* RAND_load_file returns a nonnegative number. */
 OPENSSL_EXPORT int RAND_load_file(const char *path, long num);
 
+/* RAND_file_name returns NULL. */
+OPENSSL_EXPORT const char *RAND_file_name(char *buf, size_t num);
+
 /* RAND_add does nothing. */
 OPENSSL_EXPORT void RAND_add(const void *buf, int num, double entropy);