summaryrefslogtreecommitdiff
path: root/core/core_builders.py
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-09-16 01:22:47 +0200
committerGitHub <noreply@github.com>2018-09-16 01:22:47 +0200
commit7f5e653a22873a9ca0ae47457f384d4a772d2e77 (patch)
tree87353ba23e78bc042ece1b12feb52c214c48dc74 /core/core_builders.py
parent9af72f09c5b03b448dbe6f066273faaaa263c313 (diff)
parent0e56377e96ee492cc30de9ad2e6e9242737f4dbd (diff)
Merge pull request #22066 from Faless/bundle_certs
Bundle SSL certs with the templates
Diffstat (limited to 'core/core_builders.py')
-rw-r--r--core/core_builders.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/core/core_builders.py b/core/core_builders.py
index 90e505aab9..f3a9e3b221 100644
--- a/core/core_builders.py
+++ b/core/core_builders.py
@@ -4,7 +4,40 @@ All such functions are invoked in a subprocess on Windows to prevent build flaki
"""
from platform_methods import subprocess_main
-from compat import iteritems, itervalues, open_utf8, escape_string
+from compat import iteritems, itervalues, open_utf8, escape_string, byte_to_str
+
+
+def make_certs_header(target, source, env):
+
+ src = source[0]
+ dst = target[0]
+ f = open(src, "rb")
+ g = open_utf8(dst, "w")
+ buf = f.read()
+ decomp_size = len(buf)
+ import zlib
+ buf = zlib.compress(buf)
+
+ g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
+ g.write("#ifndef _CERTS_RAW_H\n")
+ g.write("#define _CERTS_RAW_H\n")
+
+ # System certs path. Editor will use them if defined. (for package maintainers)
+ path = env['system_certs_path']
+ g.write("#define _SYSTEM_CERTS_PATH \"%s\"\n" % str(path))
+ if env['builtin_certs']:
+ # Defined here and not in env so changing it does not trigger a full rebuild.
+ g.write("#define BUILTIN_CERTS_ENABLED\n")
+ g.write("static const int _certs_compressed_size = " + str(len(buf)) + ";\n")
+ g.write("static const int _certs_uncompressed_size = " + str(decomp_size) + ";\n")
+ g.write("static const unsigned char _certs_compressed[] = {\n")
+ for i in range(len(buf)):
+ g.write("\t" + byte_to_str(buf[i]) + ",\n")
+ g.write("};\n")
+ g.write("#endif")
+
+ g.close()
+ f.close()
def make_authors_header(target, source, env):