Imported Upstream version 2.72.alpha
[platform/upstream/glib-networking.git] / tls / tests / files / update-chain-with-new-root.py
1 #!/usr/bin/env python3
2 # SPDX-License-Identifier: LGPL-2.1-or-later
3
4 import sys
5
6 try:
7     chain_path = sys.argv[1]
8     new_root_path = sys.argv[2]
9 except IndexError:
10     sys.exit('USAGE: update-chain-with-new-root.py ca-file.pem new-ca.pem')
11
12 with open(new_root_path, 'rb') as new_file:
13     new_cert_lines = new_file.readlines()
14
15 with open(chain_path, 'rb+') as chain_file:
16     chain_file_lines = chain_file.readlines()
17     new_chain_file_lines = []
18
19     # Replace the lines of the old root with the new cert
20     for i, line in enumerate(chain_file_lines):
21         if b'BEGIN CERTIFICATE' in line:
22             new_chain_file_lines += chain_file_lines[:i]
23             new_chain_file_lines += new_cert_lines
24             continue
25         if b'END CERTIFICATE' in line:
26             new_chain_file_lines += chain_file_lines[i + 1:]
27             break
28
29     # Write over old file
30     chain_file.seek(0)
31     chain_file.writelines(new_chain_file_lines)