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

import sys


def main():
    with open(sys.argv[1], "rb") as image:
        with open(sys.argv[2], "w") as output:
            image.seek(0, 2)
            if image.tell() % 1024:
                print("File not block aligned")
                exit(-1)
            image.seek(0)
            magic = image.read(8)
            if magic != b"-rom1fs-":
                print("Bad header magic {}".format(magic))
                exit(-1)
            image.seek(0)
            csum = 0
            i = 3
            for b in image.read(512):
                csum += (b if isinstance(b, int) else ord(b)) << (8 * i)
                if i > 0:
                    i -= 1
                else:
                    i = 3
            csum &= 0xFFFFFFFF
            if csum != 0:
                print("Bad checksum {}".format(csum))
                exit(-1)
            output.write("ok")


if __name__ == "__main__":
    sys.exit(main())
