1*abdd2437Shisping#!/usr/bin/env python 2*abdd2437Shisping# 3*abdd2437Shisping# Copyright 2017, Rockchip Electronics Co., Ltd 4*abdd2437Shisping# hisping lin, <hisping.lin@rock-chips.com> 5*abdd2437Shisping# 6*abdd2437Shisping# SPDX-License-Identifier: GPL-2.0+ 7*abdd2437Shisping# 8*abdd2437Shisping 9*abdd2437Shispingdef get_args(): 10*abdd2437Shisping import argparse 11*abdd2437Shisping 12*abdd2437Shisping parser = argparse.ArgumentParser() 13*abdd2437Shisping parser.add_argument('--prefix', required=True, \ 14*abdd2437Shisping help='Prefix for the TA array in c file') 15*abdd2437Shisping 16*abdd2437Shisping parser.add_argument('--out', required=True, \ 17*abdd2437Shisping help='Name of c file for the TA') 18*abdd2437Shisping 19*abdd2437Shisping parser.add_argument('--TA', required=True, help='Name of TA') 20*abdd2437Shisping 21*abdd2437Shisping return parser.parse_args() 22*abdd2437Shisping 23*abdd2437Shispingdef main(): 24*abdd2437Shisping import array 25*abdd2437Shisping# from Crypto.PublicKey import RSA 26*abdd2437Shisping# from Crypto.Util.number import long_to_bytes 27*abdd2437Shisping 28*abdd2437Shisping args = get_args(); 29*abdd2437Shisping 30*abdd2437Shisping f = open(args.TA, 'r') 31*abdd2437Shisping TAdata = f.read() 32*abdd2437Shisping f.close 33*abdd2437Shisping 34*abdd2437Shisping f = open(args.out, 'w') 35*abdd2437Shisping 36*abdd2437Shisping f.write("#include <stdint.h>\n"); 37*abdd2437Shisping f.write("#include <stddef.h>\n\n"); 38*abdd2437Shisping 39*abdd2437Shisping# f.write("const uint32_t " + args.prefix + "_exponent = " + 40*abdd2437Shisping# str(key.publickey().e) + ";\n\n") 41*abdd2437Shisping 42*abdd2437Shisping f.write("const uint8_t " + args.prefix + "_data[] = {\n") 43*abdd2437Shisping i = 0; 44*abdd2437Shisping for x in array.array("B", TAdata): 45*abdd2437Shisping f.write("0x" + '{0:02x}'.format(x) + ",") 46*abdd2437Shisping i = i + 1; 47*abdd2437Shisping if i % 8 == 0: 48*abdd2437Shisping f.write("\n"); 49*abdd2437Shisping else: 50*abdd2437Shisping f.write(" "); 51*abdd2437Shisping f.write("};\n"); 52*abdd2437Shisping 53*abdd2437Shisping f.write("const uint32_t " + args.prefix + "_size = " + str(i) + ";\n" ) 54*abdd2437Shisping 55*abdd2437Shisping f.close() 56*abdd2437Shisping 57*abdd2437Shispingif __name__ == "__main__": 58*abdd2437Shisping main() 59