#!/usr/bin/env python
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Certificates for testing issuer lookup.

                Root
             /|   |   |\\
            / |   |   | \\
           /  |   |   |  \\
          /   |   |   |   \\
         /    |   |   |    \\
        v     v   v   v     v
      I1_1  i1_2  I2  I3_1 I3_2
        |    |    |   |    |
        |    |    |   |    |
        |    |    |   |    |
        |    |    |   |    |
        v    v    v   |    |
       C1    C2   D   E1   E2

I1 (i1_1.pem) and i1 (i1_2.pem) have subjects that are equal after
normalization.

I3_1 and I3_2 have subjects that are exactly equal.

C1 and C2 should (attempt to) chain up through both I1 and i1, since I1 and i1
have the same the name (after normalization).

E1 and E3 should (attempt to) chain up through both I3 intermediates.
"""

import os
import sys
sys.path += ['..']

import gencerts


def write_cert_to_file(cert, filename):
  gencerts.write_string_to_file(
      "Generated by %s.\n"
      "Refer to generator script docstring for details.\n%s" % (
          sys.argv[0], cert.get_cert_pem()),
      filename)


# Self-signed root certificate
root = gencerts.create_self_signed_root_certificate('Root')
write_cert_to_file(root, 'root.pem')


# Intermediate certificates
i1_1 = gencerts.create_intermediate_certificate('I1', root)
write_cert_to_file(i1_1, 'i1_1.pem')

# same name (after normalization), different key
i1_2 = gencerts.create_intermediate_certificate('i1', root)
write_cert_to_file(i1_2, 'i1_2.pem')

# different name
i2 = gencerts.create_intermediate_certificate('I2', root)
write_cert_to_file(i2, 'i2.pem')

# Two intermediates with exactly the same name.
i3_1 = gencerts.create_intermediate_certificate('I3', root)
write_cert_to_file(i3_1, 'i3_1.pem')
i3_2 = gencerts.create_intermediate_certificate('I3', root)
write_cert_to_file(i3_2, 'i3_2.pem')

# target certs

c1 = gencerts.create_end_entity_certificate('C1', i1_1)
write_cert_to_file(c1, 'c1.pem')

c2 = gencerts.create_end_entity_certificate('C2', i1_2)
write_cert_to_file(c2, 'c2.pem')

d = gencerts.create_end_entity_certificate('D', i2)
write_cert_to_file(d, 'd.pem')

e1 = gencerts.create_end_entity_certificate('E1', i3_1)
write_cert_to_file(e1, 'e1.pem')

e2 = gencerts.create_end_entity_certificate('E2', i3_2)
write_cert_to_file(e2, 'e2.pem')

