#!/usr/bin/env python3 # # Copyright (C) 2022 Amlogic, Inc. All rights reserved. # # # This source code is subject to the terms and conditions defined in the # file 'LICENSE' which is part of this source code package. # def get_args(): from argparse import ArgumentParser parser = ArgumentParser() parser.add_argument('--pcpk', default='null', required = True, help='provision common protect key') parser.add_argument('--in', dest='inf', default='null', required = True, help='input Secure OS image file') parser.add_argument('--out', type=str, default='null', help='output Secure OS image file') return parser.parse_args() def read_key(key): with open(key, 'rb+') as f: return f.read() def is_signed_bl32(infile): import struct dtb_header_len = 32 with open(infile, 'rb+') as f: raw = f.read() offs = raw.index(b"BTD@") + dtb_header_len f.seek(offs) dtb_magic = struct.unpack(' dtb_len_max: print ("dtb size(%d) exceed(max is %d)!" %(dtb_len, dtb_len_max)) exit(-1) print ('Packing ...') if args.pcpk != 'null': pcpk_size = len(read_key(args.pcpk)) print (' pcpk.name = ' + args.pcpk) print (' pcpk.size = ' + str(pcpk_size)) print (' image.name = ' + args.inf) print (' Output: image.name = ' + args.out) with open(args.inf, 'rb+') as f: raw = f.read() with open(args.out, 'wb+') as f: f.write(raw) offs = raw.index(b"BTD@") + dtb_header_len f.seek(offs) f.write(fdt.to_dtb()) if __name__ == "__main__": main()