Specify public headers in build.json

The CMake build doesn't use it, but this will be needed for the other
builds to be driven by util/pregenerate.

Bug: 542
Change-Id: If95cbcef1803e30ffc5ab7c9227fdcc6c53adf34
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/67296
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/build.json b/build.json
index 0463e88..8003b58 100644
--- a/build.json
+++ b/build.json
@@ -69,6 +69,92 @@
         ]
     },
     "crypto": {
+        "hdrs": [
+            "include/openssl/aead.h",
+            "include/openssl/aes.h",
+            "include/openssl/arm_arch.h",
+            "include/openssl/asm_base.h",
+            "include/openssl/asn1.h",
+            "include/openssl/asn1_mac.h",
+            "include/openssl/asn1t.h",
+            "include/openssl/base.h",
+            "include/openssl/base64.h",
+            "include/openssl/bio.h",
+            "include/openssl/blake2.h",
+            "include/openssl/blowfish.h",
+            "include/openssl/bn.h",
+            "include/openssl/buf.h",
+            "include/openssl/buffer.h",
+            "include/openssl/bytestring.h",
+            "include/openssl/cast.h",
+            "include/openssl/chacha.h",
+            "include/openssl/cipher.h",
+            "include/openssl/cmac.h",
+            "include/openssl/conf.h",
+            "include/openssl/cpu.h",
+            "include/openssl/crypto.h",
+            "include/openssl/ctrdrbg.h",
+            "include/openssl/curve25519.h",
+            "include/openssl/des.h",
+            "include/openssl/dh.h",
+            "include/openssl/digest.h",
+            "include/openssl/dsa.h",
+            "include/openssl/e_os2.h",
+            "include/openssl/ec.h",
+            "include/openssl/ec_key.h",
+            "include/openssl/ecdh.h",
+            "include/openssl/ecdsa.h",
+            "include/openssl/engine.h",
+            "include/openssl/err.h",
+            "include/openssl/evp.h",
+            "include/openssl/evp_errors.h",
+            "include/openssl/ex_data.h",
+            "include/openssl/experimental/kyber.h",
+            "include/openssl/experimental/spx.h",
+            "include/openssl/hkdf.h",
+            "include/openssl/hmac.h",
+            "include/openssl/hpke.h",
+            "include/openssl/hrss.h",
+            "include/openssl/is_boringssl.h",
+            "include/openssl/kdf.h",
+            "include/openssl/lhash.h",
+            "include/openssl/md4.h",
+            "include/openssl/md5.h",
+            "include/openssl/mem.h",
+            "include/openssl/nid.h",
+            "include/openssl/obj.h",
+            "include/openssl/obj_mac.h",
+            "include/openssl/objects.h",
+            "include/openssl/opensslconf.h",
+            "include/openssl/opensslv.h",
+            "include/openssl/ossl_typ.h",
+            "include/openssl/pem.h",
+            "include/openssl/pkcs12.h",
+            "include/openssl/pkcs7.h",
+            "include/openssl/pkcs8.h",
+            "include/openssl/poly1305.h",
+            "include/openssl/pool.h",
+            "include/openssl/posix_time.h",
+            "include/openssl/rand.h",
+            "include/openssl/rc4.h",
+            "include/openssl/ripemd.h",
+            "include/openssl/rsa.h",
+            "include/openssl/safestack.h",
+            "include/openssl/service_indicator.h",
+            "include/openssl/sha.h",
+            "include/openssl/siphash.h",
+            "include/openssl/span.h",
+            "include/openssl/stack.h",
+            "include/openssl/target.h",
+            "include/openssl/thread.h",
+            "include/openssl/time.h",
+            "include/openssl/trust_token.h",
+            "include/openssl/type_check.h",
+            "include/openssl/x509.h",
+            "include/openssl/x509_vfy.h",
+            "include/openssl/x509v3.h",
+            "include/openssl/x509v3_errors.h"
+        ],
         "err_data": [
             "crypto/err/*.errordata"
         ],
@@ -133,6 +219,10 @@
             "pki/verify_error.cc",
             "pki/verify_name_match.cc",
             "pki/verify_signed_data.cc"
+        ],
+        "hdrs": [
+            "include/openssl/pki/certificate.h",
+            "include/openssl/pki/signature_verify_cache.h"
         ]
     },
     "ssl": {
@@ -175,6 +265,13 @@
             "ssl/tls13_client.cc",
             "ssl/tls13_enc.cc",
             "ssl/tls13_server.cc"
+        ],
+        "hdrs": [
+            "include/openssl/dtls1.h",
+            "include/openssl/srtp.h",
+            "include/openssl/ssl.h",
+            "include/openssl/ssl3.h",
+            "include/openssl/tls1.h"
         ]
     },
     "decrepit": {
diff --git a/gen/sources.cmake b/gen/sources.cmake
index e88cb24..efa91d4 100644
--- a/gen/sources.cmake
+++ b/gen/sources.cmake
@@ -176,6 +176,95 @@
 )
 
 set(
+  CRYPTO_HEADERS
+
+  include/openssl/aead.h
+  include/openssl/aes.h
+  include/openssl/arm_arch.h
+  include/openssl/asm_base.h
+  include/openssl/asn1.h
+  include/openssl/asn1_mac.h
+  include/openssl/asn1t.h
+  include/openssl/base.h
+  include/openssl/base64.h
+  include/openssl/bio.h
+  include/openssl/blake2.h
+  include/openssl/blowfish.h
+  include/openssl/bn.h
+  include/openssl/buf.h
+  include/openssl/buffer.h
+  include/openssl/bytestring.h
+  include/openssl/cast.h
+  include/openssl/chacha.h
+  include/openssl/cipher.h
+  include/openssl/cmac.h
+  include/openssl/conf.h
+  include/openssl/cpu.h
+  include/openssl/crypto.h
+  include/openssl/ctrdrbg.h
+  include/openssl/curve25519.h
+  include/openssl/des.h
+  include/openssl/dh.h
+  include/openssl/digest.h
+  include/openssl/dsa.h
+  include/openssl/e_os2.h
+  include/openssl/ec.h
+  include/openssl/ec_key.h
+  include/openssl/ecdh.h
+  include/openssl/ecdsa.h
+  include/openssl/engine.h
+  include/openssl/err.h
+  include/openssl/evp.h
+  include/openssl/evp_errors.h
+  include/openssl/ex_data.h
+  include/openssl/experimental/kyber.h
+  include/openssl/experimental/spx.h
+  include/openssl/hkdf.h
+  include/openssl/hmac.h
+  include/openssl/hpke.h
+  include/openssl/hrss.h
+  include/openssl/is_boringssl.h
+  include/openssl/kdf.h
+  include/openssl/lhash.h
+  include/openssl/md4.h
+  include/openssl/md5.h
+  include/openssl/mem.h
+  include/openssl/nid.h
+  include/openssl/obj.h
+  include/openssl/obj_mac.h
+  include/openssl/objects.h
+  include/openssl/opensslconf.h
+  include/openssl/opensslv.h
+  include/openssl/ossl_typ.h
+  include/openssl/pem.h
+  include/openssl/pkcs12.h
+  include/openssl/pkcs7.h
+  include/openssl/pkcs8.h
+  include/openssl/poly1305.h
+  include/openssl/pool.h
+  include/openssl/posix_time.h
+  include/openssl/rand.h
+  include/openssl/rc4.h
+  include/openssl/ripemd.h
+  include/openssl/rsa.h
+  include/openssl/safestack.h
+  include/openssl/service_indicator.h
+  include/openssl/sha.h
+  include/openssl/siphash.h
+  include/openssl/span.h
+  include/openssl/stack.h
+  include/openssl/target.h
+  include/openssl/thread.h
+  include/openssl/time.h
+  include/openssl/trust_token.h
+  include/openssl/type_check.h
+  include/openssl/x509.h
+  include/openssl/x509_vfy.h
+  include/openssl/x509v3.h
+  include/openssl/x509v3_errors.h
+)
+
+set(
   CRYPTO_SOURCES_ASM
 
   crypto/curve25519/asm/x25519-asm-arm.S
@@ -603,6 +692,13 @@
 )
 
 set(
+  PKI_HEADERS
+
+  include/openssl/pki/certificate.h
+  include/openssl/pki/signature_verify_cache.h
+)
+
+set(
   PKI_TEST_SOURCES
 
   crypto/test/gtest_main.cc
@@ -2086,6 +2182,16 @@
 )
 
 set(
+  SSL_HEADERS
+
+  include/openssl/dtls1.h
+  include/openssl/srtp.h
+  include/openssl/ssl.h
+  include/openssl/ssl3.h
+  include/openssl/tls1.h
+)
+
+set(
   SSL_TEST_SOURCES
 
   crypto/test/gtest_main.cc
diff --git a/gen/sources.json b/gen/sources.json
index d00a910..9c5f318 100644
--- a/gen/sources.json
+++ b/gen/sources.json
@@ -153,6 +153,92 @@
     "srcs": [
       "gen/crypto/err_data.c"
     ],
+    "hdrs": [
+      "include/openssl/aead.h",
+      "include/openssl/aes.h",
+      "include/openssl/arm_arch.h",
+      "include/openssl/asm_base.h",
+      "include/openssl/asn1.h",
+      "include/openssl/asn1_mac.h",
+      "include/openssl/asn1t.h",
+      "include/openssl/base.h",
+      "include/openssl/base64.h",
+      "include/openssl/bio.h",
+      "include/openssl/blake2.h",
+      "include/openssl/blowfish.h",
+      "include/openssl/bn.h",
+      "include/openssl/buf.h",
+      "include/openssl/buffer.h",
+      "include/openssl/bytestring.h",
+      "include/openssl/cast.h",
+      "include/openssl/chacha.h",
+      "include/openssl/cipher.h",
+      "include/openssl/cmac.h",
+      "include/openssl/conf.h",
+      "include/openssl/cpu.h",
+      "include/openssl/crypto.h",
+      "include/openssl/ctrdrbg.h",
+      "include/openssl/curve25519.h",
+      "include/openssl/des.h",
+      "include/openssl/dh.h",
+      "include/openssl/digest.h",
+      "include/openssl/dsa.h",
+      "include/openssl/e_os2.h",
+      "include/openssl/ec.h",
+      "include/openssl/ec_key.h",
+      "include/openssl/ecdh.h",
+      "include/openssl/ecdsa.h",
+      "include/openssl/engine.h",
+      "include/openssl/err.h",
+      "include/openssl/evp.h",
+      "include/openssl/evp_errors.h",
+      "include/openssl/ex_data.h",
+      "include/openssl/experimental/kyber.h",
+      "include/openssl/experimental/spx.h",
+      "include/openssl/hkdf.h",
+      "include/openssl/hmac.h",
+      "include/openssl/hpke.h",
+      "include/openssl/hrss.h",
+      "include/openssl/is_boringssl.h",
+      "include/openssl/kdf.h",
+      "include/openssl/lhash.h",
+      "include/openssl/md4.h",
+      "include/openssl/md5.h",
+      "include/openssl/mem.h",
+      "include/openssl/nid.h",
+      "include/openssl/obj.h",
+      "include/openssl/obj_mac.h",
+      "include/openssl/objects.h",
+      "include/openssl/opensslconf.h",
+      "include/openssl/opensslv.h",
+      "include/openssl/ossl_typ.h",
+      "include/openssl/pem.h",
+      "include/openssl/pkcs12.h",
+      "include/openssl/pkcs7.h",
+      "include/openssl/pkcs8.h",
+      "include/openssl/poly1305.h",
+      "include/openssl/pool.h",
+      "include/openssl/posix_time.h",
+      "include/openssl/rand.h",
+      "include/openssl/rc4.h",
+      "include/openssl/ripemd.h",
+      "include/openssl/rsa.h",
+      "include/openssl/safestack.h",
+      "include/openssl/service_indicator.h",
+      "include/openssl/sha.h",
+      "include/openssl/siphash.h",
+      "include/openssl/span.h",
+      "include/openssl/stack.h",
+      "include/openssl/target.h",
+      "include/openssl/thread.h",
+      "include/openssl/time.h",
+      "include/openssl/trust_token.h",
+      "include/openssl/type_check.h",
+      "include/openssl/x509.h",
+      "include/openssl/x509_vfy.h",
+      "include/openssl/x509v3.h",
+      "include/openssl/x509v3_errors.h"
+    ],
     "asm": [
       "crypto/curve25519/asm/x25519-asm-arm.S",
       "crypto/hrss/asm/poly_rq_mul.S",
@@ -566,6 +652,10 @@
       "pki/verify_error.cc",
       "pki/verify_name_match.cc",
       "pki/verify_signed_data.cc"
+    ],
+    "hdrs": [
+      "include/openssl/pki/certificate.h",
+      "include/openssl/pki/signature_verify_cache.h"
     ]
   },
   "pki_test": {
@@ -2044,6 +2134,13 @@
       "ssl/tls13_server.cc",
       "ssl/tls_method.cc",
       "ssl/tls_record.cc"
+    ],
+    "hdrs": [
+      "include/openssl/dtls1.h",
+      "include/openssl/srtp.h",
+      "include/openssl/ssl.h",
+      "include/openssl/ssl3.h",
+      "include/openssl/tls1.h"
     ]
   },
   "ssl_test": {
diff --git a/util/generate_build_files.py b/util/generate_build_files.py
index a54a614..c56cd2e 100644
--- a/util/generate_build_files.py
+++ b/util/generate_build_files.py
@@ -564,18 +564,6 @@
   return not is_dir or dent != 'runner'
 
 
-def SSLHeaderFiles(path, dent, is_dir):
-  return dent in ['ssl.h', 'tls1.h', 'ssl23.h', 'ssl3.h', 'dtls1.h', 'srtp.h']
-
-
-def CryptoHeaderFiles(path, dent, is_dir):
-  if SSLHeaderFiles(path, dent, is_dir):
-    return False
-  if is_dir and dent == 'pki':
-    return False
-  return True
-
-
 def FindCFiles(directory, filter_func):
   """Recurses through directory and returns a list of paths to all the C source
   files that pass filter_func."""
@@ -661,16 +649,7 @@
 
   fuzz_c_files = FindCFiles(os.path.join('src', 'fuzz'), NoTests)
 
-  ssl_h_files = FindHeaderFiles(os.path.join('src', 'include', 'openssl'),
-                                SSLHeaderFiles)
-
   pki_internal_h_files = FindHeaderFiles(os.path.join('src', 'pki'), AllFiles)
-
-  crypto_h_files = FindHeaderFiles(os.path.join('src', 'include', 'openssl'),
-                                   CryptoHeaderFiles)
-  pki_h_files = FindHeaderFiles(
-      os.path.join('src', 'include', 'openssl', 'pki'), AllFiles)
-
   ssl_internal_h_files = FindHeaderFiles(os.path.join('src', 'ssl'), NoTests)
   crypto_internal_h_files = (
       FindHeaderFiles(os.path.join('src', 'crypto'), NoTests) +
@@ -689,21 +668,21 @@
       'crypto': crypto_c_files,
       'crypto_asm': PrefixWithSrc(crypto_asm),
       'crypto_nasm': PrefixWithSrc(crypto_nasm),
-      'crypto_headers': crypto_h_files,
+      'crypto_headers': PrefixWithSrc(sources['crypto']['hdrs']),
       'crypto_internal_headers': crypto_internal_h_files,
       'crypto_test': PrefixWithSrc(sources['crypto_test']['srcs']),
       'crypto_test_data': PrefixWithSrc(sources['crypto_test']['data']),
       'fips_fragments': fips_fragments,
       'fuzz': fuzz_c_files,
       'pki': PrefixWithSrc(sources['pki']['srcs']),
-      'pki_headers': pki_h_files,
+      'pki_headers': PrefixWithSrc(sources['pki']['hdrs']),
       'pki_internal_headers': sorted(list(pki_internal_h_files)),
       'pki_test': PrefixWithSrc(sources['pki_test']['srcs']),
       'pki_test_data': PrefixWithSrc(sources['pki_test']['data']),
       'rust_bssl_crypto': bssl_crypto_files,
       'rust_bssl_sys': bssl_sys_files,
       'ssl': PrefixWithSrc(sources['ssl']['srcs']),
-      'ssl_headers': ssl_h_files,
+      'ssl_headers': PrefixWithSrc(sources['ssl']['hdrs']),
       'ssl_internal_headers': ssl_internal_h_files,
       'ssl_test': PrefixWithSrc(sources['ssl_test']['srcs']),
       'tool': PrefixWithSrc(sources['bssl']['srcs']),