Пример #1
0
 def loadKeys(self, encryptionEnabled, adminKey, memberKey, guestKey, referenceId):
     self.encryptionEnabled = encryptionEnabled
     
     self.adminKey  = Conversion.ascii_or_hex_string_to_16_byte_array(adminKey)
     self.memberKey = Conversion.ascii_or_hex_string_to_16_byte_array(memberKey)
     self.guestKey  = Conversion.ascii_or_hex_string_to_16_byte_array(guestKey)
     
     self.referenceId = referenceId
     
     self.initializedKeys = True
     self.determineUserLevel()
Пример #2
0
    def getSetupPacket(crownstoneId, sphereId, adminKey, memberKey, basicKey,
                       serviceDataKey, localizationKey, meshDeviceKey,
                       meshAppKey, meshNetworkKey, ibeaconUUID, ibeaconMajor,
                       ibeaconMinor):
        """
		:param crownstoneId:  		uint8 number
		:param sphereId:  	     	uint8 number
		:param adminKey:      		byteString (no conversion required)
		:param memberKey:     		byteString (no conversion required)
		:param basicKey:      		byteString (no conversion required)
		:param serviceDataKey: 	    byteString (no conversion required)
		:param localizationKey: 	byteString (no conversion required)
		:param meshDeviceKey: 	    byteString (no conversion required)
		:param meshAppKey: 	        byteString (no conversion required)
		:param meshNetworkKey: 	    byteString (no conversion required)
		:param ibeaconUUID: 		string  (ie. "1843423e-e175-4af0-a2e4-31e32f729a8a")
		:param ibeaconMajor:        uint16 number
		:param ibeaconMinor:        uint16 number
		:return:
		"""
        data = []
        data.append(crownstoneId)
        data.append(sphereId)

        data += list(adminKey)
        data += list(memberKey)
        data += list(basicKey)
        data += list(serviceDataKey)
        data += list(localizationKey)

        MDKey = meshDeviceKey
        if type(meshDeviceKey) is str:
            MDKey = Conversion.ascii_or_hex_string_to_16_byte_array(
                meshDeviceKey)

        data += list(MDKey)
        data += list(meshAppKey)
        data += list(meshNetworkKey)

        data += Conversion.ibeaconUUIDString_to_reversed_uint8_array(
            ibeaconUUID)
        data += Conversion.uint16_to_uint8_array(ibeaconMajor)
        data += Conversion.uint16_to_uint8_array(ibeaconMinor)

        return ControlPacket(ControlType.SETUP).loadByteArray(data).getPacket()
Пример #3
0
    def test_switchPacketHexKey(self):
        rawData = [0, 0, 100, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

        key = Conversion.ascii_or_hex_string_to_16_byte_array(
            "9e34c5a7da5c2b8d36e9fc5cf7497a6b")
        expectedKey = [
            158, 52, 197, 167, 218, 92, 43, 141, 54, 233, 252, 92, 247, 73,
            122, 107
        ]

        self.assertEqual(key, bytes(expectedKey))

        encryptionData = EncryptionHandler.encryptECB(rawData, key)

        encryptedDataExpected = [
            115, 162, 142, 55, 70, 208, 171, 55, 225, 152, 108, 53, 144, 169,
            172, 179
        ]

        decryptedData = EncryptionHandler.decryptECB(encryptionData, key)

        self.assertEqual(encryptionData, bytes(encryptedDataExpected))
        self.assertEqual(decryptedData, bytes(rawData))
Пример #4
0
    def loadKeys(self, adminKey, memberKey, basicKey, serviceDataKey,
                 localizationKey, meshApplicationKey, meshNetworkKey,
                 referenceId):
        self.adminKey = Conversion.ascii_or_hex_string_to_16_byte_array(
            adminKey)
        self.memberKey = Conversion.ascii_or_hex_string_to_16_byte_array(
            memberKey)
        self.basicKey = Conversion.ascii_or_hex_string_to_16_byte_array(
            basicKey)
        self.serviceDataKey = Conversion.ascii_or_hex_string_to_16_byte_array(
            serviceDataKey)
        self.localizationKey = Conversion.ascii_or_hex_string_to_16_byte_array(
            localizationKey)
        self.meshApplicationKey = Conversion.ascii_or_hex_string_to_16_byte_array(
            meshApplicationKey)
        self.meshNetworkKey = Conversion.ascii_or_hex_string_to_16_byte_array(
            meshNetworkKey)

        self.referenceId = referenceId

        self.initializedKeys = True
        self.determineUserLevel()
Пример #5
0
 def loadKey(self, keyString):
     self.payload = Conversion.ascii_or_hex_string_to_16_byte_array(keyString)
     return self._process()