Beispiel #1
0
// nee BOOL LoadSysEncSettings (void)
BOOL TryDetectSystemEncryptionStatus (void)
{
	DWORD size = 0;
	char *sysEncCfgFileBuf = NULL;
	char *xml = NULL;
	char *configPath = NULL;
	char paramName[100], paramVal[MAX_PATH];

	// Defaults
	int newSystemEncryptionStatus = SYSENC_STATUS_NONE;
	WipeAlgorithmId newnWipeMode = TC_WIPE_NONE;

	/* TODO: In case portable TrueCrypt was used to set up system encryption and has not finished
	   we won't be able to detect the state by config files since we don't know the TC's directory.
	   Actually it seems TC itself when used from another folder will not be able to do that.
	   Will have to check whether boot-related facilities can tell more */

	configPath = GetConfigPath (TC_APPD_FILENAME_SYSTEM_ENCRYPTION);
	if (!FileExists (configPath))
	{
		SystemEncryptionStatus = newSystemEncryptionStatus;
		nWipeMode = newnWipeMode;
	} 
	else {
		sysEncCfgFileBuf = LoadFile (configPath, &size);
		xml = sysEncCfgFileBuf;
	}

	if (xml == NULL)
	{
		return FALSE;
	}

	while (xml = XmlFindElement (xml, "config"))
	{
		XmlGetAttributeText (xml, "key", paramName, sizeof (paramName));
		XmlGetNodeText (xml, paramVal, sizeof (paramVal));

		if (strcmp (paramName, "SystemEncryptionStatus") == 0)
		{
			newSystemEncryptionStatus = atoi (paramVal);
		}
		else if (strcmp (paramName, "WipeMode") == 0)
		{
			newnWipeMode = (WipeAlgorithmId) atoi (paramVal);
		}

		xml++;
	}

	SystemEncryptionStatus = newSystemEncryptionStatus;
	nWipeMode = newnWipeMode;

	free (sysEncCfgFileBuf);
	return TRUE;
}
Beispiel #2
0
//
//	Returns text content of the specified node of an XML document.
//
LPWSTR XmlGetNodeTextOfNode(
	IXMLDOMNode	*pXmlNode,	// root entry object
	LPWSTR	ElementName	// name of the element
	)
{
	LPWSTR	pText = NULL;
	IXMLDOMNode*	pChild;

	if (CoInvoke(pXmlNode, selectSingleNode, ElementName, &pChild) == S_OK)
	{
		pText = XmlGetNodeText(pChild);
		CoInvoke(pChild, Release);
	}

	return(pText);
}
Beispiel #3
0
//
//	Returns text content of the specified root entry of an XML document.
//
LPWSTR XmlGetElementText(
	PVOID	XmlRoot,	// root entry object
	LPWSTR	ElementName	// name of the element
	)
{
	LPWSTR	pText = NULL;
	IXMLDOMNode*	pChild;
	IXMLDOMElement*	pRoot = (IXMLDOMElement*)XmlRoot;

	if (CoInvoke(pRoot, selectSingleNode, ElementName, &pChild) == S_OK)
	{
		pText = XmlGetNodeText(pChild);
		CoInvoke(pChild, Release);
	}

	return(pText);
}
Beispiel #4
0
void LoadCombo (HWND hComboBox)
{
	DWORD size;
	char *history = LoadFile (GetConfigPath (TC_APPD_FILENAME_HISTORY), &size);
	char *xml = history;
	char volume[MAX_PATH];

	if (xml == NULL) return;

	while (xml = XmlFindElement (xml, "volume"))
	{
		XmlGetNodeText (xml, volume, sizeof (volume));
		AddComboItem (hComboBox, volume, TRUE);
		xml++;
	}

	SendMessage (hComboBox, CB_SETCURSEL, 0, 0);

	free (history);
}