mirror of
https://github.com/tenrok/Rfid-Credential-Provider.git
synced 2026-05-15 11:59:44 +03:00
Z-2 USB Reader
This commit is contained in:
+1
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
#ignore thumbnails created by windows
|
||||
Thumbs.db
|
||||
#Ignore files build by Visual Studio
|
||||
@@ -27,3 +26,4 @@ obj/
|
||||
[Rr]elease*/
|
||||
_ReSharper*/
|
||||
[Tt]est[Rr]esult*
|
||||
.vs
|
||||
|
||||
@@ -8,74 +8,74 @@ using System.Runtime.InteropServices;
|
||||
|
||||
namespace RegisterSystem
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError=true)]
|
||||
public static extern bool Wow64EnableWow64FsRedirection(ref IntPtr ptr);
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
public static extern bool Wow64EnableWow64FsRedirection(ref IntPtr ptr);
|
||||
|
||||
private static bool isBoxed = (!Environment.Is64BitProcess && Environment.Is64BitOperatingSystem);
|
||||
public static readonly RegistryKey Software = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, (isBoxed) ? RegistryView.Registry64 : RegistryView.Default).OpenSubKey("SOFTWARE", true);
|
||||
static void Main(string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("Generating Registry Structure...");
|
||||
RegistryKey Base = Software.CreateSubKey("Tyler Menezes");
|
||||
Base = Base.CreateSubKey("Rfid Login");
|
||||
private static bool isBoxed = (!Environment.Is64BitProcess && Environment.Is64BitOperatingSystem);
|
||||
public static readonly RegistryKey Software = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, (isBoxed) ? RegistryView.Registry64 : RegistryView.Default).OpenSubKey("SOFTWARE", true);
|
||||
static void Main(string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("Generating Registry Structure...");
|
||||
RegistryKey Base = Software.CreateSubKey("KORNET");
|
||||
Base = Base.CreateSubKey("WinLogin");
|
||||
|
||||
Console.WriteLine("Adding default configuration...");
|
||||
Base.SetValue("Port", "COM3");
|
||||
Base.SetValue("Message Start", 0x02);
|
||||
Base.SetValue("Message End", 0x0d);
|
||||
Console.WriteLine("Adding default configuration...");
|
||||
Base.SetValue("Port", "COM3");
|
||||
//Base.SetValue("Message Start", 0x02);
|
||||
//Base.SetValue("Message End", 0x0d);
|
||||
|
||||
Console.WriteLine("Reversing Entropy...");
|
||||
string randomSalt = Hash(((new Random()).Next(int.MaxValue) + DateTime.Now.Ticks).ToString());
|
||||
Console.WriteLine("Reversing Entropy...");
|
||||
string randomSalt = Hash((new Random().Next(int.MaxValue) + DateTime.Now.Ticks).ToString());
|
||||
|
||||
Console.WriteLine("Enumerating the null set...");
|
||||
Base = Base.CreateSubKey("Keys");
|
||||
Base.SetValue("Salt", randomSalt);
|
||||
Console.WriteLine("Enumerating the null set...");
|
||||
Base = Base.CreateSubKey("Keys");
|
||||
Base.SetValue("Salt", randomSalt);
|
||||
|
||||
Console.WriteLine("Doing magical Windows-y things...");
|
||||
string provider = (Environment.Is64BitOperatingSystem)? "64" : "32";
|
||||
provider = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\CredentialProviders\\" + provider + "\\RfidCredentialProvider.dll";
|
||||
string to = Environment.GetEnvironmentVariable("SystemRoot") + "\\System32\\RfidCredentialProvider.dll";
|
||||
Console.WriteLine("Doing magical Windows-y things...");
|
||||
string provider = Environment.Is64BitOperatingSystem ? "64" : "32";
|
||||
provider = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\CredentialProviders\\" + provider + "\\RfidCredentialProvider.dll";
|
||||
string to = Environment.GetEnvironmentVariable("SystemRoot") + "\\System32\\RfidCredentialProvider.dll";
|
||||
|
||||
IntPtr p = new IntPtr();
|
||||
IntPtr p = new IntPtr();
|
||||
|
||||
if (isBoxed)
|
||||
{
|
||||
Wow64DisableWow64FsRedirection(ref p);
|
||||
}
|
||||
if (isBoxed)
|
||||
{
|
||||
Wow64DisableWow64FsRedirection(ref p);
|
||||
}
|
||||
|
||||
if (File.Exists(to))
|
||||
{
|
||||
File.Delete(to);
|
||||
}
|
||||
File.Copy(provider, to);
|
||||
if (File.Exists(to))
|
||||
{
|
||||
File.Delete(to);
|
||||
}
|
||||
File.Copy(provider, to);
|
||||
|
||||
if (isBoxed)
|
||||
{
|
||||
Wow64EnableWow64FsRedirection(ref p);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
Console.ReadLine();
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
if (isBoxed)
|
||||
{
|
||||
Wow64EnableWow64FsRedirection(ref p);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
Console.ReadLine();
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
private static string Hash(string toHash)
|
||||
{
|
||||
System.Security.Cryptography.SHA1CryptoServiceProvider x = new System.Security.Cryptography.SHA1CryptoServiceProvider();
|
||||
byte[] data = System.Text.Encoding.ASCII.GetBytes(toHash);
|
||||
data = x.ComputeHash(data);
|
||||
string o = BitConverter.ToString(data).Replace("-", "").ToUpper();
|
||||
return o;
|
||||
}
|
||||
}
|
||||
private static string Hash(string toHash)
|
||||
{
|
||||
System.Security.Cryptography.SHA1CryptoServiceProvider x = new System.Security.Cryptography.SHA1CryptoServiceProvider();
|
||||
byte[] data = System.Text.Encoding.ASCII.GetBytes(toHash);
|
||||
data = x.ComputeHash(data);
|
||||
string o = BitConverter.ToString(data).Replace("-", "").ToUpper();
|
||||
return o;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyTitle("RegisterSystem")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Tyler Menezes")]
|
||||
[assembly: AssemblyCompany("KORNET")]
|
||||
[assembly: AssemblyProduct("RegisterSystem")]
|
||||
[assembly: AssemblyCopyright("Copyright © Tyler Menezes 2011")]
|
||||
[assembly: AssemblyCopyright("Copyright © KORNET 2019")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,48 +0,0 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<PropertyGroup>
|
||||
<!-- Select a Product Configuration -->
|
||||
<InstallShieldProductConfiguration>Express</InstallShieldProductConfiguration>
|
||||
<!-- Select a Visual Studio Configuration / InstallShield Release -->
|
||||
<Configuration>Debug</Configuration>
|
||||
<InstallShieldRelease>$(Configuration)</InstallShieldRelease>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<!-- The InstallShieldProject item selects the project to build -->
|
||||
<InstallShieldProject Include="$(MSBuildProjectDirectory)\$(MSBuildProjectName).isl"/>
|
||||
<!-- The InstallShieldReleaseFlags sets Release Flags -->
|
||||
<!--<InstallShieldReleaseFlags Include=""/>-->
|
||||
<!-- The InstallShieldMergeModulePath specifies what directories are
|
||||
searched for Merge Modules -->
|
||||
<!--<InstallShieldMergeModulePath Include=""/>-->
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<!-- The ProjectReference items refer to any Visual Studio solutions you want to automatically probe for Project Output Groups. -->
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<!-- The TaggedOutputs items allow you to explicitly add extra files to output groups. Each item must include both Name and OutputGroup, as well as TargetPath metadata values. -->
|
||||
<!--<TaggedOutputs Include="C:\My Test Exe.exe">
|
||||
<Name>My Test Project</Name>
|
||||
<OutputGroup>Primary output</OutputGroup>
|
||||
<TargetPath>My Test Exe.exe</TargetPath>
|
||||
</TaggedOutputs> -->
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath32)\InstallShield\2011Limited\InstallShield.targets"/>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Manager\TestWizard\TestWizard.csproj">
|
||||
<Name>TestWizard</Name>
|
||||
<Project>{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Manager\Wizard.Controls\Wizard.Controls.csproj">
|
||||
<Name>Wizard.Controls</Name>
|
||||
<Project>{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Manager\Wizard.UI\Wizard.UI.csproj">
|
||||
<Name>Wizard.UI</Name>
|
||||
<Project>{80614F74-563D-418E-9BF6-1294F73521C0}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\RegisterSystem\RegisterSystem.csproj">
|
||||
<Name>RegisterSystem1</Name>
|
||||
<Project>{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 32 KiB |
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 84 KiB |
Binary file not shown.
+58
-63
@@ -7,80 +7,75 @@ using System.Threading;
|
||||
|
||||
namespace TestWizard
|
||||
{
|
||||
public delegate void RfidRead(string id);
|
||||
public class RFID
|
||||
{
|
||||
private SerialPort p;
|
||||
public delegate void RfidRead(string id);
|
||||
public class RFID
|
||||
{
|
||||
private SerialPort p;
|
||||
|
||||
private const int baud = 9600;
|
||||
private const Parity parity = Parity.None;
|
||||
private const int dataBits = 8;
|
||||
private const StopBits stopBits = StopBits.One;
|
||||
private const int baud = 9600;
|
||||
private const Parity parity = Parity.None;
|
||||
private const int dataBits = 8;
|
||||
private const StopBits stopBits = StopBits.One;
|
||||
|
||||
public event RfidRead IncomingRfid;
|
||||
public event RfidRead IncomingRfid;
|
||||
|
||||
private Thread readThread;
|
||||
private bool continueReading = false;
|
||||
private Thread readThread;
|
||||
private bool continueReading = false;
|
||||
|
||||
private string Port = "COM3";
|
||||
private string Port = "COM3";
|
||||
|
||||
public RFID()
|
||||
{
|
||||
init();
|
||||
}
|
||||
public RFID()
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
public RFID(int port)
|
||||
{
|
||||
Port = "COM" + port;
|
||||
public RFID(int port)
|
||||
{
|
||||
Port = "COM" + port;
|
||||
init();
|
||||
}
|
||||
|
||||
init();
|
||||
}
|
||||
public RFID(string port)
|
||||
{
|
||||
Port = port;
|
||||
init();
|
||||
}
|
||||
|
||||
public RFID(string port)
|
||||
{
|
||||
Port = port;
|
||||
private void init()
|
||||
{
|
||||
p = new SerialPort(Port, baud, parity, dataBits, stopBits);
|
||||
if (!continueReading)
|
||||
{
|
||||
continueReading = true;
|
||||
readThread = new Thread(Read);
|
||||
readThread.Start();
|
||||
}
|
||||
}
|
||||
|
||||
init();
|
||||
}
|
||||
public void Close()
|
||||
{
|
||||
continueReading = false;
|
||||
}
|
||||
|
||||
private void init()
|
||||
{
|
||||
p = new SerialPort(Port, baud, parity, dataBits, stopBits);
|
||||
private void Read()
|
||||
{
|
||||
p.Open();
|
||||
|
||||
if (!continueReading)
|
||||
{
|
||||
continueReading = true;
|
||||
readThread = new Thread(Read);
|
||||
readThread.Start();
|
||||
}
|
||||
while (continueReading)
|
||||
{
|
||||
string result = p.ReadLine();
|
||||
|
||||
// Strip out meta-text
|
||||
//result = result.Replace("\u0003", "");
|
||||
//result = result.Replace("\u0002", "");
|
||||
result = result.Replace("\r", "");
|
||||
result = result.Replace("\n", "");
|
||||
//result = string.Concat(result.Select(x => ((int)x).ToString("x")));
|
||||
|
||||
}
|
||||
IncomingRfid(result);
|
||||
}
|
||||
|
||||
public void Close()
|
||||
{
|
||||
continueReading = false;
|
||||
}
|
||||
|
||||
private void Read()
|
||||
{
|
||||
|
||||
p.Open();
|
||||
|
||||
while (continueReading)
|
||||
{
|
||||
string result = p.ReadLine();
|
||||
|
||||
// Strip out meta-text
|
||||
result = result.Replace("\u0003", "");
|
||||
result = result.Replace("\u0002", "");
|
||||
result = result.Replace("\r", "");
|
||||
result = result.Replace("\n", "");
|
||||
|
||||
IncomingRfid(result);
|
||||
}
|
||||
|
||||
p.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
p.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,118 +5,115 @@ using Microsoft.Win32;
|
||||
|
||||
namespace TestWizard
|
||||
{
|
||||
class RegistryAccess
|
||||
{
|
||||
private static bool isBoxed = (IntPtr.Size == 4 && !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")));
|
||||
public static readonly RegistryKey Primary = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, (isBoxed) ? RegistryView.Registry64 : RegistryView.Default).OpenSubKey("SOFTWARE\\Tyler Menezes\\Rfid Login", true);
|
||||
private static readonly RegistryKey Keys = Primary.OpenSubKey("Keys", true);
|
||||
class RegistryAccess
|
||||
{
|
||||
private static bool isBoxed = (IntPtr.Size == 4 && !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")));
|
||||
public static readonly RegistryKey Primary = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, (isBoxed) ? RegistryView.Registry64 : RegistryView.Default).OpenSubKey("SOFTWARE\\KORNET\\WinLogin", true);
|
||||
private static readonly RegistryKey Keys = Primary.OpenSubKey("Keys", true);
|
||||
|
||||
private string RfidToken;
|
||||
private string RfidToken;
|
||||
|
||||
public RegistryAccess(string token)
|
||||
{
|
||||
RfidToken = token;
|
||||
}
|
||||
public RegistryAccess(string token)
|
||||
{
|
||||
RfidToken = token;
|
||||
}
|
||||
|
||||
public string Username
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Username")));
|
||||
}
|
||||
set
|
||||
{
|
||||
TokenKey.SetValue("Username", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||
}
|
||||
}
|
||||
|
||||
public string Username
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Username")));
|
||||
}
|
||||
set
|
||||
{
|
||||
TokenKey.SetValue("Username", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||
}
|
||||
}
|
||||
public string Password
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Password")));
|
||||
}
|
||||
set
|
||||
{
|
||||
TokenKey.SetValue("Password", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||
}
|
||||
}
|
||||
|
||||
public string Password
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Password")));
|
||||
}
|
||||
set
|
||||
{
|
||||
TokenKey.SetValue("Password", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||
}
|
||||
}
|
||||
public string Domain
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Domain")));
|
||||
}
|
||||
set
|
||||
{
|
||||
TokenKey.SetValue("Domain", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||
}
|
||||
}
|
||||
|
||||
public string Domain
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Domain")));
|
||||
}
|
||||
set
|
||||
{
|
||||
TokenKey.SetValue("Domain", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||
}
|
||||
}
|
||||
private string GetEncryptedValue(string toEncrypt)
|
||||
{
|
||||
char[] e = toEncrypt.ToCharArray();
|
||||
string key = Hash(RfidToken + TokenSalt);
|
||||
for (int i = 0; i < toEncrypt.Length; i++)
|
||||
{
|
||||
e[i] = (char)(e[i] ^ key[i % key.Length]);
|
||||
e[i] = (char)(((int)e[i]) + 1);
|
||||
}
|
||||
return new string(e);
|
||||
}
|
||||
|
||||
private string GetEncryptedValue(string toEncrypt)
|
||||
{
|
||||
char[] e = toEncrypt.ToCharArray();
|
||||
string key = Hash(RfidToken + TokenSalt);
|
||||
for (int i = 0; i < toEncrypt.Length; i++)
|
||||
{
|
||||
e[i] = (char)(e[i] ^ key[i % key.Length]);
|
||||
e[i] = (char)(((int)e[i]) + 1);
|
||||
}
|
||||
private string GetDecryptedValue(string toDecrypt)
|
||||
{
|
||||
char[] e = toDecrypt.ToCharArray();
|
||||
string key = Hash(RfidToken + TokenSalt);
|
||||
for (int i = 0; i < toDecrypt.Length; i++)
|
||||
{
|
||||
e[i] = (char)(((int)e[i]) - 1);
|
||||
e[i] = (char)(e[i] ^ key[i % key.Length]);
|
||||
}
|
||||
return new string(e);
|
||||
}
|
||||
|
||||
return new string(e);
|
||||
}
|
||||
private string TokenSalt
|
||||
{
|
||||
get
|
||||
{
|
||||
return (string)TokenKey.GetValue("Salt");
|
||||
}
|
||||
}
|
||||
|
||||
private string GetDecryptedValue(string toDecrypt)
|
||||
{
|
||||
char[] e = toDecrypt.ToCharArray();
|
||||
string key = Hash(RfidToken + TokenSalt);
|
||||
for (int i = 0; i < toDecrypt.Length; i++)
|
||||
{
|
||||
e[i] = (char)(((int)e[i]) - 1);
|
||||
e[i] = (char)(e[i] ^ key[i % key.Length]);
|
||||
}
|
||||
private RegistryKey TokenKey
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Keys.OpenSubKey(Hash(RfidToken + KeySalt)) == null)
|
||||
{
|
||||
Keys.CreateSubKey(Hash(RfidToken + KeySalt));
|
||||
Keys.OpenSubKey(Hash(RfidToken + KeySalt), true).SetValue("Salt", Hash(((new Random()).Next(Int32.MaxValue) + DateTime.Now.Ticks).ToString()));
|
||||
}
|
||||
return Keys.OpenSubKey(Hash(RfidToken + KeySalt), true);
|
||||
}
|
||||
}
|
||||
|
||||
return new string(e);
|
||||
}
|
||||
private static string KeySalt
|
||||
{
|
||||
get
|
||||
{
|
||||
return (string)Keys.GetValue("Salt");
|
||||
}
|
||||
}
|
||||
|
||||
private string TokenSalt
|
||||
{
|
||||
get
|
||||
{
|
||||
return (string)TokenKey.GetValue("Salt");
|
||||
}
|
||||
}
|
||||
|
||||
private RegistryKey TokenKey
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Keys.OpenSubKey(Hash(RfidToken + KeySalt)) == null)
|
||||
{
|
||||
Keys.CreateSubKey(Hash(RfidToken + KeySalt));
|
||||
Keys.OpenSubKey(Hash(RfidToken + KeySalt), true).SetValue("Salt", Hash(((new Random()).Next(Int32.MaxValue) + DateTime.Now.Ticks).ToString()));
|
||||
}
|
||||
return Keys.OpenSubKey(Hash(RfidToken + KeySalt), true);
|
||||
}
|
||||
}
|
||||
|
||||
private static string KeySalt
|
||||
{
|
||||
get
|
||||
{
|
||||
return (string)Keys.GetValue("Salt");
|
||||
}
|
||||
}
|
||||
|
||||
private static string Hash(string toHash)
|
||||
{
|
||||
System.Security.Cryptography.SHA1CryptoServiceProvider x = new System.Security.Cryptography.SHA1CryptoServiceProvider();
|
||||
byte[] data = System.Text.Encoding.ASCII.GetBytes(toHash);
|
||||
data = x.ComputeHash(data);
|
||||
string o = BitConverter.ToString(data).Replace("-", "").ToUpper();
|
||||
return o;
|
||||
}
|
||||
}
|
||||
private static string Hash(string toHash)
|
||||
{
|
||||
System.Security.Cryptography.SHA1CryptoServiceProvider x = new System.Security.Cryptography.SHA1CryptoServiceProvider();
|
||||
byte[] data = System.Text.Encoding.ASCII.GetBytes(toHash);
|
||||
data = x.ComputeHash(data);
|
||||
string o = BitConverter.ToString(data).Replace("-", "").ToUpper();
|
||||
return o;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,48 +42,6 @@
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile />
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DocumentationFile />
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn />
|
||||
<Optimize>false</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>full</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile />
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<DocumentationFile />
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn />
|
||||
<Optimize>true</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>none</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||
|
||||
@@ -41,48 +41,6 @@
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile />
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DocumentationFile />
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn />
|
||||
<Optimize>false</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>full</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile />
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<DocumentationFile />
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn />
|
||||
<Optimize>true</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>none</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||
|
||||
@@ -41,48 +41,6 @@
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile />
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DocumentationFile />
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn />
|
||||
<Optimize>false</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>full</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile />
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<DocumentationFile />
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn />
|
||||
<Optimize>true</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>none</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||
|
||||
@@ -16,10 +16,10 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
credUiInfo.pszCaptionText = TEXT("WinCred UI Demo");
|
||||
credUiInfo.pszMessageText = TEXT("Example of RFID!");
|
||||
credUiInfo.cbSize = sizeof(credUiInfo);
|
||||
credUiInfo.hbmBanner = NULL;
|
||||
credUiInfo.hwndParent = NULL;
|
||||
credUiInfo.hbmBanner = nullptr;
|
||||
credUiInfo.hwndParent = nullptr;
|
||||
|
||||
CredUIPromptForWindowsCredentials(&credUiInfo, 0, &authPackage, NULL, 0, &authBuffer, &authBufferSize, &save, 0);
|
||||
CredUIPromptForWindowsCredentials(&credUiInfo, 0, &authPackage, nullptr, 0, &authBuffer, &authBufferSize, &save, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,395 +0,0 @@
|
||||
<?xml version="1.0" encoding="big5"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="CredUILauncher"
|
||||
ProjectGUID="{D1F100CA-0215-405D-9B43-7C0AAAAC8880}"
|
||||
RootNamespace="CredUILauncher"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="CredUi.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="CredUi.lib"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="CredUi.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="CredUi.lib"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\CredUILauncher.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\stdafx.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\targetver.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\ReadMe.txt"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -28,19 +28,23 @@
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -94,13 +98,15 @@
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<OmitFramePointers />
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>CredUi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
@@ -113,6 +119,7 @@
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<OmitFramePointers />
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>CredUi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -121,6 +128,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
@@ -129,7 +137,7 @@
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
@@ -151,7 +159,7 @@
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
|
||||
Binary file not shown.
@@ -18,8 +18,7 @@ static LONG g_cRef = 0; // global dll reference count
|
||||
|
||||
extern HRESULT RfidProvider_CreateInstance(REFIID riid, void** ppv);
|
||||
|
||||
HINSTANCE g_hinst = NULL; // global dll hinstance
|
||||
|
||||
HINSTANCE g_hinst = nullptr; // global dll hinstance
|
||||
|
||||
class CClassFactory : public IClassFactory
|
||||
{
|
||||
@@ -40,7 +39,7 @@ public:
|
||||
return cRef;
|
||||
}
|
||||
|
||||
STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
|
||||
STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
|
||||
{
|
||||
HRESULT hr;
|
||||
if (ppv != NULL)
|
||||
@@ -65,7 +64,7 @@ public:
|
||||
}
|
||||
|
||||
// IClassFactory
|
||||
STDMETHOD (CreateInstance)(IUnknown* pUnkOuter, REFIID riid, void** ppv)
|
||||
STDMETHOD(CreateInstance)(IUnknown* pUnkOuter, REFIID riid, void** ppv)
|
||||
{
|
||||
HRESULT hr;
|
||||
if (!pUnkOuter)
|
||||
@@ -79,7 +78,7 @@ public:
|
||||
return hr;
|
||||
}
|
||||
|
||||
STDMETHOD (LockServer)(BOOL bLock)
|
||||
STDMETHOD(LockServer)(BOOL bLock)
|
||||
{
|
||||
if (bLock)
|
||||
{
|
||||
@@ -94,11 +93,10 @@ public:
|
||||
|
||||
private:
|
||||
CClassFactory() : _cRef(1) {}
|
||||
~CClassFactory(){}
|
||||
~CClassFactory() {}
|
||||
|
||||
private:
|
||||
LONG _cRef;
|
||||
|
||||
friend HRESULT CClassFactory_CreateInstance(REFCLSID rclsid, REFIID riid, void** ppv);
|
||||
};
|
||||
|
||||
@@ -131,10 +129,9 @@ BOOL WINAPI DllMain(
|
||||
HINSTANCE hinstDll,
|
||||
DWORD dwReason,
|
||||
LPVOID pReserved
|
||||
)
|
||||
)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(pReserved);
|
||||
|
||||
switch (dwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
@@ -145,10 +142,8 @@ BOOL WINAPI DllMain(
|
||||
case DLL_THREAD_DETACH:
|
||||
break;
|
||||
}
|
||||
|
||||
g_hinst = hinstDll;
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
void DllAddRef()
|
||||
@@ -165,7 +160,6 @@ void DllRelease()
|
||||
STDAPI DllCanUnloadNow()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if (g_cRef > 0)
|
||||
{
|
||||
hr = S_FALSE; // cocreated objects still exist, don't unload
|
||||
@@ -174,7 +168,6 @@ STDAPI DllCanUnloadNow()
|
||||
{
|
||||
hr = S_OK; // refcount is zero, ok to unload
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
@@ -183,4 +176,3 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppv)
|
||||
{
|
||||
return CClassFactory_CreateInstance(rclsid, riid, ppv);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include <string>
|
||||
|
||||
void decrypt(char* toDecrypt, char* password){
|
||||
for(int i = 0; i < strlen(toDecrypt); i++){
|
||||
void decrypt(char* toDecrypt, char* password) {
|
||||
for (int i = 0; i < strlen(toDecrypt); i++) {
|
||||
toDecrypt[i] = (char)(((int)toDecrypt[i]) - 1);
|
||||
toDecrypt[i] = toDecrypt[i] ^ password[i % strlen(password)];
|
||||
}
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
#include <string>
|
||||
#include "Logger.h"
|
||||
|
||||
void Log(const char *toWrite){
|
||||
FILE * pFile;
|
||||
void Log(const char* toWrite) {
|
||||
FILE* pFile;
|
||||
|
||||
time_t now;
|
||||
struct tm *ts;
|
||||
struct tm* ts;
|
||||
char buf[80];
|
||||
|
||||
|
||||
now = time(NULL);
|
||||
|
||||
|
||||
ts = localtime(&now);
|
||||
strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S", ts);
|
||||
|
||||
pFile = fopen ("C:\\RfidCredentialProvider.log.txt","a");
|
||||
pFile = fopen("C:\\RfidCredentialProvider.log.txt", "a");
|
||||
fprintf(pFile, "%s\t%s\n", buf, toWrite);
|
||||
fclose(pFile);
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
void Log(const char *toWrite);
|
||||
void Log(const char* toWrite);
|
||||
@@ -3,61 +3,52 @@
|
||||
#include "Registry.h"
|
||||
#include "helpers.h"
|
||||
|
||||
LONG GetDWORDRegKey(HKEY hKey, const std::wstring &strValueName, DWORD &nValue, DWORD nDefaultValue)
|
||||
LONG GetDWORDRegKey(HKEY hKey, const std::wstring& strValueName, DWORD& nValue, DWORD nDefaultValue)
|
||||
{
|
||||
nValue = nDefaultValue;
|
||||
DWORD dwBufferSize(sizeof(DWORD));
|
||||
DWORD nResult(0);
|
||||
LONG nError = ::RegQueryValueExW(hKey,
|
||||
strValueName.c_str(),
|
||||
0,
|
||||
NULL,
|
||||
reinterpret_cast<LPBYTE>(&nResult),
|
||||
&dwBufferSize);
|
||||
if (ERROR_SUCCESS == nError)
|
||||
{
|
||||
nValue = nResult;
|
||||
}
|
||||
return nError;
|
||||
nValue = nDefaultValue;
|
||||
DWORD dwBufferSize(sizeof(DWORD));
|
||||
DWORD nResult(0);
|
||||
LONG nError = ::RegQueryValueExW(hKey, strValueName.c_str(), nullptr, nullptr, reinterpret_cast<LPBYTE>(&nResult), &dwBufferSize);
|
||||
if (ERROR_SUCCESS == nError)
|
||||
{
|
||||
nValue = nResult;
|
||||
}
|
||||
return nError;
|
||||
}
|
||||
|
||||
|
||||
LONG GetBoolRegKey(HKEY hKey, const std::wstring &strValueName, bool &bValue, bool bDefaultValue)
|
||||
LONG GetBoolRegKey(HKEY hKey, const std::wstring& strValueName, bool& bValue, bool bDefaultValue)
|
||||
{
|
||||
DWORD nDefValue((bDefaultValue) ? 1 : 0);
|
||||
DWORD nResult(nDefValue);
|
||||
LONG nError = GetDWORDRegKey(hKey, strValueName.c_str(), nResult, nDefValue);
|
||||
if (ERROR_SUCCESS == nError)
|
||||
{
|
||||
bValue = (nResult != 0) ? true : false;
|
||||
}
|
||||
return nError;
|
||||
DWORD nDefValue((bDefaultValue) ? 1 : 0);
|
||||
DWORD nResult(nDefValue);
|
||||
LONG nError = GetDWORDRegKey(hKey, strValueName.c_str(), nResult, nDefValue);
|
||||
if (ERROR_SUCCESS == nError)
|
||||
{
|
||||
bValue = (nResult != 0) ? true : false;
|
||||
}
|
||||
return nError;
|
||||
}
|
||||
|
||||
|
||||
LONG GetStringRegKey(HKEY hKey, const std::wstring &strValueName, std::wstring &strValue, const std::wstring &strDefaultValue)
|
||||
LONG GetStringRegKey(HKEY hKey, const std::wstring& strValueName, std::wstring& strValue, const std::wstring& strDefaultValue)
|
||||
{
|
||||
strValue = strDefaultValue;
|
||||
WCHAR szBuffer[512];
|
||||
DWORD dwBufferSize = sizeof(szBuffer);
|
||||
ULONG nError;
|
||||
nError = RegQueryValueExW(hKey, strValueName.c_str(), 0, NULL, (LPBYTE)szBuffer, &dwBufferSize);
|
||||
if (ERROR_SUCCESS == nError)
|
||||
{
|
||||
strValue = szBuffer;
|
||||
}
|
||||
return nError;
|
||||
strValue = strDefaultValue;
|
||||
WCHAR szBuffer[512];
|
||||
DWORD dwBufferSize = sizeof(szBuffer);
|
||||
ULONG nError;
|
||||
nError = RegQueryValueExW(hKey, strValueName.c_str(), nullptr, nullptr, (LPBYTE)szBuffer, &dwBufferSize);
|
||||
if (ERROR_SUCCESS == nError)
|
||||
{
|
||||
strValue = szBuffer;
|
||||
}
|
||||
return nError;
|
||||
}
|
||||
|
||||
std::string GetCharRegKey(HKEY hKey, const std::wstring &strValueName)
|
||||
std::string GetCharRegKey(HKEY hKey, const std::wstring& strValueName)
|
||||
{
|
||||
char szBuffer[512];
|
||||
memset(&szBuffer, 0x00, 512);
|
||||
DWORD dwBufferSize = sizeof(szBuffer);
|
||||
ULONG nError;
|
||||
nError = RegQueryValueExW(hKey, strValueName.c_str(), 0, NULL, (LPBYTE)szBuffer, &dwBufferSize);
|
||||
|
||||
std::string s(szBuffer);
|
||||
|
||||
return s;
|
||||
char szBuffer[512];
|
||||
memset(&szBuffer, 0x00, 512);
|
||||
DWORD dwBufferSize = sizeof(szBuffer);
|
||||
ULONG nError;
|
||||
nError = RegQueryValueExW(hKey, strValueName.c_str(), nullptr, nullptr, (LPBYTE)szBuffer, &dwBufferSize);
|
||||
std::string s(szBuffer);
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <iostream>
|
||||
#include "common.h"
|
||||
|
||||
LONG GetDWORDRegKey(HKEY hKey, const std::wstring &strValueName, DWORD &nValue, DWORD nDefaultValue);
|
||||
LONG GetBoolRegKey(HKEY hKey, const std::wstring &strValueName, bool &bValue, bool bDefaultValue);
|
||||
LONG GetStringRegKey(HKEY hKey, const std::wstring &strValueName, std::wstring &strValue, const std::wstring &strDefaultValue);
|
||||
std::string GetCharRegKey(HKEY hKey, const std::wstring &strValueName);
|
||||
LONG GetDWORDRegKey(HKEY hKey, const std::wstring& strValueName, DWORD& nValue, DWORD nDefaultValue);
|
||||
LONG GetBoolRegKey(HKEY hKey, const std::wstring& strValueName, bool& bValue, bool bDefaultValue);
|
||||
LONG GetStringRegKey(HKEY hKey, const std::wstring& strValueName, std::wstring& strValue, const std::wstring& strDefaultValue);
|
||||
std::string GetCharRegKey(HKEY hKey, const std::wstring& strValueName);
|
||||
@@ -12,15 +12,13 @@
|
||||
#include "Logger.h"
|
||||
|
||||
extern HINSTANCE hInstance;
|
||||
typedef int (WINAPI * PFRUNGATEFRAMEWORKPWDRESET) (HWND, PWSTR, PWSTR, PWSTR);
|
||||
typedef int (WINAPI* PFRUNGATEFRAMEWORKPWDRESET) (HWND, PWSTR, PWSTR, PWSTR);
|
||||
|
||||
|
||||
RfidCredential::RfidCredential():
|
||||
RfidCredential::RfidCredential() :
|
||||
_cRef(1),
|
||||
_pCredProvCredentialEvents(NULL)
|
||||
{
|
||||
DllAddRef();
|
||||
|
||||
ZeroMemory(_rgCredProvFieldDescriptors, sizeof(_rgCredProvFieldDescriptors));
|
||||
ZeroMemory(_rgFieldStatePairs, sizeof(_rgFieldStatePairs));
|
||||
ZeroMemory(_rgFieldStrings, sizeof(_rgFieldStrings));
|
||||
@@ -33,7 +31,6 @@ RfidCredential::~RfidCredential()
|
||||
CoTaskMemFree(_rgFieldStrings[i]);
|
||||
CoTaskMemFree(_rgCredProvFieldDescriptors[i].pszLabel);
|
||||
}
|
||||
|
||||
DllRelease();
|
||||
}
|
||||
|
||||
@@ -46,24 +43,20 @@ HRESULT RfidCredential::Initialize(
|
||||
PWSTR pwzUsername,
|
||||
PWSTR pwzPassword,
|
||||
PWSTR pwzDomain
|
||||
)
|
||||
)
|
||||
{
|
||||
|
||||
UNREFERENCED_PARAMETER(pwzPassword);
|
||||
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
for (DWORD i = 0; SUCCEEDED(hr) && i < ARRAYSIZE(_rgCredProvFieldDescriptors); i++)
|
||||
{
|
||||
_rgFieldStatePairs[i] = rgfsp[i];
|
||||
hr = FieldDescriptorCopy(rgcpfd[i], &_rgCredProvFieldDescriptors[i]);
|
||||
}
|
||||
|
||||
username = pwzUsername;
|
||||
password = pwzPassword;
|
||||
domain = pwzDomain;
|
||||
LPWSTR loginString;
|
||||
if(username && domain){
|
||||
if (username && domain) {
|
||||
loginString = new wchar_t[10 + wcslen(username) + wcslen(password)];
|
||||
wsprintf(loginString, L"Login as %s\\%s", domain, username);
|
||||
}
|
||||
@@ -73,35 +66,37 @@ HRESULT RfidCredential::Initialize(
|
||||
}
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
if(!username){
|
||||
if (!username)
|
||||
{
|
||||
hr = SHStrDupW(L"Swipe your registered RFID credential now.", &_rgFieldStrings[SFI_DETAILS]);
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = SHStrDupW(loginString, &_rgFieldStrings[SFI_DETAILS]);
|
||||
}
|
||||
}
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
if(!username){
|
||||
if (!username)
|
||||
{
|
||||
hr = SHStrDupW(L"Swipe your token", &_rgFieldStrings[SFI_MINIDETAILS]);
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = SHStrDupW(loginString, &_rgFieldStrings[SFI_MINIDETAILS]);
|
||||
}
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::Advise(
|
||||
ICredentialProviderCredentialEvents* pcpce
|
||||
)
|
||||
HRESULT RfidCredential::Advise(ICredentialProviderCredentialEvents* pcpce)
|
||||
{
|
||||
if (_pCredProvCredentialEvents != NULL)
|
||||
if (_pCredProvCredentialEvents != nullptr)
|
||||
{
|
||||
_pCredProvCredentialEvents->Release();
|
||||
}
|
||||
_pCredProvCredentialEvents = pcpce;
|
||||
_pCredProvCredentialEvents->AddRef();
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@@ -111,28 +106,29 @@ HRESULT RfidCredential::UnAdvise()
|
||||
{
|
||||
_pCredProvCredentialEvents->Release();
|
||||
}
|
||||
_pCredProvCredentialEvents = NULL;
|
||||
|
||||
_pCredProvCredentialEvents = nullptr;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::SetSelected(BOOL* pbAutoLogon)
|
||||
HRESULT RfidCredential::SetSelected(BOOL* pbAutoLogon)
|
||||
{
|
||||
if(username && password && domain && !this->lastLoginFailed){
|
||||
if (username && password && domain && !this->lastLoginFailed)
|
||||
{
|
||||
*pbAutoLogon = TRUE;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
*pbAutoLogon = FALSE;
|
||||
|
||||
if(this->lastLoginFailed){
|
||||
if(_pCredProvCredentialEvents != NULL){
|
||||
if (this->lastLoginFailed)
|
||||
{
|
||||
if (_pCredProvCredentialEvents != nullptr)
|
||||
{
|
||||
_pCredProvCredentialEvents->SetFieldString(this, SFI_MINIDETAILS, L"Login credentials were invalid.");
|
||||
_pCredProvCredentialEvents->SetFieldString(this, SFI_DETAILS, L"Login details were invalid. You will need to login with a different credential to update them.");
|
||||
_pCredProvCredentialEvents->SetFieldBitmap(this, SFI_TILEIMAGE, LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(104)));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@@ -142,37 +138,26 @@ HRESULT RfidCredential::SetDeselected()
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetFieldState(
|
||||
DWORD dwFieldID,
|
||||
CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs,
|
||||
CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis
|
||||
)
|
||||
HRESULT RfidCredential::GetFieldState(DWORD dwFieldID, CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs, CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if ((dwFieldID < ARRAYSIZE(_rgFieldStatePairs)) && pcpfs && pcpfis)
|
||||
{
|
||||
*pcpfs = _rgFieldStatePairs[dwFieldID].cpfs;
|
||||
*pcpfis = _rgFieldStatePairs[dwFieldID].cpfis;
|
||||
|
||||
hr = S_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = E_INVALIDARG;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetStringValue(
|
||||
DWORD dwFieldID,
|
||||
PWSTR* ppwsz
|
||||
)
|
||||
HRESULT RfidCredential::GetStringValue(DWORD dwFieldID, PWSTR* ppwsz)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) && ppwsz)
|
||||
if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) && ppwsz)
|
||||
{
|
||||
hr = SHStrDupW(_rgFieldStrings[dwFieldID], ppwsz);
|
||||
}
|
||||
@@ -180,27 +165,23 @@ HRESULT RfidCredential::GetStringValue(
|
||||
{
|
||||
hr = E_INVALIDARG;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetBitmapValue(
|
||||
DWORD dwFieldID,
|
||||
HBITMAP* phbmp
|
||||
)
|
||||
HRESULT RfidCredential::GetBitmapValue(DWORD dwFieldID, HBITMAP* phbmp)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if ((SFI_TILEIMAGE == dwFieldID) && phbmp)
|
||||
{
|
||||
HBITMAP hbmp;
|
||||
|
||||
if(username && password && domain && !this->lastLoginFailed){
|
||||
if (username && password && domain && !this->lastLoginFailed)
|
||||
{
|
||||
hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(102));
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(101));
|
||||
}
|
||||
|
||||
if (hbmp != NULL)
|
||||
{
|
||||
hr = S_OK;
|
||||
@@ -215,106 +196,73 @@ HRESULT RfidCredential::GetBitmapValue(
|
||||
{
|
||||
hr = E_INVALIDARG;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetSubmitButtonValue(
|
||||
DWORD dwFieldID,
|
||||
DWORD* pdwAdjacentTo
|
||||
)
|
||||
HRESULT RfidCredential::GetSubmitButtonValue(DWORD dwFieldID, DWORD* pdwAdjacentTo)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::SetStringValue(
|
||||
DWORD dwFieldID,
|
||||
PCWSTR pwz
|
||||
)
|
||||
HRESULT RfidCredential::SetStringValue(DWORD dwFieldID, PCWSTR pwz)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
UNREFERENCED_PARAMETER(pwz);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetCheckboxValue(
|
||||
DWORD dwFieldID,
|
||||
BOOL* pbChecked,
|
||||
PWSTR* ppwszLabel
|
||||
)
|
||||
HRESULT RfidCredential::GetCheckboxValue(DWORD dwFieldID, BOOL* pbChecked, PWSTR* ppwszLabel)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
UNREFERENCED_PARAMETER(pbChecked);
|
||||
UNREFERENCED_PARAMETER(ppwszLabel);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetComboBoxValueCount(
|
||||
DWORD dwFieldID,
|
||||
DWORD* pcItems,
|
||||
DWORD* pdwSelectedItem
|
||||
)
|
||||
HRESULT RfidCredential::GetComboBoxValueCount(DWORD dwFieldID, DWORD* pcItems, DWORD* pdwSelectedItem)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
UNREFERENCED_PARAMETER(pcItems);
|
||||
UNREFERENCED_PARAMETER(pdwSelectedItem);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetComboBoxValueAt(
|
||||
DWORD dwFieldID,
|
||||
DWORD dwItem,
|
||||
PWSTR* ppwszItem
|
||||
)
|
||||
HRESULT RfidCredential::GetComboBoxValueAt(DWORD dwFieldID, DWORD dwItem, PWSTR* ppwszItem)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
UNREFERENCED_PARAMETER(dwItem);
|
||||
UNREFERENCED_PARAMETER(ppwszItem);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::SetCheckboxValue(
|
||||
DWORD dwFieldID,
|
||||
BOOL bChecked
|
||||
)
|
||||
HRESULT RfidCredential::SetCheckboxValue(DWORD dwFieldID, BOOL bChecked)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
UNREFERENCED_PARAMETER(bChecked);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::SetComboBoxSelectedValue(
|
||||
DWORD dwFieldId,
|
||||
DWORD dwSelectedItem
|
||||
)
|
||||
HRESULT RfidCredential::SetComboBoxSelectedValue(DWORD dwFieldId, DWORD dwSelectedItem)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFieldId);
|
||||
UNREFERENCED_PARAMETER(dwSelectedItem);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::CommandLinkClicked(DWORD dwFieldID)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFieldID);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::GetSerialization(
|
||||
CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
|
||||
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
|
||||
PWSTR* ppwzOptionalStatusText,
|
||||
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
|
||||
PWSTR* ppwzOptionalStatusText,
|
||||
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
|
||||
)
|
||||
)
|
||||
{
|
||||
|
||||
UNREFERENCED_PARAMETER(ppwzOptionalStatusText);
|
||||
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);
|
||||
|
||||
@@ -322,53 +270,47 @@ HRESULT RfidCredential::GetSerialization(
|
||||
ZeroMemory(&kil, sizeof(kil));
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
this->lastLoginFailed = true;
|
||||
|
||||
WCHAR wsz[MAX_COMPUTERNAME_LENGTH+1];
|
||||
DWORD cch = ARRAYSIZE(wsz);
|
||||
GetComputerNameW(wsz, &cch);
|
||||
//WCHAR wsz[MAX_COMPUTERNAME_LENGTH+1];
|
||||
//DWORD cch = ARRAYSIZE(wsz);
|
||||
//GetComputerNameW(wsz, &cch);
|
||||
hr = UnicodeStringInitWithString(domain, &kil.LogonDomainName);
|
||||
hr = UnicodeStringInitWithString(username, &kil.UserName);
|
||||
hr = UnicodeStringInitWithString(password, &kil.Password);
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
kil.MessageType = lockType;
|
||||
hr = KerbInteractiveLogonPack(kil, &pcpcs->rgbSerialization, &pcpcs->cbSerialization);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ULONG ulAuthPackage;
|
||||
hr = RetrieveNegotiateAuthPackage(&ulAuthPackage);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
kil.MessageType = lockType;
|
||||
hr = KerbInteractiveLogonPack(kil, &pcpcs->rgbSerialization, &pcpcs->cbSerialization);
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ULONG ulAuthPackage;
|
||||
hr = RetrieveNegotiateAuthPackage(&ulAuthPackage);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
pcpcs->ulAuthenticationPackage = ulAuthPackage;
|
||||
pcpcs->clsidCredentialProvider = CLSID_RfidProvider;
|
||||
|
||||
*pcpgsr = CPGSR_RETURN_CREDENTIAL_FINISHED;
|
||||
}
|
||||
}
|
||||
pcpcs->ulAuthenticationPackage = ulAuthPackage;
|
||||
pcpcs->clsidCredentialProvider = CLSID_RfidProvider;
|
||||
*pcpgsr = CPGSR_RETURN_CREDENTIAL_FINISHED;
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD dwErr = GetLastError();
|
||||
hr = HRESULT_FROM_WIN32(dwErr);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD dwErr = GetLastError();
|
||||
hr = HRESULT_FROM_WIN32(dwErr);
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidCredential::ReportResult(
|
||||
NTSTATUS ntsStatus,
|
||||
NTSTATUS ntsStatus,
|
||||
NTSTATUS ntsSubstatus,
|
||||
PWSTR* ppwszOptionalStatusText,
|
||||
PWSTR* ppwszOptionalStatusText,
|
||||
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
|
||||
)
|
||||
)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(ntsSubstatus);
|
||||
UNREFERENCED_PARAMETER(ppwszOptionalStatusText);
|
||||
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
return cRef;
|
||||
}
|
||||
|
||||
STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
|
||||
STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
|
||||
{
|
||||
HRESULT hr;
|
||||
if (ppv != NULL)
|
||||
@@ -71,14 +71,14 @@ public:
|
||||
IFACEMETHODIMP CommandLinkClicked(DWORD dwFieldID);
|
||||
|
||||
IFACEMETHODIMP GetSerialization(
|
||||
CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
|
||||
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
|
||||
PWSTR* ppwszOptionalStatusText,
|
||||
CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
|
||||
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
|
||||
PWSTR* ppwszOptionalStatusText,
|
||||
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
|
||||
IFACEMETHODIMP ReportResult(
|
||||
NTSTATUS ntsStatus,
|
||||
NTSTATUS ntsStatus,
|
||||
NTSTATUS ntsSubstatus,
|
||||
PWSTR* ppwszOptionalStatusText,
|
||||
PWSTR* ppwszOptionalStatusText,
|
||||
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
|
||||
|
||||
public:
|
||||
@@ -98,16 +98,16 @@ public:
|
||||
|
||||
LONG _cRef;
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR _rgCredProvFieldDescriptors[SFI_NUM_FIELDS]; // An array holding the type and
|
||||
// name of each field in the tile.
|
||||
// name of each field in the tile.
|
||||
|
||||
FIELD_STATE_PAIR _rgFieldStatePairs[SFI_NUM_FIELDS]; // An array holding the state of
|
||||
// each field in the tile.
|
||||
// each field in the tile.
|
||||
|
||||
PWSTR _rgFieldStrings[SFI_NUM_FIELDS]; // An array holding the string
|
||||
// value of each field. This is
|
||||
// different from the name of
|
||||
// the field held in
|
||||
// _rgCredProvFieldDescriptors.
|
||||
// value of each field. This is
|
||||
// different from the name of
|
||||
// the field held in
|
||||
// _rgCredProvFieldDescriptors.
|
||||
ICredentialProviderCredentialEvents* _pCredProvCredentialEvents;
|
||||
|
||||
PWSTR username;
|
||||
|
||||
@@ -1,423 +0,0 @@
|
||||
<?xml version="1.0" encoding="big5"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="RfidCredentialProvider"
|
||||
ProjectGUID="{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}"
|
||||
RootNamespace="RfidCredentialProvider"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="shlwapi.lib"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="rfidcredentialprovider.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="shlwapi.lib"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="rfidcredentialprovider.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="shlwapi.lib"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="rfidcredentialprovider.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="shlwapi.lib"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="rfidcredentialprovider.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\Dll.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\guid.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\helpers.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RfidCredential.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\rfidcredentialprovider.def"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RfidProvider.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\common.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Dll.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\guid.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\helpers.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RfidCredential.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RfidProvider.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\resource.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\resources.rc"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\tileimage.bmp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Utilities"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\Register.reg"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Unregister.reg"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\readme.txt"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -23,118 +23,81 @@
|
||||
<RootNamespace>RfidCredentialProvider</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectName>RfidCredentialProvider</ProjectName>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;odbc32.lib;odbccp32.lib;winscard.lib;crypt32.lib;secur32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>rfidcredentialprovider.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;odbc32.lib;odbccp32.lib;winscard.lib;crypt32.lib;secur32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>rfidcredentialprovider.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
@@ -142,7 +105,7 @@
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>../Serial;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;odbc32.lib;odbccp32.lib;winscard.lib;crypt32.lib;secur32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -150,7 +113,31 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<AdditionalLibraryDirectories>C:\Users\tylermenezes\Desktop\CustomCP\_Output\Debug;../Serial;C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<LinkStatus>true</LinkStatus>
|
||||
</Link>
|
||||
<ProjectReference>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl />
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;odbc32.lib;odbccp32.lib;winscard.lib;crypt32.lib;secur32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>rfidcredentialprovider.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LinkStatus>true</LinkStatus>
|
||||
</Link>
|
||||
<ProjectReference>
|
||||
@@ -164,7 +151,7 @@
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
@@ -182,17 +169,39 @@
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Midl />
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<OmitFramePointers />
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;odbc32.lib;odbccp32.lib;winscard.lib;crypt32.lib;secur32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>rfidcredentialprovider.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImageHasSafeExceptionHandlers />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Dll.cpp" />
|
||||
<ClCompile Include="Encryption.cpp" />
|
||||
<ClCompile Include="guid.cpp" />
|
||||
<ClCompile Include="helpers.cpp" />
|
||||
<ClCompile Include="Logger.cpp" />
|
||||
<ClCompile Include="md5.cpp" />
|
||||
<ClCompile Include="RfidCredential.cpp" />
|
||||
<ClCompile Include="RfidProvider.cpp" />
|
||||
<ClCompile Include="Registry.cpp" />
|
||||
<ClCompile Include="RfidReader.cpp" />
|
||||
<ClCompile Include="Serial.cpp" />
|
||||
<ClCompile Include="SHA1.cpp" />
|
||||
</ItemGroup>
|
||||
@@ -211,12 +220,10 @@
|
||||
<ClInclude Include="guid.h" />
|
||||
<ClInclude Include="helpers.h" />
|
||||
<ClInclude Include="Logger.h" />
|
||||
<ClInclude Include="md5.h" />
|
||||
<ClInclude Include="RfidCredential.h" />
|
||||
<ClInclude Include="RfidProvider.h" />
|
||||
<ClInclude Include="Registry.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="RfidReader.h" />
|
||||
<ClInclude Include="Serial.h" />
|
||||
<ClInclude Include="SHA1.h" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -30,9 +30,6 @@
|
||||
<ClCompile Include="Serial.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="md5.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Registry.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@@ -45,9 +42,6 @@
|
||||
<ClCompile Include="Logger.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RfidReader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Encryption.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@@ -91,9 +85,6 @@
|
||||
<ClInclude Include="Serial.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="md5.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Registry.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@@ -109,9 +100,6 @@
|
||||
<ClInclude Include="Logger.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RfidReader.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Encryption.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include <iostream>
|
||||
#include "Serial.h"
|
||||
#include "common.h"
|
||||
#include "md5.h"
|
||||
#include <stdio.h>
|
||||
#include "Registry.h"
|
||||
#include "Logger.h"
|
||||
@@ -25,12 +24,11 @@
|
||||
|
||||
// RfidProvider ////////////////////////////////////////////////////////
|
||||
|
||||
RfidProvider::RfidProvider():
|
||||
RfidProvider::RfidProvider() :
|
||||
_cRef(1),
|
||||
_dwNumCreds(0)
|
||||
{
|
||||
DllAddRef();
|
||||
|
||||
ZeroMemory(_rgpCredentials, sizeof(_rgpCredentials));
|
||||
}
|
||||
|
||||
@@ -43,49 +41,54 @@ RfidProvider::~RfidProvider()
|
||||
_rgpCredentials[i]->Release();
|
||||
}
|
||||
}
|
||||
|
||||
DllRelease();
|
||||
}
|
||||
|
||||
char* sanatizeRfidReading(char* read){
|
||||
|
||||
char* sanatizeRfidReading(char* read)
|
||||
{
|
||||
char* out = new char[strlen(read)];
|
||||
memset(out, '\0', strlen(read));
|
||||
|
||||
bool hasTransmissionStarted = false;
|
||||
|
||||
HKEY hKey;
|
||||
if(RegOpenKeyExW(HKEY_LOCAL_MACHINE, s2ws("SOFTWARE\\Tyler Menezes\\Rfid Login").c_str(), 0, KEY_READ, &hKey) != ERROR_SUCCESS){
|
||||
delete hKey;
|
||||
return new char;
|
||||
}
|
||||
//HKEY hKey;
|
||||
//if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, s2ws("SOFTWARE\\KORNET\\WinLogin").c_str(), 0, KEY_READ, &hKey) != ERROR_SUCCESS)
|
||||
//{
|
||||
// delete hKey;
|
||||
// return new char;
|
||||
//}
|
||||
|
||||
char start = 0x00;
|
||||
DWORD dStart;
|
||||
LONG sError = GetDWORDRegKey(hKey, L"Message Start", dStart, 0x00);
|
||||
start = (char)dStart;
|
||||
char start = 0x45; // "E" - Em-Marine... (Z-2 USB Reader)
|
||||
//DWORD dStart;
|
||||
//LONG sError = GetDWORDRegKey(hKey, L"Message Start", dStart, 0x00);
|
||||
//start = (char)dStart;
|
||||
|
||||
char end = 0x00;
|
||||
DWORD dEnd;
|
||||
GetDWORDRegKey(hKey, L"Message End", dEnd, 0x00);
|
||||
end = (char)dEnd;
|
||||
char end = 0x0D;
|
||||
//DWORD dEnd;
|
||||
//GetDWORDRegKey(hKey, L"Message End", dEnd, 0x00);
|
||||
//end = (char)dEnd;
|
||||
|
||||
if(sError == 2){
|
||||
hasTransmissionStarted = true;
|
||||
}
|
||||
//if (sError == 2)
|
||||
//{
|
||||
// hasTransmissionStarted = true;
|
||||
//}
|
||||
|
||||
int c = 0;
|
||||
for(int i = 0; i < strlen(read); i++){
|
||||
if(read[i] == start){
|
||||
for (int i = 0; i < strlen(read); i++)
|
||||
{
|
||||
if (read[i] == start)
|
||||
{
|
||||
hasTransmissionStarted = true;
|
||||
//continue;
|
||||
}
|
||||
|
||||
if (!hasTransmissionStarted)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!hasTransmissionStarted){
|
||||
continue;
|
||||
}
|
||||
|
||||
if(read[i] == end){
|
||||
if (read[i] == end)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -97,13 +100,14 @@ char* sanatizeRfidReading(char* read){
|
||||
|
||||
HANDLE hThread;
|
||||
bool rfidThreadRunning = true;
|
||||
RfidProvider *prp;
|
||||
RfidProvider* prp;
|
||||
bool doAutoLogin = false;
|
||||
|
||||
void getCredentials(char* token){
|
||||
|
||||
void getCredentials(char* token)
|
||||
{
|
||||
HKEY hKey;
|
||||
if(RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Tyler Menezes\\Rfid Login\\Keys", 0, KEY_READ, &hKey) != ERROR_SUCCESS){
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\KORNET\\WinLogin\\Keys", 0, KEY_READ, &hKey) != ERROR_SUCCESS)
|
||||
{
|
||||
delete hKey;
|
||||
return; // Token not recognized.
|
||||
}
|
||||
@@ -111,8 +115,7 @@ void getCredentials(char* token){
|
||||
std::wstring keySalt;
|
||||
GetStringRegKey(hKey, L"Salt", keySalt, L"bad");
|
||||
|
||||
|
||||
CSHA1 *sha1 = new CSHA1();
|
||||
CSHA1* sha1 = new CSHA1();
|
||||
sha1->Update((unsigned char*)token, strlen(token));
|
||||
sha1->Update((unsigned char*)s2cs(ws2s(keySalt)), wcslen(keySalt.c_str()));
|
||||
sha1->Final();
|
||||
@@ -120,10 +123,11 @@ void getCredentials(char* token){
|
||||
sha1->ReportHashStl(hash, CSHA1::REPORT_HEX_SHORT);
|
||||
delete sha1;
|
||||
|
||||
std::string key = std::string("SOFTWARE\\Tyler Menezes\\Rfid Login\\Keys\\");
|
||||
std::string key = std::string("SOFTWARE\\KORNET\\WinLogin\\Keys\\");
|
||||
key += ws2s(hash);
|
||||
|
||||
if(RegOpenKeyExW(HKEY_LOCAL_MACHINE, s2ws(key).c_str(), 0, KEY_READ, &hKey) != ERROR_SUCCESS){
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, s2ws(key).c_str(), 0, KEY_READ, &hKey) != ERROR_SUCCESS)
|
||||
{
|
||||
delete hKey;
|
||||
return; // Token not recognized.
|
||||
}
|
||||
@@ -135,10 +139,10 @@ void getCredentials(char* token){
|
||||
|
||||
char* cUsername = s2cs(GetCharRegKey(hKey, L"Username"));
|
||||
char* cPassword = s2cs(GetCharRegKey(hKey, L"Password"));
|
||||
char* cDomain = s2cs(GetCharRegKey(hKey, L"Domain"));
|
||||
|
||||
char* cDomain = s2cs(GetCharRegKey(hKey, L"Domain"));
|
||||
|
||||
GetStringRegKey(hKey, L"Salt", salt, L"");
|
||||
|
||||
|
||||
unsigned char* cSalt = (unsigned char*)s2cs(ws2s(salt));
|
||||
|
||||
std::wstring decryptionKey;
|
||||
@@ -180,50 +184,58 @@ void getCredentials(char* token){
|
||||
|
||||
DWORD WINAPI _RfidReader(LPVOID lpParameter)
|
||||
{
|
||||
Serial* s = new Serial();
|
||||
//Serial* s = new Serial();
|
||||
auto s = std::make_unique<Serial>();
|
||||
|
||||
char *lastTag = new char[128];
|
||||
char* lastTag = new char[128];
|
||||
memset(lastTag, '\0', 128);
|
||||
while(lastTag[0] != '\0');
|
||||
while (lastTag[0] != '\0');
|
||||
|
||||
int tagCount = 0;
|
||||
|
||||
while(rfidThreadRunning){
|
||||
|
||||
while (rfidThreadRunning)
|
||||
{
|
||||
Sleep(50);
|
||||
|
||||
char *id = new char[128];
|
||||
char* id = new char[128];
|
||||
memset(id, '\0', 128);
|
||||
while(id[0] != '\0');
|
||||
while (id[0] != '\0');
|
||||
|
||||
if(tagCount >= 128){
|
||||
if (tagCount >= 128)
|
||||
{
|
||||
tagCount = 0;
|
||||
memset(lastTag, '\0', 128);
|
||||
while(lastTag[0] != '\0');
|
||||
while (lastTag[0] != '\0');
|
||||
}
|
||||
|
||||
s->ReadData(id, 1);
|
||||
|
||||
if(strlen(id) > 0){
|
||||
for(int i = 0; i < strlen(id); i++){
|
||||
if (strlen(id) > 0)
|
||||
{
|
||||
for (int i = 0; i < strlen(id); i++)
|
||||
{
|
||||
lastTag[tagCount++] = id[i];
|
||||
}
|
||||
}
|
||||
|
||||
delete id;
|
||||
|
||||
|
||||
for(int i = 0; i < strlen(lastTag); i++){
|
||||
if(lastTag[i] == 0x03){
|
||||
for (int i = 0; i < strlen(lastTag); i++)
|
||||
{
|
||||
if (lastTag[i] == /*0x03*/0x0A)
|
||||
{
|
||||
char* fullTag = sanatizeRfidReading(lastTag);
|
||||
|
||||
|
||||
printf(fullTag);
|
||||
//int n;
|
||||
//for (n = 0; fullTag[n] != '\0'; n++)
|
||||
// printf("%02x", (unsigned char)fullTag[n]);
|
||||
|
||||
getCredentials(fullTag);
|
||||
|
||||
tagCount = 0;
|
||||
memset(lastTag, '\0', 128);
|
||||
while(lastTag[0] != '\0');
|
||||
while (lastTag[0] != '\0');
|
||||
|
||||
delete fullTag;
|
||||
|
||||
@@ -233,28 +245,26 @@ DWORD WINAPI _RfidReader(LPVOID lpParameter)
|
||||
}
|
||||
|
||||
delete lastTag;
|
||||
delete s;
|
||||
|
||||
//delete s;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void InitRfidReader(){
|
||||
void InitRfidReader()
|
||||
{
|
||||
rfidThreadRunning = true;
|
||||
hThread = ::CreateThread(NULL, 0, _RfidReader, NULL , 0, NULL);
|
||||
hThread = ::CreateThread(nullptr, 0, _RfidReader, nullptr, 0, nullptr);
|
||||
}
|
||||
|
||||
void StopRfidReader(){
|
||||
void StopRfidReader()
|
||||
{
|
||||
rfidThreadRunning = false;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::SetUsageScenario(
|
||||
CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
|
||||
DWORD dwFlags
|
||||
)
|
||||
HRESULT RfidProvider::SetUsageScenario(CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, DWORD dwFlags)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFlags);
|
||||
|
||||
HRESULT hr;
|
||||
static bool s_bCredsEnumerated = false;
|
||||
switch (cpus)
|
||||
@@ -263,118 +273,93 @@ HRESULT RfidProvider::SetUsageScenario(
|
||||
case CPUS_CREDUI:
|
||||
RfidCredential::lockType = KerbInteractiveLogon;
|
||||
break;
|
||||
case CPUS_UNLOCK_WORKSTATION:
|
||||
case CPUS_UNLOCK_WORKSTATION:
|
||||
RfidCredential::lockType = KerbWorkstationUnlockLogon;
|
||||
break;
|
||||
case CPUS_CHANGE_PASSWORD:
|
||||
hr = E_NOTIMPL;
|
||||
break;
|
||||
|
||||
default:
|
||||
hr = E_INVALIDARG;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!s_bCredsEnumerated)
|
||||
{
|
||||
prp = this;
|
||||
hr = this->_EnumerateCredentials();
|
||||
s_bCredsEnumerated = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = S_OK;
|
||||
}
|
||||
|
||||
if (!s_bCredsEnumerated)
|
||||
{
|
||||
prp = this;
|
||||
hr = this->_EnumerateCredentials();
|
||||
s_bCredsEnumerated = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = S_OK;
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
STDMETHODIMP RfidProvider::SetSerialization(
|
||||
const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs
|
||||
)
|
||||
STDMETHODIMP RfidProvider::SetSerialization(const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(pcpcs);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
ICredentialProviderEvents* Pcpe;
|
||||
UINT_PTR UpAdviseContext;
|
||||
|
||||
HRESULT RfidProvider::Advise(
|
||||
ICredentialProviderEvents* pcpe,
|
||||
UINT_PTR upAdviseContext
|
||||
)
|
||||
HRESULT RfidProvider::Advise(ICredentialProviderEvents* pcpe, UINT_PTR upAdviseContext)
|
||||
{
|
||||
InitRfidReader();
|
||||
|
||||
Pcpe=pcpe;
|
||||
Pcpe = pcpe;
|
||||
Pcpe->AddRef();
|
||||
UpAdviseContext=upAdviseContext;
|
||||
|
||||
UpAdviseContext = upAdviseContext;
|
||||
return S_OK;
|
||||
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::UnAdvise()
|
||||
{
|
||||
StopRfidReader();
|
||||
|
||||
if(Pcpe)
|
||||
if (Pcpe)
|
||||
{
|
||||
Pcpe->Release();
|
||||
Pcpe=NULL;
|
||||
Pcpe = nullptr;
|
||||
}
|
||||
UpAdviseContext=NULL;
|
||||
|
||||
|
||||
UpAdviseContext = NULL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::GetFieldDescriptorCount(
|
||||
DWORD* pdwCount
|
||||
)
|
||||
HRESULT RfidProvider::GetFieldDescriptorCount(DWORD* pdwCount)
|
||||
{
|
||||
*pdwCount = SFI_NUM_FIELDS;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::GetFieldDescriptorAt(
|
||||
DWORD dwIndex,
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd
|
||||
)
|
||||
{
|
||||
HRESULT RfidProvider::GetFieldDescriptorAt(DWORD dwIndex, CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd)
|
||||
{
|
||||
HRESULT hr;
|
||||
if ((dwIndex < SFI_NUM_FIELDS) && ppcpfd)
|
||||
{
|
||||
hr = FieldDescriptorCoAllocCopy(s_rgCredProvFieldDescriptors[dwIndex], ppcpfd);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
hr = E_INVALIDARG;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::GetCredentialCount(
|
||||
DWORD* pdwCount,
|
||||
DWORD* pdwDefault,
|
||||
BOOL* pbAutoLogonWithDefault
|
||||
)
|
||||
HRESULT RfidProvider::GetCredentialCount(DWORD* pdwCount, DWORD* pdwDefault, BOOL* pbAutoLogonWithDefault)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if(doAutoLogin && _dwNumCreds > 0 && !RfidCredential::lastLoginFailed){
|
||||
if (doAutoLogin && _dwNumCreds > 0 && !RfidCredential::lastLoginFailed)
|
||||
{
|
||||
*pdwDefault = _dwNumCreds - 1;
|
||||
*pbAutoLogonWithDefault = TRUE;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
*pdwDefault = CREDENTIAL_PROVIDER_NO_DEFAULT;
|
||||
*pbAutoLogonWithDefault = FALSE;
|
||||
}
|
||||
|
||||
*pdwCount = _dwNumCreds;
|
||||
*pdwCount = _dwNumCreds;
|
||||
if (*pdwCount > 0)
|
||||
{
|
||||
hr = S_OK;
|
||||
@@ -383,18 +368,13 @@ HRESULT RfidProvider::GetCredentialCount(
|
||||
{
|
||||
hr = E_FAIL;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::GetCredentialAt(
|
||||
DWORD dwIndex,
|
||||
ICredentialProviderCredential** ppcpc
|
||||
)
|
||||
HRESULT RfidProvider::GetCredentialAt(DWORD dwIndex, ICredentialProviderCredential** ppcpc)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if((dwIndex < _dwNumCreds) && ppcpc)
|
||||
if ((dwIndex < _dwNumCreds) && ppcpc)
|
||||
{
|
||||
hr = _rgpCredentials[dwIndex]->QueryInterface(IID_ICredentialProviderCredential, reinterpret_cast<void**>(ppcpc));
|
||||
}
|
||||
@@ -402,25 +382,17 @@ HRESULT RfidProvider::GetCredentialAt(
|
||||
{
|
||||
hr = E_INVALIDARG;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::_EnumerateOneCredential(
|
||||
DWORD dwCredentialIndex,
|
||||
PWSTR pwzUsername,
|
||||
PWSTR pwzPassword,
|
||||
PWSTR pwzDomain
|
||||
)
|
||||
HRESULT RfidProvider::_EnumerateOneCredential(DWORD dwCredentialIndex, PWSTR pwzUsername, PWSTR pwzPassword, PWSTR pwzDomain)
|
||||
{
|
||||
HRESULT hr;
|
||||
RfidCredential* ppc = new RfidCredential();
|
||||
|
||||
if (ppc)
|
||||
{
|
||||
hr = ppc->Initialize(s_rgCredProvFieldDescriptors, s_rgFieldStatePairs, pwzUsername, pwzPassword, pwzDomain);
|
||||
ppc->lastLoginFailed = false;
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
_rgpCredentials[dwCredentialIndex] = ppc;
|
||||
@@ -435,21 +407,19 @@ HRESULT RfidProvider::_EnumerateOneCredential(
|
||||
{
|
||||
hr = E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider::_EnumerateCredentials()
|
||||
{
|
||||
HRESULT hr = _EnumerateOneCredential(0, NULL, NULL, NULL);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT RfidProvider_CreateInstance(REFIID riid, void** ppv)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
RfidProvider* pProvider = new RfidProvider();
|
||||
|
||||
if (pProvider)
|
||||
{
|
||||
hr = pProvider->QueryInterface(riid, ppv);
|
||||
@@ -459,6 +429,5 @@ HRESULT RfidProvider_CreateInstance(REFIID riid, void** ppv)
|
||||
{
|
||||
hr = E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
|
||||
#define MAX_CREDENTIALS 1
|
||||
|
||||
RfidCredential *_rgpCredentials[MAX_CREDENTIALS]; // Pointers to the credentials which will be enumerated by
|
||||
// this Provider.
|
||||
RfidCredential* _rgpCredentials[MAX_CREDENTIALS]; // Pointers to the credentials which will be enumerated by
|
||||
// this Provider.
|
||||
|
||||
class RfidProvider : public ICredentialProvider
|
||||
{
|
||||
@@ -41,10 +41,10 @@ public:
|
||||
return cRef;
|
||||
}
|
||||
|
||||
STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
|
||||
STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
|
||||
{
|
||||
HRESULT hr;
|
||||
if (IID_IUnknown == riid ||
|
||||
if (IID_IUnknown == riid ||
|
||||
IID_ICredentialProvider == riid)
|
||||
{
|
||||
*ppv = this;
|
||||
@@ -67,14 +67,14 @@ public:
|
||||
IFACEMETHODIMP UnAdvise();
|
||||
|
||||
IFACEMETHODIMP GetFieldDescriptorCount(__out DWORD* pdwCount);
|
||||
IFACEMETHODIMP GetFieldDescriptorAt(DWORD dwIndex, __deref_out CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd);
|
||||
IFACEMETHODIMP GetFieldDescriptorAt(DWORD dwIndex, __deref_out CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd);
|
||||
|
||||
IFACEMETHODIMP GetCredentialCount(
|
||||
__out DWORD* pdwCount,
|
||||
__out DWORD* pdwDefault,
|
||||
__out BOOL* pbAutoLogonWithDefault);
|
||||
IFACEMETHODIMP GetCredentialAt(
|
||||
DWORD dwIndex,
|
||||
DWORD dwIndex,
|
||||
__out ICredentialProviderCredential** ppcpc);
|
||||
|
||||
friend HRESULT RfidProvider_CreateInstance(REFIID riid, __deref_out void** ppv);
|
||||
@@ -88,19 +88,14 @@ public:
|
||||
__in PWSTR pwzPassword,
|
||||
__in PWSTR pwzDomain
|
||||
);
|
||||
|
||||
DWORD _dwNumCreds;
|
||||
|
||||
DWORD _dwNumCreds;
|
||||
|
||||
ICredentialProviderEvents* Pcpe;
|
||||
UINT_PTR UpAdviseContext;
|
||||
protected:
|
||||
RfidProvider();
|
||||
__override ~RfidProvider();
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
LONG _cRef;
|
||||
LONG _cRef;
|
||||
};
|
||||
@@ -63,26 +63,26 @@ void CSHA1::Transform(UINT_32* pState, const UINT_8* pBuffer)
|
||||
memcpy(m_block, pBuffer, 64);
|
||||
|
||||
// 4 rounds of 20 operations each. Loop unrolled.
|
||||
_R0(a,b,c,d,e, 0); _R0(e,a,b,c,d, 1); _R0(d,e,a,b,c, 2); _R0(c,d,e,a,b, 3);
|
||||
_R0(b,c,d,e,a, 4); _R0(a,b,c,d,e, 5); _R0(e,a,b,c,d, 6); _R0(d,e,a,b,c, 7);
|
||||
_R0(c,d,e,a,b, 8); _R0(b,c,d,e,a, 9); _R0(a,b,c,d,e,10); _R0(e,a,b,c,d,11);
|
||||
_R0(d,e,a,b,c,12); _R0(c,d,e,a,b,13); _R0(b,c,d,e,a,14); _R0(a,b,c,d,e,15);
|
||||
_R1(e,a,b,c,d,16); _R1(d,e,a,b,c,17); _R1(c,d,e,a,b,18); _R1(b,c,d,e,a,19);
|
||||
_R2(a,b,c,d,e,20); _R2(e,a,b,c,d,21); _R2(d,e,a,b,c,22); _R2(c,d,e,a,b,23);
|
||||
_R2(b,c,d,e,a,24); _R2(a,b,c,d,e,25); _R2(e,a,b,c,d,26); _R2(d,e,a,b,c,27);
|
||||
_R2(c,d,e,a,b,28); _R2(b,c,d,e,a,29); _R2(a,b,c,d,e,30); _R2(e,a,b,c,d,31);
|
||||
_R2(d,e,a,b,c,32); _R2(c,d,e,a,b,33); _R2(b,c,d,e,a,34); _R2(a,b,c,d,e,35);
|
||||
_R2(e,a,b,c,d,36); _R2(d,e,a,b,c,37); _R2(c,d,e,a,b,38); _R2(b,c,d,e,a,39);
|
||||
_R3(a,b,c,d,e,40); _R3(e,a,b,c,d,41); _R3(d,e,a,b,c,42); _R3(c,d,e,a,b,43);
|
||||
_R3(b,c,d,e,a,44); _R3(a,b,c,d,e,45); _R3(e,a,b,c,d,46); _R3(d,e,a,b,c,47);
|
||||
_R3(c,d,e,a,b,48); _R3(b,c,d,e,a,49); _R3(a,b,c,d,e,50); _R3(e,a,b,c,d,51);
|
||||
_R3(d,e,a,b,c,52); _R3(c,d,e,a,b,53); _R3(b,c,d,e,a,54); _R3(a,b,c,d,e,55);
|
||||
_R3(e,a,b,c,d,56); _R3(d,e,a,b,c,57); _R3(c,d,e,a,b,58); _R3(b,c,d,e,a,59);
|
||||
_R4(a,b,c,d,e,60); _R4(e,a,b,c,d,61); _R4(d,e,a,b,c,62); _R4(c,d,e,a,b,63);
|
||||
_R4(b,c,d,e,a,64); _R4(a,b,c,d,e,65); _R4(e,a,b,c,d,66); _R4(d,e,a,b,c,67);
|
||||
_R4(c,d,e,a,b,68); _R4(b,c,d,e,a,69); _R4(a,b,c,d,e,70); _R4(e,a,b,c,d,71);
|
||||
_R4(d,e,a,b,c,72); _R4(c,d,e,a,b,73); _R4(b,c,d,e,a,74); _R4(a,b,c,d,e,75);
|
||||
_R4(e,a,b,c,d,76); _R4(d,e,a,b,c,77); _R4(c,d,e,a,b,78); _R4(b,c,d,e,a,79);
|
||||
_R0(a, b, c, d, e, 0); _R0(e, a, b, c, d, 1); _R0(d, e, a, b, c, 2); _R0(c, d, e, a, b, 3);
|
||||
_R0(b, c, d, e, a, 4); _R0(a, b, c, d, e, 5); _R0(e, a, b, c, d, 6); _R0(d, e, a, b, c, 7);
|
||||
_R0(c, d, e, a, b, 8); _R0(b, c, d, e, a, 9); _R0(a, b, c, d, e, 10); _R0(e, a, b, c, d, 11);
|
||||
_R0(d, e, a, b, c, 12); _R0(c, d, e, a, b, 13); _R0(b, c, d, e, a, 14); _R0(a, b, c, d, e, 15);
|
||||
_R1(e, a, b, c, d, 16); _R1(d, e, a, b, c, 17); _R1(c, d, e, a, b, 18); _R1(b, c, d, e, a, 19);
|
||||
_R2(a, b, c, d, e, 20); _R2(e, a, b, c, d, 21); _R2(d, e, a, b, c, 22); _R2(c, d, e, a, b, 23);
|
||||
_R2(b, c, d, e, a, 24); _R2(a, b, c, d, e, 25); _R2(e, a, b, c, d, 26); _R2(d, e, a, b, c, 27);
|
||||
_R2(c, d, e, a, b, 28); _R2(b, c, d, e, a, 29); _R2(a, b, c, d, e, 30); _R2(e, a, b, c, d, 31);
|
||||
_R2(d, e, a, b, c, 32); _R2(c, d, e, a, b, 33); _R2(b, c, d, e, a, 34); _R2(a, b, c, d, e, 35);
|
||||
_R2(e, a, b, c, d, 36); _R2(d, e, a, b, c, 37); _R2(c, d, e, a, b, 38); _R2(b, c, d, e, a, 39);
|
||||
_R3(a, b, c, d, e, 40); _R3(e, a, b, c, d, 41); _R3(d, e, a, b, c, 42); _R3(c, d, e, a, b, 43);
|
||||
_R3(b, c, d, e, a, 44); _R3(a, b, c, d, e, 45); _R3(e, a, b, c, d, 46); _R3(d, e, a, b, c, 47);
|
||||
_R3(c, d, e, a, b, 48); _R3(b, c, d, e, a, 49); _R3(a, b, c, d, e, 50); _R3(e, a, b, c, d, 51);
|
||||
_R3(d, e, a, b, c, 52); _R3(c, d, e, a, b, 53); _R3(b, c, d, e, a, 54); _R3(a, b, c, d, e, 55);
|
||||
_R3(e, a, b, c, d, 56); _R3(d, e, a, b, c, 57); _R3(c, d, e, a, b, 58); _R3(b, c, d, e, a, 59);
|
||||
_R4(a, b, c, d, e, 60); _R4(e, a, b, c, d, 61); _R4(d, e, a, b, c, 62); _R4(c, d, e, a, b, 63);
|
||||
_R4(b, c, d, e, a, 64); _R4(a, b, c, d, e, 65); _R4(e, a, b, c, d, 66); _R4(d, e, a, b, c, 67);
|
||||
_R4(c, d, e, a, b, 68); _R4(b, c, d, e, a, 69); _R4(a, b, c, d, e, 70); _R4(e, a, b, c, d, 71);
|
||||
_R4(d, e, a, b, c, 72); _R4(c, d, e, a, b, 73); _R4(b, c, d, e, a, 74); _R4(a, b, c, d, e, 75);
|
||||
_R4(e, a, b, c, d, 76); _R4(d, e, a, b, c, 77); _R4(c, d, e, a, b, 78); _R4(b, c, d, e, a, 79);
|
||||
|
||||
// Add the working vars back into state
|
||||
pState[0] += a;
|
||||
@@ -102,26 +102,26 @@ void CSHA1::Update(const UINT_8* pbData, UINT_32 uLen)
|
||||
{
|
||||
UINT_32 j = ((m_count[0] >> 3) & 0x3F);
|
||||
|
||||
if((m_count[0] += (uLen << 3)) < (uLen << 3))
|
||||
if ((m_count[0] += (uLen << 3)) < (uLen << 3))
|
||||
++m_count[1]; // Overflow
|
||||
|
||||
m_count[1] += (uLen >> 29);
|
||||
|
||||
UINT_32 i;
|
||||
if((j + uLen) > 63)
|
||||
if ((j + uLen) > 63)
|
||||
{
|
||||
i = 64 - j;
|
||||
memcpy(&m_buffer[j], pbData, i);
|
||||
Transform(m_state, m_buffer);
|
||||
|
||||
for( ; (i + 63) < uLen; i += 64)
|
||||
for (; (i + 63) < uLen; i += 64)
|
||||
Transform(m_state, &pbData[i]);
|
||||
|
||||
j = 0;
|
||||
}
|
||||
else i = 0;
|
||||
|
||||
if((uLen - i) != 0)
|
||||
if ((uLen - i) != 0)
|
||||
memcpy(&m_buffer[j], &pbData[i], uLen - i);
|
||||
}
|
||||
|
||||
@@ -129,10 +129,10 @@ void CSHA1::Update(const UINT_8* pbData, UINT_32 uLen)
|
||||
// Hash in file contents
|
||||
bool CSHA1::HashFile(const TCHAR* tszFileName)
|
||||
{
|
||||
if(tszFileName == NULL) return false;
|
||||
if (tszFileName == NULL) return false;
|
||||
|
||||
FILE* fpIn = _tfopen(tszFileName, _T("rb"));
|
||||
if(fpIn == NULL) return false;
|
||||
if (fpIn == NULL) return false;
|
||||
|
||||
_fseeki64(fpIn, 0, SEEK_END);
|
||||
const INT_64 lFileSize = _ftelli64(fpIn);
|
||||
@@ -142,13 +142,13 @@ bool CSHA1::HashFile(const TCHAR* tszFileName)
|
||||
UINT_8 vData[SHA1_MAX_FILE_BUFFER];
|
||||
INT_64 lRemaining = lFileSize;
|
||||
|
||||
while(lRemaining > 0)
|
||||
while (lRemaining > 0)
|
||||
{
|
||||
const size_t uMaxRead = static_cast<size_t>((lRemaining > lMaxBuf) ?
|
||||
lMaxBuf : lRemaining);
|
||||
|
||||
const size_t uRead = fread(vData, 1, uMaxRead, fpIn);
|
||||
if(uRead == 0)
|
||||
if (uRead == 0)
|
||||
{
|
||||
fclose(fpIn);
|
||||
return false;
|
||||
@@ -169,9 +169,9 @@ void CSHA1::Final()
|
||||
UINT_32 i;
|
||||
|
||||
UINT_8 finalcount[8];
|
||||
for(i = 0; i < 8; ++i)
|
||||
for (i = 0; i < 8; ++i)
|
||||
finalcount[i] = (UINT_8)((m_count[((i >= 4) ? 0 : 1)]
|
||||
>> ((3 - (i & 3)) * 8) ) & 255); // Endian independent
|
||||
>> ((3 - (i & 3)) * 8)) & 255); // Endian independent
|
||||
|
||||
Update((UINT_8*)"\200", 1);
|
||||
|
||||
@@ -180,7 +180,7 @@ void CSHA1::Final()
|
||||
|
||||
Update(finalcount, 8); // Cause a SHA1Transform()
|
||||
|
||||
for(i = 0; i < 20; ++i)
|
||||
for (i = 0; i < 20; ++i)
|
||||
m_digest[i] = (UINT_8)((m_state[i >> 2] >> ((3 - (i & 3)) * 8)) & 0xFF);
|
||||
|
||||
// Wipe variables for security reasons
|
||||
@@ -197,28 +197,28 @@ void CSHA1::Final()
|
||||
// Get the final hash as a pre-formatted string
|
||||
bool CSHA1::ReportHash(TCHAR* tszReport, REPORT_TYPE rtReportType) const
|
||||
{
|
||||
if(tszReport == NULL) return false;
|
||||
if (tszReport == NULL) return false;
|
||||
|
||||
TCHAR tszTemp[16];
|
||||
|
||||
if((rtReportType == REPORT_HEX) || (rtReportType == REPORT_HEX_SHORT))
|
||||
if ((rtReportType == REPORT_HEX) || (rtReportType == REPORT_HEX_SHORT))
|
||||
{
|
||||
_sntprintf(tszTemp, 15, _T("%02X"), m_digest[0]);
|
||||
_tcscpy(tszReport, tszTemp);
|
||||
|
||||
const TCHAR* lpFmt = ((rtReportType == REPORT_HEX) ? _T(" %02X") : _T("%02X"));
|
||||
for(size_t i = 1; i < 20; ++i)
|
||||
for (size_t i = 1; i < 20; ++i)
|
||||
{
|
||||
_sntprintf(tszTemp, 15, lpFmt, m_digest[i]);
|
||||
_tcscat(tszReport, tszTemp);
|
||||
}
|
||||
}
|
||||
else if(rtReportType == REPORT_DIGIT)
|
||||
else if (rtReportType == REPORT_DIGIT)
|
||||
{
|
||||
_sntprintf(tszTemp, 15, _T("%u"), m_digest[0]);
|
||||
_tcscpy(tszReport, tszTemp);
|
||||
|
||||
for(size_t i = 1; i < 20; ++i)
|
||||
for (size_t i = 1; i < 20; ++i)
|
||||
{
|
||||
_sntprintf(tszTemp, 15, _T(" %u"), m_digest[i]);
|
||||
_tcscat(tszReport, tszTemp);
|
||||
@@ -235,7 +235,7 @@ bool CSHA1::ReportHashStl(std::basic_string<TCHAR>& strOut, REPORT_TYPE rtReport
|
||||
{
|
||||
TCHAR tszOut[84];
|
||||
const bool bResult = ReportHash(tszOut, rtReportType);
|
||||
if(bResult) strOut = tszOut;
|
||||
if (bResult) strOut = tszOut;
|
||||
return bResult;
|
||||
}
|
||||
#endif
|
||||
@@ -243,7 +243,7 @@ bool CSHA1::ReportHashStl(std::basic_string<TCHAR>& strOut, REPORT_TYPE rtReport
|
||||
// Get the raw message digest
|
||||
bool CSHA1::GetHash(UINT_8* pbDest) const
|
||||
{
|
||||
if(pbDest == NULL) return false;
|
||||
if (pbDest == NULL) return false;
|
||||
memcpy(pbDest, m_digest, 20);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -4,11 +4,12 @@
|
||||
|
||||
Serial::Serial()
|
||||
{
|
||||
//We're not yet connected
|
||||
// We're not yet connected
|
||||
this->connected = false;
|
||||
|
||||
HKEY hKey;
|
||||
if(RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Tyler Menezes\\Rfid Login", 0, KEY_READ, &hKey) != ERROR_SUCCESS){
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\KORNET\\WinLogin", 0, KEY_READ, &hKey) != ERROR_SUCCESS)
|
||||
{
|
||||
delete hKey;
|
||||
return; // Token not recognized.
|
||||
}
|
||||
@@ -16,24 +17,23 @@ Serial::Serial()
|
||||
std::wstring port;
|
||||
GetStringRegKey(hKey, L"Port", port, L"COM3");
|
||||
|
||||
//Try to connect to the given port throuh CreateFile
|
||||
// Try to connect to the given port throuh CreateFile
|
||||
this->hSerial = CreateFile(port.c_str(),
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
0,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
NULL);
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
0,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
NULL);
|
||||
|
||||
//Check if the connection was successfull
|
||||
if(this->hSerial==INVALID_HANDLE_VALUE)
|
||||
// Check if the connection was successfull
|
||||
if (this->hSerial == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
//If not success full display an Error
|
||||
if(GetLastError()==ERROR_FILE_NOT_FOUND){
|
||||
|
||||
//Print Error if neccessary
|
||||
// If not success full display an Error
|
||||
if (GetLastError() == ERROR_FILE_NOT_FOUND)
|
||||
{
|
||||
// Print Error if neccessary
|
||||
printf("ERROR: Handle was not attached. Reason: %s not available.\n");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -42,69 +42,68 @@ Serial::Serial()
|
||||
}
|
||||
else
|
||||
{
|
||||
//If connected we try to set the comm parameters
|
||||
DCB dcbSerialParams = {0};
|
||||
// If connected we try to set the comm parameters
|
||||
DCB dcbSerialParams = { 0 };
|
||||
|
||||
//Try to get the current
|
||||
// Try to get the current
|
||||
if (!GetCommState(this->hSerial, &dcbSerialParams))
|
||||
{
|
||||
//If impossible, show an error
|
||||
// If impossible, show an error
|
||||
printf("failed to get current serial parameters!");
|
||||
}
|
||||
else
|
||||
{
|
||||
//Define serial connection parameters for the arduino board
|
||||
dcbSerialParams.BaudRate=CBR_9600;
|
||||
dcbSerialParams.ByteSize=8;
|
||||
dcbSerialParams.StopBits=ONESTOPBIT;
|
||||
dcbSerialParams.Parity=NOPARITY;
|
||||
// Define serial connection parameters for the arduino board
|
||||
dcbSerialParams.BaudRate = CBR_9600;
|
||||
dcbSerialParams.ByteSize = 8;
|
||||
dcbSerialParams.StopBits = ONESTOPBIT;
|
||||
dcbSerialParams.Parity = NOPARITY;
|
||||
|
||||
//Set the parameters and check for their proper application
|
||||
if(!SetCommState(hSerial, &dcbSerialParams))
|
||||
{
|
||||
// Set the parameters and check for their proper application
|
||||
if (!SetCommState(hSerial, &dcbSerialParams))
|
||||
{
|
||||
printf("ALERT: Could not set Serial Port parameters");
|
||||
}
|
||||
else
|
||||
{
|
||||
//If everything went fine we're connected
|
||||
this->connected = true;
|
||||
//We wait 2s as the arduino board will be reseting
|
||||
Sleep(ARDUINO_WAIT_TIME);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// If everything went fine we're connected
|
||||
this->connected = true;
|
||||
// We wait 2s as the arduino board will be reseting
|
||||
Sleep(ARDUINO_WAIT_TIME);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Serial::~Serial()
|
||||
{
|
||||
//Check if we are connected before trying to disconnect
|
||||
if(this->connected)
|
||||
// Check if we are connected before trying to disconnect
|
||||
if (this->connected)
|
||||
{
|
||||
//We're no longer connected
|
||||
// We're no longer connected
|
||||
this->connected = false;
|
||||
//Close the serial handler
|
||||
// Close the serial handler
|
||||
CloseHandle(this->hSerial);
|
||||
}
|
||||
}
|
||||
|
||||
int Serial::ReadData(char *buffer, unsigned int nbChar)
|
||||
int Serial::ReadData(char* buffer, unsigned int nbChar)
|
||||
{
|
||||
//Number of bytes we'll have read
|
||||
// Number of bytes we'll have read
|
||||
DWORD bytesRead;
|
||||
//Number of bytes we'll really ask to read
|
||||
// Number of bytes we'll really ask to read
|
||||
unsigned int toRead;
|
||||
|
||||
//Use the ClearCommError function to get status info on the Serial port
|
||||
// Use the ClearCommError function to get status info on the Serial port
|
||||
ClearCommError(this->hSerial, &this->errors, &this->status);
|
||||
|
||||
//Check if there is something to read
|
||||
if(this->status.cbInQue>0)
|
||||
// Check if there is something to read
|
||||
if (this->status.cbInQue > 0)
|
||||
{
|
||||
//If there is we check if there is enough data to read the required number
|
||||
//of characters, if not we'll read only the available characters to prevent
|
||||
//locking of the application.
|
||||
if(this->status.cbInQue>nbChar)
|
||||
// If there is we check if there is enough data to read the required number
|
||||
// of characters, if not we'll read only the available characters to prevent
|
||||
// locking of the application.
|
||||
if (this->status.cbInQue > nbChar)
|
||||
{
|
||||
toRead = nbChar;
|
||||
}
|
||||
@@ -113,30 +112,27 @@ int Serial::ReadData(char *buffer, unsigned int nbChar)
|
||||
toRead = this->status.cbInQue;
|
||||
}
|
||||
|
||||
//Try to read the require number of chars, and return the number of read bytes on success
|
||||
if(ReadFile(this->hSerial, buffer, toRead, &bytesRead, NULL) && bytesRead != 0)
|
||||
// Try to read the require number of chars, and return the number of read bytes on success
|
||||
if (ReadFile(this->hSerial, buffer, toRead, &bytesRead, nullptr) && bytesRead != 0)
|
||||
{
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//If nothing has been read, or that an error was detected return -1
|
||||
// If nothing has been read, or that an error was detected return -1
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool Serial::WriteData(char *buffer, unsigned int nbChar)
|
||||
bool Serial::WriteData(char* buffer, unsigned int nbChar)
|
||||
{
|
||||
DWORD bytesSend;
|
||||
|
||||
//Try to write the buffer on the Serial port
|
||||
if(!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
|
||||
// Try to write the buffer on the Serial port
|
||||
if (!WriteFile(this->hSerial, (void*)buffer, nbChar, &bytesSend, nullptr))
|
||||
{
|
||||
//In case it don't work get comm error and return false
|
||||
// In case it don't work get comm error and return false
|
||||
ClearCommError(this->hSerial, &this->errors, &this->status);
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@@ -145,6 +141,6 @@ bool Serial::WriteData(char *buffer, unsigned int nbChar)
|
||||
|
||||
bool Serial::IsConnected()
|
||||
{
|
||||
//Simply return the connection status
|
||||
// Simply return the connection status
|
||||
return this->connected;
|
||||
}
|
||||
|
||||
@@ -9,35 +9,32 @@
|
||||
|
||||
class Serial
|
||||
{
|
||||
private:
|
||||
//Serial comm handler
|
||||
HANDLE hSerial;
|
||||
//Connection status
|
||||
bool connected;
|
||||
//Get various information about the connection
|
||||
COMSTAT status;
|
||||
//Keep track of last error
|
||||
DWORD errors;
|
||||
|
||||
public:
|
||||
//Initialize Serial communication with the given COM port
|
||||
Serial();
|
||||
//Close the connection
|
||||
//NOTA: for some reason you can't connect again before exiting
|
||||
//the program and running it again
|
||||
~Serial();
|
||||
//Read data in a buffer, if nbChar is greater than the
|
||||
//maximum number of bytes available, it will return only the
|
||||
//bytes available. The function return -1 when nothing could
|
||||
//be read, the number of bytes actually read.
|
||||
int ReadData(char *buffer, unsigned int nbChar);
|
||||
//Writes data from a buffer through the Serial connection
|
||||
//return true on success.
|
||||
bool WriteData(char *buffer, unsigned int nbChar);
|
||||
//Check if we are actually connected
|
||||
bool IsConnected();
|
||||
|
||||
|
||||
private:
|
||||
//Serial comm handler
|
||||
HANDLE hSerial;
|
||||
//Connection status
|
||||
bool connected;
|
||||
//Get various information about the connection
|
||||
COMSTAT status;
|
||||
//Keep track of last error
|
||||
DWORD errors;
|
||||
public:
|
||||
//Initialize Serial communication with the given COM port
|
||||
Serial();
|
||||
//Close the connection
|
||||
//NOTA: for some reason you can't connect again before exiting
|
||||
//the program and running it again
|
||||
~Serial();
|
||||
//Read data in a buffer, if nbChar is greater than the
|
||||
//maximum number of bytes available, it will return only the
|
||||
//bytes available. The function return -1 when nothing could
|
||||
//be read, the number of bytes actually read.
|
||||
int ReadData(char* buffer, unsigned int nbChar);
|
||||
//Writes data from a buffer through the Serial connection
|
||||
//return true on success.
|
||||
bool WriteData(char* buffer, unsigned int nbChar);
|
||||
//Check if we are actually connected
|
||||
bool IsConnected();
|
||||
};
|
||||
|
||||
#endif // SERIALCLASS_H_INCLUDED
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <Windows.h>
|
||||
|
||||
// {817D38B3-57BA-4478-B8E8-B50A0B48D839}
|
||||
DEFINE_GUID(CLSID_RfidProvider,
|
||||
0x817d38b3, 0x57ba, 0x4478, 0xb8, 0xe8, 0xb5, 0xa, 0xb, 0x48, 0xd8, 0x39);
|
||||
DEFINE_GUID(CLSID_RfidProvider, 0x817d38b3, 0x57ba, 0x4478, 0xb8, 0xe8, 0xb5, 0xa, 0xb, 0x48, 0xd8, 0x39);
|
||||
|
||||
@@ -15,29 +15,22 @@
|
||||
#include <vector>
|
||||
#include <cstring>
|
||||
|
||||
#define cchOUTPUT 1024
|
||||
#define szOUTPUT_TAG "Sample"
|
||||
#define cchOUTPUT 1024
|
||||
#define szOUTPUT_TAG "Sample"
|
||||
|
||||
//
|
||||
// Copies the field descriptor pointed to by rcpfd into a buffer allocated
|
||||
// using CoTaskMemAlloc. Returns that buffer in ppcpfd.
|
||||
//
|
||||
HRESULT FieldDescriptorCoAllocCopy(
|
||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd
|
||||
)
|
||||
HRESULT FieldDescriptorCoAllocCopy(const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd, CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd)
|
||||
{
|
||||
HRESULT hr;
|
||||
DWORD cbStruct = sizeof(CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR);
|
||||
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd =
|
||||
(CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR*)CoTaskMemAlloc(cbStruct);
|
||||
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd = (CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR*)CoTaskMemAlloc(cbStruct);
|
||||
if (pcpfd)
|
||||
{
|
||||
pcpfd->dwFieldID = rcpfd.dwFieldID;
|
||||
pcpfd->cpft = rcpfd.cpft;
|
||||
|
||||
if (rcpfd.pszLabel)
|
||||
{
|
||||
hr = SHStrDupW(rcpfd.pszLabel, &pcpfd->pszLabel);
|
||||
@@ -58,11 +51,9 @@ HRESULT FieldDescriptorCoAllocCopy(
|
||||
}
|
||||
else
|
||||
{
|
||||
CoTaskMemFree(pcpfd);
|
||||
CoTaskMemFree(pcpfd);
|
||||
*ppcpfd = NULL;
|
||||
}
|
||||
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
@@ -71,17 +62,12 @@ HRESULT FieldDescriptorCoAllocCopy(
|
||||
// allocating pcpfd. This function uses CoTaskMemAlloc to allocate memory for
|
||||
// pcpfd->pszLabel.
|
||||
//
|
||||
HRESULT FieldDescriptorCopy(
|
||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd
|
||||
)
|
||||
HRESULT FieldDescriptorCopy(const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd, CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd)
|
||||
{
|
||||
HRESULT hr;
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR cpfd;
|
||||
|
||||
cpfd.dwFieldID = rcpfd.dwFieldID;
|
||||
cpfd.cpft = rcpfd.cpft;
|
||||
|
||||
if (rcpfd.pszLabel)
|
||||
{
|
||||
hr = SHStrDupW(rcpfd.pszLabel, &cpfd.pszLabel);
|
||||
@@ -91,12 +77,10 @@ HRESULT FieldDescriptorCopy(
|
||||
cpfd.pszLabel = NULL;
|
||||
hr = S_OK;
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
*pcpfd = cpfd;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
@@ -107,10 +91,7 @@ HRESULT FieldDescriptorCopy(
|
||||
// Be very, very sure that this is what you want, because it probably isn't outside of the
|
||||
// exact GetSerialization call where the sample uses it.
|
||||
//
|
||||
HRESULT UnicodeStringInitWithString(
|
||||
PWSTR pwz,
|
||||
UNICODE_STRING* pus
|
||||
)
|
||||
HRESULT UnicodeStringInitWithString(PWSTR pwz, UNICODE_STRING* pus)
|
||||
{
|
||||
HRESULT hr;
|
||||
if (pwz)
|
||||
@@ -151,16 +132,11 @@ HRESULT UnicodeStringInitWithString(
|
||||
// You can read more about the UNICODE_STRING type at:
|
||||
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/unicode_string.asp
|
||||
//
|
||||
static void _UnicodeStringPackedUnicodeStringCopy(
|
||||
const UNICODE_STRING& rus,
|
||||
PWSTR pwzBuffer,
|
||||
UNICODE_STRING* pus
|
||||
)
|
||||
static void _UnicodeStringPackedUnicodeStringCopy(const UNICODE_STRING& rus, PWSTR pwzBuffer, UNICODE_STRING* pus)
|
||||
{
|
||||
pus->Length = rus.Length;
|
||||
pus->MaximumLength = rus.Length;
|
||||
pus->Buffer = pwzBuffer;
|
||||
|
||||
CopyMemory(pus->Buffer, rus.Buffer, pus->Length);
|
||||
}
|
||||
|
||||
@@ -182,11 +158,7 @@ static void _UnicodeStringPackedUnicodeStringCopy(
|
||||
// http://msdn.microsoft.com/msdnmag/issues/05/06/SecurityBriefs/#void
|
||||
//
|
||||
|
||||
HRESULT KerbInteractiveLogonPack(
|
||||
const KERB_INTERACTIVE_LOGON& rkil,
|
||||
BYTE** prgb,
|
||||
DWORD* pcb
|
||||
)
|
||||
HRESULT KerbInteractiveLogonPack(const KERB_INTERACTIVE_LOGON& rkil, BYTE** prgb, DWORD* pcb)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
@@ -197,7 +169,7 @@ HRESULT KerbInteractiveLogonPack(
|
||||
rkil.Password.Length;
|
||||
|
||||
KERB_INTERACTIVE_LOGON* pkil = (KERB_INTERACTIVE_LOGON*)CoTaskMemAlloc(cb);
|
||||
|
||||
|
||||
if (pkil)
|
||||
{
|
||||
pkil->MessageType = rkil.MessageType;
|
||||
@@ -232,7 +204,6 @@ HRESULT KerbInteractiveLogonPack(
|
||||
{
|
||||
hr = E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
@@ -248,7 +219,7 @@ HRESULT LsaInitString(PSTRING pszDestinationString, PCSTR pszSourceString)
|
||||
{
|
||||
pszDestinationString->Buffer = (PCHAR)pszSourceString;
|
||||
pszDestinationString->Length = usLength;
|
||||
pszDestinationString->MaximumLength = pszDestinationString->Length+1;
|
||||
pszDestinationString->MaximumLength = pszDestinationString->Length + 1;
|
||||
hr = S_OK;
|
||||
}
|
||||
return hr;
|
||||
@@ -259,15 +230,13 @@ HRESULT LsaInitString(PSTRING pszDestinationString, PCSTR pszSourceString)
|
||||
// For more information on auth packages see this msdn page:
|
||||
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/msv1_0_lm20_logon.asp
|
||||
//
|
||||
HRESULT RetrieveNegotiateAuthPackage(ULONG * pulAuthPackage)
|
||||
HRESULT RetrieveNegotiateAuthPackage(ULONG* pulAuthPackage)
|
||||
{
|
||||
HRESULT hr;
|
||||
HANDLE hLsa;
|
||||
|
||||
NTSTATUS status = LsaConnectUntrusted(&hLsa);
|
||||
if (SUCCEEDED(HRESULT_FROM_NT(status)))
|
||||
{
|
||||
|
||||
ULONG ulAuthPackage;
|
||||
LSA_STRING lsaszKerberosName;
|
||||
LsaInitString(&lsaszKerberosName, NEGOSSP_NAME_A);
|
||||
@@ -286,9 +255,8 @@ HRESULT RetrieveNegotiateAuthPackage(ULONG * pulAuthPackage)
|
||||
}
|
||||
else
|
||||
{
|
||||
hr= HRESULT_FROM_NT(status);
|
||||
hr = HRESULT_FROM_NT(status);
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
@@ -296,7 +264,7 @@ std::wstring s2ws(const std::string& s)
|
||||
{
|
||||
int len;
|
||||
int slength = (int)s.length() + 1;
|
||||
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
|
||||
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
|
||||
wchar_t* buf = new wchar_t[len];
|
||||
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
|
||||
std::wstring r(buf);
|
||||
@@ -304,46 +272,44 @@ std::wstring s2ws(const std::string& s)
|
||||
return r;
|
||||
}
|
||||
|
||||
std::string ws2s(const std::wstring& si){
|
||||
std::string ws2s(const std::wstring& si)
|
||||
{
|
||||
std::wstring ws(si);
|
||||
std::string s;
|
||||
s.assign(ws.begin(), ws.end());
|
||||
s.assign(ws.begin(), ws.end());
|
||||
return s;
|
||||
}
|
||||
|
||||
wchar_t* wcs2cs(std::wstring& s){
|
||||
wchar_t* wcs2cs(std::wstring& s)
|
||||
{
|
||||
std::vector<wchar_t> v(s.length() + 1);
|
||||
std::wcscpy(&v[0], s.c_str());
|
||||
wchar_t* w = &v[0];
|
||||
s = w;
|
||||
|
||||
wchar_t* w2 = new wchar_t[wcslen(w) + 1];
|
||||
|
||||
for(int i = 0; i < wcslen(w); i++){
|
||||
for (int i = 0; i < wcslen(w); i++) {
|
||||
w2[i] = w[i];
|
||||
}
|
||||
w2[wcslen(w)] = L'\0';
|
||||
|
||||
return w2;
|
||||
}
|
||||
|
||||
char* s2cs(std::string& s){
|
||||
char* s2cs(std::string& s)
|
||||
{
|
||||
std::vector<char> v(s.length() + 1);
|
||||
std::strcpy(&v[0], s.c_str());
|
||||
char* w = &v[0];
|
||||
s = w;
|
||||
|
||||
char* w2 = new char[strlen(w) + 1];
|
||||
|
||||
for(int i = 0; i < strlen(w); i++){
|
||||
for (int i = 0; i < strlen(w); i++) {
|
||||
w2[i] = w[i];
|
||||
}
|
||||
w2[strlen(w)] = L'\0';
|
||||
|
||||
return w2;
|
||||
}
|
||||
|
||||
unsigned char* s2ucs(std::string& s){
|
||||
unsigned char* s2ucs(std::string& s)
|
||||
{
|
||||
unsigned char* cs = (unsigned char*)s2cs(s);
|
||||
return cs;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,29 +12,29 @@
|
||||
#pragma warning(pop)
|
||||
|
||||
HRESULT FieldDescriptorCoAllocCopy(
|
||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd
|
||||
);
|
||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd
|
||||
);
|
||||
|
||||
HRESULT FieldDescriptorCopy(
|
||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd
|
||||
);
|
||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd
|
||||
);
|
||||
|
||||
HRESULT UnicodeStringInitWithString(
|
||||
PWSTR pwz,
|
||||
UNICODE_STRING* pus
|
||||
);
|
||||
PWSTR pwz,
|
||||
UNICODE_STRING* pus
|
||||
);
|
||||
|
||||
HRESULT KerbInteractiveLogonPack(
|
||||
const KERB_INTERACTIVE_LOGON& rkil,
|
||||
BYTE** prgb,
|
||||
DWORD* pcb
|
||||
);
|
||||
const KERB_INTERACTIVE_LOGON& rkil,
|
||||
BYTE** prgb,
|
||||
DWORD* pcb
|
||||
);
|
||||
|
||||
HRESULT RetrieveNegotiateAuthPackage(
|
||||
ULONG * pulAuthPackage
|
||||
);
|
||||
ULONG* pulAuthPackage
|
||||
);
|
||||
|
||||
std::wstring s2ws(const std::string& s);
|
||||
std::string ws2s(const std::wstring& si);
|
||||
|
||||
@@ -1,362 +0,0 @@
|
||||
/* MD5
|
||||
converted to C++ class by Frank Thilo (thilo@unix-ag.org)
|
||||
for bzflag (http://www.bzflag.org)
|
||||
|
||||
based on:
|
||||
|
||||
md5.h and md5.c
|
||||
reference implemantion of RFC 1321
|
||||
|
||||
Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
|
||||
rights reserved.
|
||||
|
||||
License to copy and use this software is granted provided that it
|
||||
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
|
||||
Algorithm" in all material mentioning or referencing this software
|
||||
or this function.
|
||||
|
||||
License is also granted to make and use derivative works provided
|
||||
that such works are identified as "derived from the RSA Data
|
||||
Security, Inc. MD5 Message-Digest Algorithm" in all material
|
||||
mentioning or referencing the derived work.
|
||||
|
||||
RSA Data Security, Inc. makes no representations concerning either
|
||||
the merchantability of this software or the suitability of this
|
||||
software for any particular purpose. It is provided "as is"
|
||||
without express or implied warranty of any kind.
|
||||
|
||||
These notices must be retained in any copies of any part of this
|
||||
documentation and/or software.
|
||||
|
||||
*/
|
||||
|
||||
/* interface header */
|
||||
#include "md5.h"
|
||||
|
||||
/* system implementation headers */
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
// Constants for MD5Transform routine.
|
||||
#define S11 7
|
||||
#define S12 12
|
||||
#define S13 17
|
||||
#define S14 22
|
||||
#define S21 5
|
||||
#define S22 9
|
||||
#define S23 14
|
||||
#define S24 20
|
||||
#define S31 4
|
||||
#define S32 11
|
||||
#define S33 16
|
||||
#define S34 23
|
||||
#define S41 6
|
||||
#define S42 10
|
||||
#define S43 15
|
||||
#define S44 21
|
||||
|
||||
///////////////////////////////////////////////
|
||||
|
||||
// F, G, H and I are basic MD5 functions.
|
||||
inline MD5::uint4 MD5::F(uint4 x, uint4 y, uint4 z) {
|
||||
return x&y | ~x&z;
|
||||
}
|
||||
|
||||
inline MD5::uint4 MD5::G(uint4 x, uint4 y, uint4 z) {
|
||||
return x&z | y&~z;
|
||||
}
|
||||
|
||||
inline MD5::uint4 MD5::H(uint4 x, uint4 y, uint4 z) {
|
||||
return x^y^z;
|
||||
}
|
||||
|
||||
inline MD5::uint4 MD5::I(uint4 x, uint4 y, uint4 z) {
|
||||
return y ^ (x | ~z);
|
||||
}
|
||||
|
||||
// rotate_left rotates x left n bits.
|
||||
inline MD5::uint4 MD5::rotate_left(uint4 x, int n) {
|
||||
return (x << n) | (x >> (32-n));
|
||||
}
|
||||
|
||||
// FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
|
||||
// Rotation is separate from addition to prevent recomputation.
|
||||
inline void MD5::FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) {
|
||||
a = rotate_left(a+ F(b,c,d) + x + ac, s) + b;
|
||||
}
|
||||
|
||||
inline void MD5::GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) {
|
||||
a = rotate_left(a + G(b,c,d) + x + ac, s) + b;
|
||||
}
|
||||
|
||||
inline void MD5::HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) {
|
||||
a = rotate_left(a + H(b,c,d) + x + ac, s) + b;
|
||||
}
|
||||
|
||||
inline void MD5::II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) {
|
||||
a = rotate_left(a + I(b,c,d) + x + ac, s) + b;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////
|
||||
|
||||
// default ctor, just initailize
|
||||
MD5::MD5()
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////
|
||||
|
||||
// nifty shortcut ctor, compute MD5 for string and finalize it right away
|
||||
MD5::MD5(const std::string &text)
|
||||
{
|
||||
init();
|
||||
update(text.c_str(), text.length());
|
||||
finalize();
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
void MD5::init()
|
||||
{
|
||||
finalized=false;
|
||||
|
||||
count[0] = 0;
|
||||
count[1] = 0;
|
||||
|
||||
// load magic initialization constants.
|
||||
state[0] = 0x67452301;
|
||||
state[1] = 0xefcdab89;
|
||||
state[2] = 0x98badcfe;
|
||||
state[3] = 0x10325476;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
// decodes input (unsigned char) into output (uint4). Assumes len is a multiple of 4.
|
||||
void MD5::decode(uint4 output[], const uint1 input[], size_type len)
|
||||
{
|
||||
for (unsigned int i = 0, j = 0; j < len; i++, j += 4)
|
||||
output[i] = ((uint4)input[j]) | (((uint4)input[j+1]) << 8) |
|
||||
(((uint4)input[j+2]) << 16) | (((uint4)input[j+3]) << 24);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
// encodes input (uint4) into output (unsigned char). Assumes len is
|
||||
// a multiple of 4.
|
||||
void MD5::encode(uint1 output[], const uint4 input[], size_type len)
|
||||
{
|
||||
for (size_type i = 0, j = 0; j < len; i++, j += 4) {
|
||||
output[j] = input[i] & 0xff;
|
||||
output[j+1] = (input[i] >> 8) & 0xff;
|
||||
output[j+2] = (input[i] >> 16) & 0xff;
|
||||
output[j+3] = (input[i] >> 24) & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
// apply MD5 algo on a block
|
||||
void MD5::transform(const uint1 block[blocksize])
|
||||
{
|
||||
uint4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
|
||||
decode (x, block, blocksize);
|
||||
|
||||
/* Round 1 */
|
||||
FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
|
||||
FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
|
||||
FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
|
||||
FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
|
||||
FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
|
||||
FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
|
||||
FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
|
||||
FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
|
||||
FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
|
||||
FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
|
||||
FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
|
||||
FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
|
||||
FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
|
||||
FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
|
||||
FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
|
||||
FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
|
||||
|
||||
/* Round 2 */
|
||||
GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
|
||||
GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
|
||||
GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
|
||||
GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
|
||||
GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
|
||||
GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
|
||||
GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
|
||||
GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
|
||||
GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
|
||||
GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
|
||||
GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
|
||||
GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
|
||||
GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
|
||||
GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
|
||||
GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
|
||||
GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
|
||||
|
||||
/* Round 3 */
|
||||
HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
|
||||
HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
|
||||
HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
|
||||
HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
|
||||
HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
|
||||
HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
|
||||
HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
|
||||
HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
|
||||
HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
|
||||
HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
|
||||
HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
|
||||
HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
|
||||
HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
|
||||
HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
|
||||
HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
|
||||
HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
|
||||
|
||||
/* Round 4 */
|
||||
II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
|
||||
II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
|
||||
II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
|
||||
II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
|
||||
II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
|
||||
II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
|
||||
II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
|
||||
II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
|
||||
II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
|
||||
II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
|
||||
II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
|
||||
II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
|
||||
II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
|
||||
II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
|
||||
II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
|
||||
II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
|
||||
|
||||
state[0] += a;
|
||||
state[1] += b;
|
||||
state[2] += c;
|
||||
state[3] += d;
|
||||
|
||||
// Zeroize sensitive information.
|
||||
memset(x, 0, sizeof x);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
// MD5 block update operation. Continues an MD5 message-digest
|
||||
// operation, processing another message block
|
||||
void MD5::update(const unsigned char input[], size_type length)
|
||||
{
|
||||
// compute number of bytes mod 64
|
||||
size_type index = count[0] / 8 % blocksize;
|
||||
|
||||
// Update number of bits
|
||||
if ((count[0] += (length << 3)) < (length << 3))
|
||||
count[1]++;
|
||||
count[1] += (length >> 29);
|
||||
|
||||
// number of bytes we need to fill in buffer
|
||||
size_type firstpart = 64 - index;
|
||||
|
||||
size_type i;
|
||||
|
||||
// transform as many times as possible.
|
||||
if (length >= firstpart)
|
||||
{
|
||||
// fill buffer first, transform
|
||||
memcpy(&buffer[index], input, firstpart);
|
||||
transform(buffer);
|
||||
|
||||
// transform chunks of blocksize (64 bytes)
|
||||
for (i = firstpart; i + blocksize <= length; i += blocksize)
|
||||
transform(&input[i]);
|
||||
|
||||
index = 0;
|
||||
}
|
||||
else
|
||||
i = 0;
|
||||
|
||||
// buffer remaining input
|
||||
memcpy(&buffer[index], &input[i], length-i);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
// for convenience provide a verson with signed char
|
||||
void MD5::update(const char input[], size_type length)
|
||||
{
|
||||
update((const unsigned char*)input, length);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
// MD5 finalization. Ends an MD5 message-digest operation, writing the
|
||||
// the message digest and zeroizing the context.
|
||||
MD5& MD5::finalize()
|
||||
{
|
||||
static unsigned char padding[64] = {
|
||||
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
if (!finalized) {
|
||||
// Save number of bits
|
||||
unsigned char bits[8];
|
||||
encode(bits, count, 8);
|
||||
|
||||
// pad out to 56 mod 64.
|
||||
size_type index = count[0] / 8 % 64;
|
||||
size_type padLen = (index < 56) ? (56 - index) : (120 - index);
|
||||
update(padding, padLen);
|
||||
|
||||
// Append length (before padding)
|
||||
update(bits, 8);
|
||||
|
||||
// Store state in digest
|
||||
encode(digest, state, 16);
|
||||
|
||||
// Zeroize sensitive information.
|
||||
memset(buffer, 0, sizeof buffer);
|
||||
memset(count, 0, sizeof count);
|
||||
|
||||
finalized=true;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
// return hex representation of digest as string
|
||||
std::string MD5::hexdigest() const
|
||||
{
|
||||
if (!finalized)
|
||||
return "";
|
||||
|
||||
char buf[33];
|
||||
for (int i=0; i<16; i++)
|
||||
sprintf(buf+i*2, "%02x", digest[i]);
|
||||
buf[32]=0;
|
||||
|
||||
return std::string(buf);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
std::ostream& operator<<(std::ostream& out, MD5 md5)
|
||||
{
|
||||
return out << md5.hexdigest();
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
std::string md5(const std::string str)
|
||||
{
|
||||
MD5 md5 = MD5(str);
|
||||
|
||||
return md5.hexdigest();
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
/* MD5
|
||||
converted to C++ class by Frank Thilo (thilo@unix-ag.org)
|
||||
for bzflag (http://www.bzflag.org)
|
||||
|
||||
based on:
|
||||
|
||||
md5.h and md5.c
|
||||
reference implementation of RFC 1321
|
||||
|
||||
Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
|
||||
rights reserved.
|
||||
|
||||
License to copy and use this software is granted provided that it
|
||||
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
|
||||
Algorithm" in all material mentioning or referencing this software
|
||||
or this function.
|
||||
|
||||
License is also granted to make and use derivative works provided
|
||||
that such works are identified as "derived from the RSA Data
|
||||
Security, Inc. MD5 Message-Digest Algorithm" in all material
|
||||
mentioning or referencing the derived work.
|
||||
|
||||
RSA Data Security, Inc. makes no representations concerning either
|
||||
the merchantability of this software or the suitability of this
|
||||
software for any particular purpose. It is provided "as is"
|
||||
without express or implied warranty of any kind.
|
||||
|
||||
These notices must be retained in any copies of any part of this
|
||||
documentation and/or software.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef BZF_MD5_H
|
||||
#define BZF_MD5_H
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
// a small class for calculating MD5 hashes of strings or byte arrays
|
||||
// it is not meant to be fast or secure
|
||||
//
|
||||
// usage: 1) feed it blocks of uchars with update()
|
||||
// 2) finalize()
|
||||
// 3) get hexdigest() string
|
||||
// or
|
||||
// MD5(std::string).hexdigest()
|
||||
//
|
||||
// assumes that char is 8 bit and int is 32 bit
|
||||
class MD5
|
||||
{
|
||||
public:
|
||||
typedef unsigned int size_type; // must be 32bit
|
||||
|
||||
MD5();
|
||||
MD5(const std::string& text);
|
||||
void update(const unsigned char *buf, size_type length);
|
||||
void update(const char *buf, size_type length);
|
||||
MD5& finalize();
|
||||
std::string hexdigest() const;
|
||||
friend std::ostream& operator<<(std::ostream&, MD5 md5);
|
||||
|
||||
private:
|
||||
void init();
|
||||
typedef unsigned char uint1; // 8bit
|
||||
typedef unsigned int uint4; // 32bit
|
||||
enum {blocksize = 64}; // VC6 won't eat a const static int here
|
||||
|
||||
void transform(const uint1 block[blocksize]);
|
||||
static void decode(uint4 output[], const uint1 input[], size_type len);
|
||||
static void encode(uint1 output[], const uint4 input[], size_type len);
|
||||
|
||||
bool finalized;
|
||||
uint1 buffer[blocksize]; // bytes that didn't fit in last 64 byte chunk
|
||||
uint4 count[2]; // 64bit counter for number of bits (lo, hi)
|
||||
uint4 state[4]; // digest so far
|
||||
uint1 digest[16]; // the result
|
||||
|
||||
// low level logic operations
|
||||
static inline uint4 F(uint4 x, uint4 y, uint4 z);
|
||||
static inline uint4 G(uint4 x, uint4 y, uint4 z);
|
||||
static inline uint4 H(uint4 x, uint4 y, uint4 z);
|
||||
static inline uint4 I(uint4 x, uint4 y, uint4 z);
|
||||
static inline uint4 rotate_left(uint4 x, int n);
|
||||
static inline void FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac);
|
||||
static inline void GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac);
|
||||
static inline void HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac);
|
||||
static inline void II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac);
|
||||
};
|
||||
|
||||
std::string md5(const std::string str);
|
||||
|
||||
#endif
|
||||
Binary file not shown.
Binary file not shown.
+26
-428
@@ -1,6 +1,8 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29519.87
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CredUILauncher", "Provider\CredUILauncher\CredUILauncher.vcxproj", "{D1F100CA-0215-405D-9B43-7C0AAAAC8880}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RfidCredentialProvider", "Provider\RfidCredentialProvider\RfidCredentialProvider.vcxproj", "{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}"
|
||||
@@ -19,479 +21,75 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Installer", "Installer", "{
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegisterSystem", "Installer\RegisterSystem\RegisterSystem.csproj", "{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}"
|
||||
EndProject
|
||||
Project("{6141683F-8A12-4E36-9623-2EB02B2C2303}") = "Setup", "Installer\Setup\Setup.isproj", "{515B5FCC-A9D6-4875-8288-9AE68201EC34}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314} = {DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0} = {80614F74-563D-418E-9BF6-1294F73521C0}
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033} = {C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880} = {D1F100CA-0215-405D-9B43-7C0AAAAC8880}
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB} = {392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB} = {392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B} = {23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
CD_ROM|Any CPU = CD_ROM|Any CPU
|
||||
CD_ROM|Mixed Platforms = CD_ROM|Mixed Platforms
|
||||
CD_ROM|Win32 = CD_ROM|Win32
|
||||
CD_ROM|x64 = CD_ROM|x64
|
||||
CD_ROM|x86 = CD_ROM|x86
|
||||
Debug Unicode|Any CPU = Debug Unicode|Any CPU
|
||||
Debug Unicode|Mixed Platforms = Debug Unicode|Mixed Platforms
|
||||
Debug Unicode|Win32 = Debug Unicode|Win32
|
||||
Debug Unicode|x64 = Debug Unicode|x64
|
||||
Debug Unicode|x86 = Debug Unicode|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
DVD-5|Any CPU = DVD-5|Any CPU
|
||||
DVD-5|Mixed Platforms = DVD-5|Mixed Platforms
|
||||
DVD-5|Win32 = DVD-5|Win32
|
||||
DVD-5|x64 = DVD-5|x64
|
||||
DVD-5|x86 = DVD-5|x86
|
||||
Release Unicode|Any CPU = Release Unicode|Any CPU
|
||||
Release Unicode|Mixed Platforms = Release Unicode|Mixed Platforms
|
||||
Release Unicode|Win32 = Release Unicode|Win32
|
||||
Release Unicode|x64 = Release Unicode|x64
|
||||
Release Unicode|x86 = Release Unicode|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
SingleImage|Any CPU = SingleImage|Any CPU
|
||||
SingleImage|Mixed Platforms = SingleImage|Mixed Platforms
|
||||
SingleImage|Win32 = SingleImage|Win32
|
||||
SingleImage|x64 = SingleImage|x64
|
||||
SingleImage|x86 = SingleImage|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.CD_ROM|Any CPU.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.CD_ROM|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.CD_ROM|Mixed Platforms.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.CD_ROM|Win32.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.CD_ROM|x64.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.CD_ROM|x64.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.CD_ROM|x86.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug Unicode|Any CPU.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug Unicode|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug Unicode|Mixed Platforms.Build.0 = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug Unicode|Win32.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug Unicode|x64.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug Unicode|x64.Build.0 = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug Unicode|x86.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|Mixed Platforms.Build.0 = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|x64.Build.0 = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|x86.Build.0 = Debug|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.DVD-5|Any CPU.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.DVD-5|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.DVD-5|Mixed Platforms.Build.0 = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.DVD-5|Win32.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.DVD-5|x64.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.DVD-5|x64.Build.0 = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.DVD-5|x86.ActiveCfg = Debug|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release Unicode|Any CPU.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release Unicode|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release Unicode|Mixed Platforms.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release Unicode|Win32.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release Unicode|x64.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release Unicode|x64.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release Unicode|x86.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|Any CPU.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|Win32.Build.0 = Release|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|x64.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|x64.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|x86.ActiveCfg = Release|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|x86.Build.0 = Release|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|Any CPU.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|Any CPU.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|Mixed Platforms.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|Win32.ActiveCfg = Release|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|x64.ActiveCfg = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|x64.Build.0 = Release|x64
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|x86.ActiveCfg = Release|Win32
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.SingleImage|x86.Build.0 = Release|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.CD_ROM|Any CPU.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.CD_ROM|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.CD_ROM|Mixed Platforms.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.CD_ROM|Win32.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.CD_ROM|x64.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.CD_ROM|x64.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.CD_ROM|x86.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug Unicode|Any CPU.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug Unicode|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug Unicode|Mixed Platforms.Build.0 = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug Unicode|Win32.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug Unicode|x64.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug Unicode|x64.Build.0 = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug Unicode|x86.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|Mixed Platforms.Build.0 = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|x64.Build.0 = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|x86.Build.0 = Debug|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.DVD-5|Any CPU.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.DVD-5|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.DVD-5|Mixed Platforms.Build.0 = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.DVD-5|Win32.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.DVD-5|x64.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.DVD-5|x64.Build.0 = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.DVD-5|x86.ActiveCfg = Debug|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release Unicode|Any CPU.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release Unicode|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release Unicode|Mixed Platforms.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release Unicode|Win32.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release Unicode|x64.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release Unicode|x64.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release Unicode|x86.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|Any CPU.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|Win32.Build.0 = Release|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x64.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x64.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x86.ActiveCfg = Release|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x86.Build.0 = Release|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|Any CPU.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|Any CPU.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|Mixed Platforms.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|Win32.ActiveCfg = Release|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|x64.ActiveCfg = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|x64.Build.0 = Release|x64
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|x86.ActiveCfg = Release|Win32
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.SingleImage|x86.Build.0 = Release|Win32
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.CD_ROM|Win32.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.CD_ROM|x64.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.CD_ROM|x86.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug Unicode|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug Unicode|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug Unicode|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug Unicode|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug Unicode|Win32.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug Unicode|x64.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug Unicode|x86.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Win32.ActiveCfg = Debug|x86
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Win32.Build.0 = Debug|x86
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|x64.Build.0 = Debug|x64
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Win32.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|x64.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|x86.ActiveCfg = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release Unicode|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release Unicode|Any CPU.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release Unicode|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release Unicode|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release Unicode|Win32.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release Unicode|x64.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release Unicode|x86.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x64.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|Any CPU.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|Win32.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|x64.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|x64.Build.0 = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|x86.ActiveCfg = Release|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.SingleImage|x86.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.CD_ROM|Win32.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.CD_ROM|x64.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.CD_ROM|x86.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug Unicode|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug Unicode|Any CPU.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug Unicode|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug Unicode|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug Unicode|Win32.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug Unicode|x64.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug Unicode|x86.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Win32.ActiveCfg = Release|x86
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Win32.Build.0 = Release|x86
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x64.ActiveCfg = Release|x64
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x64.Build.0 = Release|x64
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Win32.ActiveCfg = Debug|x86
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Win32.Build.0 = Debug|x86
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|x64.Build.0 = Debug|x64
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Win32.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|x64.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|x86.ActiveCfg = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release Unicode|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release Unicode|Any CPU.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release Unicode|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release Unicode|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release Unicode|Win32.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release Unicode|x64.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release Unicode|x86.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x64.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|Any CPU.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|Win32.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|x64.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|x64.Build.0 = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|x86.ActiveCfg = Release|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.SingleImage|x86.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.CD_ROM|Win32.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.CD_ROM|x64.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.CD_ROM|x86.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug Unicode|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug Unicode|Any CPU.Build.0 = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug Unicode|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug Unicode|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug Unicode|Win32.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug Unicode|x64.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug Unicode|x86.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Win32.ActiveCfg = Release|x86
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Win32.Build.0 = Release|x86
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x64.ActiveCfg = Release|x64
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x64.Build.0 = Release|x64
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Win32.ActiveCfg = Debug|x86
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Win32.Build.0 = Debug|x86
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|x64.Build.0 = Debug|x64
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|Win32.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|x64.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|x86.ActiveCfg = Debug|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release Unicode|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release Unicode|Any CPU.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release Unicode|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release Unicode|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release Unicode|Win32.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release Unicode|x64.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release Unicode|x86.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x64.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x86.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|Any CPU.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|Win32.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|x64.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|x64.Build.0 = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|x86.ActiveCfg = Release|Any CPU
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.SingleImage|x86.Build.0 = Release|Any CPU
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.CD_ROM|Any CPU.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.CD_ROM|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.CD_ROM|Mixed Platforms.Build.0 = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.CD_ROM|Win32.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.CD_ROM|x64.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.CD_ROM|x64.Build.0 = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.CD_ROM|x86.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug Unicode|Any CPU.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug Unicode|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug Unicode|Mixed Platforms.Build.0 = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug Unicode|Win32.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug Unicode|x64.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug Unicode|x86.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug Unicode|x86.Build.0 = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|Mixed Platforms.Build.0 = Debug|x64
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Win32.ActiveCfg = Release|x86
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Win32.Build.0 = Release|x86
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x64.ActiveCfg = Release|x64
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x64.Build.0 = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|Win32.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|Win32.Build.0 = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|x64.Build.0 = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|x86.Build.0 = Debug|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.DVD-5|Any CPU.ActiveCfg = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.DVD-5|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.DVD-5|Mixed Platforms.Build.0 = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.DVD-5|Win32.ActiveCfg = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.DVD-5|x64.ActiveCfg = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.DVD-5|x64.Build.0 = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.DVD-5|x86.ActiveCfg = Debug|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release Unicode|Any CPU.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release Unicode|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release Unicode|Mixed Platforms.Build.0 = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release Unicode|Win32.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release Unicode|x64.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release Unicode|x86.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release Unicode|x86.Build.0 = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|Any CPU.Build.0 = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|Win32.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|Win32.Build.0 = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|x64.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|x64.Build.0 = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|x86.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|x86.Build.0 = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|Any CPU.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|Any CPU.Build.0 = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|Mixed Platforms.Build.0 = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|Win32.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|x64.ActiveCfg = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|x64.Build.0 = Release|x64
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|x86.ActiveCfg = Release|x86
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.SingleImage|x86.Build.0 = Release|x86
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|Any CPU.ActiveCfg = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|Any CPU.Build.0 = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|Mixed Platforms.ActiveCfg = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|Mixed Platforms.Build.0 = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|Win32.ActiveCfg = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|Win32.Build.0 = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|x64.ActiveCfg = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|x64.Build.0 = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|x86.ActiveCfg = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.CD_ROM|x86.Build.0 = CD_ROM
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|Any CPU.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|Any CPU.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|Mixed Platforms.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|Mixed Platforms.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|Win32.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|Win32.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|x64.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|x64.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|x86.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug Unicode|x86.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|Any CPU.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|Any CPU.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|Mixed Platforms.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|Mixed Platforms.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|Win32.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|Win32.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|x64.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|x64.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|x86.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Debug|x86.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|Any CPU.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|Any CPU.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|Mixed Platforms.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|Mixed Platforms.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|Win32.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|Win32.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|x64.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|x64.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|x86.ActiveCfg = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.DVD-5|x86.Build.0 = DVD-5
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|Any CPU.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|Any CPU.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|Mixed Platforms.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|Mixed Platforms.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|Win32.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|Win32.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|x64.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|x64.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|x86.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release Unicode|x86.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|Any CPU.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|Any CPU.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|Mixed Platforms.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|Mixed Platforms.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|Win32.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|Win32.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|x64.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|x64.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|x86.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.Release|x86.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|Any CPU.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|Any CPU.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|Mixed Platforms.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|Mixed Platforms.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|Win32.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|Win32.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|x64.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|x64.Build.0 = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|x86.ActiveCfg = SingleImage
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34}.SingleImage|x86.Build.0 = SingleImage
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314} = {10910983-E6AF-4824-88CD-992A97E780D4}
|
||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880} = {10910983-E6AF-4824-88CD-992A97E780D4}
|
||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314} = {10910983-E6AF-4824-88CD-992A97E780D4}
|
||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033} = {3E73C0BD-A239-468D-9302-26B12CFA90F5}
|
||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B} = {3E73C0BD-A239-468D-9302-26B12CFA90F5}
|
||||
{80614F74-563D-418E-9BF6-1294F73521C0} = {3E73C0BD-A239-468D-9302-26B12CFA90F5}
|
||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB} = {55ED87CD-50E1-4D9D-8F82-64C7E131B5C2}
|
||||
{515B5FCC-A9D6-4875-8288-9AE68201EC34} = {55ED87CD-50E1-4D9D-8F82-64C7E131B5C2}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {FB44CA25-5D51-4AA1-92EF-D118C5420B4E}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Reference in New Issue
Block a user