from src.args import args import src.api as api import src.pki as pki import src.utils as utils import os print("Check storage") if not os.path.isdir(args.storage): print("Create storage") os.makedirs(args.storage, exist_ok=True) print("Check secure origin...") if not os.path.isfile(args.secure_origin_path): origin = api.get_secure_origin() with open(args.secure_origin_path, "w") as f: f.write(origin) with open(args.secure_origin_path, "r") as f: args.secure_origin = f.read() print(f"Secure origin = {args.secure_origin}") print("Check system root CA") if not os.path.isfile(args.root_ca_path): origin = api.get_root_ca() with open(args.root_ca_path, "w") as f: f.write(origin) print("Check device ID") if not os.path.isfile(args.dev_id_path): print("Generate device id...") with open(args.dev_id_path, "w") as f: f.write(f"PyDev {utils.rand_str(10)}") with open(args.dev_id_path, "r") as f: args.dev_id = f.read() print("Check private key") if not os.path.isfile(args.dev_priv_key_path): print("Generate private key...") key = pki.gen_priv_key() with open(args.dev_priv_key_path, "w") as f: f.write(key) with open(args.dev_priv_key_path, "r") as f: args.priv_key = f.read() print("Check CSR") if not os.path.isfile(args.dev_csr_path): print("Generate CSR...") with open(args.dev_priv_key_path, "r") as f: priv_key = "".join(f.readlines()) csr = pki.gen_csr(priv_key=priv_key, cn=args.dev_id) with open(args.dev_csr_path, "w") as f: f.write(csr) print("Check device enrollment...") status = api.device_enrollment_status() if status != "Validated": if os.path.isfile(args.dev_crt_path): print("Delete invalid certificate") os.unlink(args.dev_crt_path) if status == "Unknown": print("Device is unknown on the system, need to submit a CSR...") with open(args.dev_csr_path, "r") as f: csr = "".utils print("Enrolling device...") api.enroll_device(csr) print("Done. Please accept the device on central system web UI") exit(0) if status == "Pending": print( "Device is enrolled, but not validated yet. Please accept the device on central system web UI" ) exit(0) print("Device is successfully enrolled!") print("Check device certificate") if not os.path.isfile(args.dev_crt_path): print("Retrieve certificate...") cert = api.device_certificate() with open(args.dev_crt_path, "w") as f: f.write(cert) print("Done. ready to operate.") api.sync_device(args.dev_id, args.priv_key)