/// <summary> /// Obtain the device id and encryption key needed for other calls /// </summary> /// <remarks>Run this method before making any other calls</remarks> /// <returns></returns> public async Task AuthorizeAsync() { byte[] authorizationPacket = PacketGenerator.GenerateAuthorizationPacket(this); var encryptedResponse = await SendAndWaitForResponseAsync(authorizationPacket); var encryptedPayload = encryptedResponse.Slice(0x38); var payload = encryptedPayload.Decrypt(); var deviceId = new byte[4]; Array.Copy(payload, 0x00, deviceId, 0, deviceId.Length); var encryptionKey = new byte[16]; Array.Copy(payload, 0x04, encryptionKey, 0, encryptionKey.Length); DeviceId = deviceId; EncryptionKey = encryptionKey; }