Encode JWT
This commit is contained in:
		@@ -1,5 +1,10 @@
 | 
				
			|||||||
# Python client
 | 
					# Python client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Dependencies:
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					apt install python3-jwt
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Reformat code:
 | 
					Reformat code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,9 @@
 | 
				
			|||||||
import requests
 | 
					import requests
 | 
				
			||||||
from src.args import args
 | 
					from src.args import args
 | 
				
			||||||
import src.constants as constants
 | 
					import src.constants as constants
 | 
				
			||||||
 | 
					from cryptography.x509 import load_pem_x509_certificate
 | 
				
			||||||
 | 
					from cryptography import utils
 | 
				
			||||||
 | 
					import jwt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_secure_origin() -> str:
 | 
					def get_secure_origin() -> str:
 | 
				
			||||||
@@ -70,3 +73,21 @@ def device_certificate() -> str:
 | 
				
			|||||||
        print(res.text)
 | 
					        print(res.text)
 | 
				
			||||||
        raise Exception(f"Failed to check enrollment with status {res.status_code}")
 | 
					        raise Exception(f"Failed to check enrollment with status {res.status_code}")
 | 
				
			||||||
    return res.text
 | 
					    return res.text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def sync_device(dev_id: str, privkey):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Synchronize device with backend
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    encoded = jwt.encode(
 | 
				
			||||||
 | 
					        {"info": device_info()}, privkey, algorithm="RS256", headers={"kid": dev_id}
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    res = requests.post(
 | 
				
			||||||
 | 
					        f"{args.secure_origin}/devices_api/mgmt/sync",
 | 
				
			||||||
 | 
					        json={"payload": encoded},
 | 
				
			||||||
 | 
					        verify=args.root_ca_path,
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    print(encoded)
 | 
				
			||||||
 | 
					    print(res)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,6 +43,10 @@ if not os.path.isfile(args.dev_priv_key_path):
 | 
				
			|||||||
    with open(args.dev_priv_key_path, "w") as f:
 | 
					    with open(args.dev_priv_key_path, "w") as f:
 | 
				
			||||||
        f.write(key)
 | 
					        f.write(key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with open(args.dev_priv_key_path, "r") as f:
 | 
				
			||||||
 | 
					    args.priv_key = f.read()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
print("Check CSR")
 | 
					print("Check CSR")
 | 
				
			||||||
if not os.path.isfile(args.dev_csr_path):
 | 
					if not os.path.isfile(args.dev_csr_path):
 | 
				
			||||||
    print("Generate CSR...")
 | 
					    print("Generate CSR...")
 | 
				
			||||||
@@ -63,8 +67,7 @@ if status != "Validated":
 | 
				
			|||||||
if status == "Unknown":
 | 
					if status == "Unknown":
 | 
				
			||||||
    print("Device is unknown on the system, need to submit a CSR...")
 | 
					    print("Device is unknown on the system, need to submit a CSR...")
 | 
				
			||||||
    with open(args.dev_csr_path, "r") as f:
 | 
					    with open(args.dev_csr_path, "r") as f:
 | 
				
			||||||
        csr = "".join(f.read())
 | 
					        csr = "".utils
 | 
				
			||||||
 | 
					 | 
				
			||||||
    print("Enrolling device...")
 | 
					    print("Enrolling device...")
 | 
				
			||||||
    api.enroll_device(csr)
 | 
					    api.enroll_device(csr)
 | 
				
			||||||
    print("Done. Please accept the device on central system web UI")
 | 
					    print("Done. Please accept the device on central system web UI")
 | 
				
			||||||
@@ -85,4 +88,6 @@ if not os.path.isfile(args.dev_crt_path):
 | 
				
			|||||||
    with open(args.dev_crt_path, "w") as f:
 | 
					    with open(args.dev_crt_path, "w") as f:
 | 
				
			||||||
        f.write(cert)
 | 
					        f.write(cert)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
print("Done. ready to operate.")
 | 
					print("Done. ready to operate.")
 | 
				
			||||||
 | 
					api.sync_device(args.dev_id, args.priv_key)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user