Encode JWT

This commit is contained in:
Pierre HUBERT 2024-09-04 20:17:11 +02:00
parent 1784a0a1f8
commit ee938a3aa6
3 changed files with 33 additions and 2 deletions

View File

@ -1,5 +1,10 @@
# Python client # Python client
Dependencies:
```bash
apt install python3-jwt
```
Reformat code: Reformat code:
```bash ```bash

View File

@ -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)

View File

@ -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)