summaryrefslogtreecommitdiffstats
path: root/security/apps/gen_cert_header.py
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /security/apps/gen_cert_header.py
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'security/apps/gen_cert_header.py')
-rw-r--r--security/apps/gen_cert_header.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/security/apps/gen_cert_header.py b/security/apps/gen_cert_header.py
new file mode 100644
index 000000000..0ffe25cf4
--- /dev/null
+++ b/security/apps/gen_cert_header.py
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import binascii
+
+def _file_byte_generator(filename):
+ with open(filename, "rb") as f:
+ contents = f.read()
+
+ # Treat empty files the same as a file containing a lone 0;
+ # a single-element array will fail cert verifcation just as an
+ # empty array would.
+ if not contents:
+ return ['\0']
+
+ return contents
+
+def _create_header(array_name, cert_bytes):
+ hexified = ["0x" + binascii.hexlify(byte) for byte in cert_bytes]
+ substs = { 'array_name': array_name, 'bytes': ', '.join(hexified) }
+ return "const uint8_t %(array_name)s[] = {\n%(bytes)s\n};\n" % substs
+
+# Create functions named the same as the data arrays that we're going to
+# write to the headers, so we don't have to duplicate the names like so:
+#
+# def arrayName(header, cert_filename):
+# header.write(_create_header("arrayName", cert_filename))
+array_names = [
+ 'marketplaceProdPublicRoot',
+ 'marketplaceProdReviewersRoot',
+ 'marketplaceDevPublicRoot',
+ 'marketplaceDevReviewersRoot',
+ 'marketplaceStageRoot',
+ 'trustedAppPublicRoot',
+ 'trustedAppTestRoot',
+ 'xpcshellRoot',
+ 'addonsPublicRoot',
+ 'addonsStageRoot',
+ 'privilegedPackageRoot',
+]
+
+for n in array_names:
+ # Make sure the lambda captures the right string.
+ globals()[n] = lambda header, cert_filename, name=n: header.write(_create_header(name, _file_byte_generator(cert_filename)))