#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2020, Google Inc.
#
# Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
#
# ipa-gen-key.py - Generate the IPA module signing public key

import string
import subprocess
import sys


def main(argv):
    if len(argv) != 4:
        print('Usage: %s priv-key template output' % argv[0])
        return 1

    priv_key = argv[1]
    template = argv[2]
    output = argv[3]

    try:
        ret = subprocess.run(['openssl', 'rsa', '-pubout', '-in', priv_key,
                              '-outform', 'DER'],
                             stdout=subprocess.PIPE)
    except FileNotFoundError:
        print('Please install openssl to sign IPA modules')
        return 1

    ipa_key = ['0x%02x' % c for c in ret.stdout]
    ipa_key = [', '.join(ipa_key[bound:bound + 8]) for bound in range(0, len(ipa_key), 8)]
    ipa_key = ',\n\t'.join(ipa_key)
    data = {'ipa_key': ipa_key}

    template = open(template, 'rb').read()
    template = template.decode('utf-8')
    template = string.Template(template)

    f = open(output, 'wb')
    f.write(template.substitute(data).encode('utf-8'))
    f.close()

    return 0


if __name__ == '__main__':
    sys.exit(main(sys.argv))
