Exemplo n.º 1
0
    def get_device(self, device_id):
        device_path = self.client.device_path(self.project_id, self.cloud_region, self.registry_id, device_id)

        try:
            device = self.client.get_device(request={
                "name": device_path
            })

            device_data = {
                "name": device.name,
                "id": device.id,
                "num_id": device.num_id,
                "last_heartbeat_time": str(device.last_heartbeat_time),
                "last_event_time": str(device.last_event_time),
                "last_error_time": str(device.last_error_time),
                "last_error_status": {
                    "code": device.last_error_status.code,
                    "message": device.last_error_status.message
                },
                "credentials": [],
                "config": {
                    "version": device.config.version,
                    "cloud_update_time": str(device.config.cloud_update_time),
                    "device_ack_time": str(device.config.device_ack_time),
                },
                "last_config_ack_time": str(device.last_config_ack_time),
                "last_config_send_time": str(device.last_config_send_time),
                "gateway_config": {},
                "last_state_time": str(device.last_state_time),
                "log_level": str(device.log_level)
            }

            RSAObject = RSACipher()
            RSAObject.set_public_key(public_key_file="keys/RSA/public.pem")

            for credential in device.credentials:
                aes_key = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase + string.digits, k=20))
                encrypted_key = RSAObject.encrypt(plain_text=aes_key)
                AESObject = AESCipher(key=aes_key)
                encrypted_public_key_file = AESObject.encrypt(plain_text=credential.public_key.key)

                device_data["credentials"].append({
                    "public_key": {
                        "format": "RSA_X509_PEM",
                        "key": encrypted_public_key_file,
                        "secret": encrypted_key
                    },
                    "expiration_time": {}
                })

            return device_data, {"success": True}
        except exceptions.NotFound:
            return {}, {"success": False, "message": "Device Not Found"}
Exemplo n.º 2
0
import requests
import random
import string
import json

from AES.AESCipher import AESCipher
from RSA.RSACipher import RSACipher
from DeviceManagement.Manager import DeviceManager

DEVICE_ID = "device-0"

if __name__ == '__main__':
    RSAObject = RSACipher()
    RSAObject.set_public_key(public_key_file="keys/RSA/public.pem")

    print("ENCRYPTION IN PROGRESS!")
    aes_key = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase + string.digits, k=20))
    encrypted_key = RSAObject.encrypt(plain_text=aes_key)
    print("AES Key: {}\n".format(encrypted_key))

    AESObject = AESCipher(key=aes_key)
    encrypted_public_key_file = AESObject.encrypt(plain_text=open("keys/public_key.pub", 'r').read())
    print("Encrypted Public Key File: \n{}\n".format(encrypted_public_key_file))

    response = requests.post(url="http://localhost:5000/device", json={
        "id": DEVICE_ID,
        "key": encrypted_public_key_file,
        "secret": encrypted_key
    })

    print(response.status_code)
Exemplo n.º 3
0
 def encrypt(self, message):
     box = AESCipher(self.session_key, 16)
     return str(box.encrypt(message))