From f648e29d050cab362cc660c1a5c5109182028768 Mon Sep 17 00:00:00 2001 From: kavsrf Date: Mon, 23 Jan 2017 15:30:22 +0300 Subject: DcsInfo added DcsBoot is driver now (to support DriverOrder list) --- Library/VeraCryptLib/DcsConfig.c | 72 +++++++++++++++++++++++++++++++++++ Library/VeraCryptLib/DcsConfig.h | 29 ++++++++++++++ Library/VeraCryptLib/DcsVeraCrypt.c | 53 +------------------------- Library/VeraCryptLib/DcsVeraCrypt.h | 3 -- Library/VeraCryptLib/VeraCryptLib.inf | 2 + 5 files changed, 104 insertions(+), 55 deletions(-) create mode 100644 Library/VeraCryptLib/DcsConfig.c create mode 100644 Library/VeraCryptLib/DcsConfig.h (limited to 'Library/VeraCryptLib') diff --git a/Library/VeraCryptLib/DcsConfig.c b/Library/VeraCryptLib/DcsConfig.c new file mode 100644 index 0000000..00aa5f8 --- /dev/null +++ b/Library/VeraCryptLib/DcsConfig.c @@ -0,0 +1,72 @@ +/** @file +Interface for DCS + +Copyright (c) 2016. Disk Cryptography Services for EFI (DCS), Alex Kolotnikov +Copyright (c) 2016. VeraCrypt, Mounir IDRASSI + +This program and the accompanying materials +are licensed and made available under the terms and conditions +of the Apache License, Version 2.0. + +The full text of the license may be found at +https://opensource.org/licenses/Apache-2.0 +**/ + +#include +#include + +#include +#include "common/Xml.h" + +////////////////////////////////////////////////////////////////////////// +// Config +////////////////////////////////////////////////////////////////////////// +char *gConfigBuffer = NULL; +UINTN gConfigBufferSize = 0; + +BOOLEAN +ConfigRead(char *configKey, char *configValue, int maxValueSize) +{ + char *xml; + + if (gConfigBuffer == NULL) { + if (FileLoad(NULL, L"\\EFI\\VeraCrypt\\DcsProp", &gConfigBuffer, &gConfigBufferSize) != EFI_SUCCESS) { + return FALSE; + } + } + + xml = gConfigBuffer; + if (xml != NULL) + { + xml = XmlFindElementByAttributeValue(xml, "config", "key", configKey); + if (xml != NULL) + { + XmlGetNodeText(xml, configValue, maxValueSize); + return TRUE; + } + } + + return FALSE; +} + +int ConfigReadInt(char *configKey, int defaultValue) +{ + char s[32]; + if (ConfigRead(configKey, s, sizeof(s))) { + if (*s == '-') { + return (-1) * (int)AsciiStrDecimalToUintn(&s[1]); + } + return (int)AsciiStrDecimalToUintn(s); + } + else + return defaultValue; +} + + +char *ConfigReadString(char *configKey, char *defaultValue, char *str, int maxLen) +{ + if (!ConfigRead(configKey, str, maxLen)) { + AsciiStrCpyS(str, maxLen, defaultValue); + } + return str; +} diff --git a/Library/VeraCryptLib/DcsConfig.h b/Library/VeraCryptLib/DcsConfig.h new file mode 100644 index 0000000..04719d9 --- /dev/null +++ b/Library/VeraCryptLib/DcsConfig.h @@ -0,0 +1,29 @@ +/** @file +Interface for DCS services + +Copyright (c) 2016. Disk Cryptography Services for EFI (DCS), Alex Kolotnikov +Copyright (c) 2016. VeraCrypt, Mounir IDRASSI + +This program and the accompanying materials +are licensed and made available under the terms and conditions +of the Apache License, Version 2.0. + +The full text of the license may be found at +https://opensource.org/licenses/Apache-2.0 +**/ + +#ifndef __DCSCONFIG_H__ +#define __DCSCONFIG_H__ + +#include + +////////////////////////////////////////////////////////////////////////// +// Config +////////////////////////////////////////////////////////////////////////// +extern char *gConfigBuffer; +extern UINTN gConfigBufferSize; + +BOOLEAN ConfigRead(char *configKey, char *configValue, int maxValueSize); +int ConfigReadInt(char *configKey, int defaultValue); +char *ConfigReadString(char *configKey, char *defaultValue, char *str, int maxLen); +#endif diff --git a/Library/VeraCryptLib/DcsVeraCrypt.c b/Library/VeraCryptLib/DcsVeraCrypt.c index 2979064..d5680ba 100644 --- a/Library/VeraCryptLib/DcsVeraCrypt.c +++ b/Library/VeraCryptLib/DcsVeraCrypt.c @@ -23,62 +23,11 @@ https://opensource.org/licenses/Apache-2.0 #include #include "common/Crypto.h" -#include "common/Xml.h" #include "common/Crc.h" #include "BootCommon.h" #include "Library/DcsTpmLib.h" +#include -////////////////////////////////////////////////////////////////////////// -// Config -////////////////////////////////////////////////////////////////////////// -char *gConfigBuffer = NULL; -UINTN gConfigBufferSize = 0; - -BOOL ConfigRead(char *configKey, char *configValue, int maxValueSize) -{ - char *xml; - - if (gConfigBuffer == NULL) { - if (FileLoad(NULL, L"\\EFI\\VeraCrypt\\DcsProp", &gConfigBuffer, &gConfigBufferSize) != EFI_SUCCESS) { - return FALSE; - } - } - - xml = gConfigBuffer; - if (xml != NULL) - { - xml = XmlFindElementByAttributeValue(xml, "config", "key", configKey); - if (xml != NULL) - { - XmlGetNodeText(xml, configValue, maxValueSize); - return TRUE; - } - } - - return FALSE; -} - -int ConfigReadInt(char *configKey, int defaultValue) -{ - char s[32]; - if (ConfigRead(configKey, s, sizeof(s))) { - if (*s == '-') { - return (-1) * (int)AsciiStrDecimalToUintn(&s[1]); - } - return (int)AsciiStrDecimalToUintn(s); - } - else - return defaultValue; -} - - -char *ConfigReadString(char *configKey, char *defaultValue, char *str, int maxLen) -{ - if (!ConfigRead(configKey, str, maxLen)) { - AsciiStrCpyS(str, maxLen, defaultValue); - } - return str; -} /////////////////////////////////////////////////////////////////////////// diff --git a/Library/VeraCryptLib/DcsVeraCrypt.h b/Library/VeraCryptLib/DcsVeraCrypt.h index 23eb4a2..41dc6c2 100644 --- a/Library/VeraCryptLib/DcsVeraCrypt.h +++ b/Library/VeraCryptLib/DcsVeraCrypt.h @@ -19,9 +19,6 @@ https://opensource.org/licenses/Apache-2.0 #include #include -extern char *gConfigBuffer; -extern UINTN gConfigBufferSize; - ////////////////////////////////////////////////////////////////////////// // Auth ////////////////////////////////////////////////////////////////////////// diff --git a/Library/VeraCryptLib/VeraCryptLib.inf b/Library/VeraCryptLib/VeraCryptLib.inf index 529043f..a208f9c 100644 --- a/Library/VeraCryptLib/VeraCryptLib.inf +++ b/Library/VeraCryptLib/VeraCryptLib.inf @@ -62,6 +62,8 @@ crypto\Camellia.c crypto\Camellia.h crypto\cpu.c crypto\cpu.h +DcsConfig.c +DcsConfig.h DcsVeraCrypt.c DcsVeraCrypt.h -- cgit v1.2.3