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()
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()
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))
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()
def loadKey(self, keyString): self.payload = Conversion.ascii_or_hex_string_to_16_byte_array(keyString) return self._process()