mirror of
https://github.com/tenrok/Rfid-Credential-Provider.git
synced 2026-06-23 20:50:32 +03:00
Z-2 USB Reader
This commit is contained in:
+1
-1
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
#ignore thumbnails created by windows
|
#ignore thumbnails created by windows
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
#Ignore files build by Visual Studio
|
#Ignore files build by Visual Studio
|
||||||
@@ -27,3 +26,4 @@ obj/
|
|||||||
[Rr]elease*/
|
[Rr]elease*/
|
||||||
_ReSharper*/
|
_ReSharper*/
|
||||||
[Tt]est[Rr]esult*
|
[Tt]est[Rr]esult*
|
||||||
|
.vs
|
||||||
|
|||||||
@@ -8,74 +8,74 @@ using System.Runtime.InteropServices;
|
|||||||
|
|
||||||
namespace RegisterSystem
|
namespace RegisterSystem
|
||||||
{
|
{
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
[DllImport("kernel32.dll", SetLastError = true)]
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
|
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
|
||||||
|
|
||||||
[DllImport("kernel32.dll", SetLastError=true)]
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
public static extern bool Wow64EnableWow64FsRedirection(ref IntPtr ptr);
|
public static extern bool Wow64EnableWow64FsRedirection(ref IntPtr ptr);
|
||||||
|
|
||||||
private static bool isBoxed = (!Environment.Is64BitProcess && Environment.Is64BitOperatingSystem);
|
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);
|
public static readonly RegistryKey Software = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, (isBoxed) ? RegistryView.Registry64 : RegistryView.Default).OpenSubKey("SOFTWARE", true);
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Console.WriteLine("Generating Registry Structure...");
|
Console.WriteLine("Generating Registry Structure...");
|
||||||
RegistryKey Base = Software.CreateSubKey("Tyler Menezes");
|
RegistryKey Base = Software.CreateSubKey("KORNET");
|
||||||
Base = Base.CreateSubKey("Rfid Login");
|
Base = Base.CreateSubKey("WinLogin");
|
||||||
|
|
||||||
Console.WriteLine("Adding default configuration...");
|
Console.WriteLine("Adding default configuration...");
|
||||||
Base.SetValue("Port", "COM3");
|
Base.SetValue("Port", "COM3");
|
||||||
Base.SetValue("Message Start", 0x02);
|
//Base.SetValue("Message Start", 0x02);
|
||||||
Base.SetValue("Message End", 0x0d);
|
//Base.SetValue("Message End", 0x0d);
|
||||||
|
|
||||||
Console.WriteLine("Reversing Entropy...");
|
Console.WriteLine("Reversing Entropy...");
|
||||||
string randomSalt = Hash(((new Random()).Next(int.MaxValue) + DateTime.Now.Ticks).ToString());
|
string randomSalt = Hash((new Random().Next(int.MaxValue) + DateTime.Now.Ticks).ToString());
|
||||||
|
|
||||||
Console.WriteLine("Enumerating the null set...");
|
Console.WriteLine("Enumerating the null set...");
|
||||||
Base = Base.CreateSubKey("Keys");
|
Base = Base.CreateSubKey("Keys");
|
||||||
Base.SetValue("Salt", randomSalt);
|
Base.SetValue("Salt", randomSalt);
|
||||||
|
|
||||||
Console.WriteLine("Doing magical Windows-y things...");
|
Console.WriteLine("Doing magical Windows-y things...");
|
||||||
string provider = (Environment.Is64BitOperatingSystem)? "64" : "32";
|
string provider = Environment.Is64BitOperatingSystem ? "64" : "32";
|
||||||
provider = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\CredentialProviders\\" + provider + "\\RfidCredentialProvider.dll";
|
provider = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\CredentialProviders\\" + provider + "\\RfidCredentialProvider.dll";
|
||||||
string to = Environment.GetEnvironmentVariable("SystemRoot") + "\\System32\\RfidCredentialProvider.dll";
|
string to = Environment.GetEnvironmentVariable("SystemRoot") + "\\System32\\RfidCredentialProvider.dll";
|
||||||
|
|
||||||
IntPtr p = new IntPtr();
|
IntPtr p = new IntPtr();
|
||||||
|
|
||||||
if (isBoxed)
|
if (isBoxed)
|
||||||
{
|
{
|
||||||
Wow64DisableWow64FsRedirection(ref p);
|
Wow64DisableWow64FsRedirection(ref p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (File.Exists(to))
|
if (File.Exists(to))
|
||||||
{
|
{
|
||||||
File.Delete(to);
|
File.Delete(to);
|
||||||
}
|
}
|
||||||
File.Copy(provider, to);
|
File.Copy(provider, to);
|
||||||
|
|
||||||
if (isBoxed)
|
if (isBoxed)
|
||||||
{
|
{
|
||||||
Wow64EnableWow64FsRedirection(ref p);
|
Wow64EnableWow64FsRedirection(ref p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
Console.ReadLine();
|
Console.ReadLine();
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string Hash(string toHash)
|
private static string Hash(string toHash)
|
||||||
{
|
{
|
||||||
System.Security.Cryptography.SHA1CryptoServiceProvider x = new System.Security.Cryptography.SHA1CryptoServiceProvider();
|
System.Security.Cryptography.SHA1CryptoServiceProvider x = new System.Security.Cryptography.SHA1CryptoServiceProvider();
|
||||||
byte[] data = System.Text.Encoding.ASCII.GetBytes(toHash);
|
byte[] data = System.Text.Encoding.ASCII.GetBytes(toHash);
|
||||||
data = x.ComputeHash(data);
|
data = x.ComputeHash(data);
|
||||||
string o = BitConverter.ToString(data).Replace("-", "").ToUpper();
|
string o = BitConverter.ToString(data).Replace("-", "").ToUpper();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
|
|||||||
[assembly: AssemblyTitle("RegisterSystem")]
|
[assembly: AssemblyTitle("RegisterSystem")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("Tyler Menezes")]
|
[assembly: AssemblyCompany("KORNET")]
|
||||||
[assembly: AssemblyProduct("RegisterSystem")]
|
[assembly: AssemblyProduct("RegisterSystem")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Tyler Menezes 2011")]
|
[assembly: AssemblyCopyright("Copyright © KORNET 2019")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[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.
+57
-62
@@ -7,80 +7,75 @@ using System.Threading;
|
|||||||
|
|
||||||
namespace TestWizard
|
namespace TestWizard
|
||||||
{
|
{
|
||||||
public delegate void RfidRead(string id);
|
public delegate void RfidRead(string id);
|
||||||
public class RFID
|
public class RFID
|
||||||
{
|
{
|
||||||
private SerialPort p;
|
private SerialPort p;
|
||||||
|
|
||||||
private const int baud = 9600;
|
private const int baud = 9600;
|
||||||
private const Parity parity = Parity.None;
|
private const Parity parity = Parity.None;
|
||||||
private const int dataBits = 8;
|
private const int dataBits = 8;
|
||||||
private const StopBits stopBits = StopBits.One;
|
private const StopBits stopBits = StopBits.One;
|
||||||
|
|
||||||
public event RfidRead IncomingRfid;
|
public event RfidRead IncomingRfid;
|
||||||
|
|
||||||
private Thread readThread;
|
private Thread readThread;
|
||||||
private bool continueReading = false;
|
private bool continueReading = false;
|
||||||
|
|
||||||
private string Port = "COM3";
|
private string Port = "COM3";
|
||||||
|
|
||||||
public RFID()
|
public RFID()
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RFID(int port)
|
public RFID(int port)
|
||||||
{
|
{
|
||||||
Port = "COM" + port;
|
Port = "COM" + port;
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
init();
|
public RFID(string port)
|
||||||
}
|
{
|
||||||
|
Port = port;
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
public RFID(string port)
|
private void init()
|
||||||
{
|
{
|
||||||
Port = port;
|
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()
|
private void Read()
|
||||||
{
|
{
|
||||||
p = new SerialPort(Port, baud, parity, dataBits, stopBits);
|
p.Open();
|
||||||
|
|
||||||
if (!continueReading)
|
while (continueReading)
|
||||||
{
|
{
|
||||||
continueReading = true;
|
string result = p.ReadLine();
|
||||||
readThread = new Thread(Read);
|
|
||||||
readThread.Start();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// 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()
|
p.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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -5,118 +5,115 @@ using Microsoft.Win32;
|
|||||||
|
|
||||||
namespace TestWizard
|
namespace TestWizard
|
||||||
{
|
{
|
||||||
class RegistryAccess
|
class RegistryAccess
|
||||||
{
|
{
|
||||||
private static bool isBoxed = (IntPtr.Size == 4 && !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")));
|
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);
|
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 static readonly RegistryKey Keys = Primary.OpenSubKey("Keys", true);
|
||||||
|
|
||||||
private string RfidToken;
|
private string RfidToken;
|
||||||
|
|
||||||
public RegistryAccess(string token)
|
public RegistryAccess(string token)
|
||||||
{
|
{
|
||||||
RfidToken = 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
|
public string Password
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Username")));
|
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Password")));
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
TokenKey.SetValue("Username", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
TokenKey.SetValue("Password", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Password
|
public string Domain
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Password")));
|
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Domain")));
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
TokenKey.SetValue("Password", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
TokenKey.SetValue("Domain", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Domain
|
private string GetEncryptedValue(string toEncrypt)
|
||||||
{
|
{
|
||||||
get
|
char[] e = toEncrypt.ToCharArray();
|
||||||
{
|
string key = Hash(RfidToken + TokenSalt);
|
||||||
return GetDecryptedValue(System.Text.Encoding.ASCII.GetString((byte[])TokenKey.GetValue("Domain")));
|
for (int i = 0; i < toEncrypt.Length; i++)
|
||||||
}
|
{
|
||||||
set
|
e[i] = (char)(e[i] ^ key[i % key.Length]);
|
||||||
{
|
e[i] = (char)(((int)e[i]) + 1);
|
||||||
TokenKey.SetValue("Domain", System.Text.Encoding.ASCII.GetBytes(GetEncryptedValue(value)), RegistryValueKind.Binary);
|
}
|
||||||
}
|
return new string(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetEncryptedValue(string toEncrypt)
|
private string GetDecryptedValue(string toDecrypt)
|
||||||
{
|
{
|
||||||
char[] e = toEncrypt.ToCharArray();
|
char[] e = toDecrypt.ToCharArray();
|
||||||
string key = Hash(RfidToken + TokenSalt);
|
string key = Hash(RfidToken + TokenSalt);
|
||||||
for (int i = 0; i < toEncrypt.Length; i++)
|
for (int i = 0; i < toDecrypt.Length; i++)
|
||||||
{
|
{
|
||||||
e[i] = (char)(e[i] ^ key[i % key.Length]);
|
e[i] = (char)(((int)e[i]) - 1);
|
||||||
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)
|
private RegistryKey TokenKey
|
||||||
{
|
{
|
||||||
char[] e = toDecrypt.ToCharArray();
|
get
|
||||||
string key = Hash(RfidToken + TokenSalt);
|
{
|
||||||
for (int i = 0; i < toDecrypt.Length; i++)
|
if (Keys.OpenSubKey(Hash(RfidToken + KeySalt)) == null)
|
||||||
{
|
{
|
||||||
e[i] = (char)(((int)e[i]) - 1);
|
Keys.CreateSubKey(Hash(RfidToken + KeySalt));
|
||||||
e[i] = (char)(e[i] ^ key[i % key.Length]);
|
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
|
private static string Hash(string toHash)
|
||||||
{
|
{
|
||||||
get
|
System.Security.Cryptography.SHA1CryptoServiceProvider x = new System.Security.Cryptography.SHA1CryptoServiceProvider();
|
||||||
{
|
byte[] data = System.Text.Encoding.ASCII.GetBytes(toHash);
|
||||||
return (string)TokenKey.GetValue("Salt");
|
data = x.ComputeHash(data);
|
||||||
}
|
string o = BitConverter.ToString(data).Replace("-", "").ToUpper();
|
||||||
}
|
return o;
|
||||||
|
}
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -42,48 +42,6 @@
|
|||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
</PropertyGroup>
|
</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'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
|||||||
@@ -41,48 +41,6 @@
|
|||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
</PropertyGroup>
|
</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'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
|||||||
@@ -41,48 +41,6 @@
|
|||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
</PropertyGroup>
|
</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'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
credUiInfo.pszCaptionText = TEXT("WinCred UI Demo");
|
credUiInfo.pszCaptionText = TEXT("WinCred UI Demo");
|
||||||
credUiInfo.pszMessageText = TEXT("Example of RFID!");
|
credUiInfo.pszMessageText = TEXT("Example of RFID!");
|
||||||
credUiInfo.cbSize = sizeof(credUiInfo);
|
credUiInfo.cbSize = sizeof(credUiInfo);
|
||||||
credUiInfo.hbmBanner = NULL;
|
credUiInfo.hbmBanner = nullptr;
|
||||||
credUiInfo.hwndParent = NULL;
|
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;
|
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>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
@@ -94,13 +98,15 @@
|
|||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<OmitFramePointers />
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>CredUi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>CredUi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
|
<ImageHasSafeExceptionHandlers />
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@@ -113,6 +119,7 @@
|
|||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<OmitFramePointers />
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>CredUi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>CredUi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
@@ -121,6 +128,7 @@
|
|||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
|
<ImageHasSafeExceptionHandlers />
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@@ -129,7 +137,7 @@
|
|||||||
</Midl>
|
</Midl>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
<MinimalRebuild>true</MinimalRebuild>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
@@ -151,7 +159,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<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);
|
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
|
class CClassFactory : public IClassFactory
|
||||||
{
|
{
|
||||||
@@ -40,7 +39,7 @@ public:
|
|||||||
return cRef;
|
return cRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
|
STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
if (ppv != NULL)
|
if (ppv != NULL)
|
||||||
@@ -65,7 +64,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IClassFactory
|
// IClassFactory
|
||||||
STDMETHOD (CreateInstance)(IUnknown* pUnkOuter, REFIID riid, void** ppv)
|
STDMETHOD(CreateInstance)(IUnknown* pUnkOuter, REFIID riid, void** ppv)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
if (!pUnkOuter)
|
if (!pUnkOuter)
|
||||||
@@ -79,7 +78,7 @@ public:
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHOD (LockServer)(BOOL bLock)
|
STDMETHOD(LockServer)(BOOL bLock)
|
||||||
{
|
{
|
||||||
if (bLock)
|
if (bLock)
|
||||||
{
|
{
|
||||||
@@ -94,11 +93,10 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
CClassFactory() : _cRef(1) {}
|
CClassFactory() : _cRef(1) {}
|
||||||
~CClassFactory(){}
|
~CClassFactory() {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LONG _cRef;
|
LONG _cRef;
|
||||||
|
|
||||||
friend HRESULT CClassFactory_CreateInstance(REFCLSID rclsid, REFIID riid, void** ppv);
|
friend HRESULT CClassFactory_CreateInstance(REFCLSID rclsid, REFIID riid, void** ppv);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -131,10 +129,9 @@ BOOL WINAPI DllMain(
|
|||||||
HINSTANCE hinstDll,
|
HINSTANCE hinstDll,
|
||||||
DWORD dwReason,
|
DWORD dwReason,
|
||||||
LPVOID pReserved
|
LPVOID pReserved
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(pReserved);
|
UNREFERENCED_PARAMETER(pReserved);
|
||||||
|
|
||||||
switch (dwReason)
|
switch (dwReason)
|
||||||
{
|
{
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
@@ -145,10 +142,8 @@ BOOL WINAPI DllMain(
|
|||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_hinst = hinstDll;
|
g_hinst = hinstDll;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DllAddRef()
|
void DllAddRef()
|
||||||
@@ -165,7 +160,6 @@ void DllRelease()
|
|||||||
STDAPI DllCanUnloadNow()
|
STDAPI DllCanUnloadNow()
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
if (g_cRef > 0)
|
if (g_cRef > 0)
|
||||||
{
|
{
|
||||||
hr = S_FALSE; // cocreated objects still exist, don't unload
|
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
|
hr = S_OK; // refcount is zero, ok to unload
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,4 +176,3 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppv)
|
|||||||
{
|
{
|
||||||
return CClassFactory_CreateInstance(rclsid, riid, ppv);
|
return CClassFactory_CreateInstance(rclsid, riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
void decrypt(char* toDecrypt, char* password){
|
void decrypt(char* toDecrypt, char* password) {
|
||||||
for(int i = 0; i < strlen(toDecrypt); i++){
|
for (int i = 0; i < strlen(toDecrypt); i++) {
|
||||||
toDecrypt[i] = (char)(((int)toDecrypt[i]) - 1);
|
toDecrypt[i] = (char)(((int)toDecrypt[i]) - 1);
|
||||||
toDecrypt[i] = toDecrypt[i] ^ password[i % strlen(password)];
|
toDecrypt[i] = toDecrypt[i] ^ password[i % strlen(password)];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
|
||||||
void Log(const char *toWrite){
|
void Log(const char* toWrite) {
|
||||||
FILE * pFile;
|
FILE* pFile;
|
||||||
|
|
||||||
time_t now;
|
time_t now;
|
||||||
struct tm *ts;
|
struct tm* ts;
|
||||||
char buf[80];
|
char buf[80];
|
||||||
|
|
||||||
now = time(NULL);
|
now = time(NULL);
|
||||||
@@ -17,7 +17,7 @@ void Log(const char *toWrite){
|
|||||||
ts = localtime(&now);
|
ts = localtime(&now);
|
||||||
strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S", ts);
|
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);
|
fprintf(pFile, "%s\t%s\n", buf, toWrite);
|
||||||
fclose(pFile);
|
fclose(pFile);
|
||||||
}
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
void Log(const char *toWrite);
|
void Log(const char* toWrite);
|
||||||
@@ -3,61 +3,52 @@
|
|||||||
#include "Registry.h"
|
#include "Registry.h"
|
||||||
#include "helpers.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;
|
nValue = nDefaultValue;
|
||||||
DWORD dwBufferSize(sizeof(DWORD));
|
DWORD dwBufferSize(sizeof(DWORD));
|
||||||
DWORD nResult(0);
|
DWORD nResult(0);
|
||||||
LONG nError = ::RegQueryValueExW(hKey,
|
LONG nError = ::RegQueryValueExW(hKey, strValueName.c_str(), nullptr, nullptr, reinterpret_cast<LPBYTE>(&nResult), &dwBufferSize);
|
||||||
strValueName.c_str(),
|
if (ERROR_SUCCESS == nError)
|
||||||
0,
|
{
|
||||||
NULL,
|
nValue = nResult;
|
||||||
reinterpret_cast<LPBYTE>(&nResult),
|
}
|
||||||
&dwBufferSize);
|
return nError;
|
||||||
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 nDefValue((bDefaultValue) ? 1 : 0);
|
||||||
DWORD nResult(nDefValue);
|
DWORD nResult(nDefValue);
|
||||||
LONG nError = GetDWORDRegKey(hKey, strValueName.c_str(), nResult, nDefValue);
|
LONG nError = GetDWORDRegKey(hKey, strValueName.c_str(), nResult, nDefValue);
|
||||||
if (ERROR_SUCCESS == nError)
|
if (ERROR_SUCCESS == nError)
|
||||||
{
|
{
|
||||||
bValue = (nResult != 0) ? true : false;
|
bValue = (nResult != 0) ? true : false;
|
||||||
}
|
}
|
||||||
return nError;
|
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;
|
strValue = strDefaultValue;
|
||||||
WCHAR szBuffer[512];
|
WCHAR szBuffer[512];
|
||||||
DWORD dwBufferSize = sizeof(szBuffer);
|
DWORD dwBufferSize = sizeof(szBuffer);
|
||||||
ULONG nError;
|
ULONG nError;
|
||||||
nError = RegQueryValueExW(hKey, strValueName.c_str(), 0, NULL, (LPBYTE)szBuffer, &dwBufferSize);
|
nError = RegQueryValueExW(hKey, strValueName.c_str(), nullptr, nullptr, (LPBYTE)szBuffer, &dwBufferSize);
|
||||||
if (ERROR_SUCCESS == nError)
|
if (ERROR_SUCCESS == nError)
|
||||||
{
|
{
|
||||||
strValue = szBuffer;
|
strValue = szBuffer;
|
||||||
}
|
}
|
||||||
return nError;
|
return nError;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetCharRegKey(HKEY hKey, const std::wstring &strValueName)
|
std::string GetCharRegKey(HKEY hKey, const std::wstring& strValueName)
|
||||||
{
|
{
|
||||||
char szBuffer[512];
|
char szBuffer[512];
|
||||||
memset(&szBuffer, 0x00, 512);
|
memset(&szBuffer, 0x00, 512);
|
||||||
DWORD dwBufferSize = sizeof(szBuffer);
|
DWORD dwBufferSize = sizeof(szBuffer);
|
||||||
ULONG nError;
|
ULONG nError;
|
||||||
nError = RegQueryValueExW(hKey, strValueName.c_str(), 0, NULL, (LPBYTE)szBuffer, &dwBufferSize);
|
nError = RegQueryValueExW(hKey, strValueName.c_str(), nullptr, nullptr, (LPBYTE)szBuffer, &dwBufferSize);
|
||||||
|
std::string s(szBuffer);
|
||||||
std::string s(szBuffer);
|
return s;
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "common.h"
|
#include "common.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);
|
||||||
LONG GetBoolRegKey(HKEY hKey, const std::wstring &strValueName, bool &bValue, bool bDefaultValue);
|
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);
|
LONG GetStringRegKey(HKEY hKey, const std::wstring& strValueName, std::wstring& strValue, const std::wstring& strDefaultValue);
|
||||||
std::string GetCharRegKey(HKEY hKey, const std::wstring &strValueName);
|
std::string GetCharRegKey(HKEY hKey, const std::wstring& strValueName);
|
||||||
@@ -12,15 +12,13 @@
|
|||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
|
||||||
extern HINSTANCE hInstance;
|
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),
|
_cRef(1),
|
||||||
_pCredProvCredentialEvents(NULL)
|
_pCredProvCredentialEvents(NULL)
|
||||||
{
|
{
|
||||||
DllAddRef();
|
DllAddRef();
|
||||||
|
|
||||||
ZeroMemory(_rgCredProvFieldDescriptors, sizeof(_rgCredProvFieldDescriptors));
|
ZeroMemory(_rgCredProvFieldDescriptors, sizeof(_rgCredProvFieldDescriptors));
|
||||||
ZeroMemory(_rgFieldStatePairs, sizeof(_rgFieldStatePairs));
|
ZeroMemory(_rgFieldStatePairs, sizeof(_rgFieldStatePairs));
|
||||||
ZeroMemory(_rgFieldStrings, sizeof(_rgFieldStrings));
|
ZeroMemory(_rgFieldStrings, sizeof(_rgFieldStrings));
|
||||||
@@ -33,7 +31,6 @@ RfidCredential::~RfidCredential()
|
|||||||
CoTaskMemFree(_rgFieldStrings[i]);
|
CoTaskMemFree(_rgFieldStrings[i]);
|
||||||
CoTaskMemFree(_rgCredProvFieldDescriptors[i].pszLabel);
|
CoTaskMemFree(_rgCredProvFieldDescriptors[i].pszLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
DllRelease();
|
DllRelease();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,24 +43,20 @@ HRESULT RfidCredential::Initialize(
|
|||||||
PWSTR pwzUsername,
|
PWSTR pwzUsername,
|
||||||
PWSTR pwzPassword,
|
PWSTR pwzPassword,
|
||||||
PWSTR pwzDomain
|
PWSTR pwzDomain
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(pwzPassword);
|
UNREFERENCED_PARAMETER(pwzPassword);
|
||||||
|
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
|
|
||||||
for (DWORD i = 0; SUCCEEDED(hr) && i < ARRAYSIZE(_rgCredProvFieldDescriptors); i++)
|
for (DWORD i = 0; SUCCEEDED(hr) && i < ARRAYSIZE(_rgCredProvFieldDescriptors); i++)
|
||||||
{
|
{
|
||||||
_rgFieldStatePairs[i] = rgfsp[i];
|
_rgFieldStatePairs[i] = rgfsp[i];
|
||||||
hr = FieldDescriptorCopy(rgcpfd[i], &_rgCredProvFieldDescriptors[i]);
|
hr = FieldDescriptorCopy(rgcpfd[i], &_rgCredProvFieldDescriptors[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
username = pwzUsername;
|
username = pwzUsername;
|
||||||
password = pwzPassword;
|
password = pwzPassword;
|
||||||
domain = pwzDomain;
|
domain = pwzDomain;
|
||||||
LPWSTR loginString;
|
LPWSTR loginString;
|
||||||
if(username && domain){
|
if (username && domain) {
|
||||||
loginString = new wchar_t[10 + wcslen(username) + wcslen(password)];
|
loginString = new wchar_t[10 + wcslen(username) + wcslen(password)];
|
||||||
wsprintf(loginString, L"Login as %s\\%s", domain, username);
|
wsprintf(loginString, L"Login as %s\\%s", domain, username);
|
||||||
}
|
}
|
||||||
@@ -73,35 +66,37 @@ HRESULT RfidCredential::Initialize(
|
|||||||
}
|
}
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
if(!username){
|
if (!username)
|
||||||
|
{
|
||||||
hr = SHStrDupW(L"Swipe your registered RFID credential now.", &_rgFieldStrings[SFI_DETAILS]);
|
hr = SHStrDupW(L"Swipe your registered RFID credential now.", &_rgFieldStrings[SFI_DETAILS]);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
hr = SHStrDupW(loginString, &_rgFieldStrings[SFI_DETAILS]);
|
hr = SHStrDupW(loginString, &_rgFieldStrings[SFI_DETAILS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
if(!username){
|
if (!username)
|
||||||
|
{
|
||||||
hr = SHStrDupW(L"Swipe your token", &_rgFieldStrings[SFI_MINIDETAILS]);
|
hr = SHStrDupW(L"Swipe your token", &_rgFieldStrings[SFI_MINIDETAILS]);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
hr = SHStrDupW(loginString, &_rgFieldStrings[SFI_MINIDETAILS]);
|
hr = SHStrDupW(loginString, &_rgFieldStrings[SFI_MINIDETAILS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::Advise(
|
HRESULT RfidCredential::Advise(ICredentialProviderCredentialEvents* pcpce)
|
||||||
ICredentialProviderCredentialEvents* pcpce
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
if (_pCredProvCredentialEvents != NULL)
|
if (_pCredProvCredentialEvents != nullptr)
|
||||||
{
|
{
|
||||||
_pCredProvCredentialEvents->Release();
|
_pCredProvCredentialEvents->Release();
|
||||||
}
|
}
|
||||||
_pCredProvCredentialEvents = pcpce;
|
_pCredProvCredentialEvents = pcpce;
|
||||||
_pCredProvCredentialEvents->AddRef();
|
_pCredProvCredentialEvents->AddRef();
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,28 +106,29 @@ HRESULT RfidCredential::UnAdvise()
|
|||||||
{
|
{
|
||||||
_pCredProvCredentialEvents->Release();
|
_pCredProvCredentialEvents->Release();
|
||||||
}
|
}
|
||||||
_pCredProvCredentialEvents = NULL;
|
_pCredProvCredentialEvents = nullptr;
|
||||||
|
|
||||||
return S_OK;
|
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;
|
*pbAutoLogon = TRUE;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
*pbAutoLogon = FALSE;
|
*pbAutoLogon = FALSE;
|
||||||
|
if (this->lastLoginFailed)
|
||||||
if(this->lastLoginFailed){
|
{
|
||||||
if(_pCredProvCredentialEvents != NULL){
|
if (_pCredProvCredentialEvents != nullptr)
|
||||||
|
{
|
||||||
_pCredProvCredentialEvents->SetFieldString(this, SFI_MINIDETAILS, L"Login credentials were invalid.");
|
_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->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)));
|
_pCredProvCredentialEvents->SetFieldBitmap(this, SFI_TILEIMAGE, LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(104)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,36 +138,25 @@ HRESULT RfidCredential::SetDeselected()
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::GetFieldState(
|
HRESULT RfidCredential::GetFieldState(DWORD dwFieldID, CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs, CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis)
|
||||||
DWORD dwFieldID,
|
|
||||||
CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs,
|
|
||||||
CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
if ((dwFieldID < ARRAYSIZE(_rgFieldStatePairs)) && pcpfs && pcpfis)
|
if ((dwFieldID < ARRAYSIZE(_rgFieldStatePairs)) && pcpfs && pcpfis)
|
||||||
{
|
{
|
||||||
*pcpfs = _rgFieldStatePairs[dwFieldID].cpfs;
|
*pcpfs = _rgFieldStatePairs[dwFieldID].cpfs;
|
||||||
*pcpfis = _rgFieldStatePairs[dwFieldID].cpfis;
|
*pcpfis = _rgFieldStatePairs[dwFieldID].cpfis;
|
||||||
|
|
||||||
hr = S_OK;
|
hr = S_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hr = E_INVALIDARG;
|
hr = E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::GetStringValue(
|
HRESULT RfidCredential::GetStringValue(DWORD dwFieldID, PWSTR* ppwsz)
|
||||||
DWORD dwFieldID,
|
|
||||||
PWSTR* ppwsz
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) && ppwsz)
|
if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) && ppwsz)
|
||||||
{
|
{
|
||||||
hr = SHStrDupW(_rgFieldStrings[dwFieldID], ppwsz);
|
hr = SHStrDupW(_rgFieldStrings[dwFieldID], ppwsz);
|
||||||
@@ -180,27 +165,23 @@ HRESULT RfidCredential::GetStringValue(
|
|||||||
{
|
{
|
||||||
hr = E_INVALIDARG;
|
hr = E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::GetBitmapValue(
|
HRESULT RfidCredential::GetBitmapValue(DWORD dwFieldID, HBITMAP* phbmp)
|
||||||
DWORD dwFieldID,
|
|
||||||
HBITMAP* phbmp
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
if ((SFI_TILEIMAGE == dwFieldID) && phbmp)
|
if ((SFI_TILEIMAGE == dwFieldID) && phbmp)
|
||||||
{
|
{
|
||||||
HBITMAP hbmp;
|
HBITMAP hbmp;
|
||||||
|
if (username && password && domain && !this->lastLoginFailed)
|
||||||
if(username && password && domain && !this->lastLoginFailed){
|
{
|
||||||
hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(102));
|
hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(102));
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(101));
|
hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(101));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hbmp != NULL)
|
if (hbmp != NULL)
|
||||||
{
|
{
|
||||||
hr = S_OK;
|
hr = S_OK;
|
||||||
@@ -215,95 +196,63 @@ HRESULT RfidCredential::GetBitmapValue(
|
|||||||
{
|
{
|
||||||
hr = E_INVALIDARG;
|
hr = E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::GetSubmitButtonValue(
|
HRESULT RfidCredential::GetSubmitButtonValue(DWORD dwFieldID, DWORD* pdwAdjacentTo)
|
||||||
DWORD dwFieldID,
|
|
||||||
DWORD* pdwAdjacentTo
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::SetStringValue(
|
HRESULT RfidCredential::SetStringValue(DWORD dwFieldID, PCWSTR pwz)
|
||||||
DWORD dwFieldID,
|
|
||||||
PCWSTR pwz
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFieldID);
|
UNREFERENCED_PARAMETER(dwFieldID);
|
||||||
UNREFERENCED_PARAMETER(dwFieldID);
|
UNREFERENCED_PARAMETER(dwFieldID);
|
||||||
UNREFERENCED_PARAMETER(pwz);
|
UNREFERENCED_PARAMETER(pwz);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::GetCheckboxValue(
|
HRESULT RfidCredential::GetCheckboxValue(DWORD dwFieldID, BOOL* pbChecked, PWSTR* ppwszLabel)
|
||||||
DWORD dwFieldID,
|
|
||||||
BOOL* pbChecked,
|
|
||||||
PWSTR* ppwszLabel
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFieldID);
|
UNREFERENCED_PARAMETER(dwFieldID);
|
||||||
UNREFERENCED_PARAMETER(pbChecked);
|
UNREFERENCED_PARAMETER(pbChecked);
|
||||||
UNREFERENCED_PARAMETER(ppwszLabel);
|
UNREFERENCED_PARAMETER(ppwszLabel);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::GetComboBoxValueCount(
|
HRESULT RfidCredential::GetComboBoxValueCount(DWORD dwFieldID, DWORD* pcItems, DWORD* pdwSelectedItem)
|
||||||
DWORD dwFieldID,
|
|
||||||
DWORD* pcItems,
|
|
||||||
DWORD* pdwSelectedItem
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFieldID);
|
UNREFERENCED_PARAMETER(dwFieldID);
|
||||||
UNREFERENCED_PARAMETER(pcItems);
|
UNREFERENCED_PARAMETER(pcItems);
|
||||||
UNREFERENCED_PARAMETER(pdwSelectedItem);
|
UNREFERENCED_PARAMETER(pdwSelectedItem);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::GetComboBoxValueAt(
|
HRESULT RfidCredential::GetComboBoxValueAt(DWORD dwFieldID, DWORD dwItem, PWSTR* ppwszItem)
|
||||||
DWORD dwFieldID,
|
|
||||||
DWORD dwItem,
|
|
||||||
PWSTR* ppwszItem
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFieldID);
|
UNREFERENCED_PARAMETER(dwFieldID);
|
||||||
UNREFERENCED_PARAMETER(dwItem);
|
UNREFERENCED_PARAMETER(dwItem);
|
||||||
UNREFERENCED_PARAMETER(ppwszItem);
|
UNREFERENCED_PARAMETER(ppwszItem);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::SetCheckboxValue(
|
HRESULT RfidCredential::SetCheckboxValue(DWORD dwFieldID, BOOL bChecked)
|
||||||
DWORD dwFieldID,
|
|
||||||
BOOL bChecked
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFieldID);
|
UNREFERENCED_PARAMETER(dwFieldID);
|
||||||
UNREFERENCED_PARAMETER(bChecked);
|
UNREFERENCED_PARAMETER(bChecked);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::SetComboBoxSelectedValue(
|
HRESULT RfidCredential::SetComboBoxSelectedValue(DWORD dwFieldId, DWORD dwSelectedItem)
|
||||||
DWORD dwFieldId,
|
|
||||||
DWORD dwSelectedItem
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFieldId);
|
UNREFERENCED_PARAMETER(dwFieldId);
|
||||||
UNREFERENCED_PARAMETER(dwSelectedItem);
|
UNREFERENCED_PARAMETER(dwSelectedItem);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidCredential::CommandLinkClicked(DWORD dwFieldID)
|
HRESULT RfidCredential::CommandLinkClicked(DWORD dwFieldID)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFieldID);
|
UNREFERENCED_PARAMETER(dwFieldID);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -312,9 +261,8 @@ HRESULT RfidCredential::GetSerialization(
|
|||||||
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
|
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
|
||||||
PWSTR* ppwzOptionalStatusText,
|
PWSTR* ppwzOptionalStatusText,
|
||||||
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
|
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(ppwzOptionalStatusText);
|
UNREFERENCED_PARAMETER(ppwzOptionalStatusText);
|
||||||
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);
|
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);
|
||||||
|
|
||||||
@@ -322,40 +270,35 @@ HRESULT RfidCredential::GetSerialization(
|
|||||||
ZeroMemory(&kil, sizeof(kil));
|
ZeroMemory(&kil, sizeof(kil));
|
||||||
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
this->lastLoginFailed = true;
|
this->lastLoginFailed = true;
|
||||||
|
|
||||||
WCHAR wsz[MAX_COMPUTERNAME_LENGTH+1];
|
//WCHAR wsz[MAX_COMPUTERNAME_LENGTH+1];
|
||||||
DWORD cch = ARRAYSIZE(wsz);
|
//DWORD cch = ARRAYSIZE(wsz);
|
||||||
GetComputerNameW(wsz, &cch);
|
//GetComputerNameW(wsz, &cch);
|
||||||
hr = UnicodeStringInitWithString(domain, &kil.LogonDomainName);
|
hr = UnicodeStringInitWithString(domain, &kil.LogonDomainName);
|
||||||
hr = UnicodeStringInitWithString(username, &kil.UserName);
|
hr = UnicodeStringInitWithString(username, &kil.UserName);
|
||||||
hr = UnicodeStringInitWithString(password, &kil.Password);
|
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))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
kil.MessageType = lockType;
|
pcpcs->ulAuthenticationPackage = ulAuthPackage;
|
||||||
hr = KerbInteractiveLogonPack(kil, &pcpcs->rgbSerialization, &pcpcs->cbSerialization);
|
pcpcs->clsidCredentialProvider = CLSID_RfidProvider;
|
||||||
|
*pcpgsr = CPGSR_RETURN_CREDENTIAL_FINISHED;
|
||||||
if (SUCCEEDED(hr))
|
|
||||||
{
|
|
||||||
ULONG ulAuthPackage;
|
|
||||||
hr = RetrieveNegotiateAuthPackage(&ulAuthPackage);
|
|
||||||
if (SUCCEEDED(hr))
|
|
||||||
{
|
|
||||||
pcpcs->ulAuthenticationPackage = ulAuthPackage;
|
|
||||||
pcpcs->clsidCredentialProvider = CLSID_RfidProvider;
|
|
||||||
|
|
||||||
*pcpgsr = CPGSR_RETURN_CREDENTIAL_FINISHED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
}
|
||||||
DWORD dwErr = GetLastError();
|
else
|
||||||
hr = HRESULT_FROM_WIN32(dwErr);
|
{
|
||||||
}
|
DWORD dwErr = GetLastError();
|
||||||
|
hr = HRESULT_FROM_WIN32(dwErr);
|
||||||
|
}
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,11 +307,10 @@ HRESULT RfidCredential::ReportResult(
|
|||||||
NTSTATUS ntsSubstatus,
|
NTSTATUS ntsSubstatus,
|
||||||
PWSTR* ppwszOptionalStatusText,
|
PWSTR* ppwszOptionalStatusText,
|
||||||
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
|
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(ntsSubstatus);
|
UNREFERENCED_PARAMETER(ntsSubstatus);
|
||||||
UNREFERENCED_PARAMETER(ppwszOptionalStatusText);
|
UNREFERENCED_PARAMETER(ppwszOptionalStatusText);
|
||||||
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);
|
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public:
|
|||||||
return cRef;
|
return cRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
|
STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
if (ppv != NULL)
|
if (ppv != NULL)
|
||||||
@@ -98,16 +98,16 @@ public:
|
|||||||
|
|
||||||
LONG _cRef;
|
LONG _cRef;
|
||||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR _rgCredProvFieldDescriptors[SFI_NUM_FIELDS]; // An array holding the type and
|
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
|
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
|
PWSTR _rgFieldStrings[SFI_NUM_FIELDS]; // An array holding the string
|
||||||
// value of each field. This is
|
// value of each field. This is
|
||||||
// different from the name of
|
// different from the name of
|
||||||
// the field held in
|
// the field held in
|
||||||
// _rgCredProvFieldDescriptors.
|
// _rgCredProvFieldDescriptors.
|
||||||
ICredentialProviderCredentialEvents* _pCredProvCredentialEvents;
|
ICredentialProviderCredentialEvents* _pCredProvCredentialEvents;
|
||||||
|
|
||||||
PWSTR username;
|
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>
|
<RootNamespace>RfidCredentialProvider</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<ProjectName>RfidCredentialProvider</ProjectName>
|
<ProjectName>RfidCredentialProvider</ProjectName>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<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">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<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>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<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>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</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">
|
<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" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</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">
|
<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" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</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 Label="UserMacros" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
<_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|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|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|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|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|x64'">$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
<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|x64'" />
|
||||||
|
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
<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|x64'" />
|
||||||
|
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||||
|
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||||
</PropertyGroup>
|
</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'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<Midl>
|
<Midl>
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
<TargetEnvironment>X64</TargetEnvironment>
|
||||||
</Midl>
|
</Midl>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
<MinimalRebuild>true</MinimalRebuild>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
@@ -142,7 +105,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
<AdditionalIncludeDirectories>../Serial;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>shlwapi.lib;odbc32.lib;odbccp32.lib;winscard.lib;crypt32.lib;secur32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>shlwapi.lib;odbc32.lib;odbccp32.lib;winscard.lib;crypt32.lib;secur32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
@@ -150,7 +113,31 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
<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>
|
<LinkStatus>true</LinkStatus>
|
||||||
</Link>
|
</Link>
|
||||||
<ProjectReference>
|
<ProjectReference>
|
||||||
@@ -164,7 +151,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;RFIDCREDENTIALPROVIDER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeader>
|
<PrecompiledHeader>
|
||||||
@@ -182,17 +169,39 @@
|
|||||||
<TargetMachine>MachineX64</TargetMachine>
|
<TargetMachine>MachineX64</TargetMachine>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</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>
|
<ItemGroup>
|
||||||
<ClCompile Include="Dll.cpp" />
|
<ClCompile Include="Dll.cpp" />
|
||||||
<ClCompile Include="Encryption.cpp" />
|
<ClCompile Include="Encryption.cpp" />
|
||||||
<ClCompile Include="guid.cpp" />
|
<ClCompile Include="guid.cpp" />
|
||||||
<ClCompile Include="helpers.cpp" />
|
<ClCompile Include="helpers.cpp" />
|
||||||
<ClCompile Include="Logger.cpp" />
|
<ClCompile Include="Logger.cpp" />
|
||||||
<ClCompile Include="md5.cpp" />
|
|
||||||
<ClCompile Include="RfidCredential.cpp" />
|
<ClCompile Include="RfidCredential.cpp" />
|
||||||
<ClCompile Include="RfidProvider.cpp" />
|
<ClCompile Include="RfidProvider.cpp" />
|
||||||
<ClCompile Include="Registry.cpp" />
|
<ClCompile Include="Registry.cpp" />
|
||||||
<ClCompile Include="RfidReader.cpp" />
|
|
||||||
<ClCompile Include="Serial.cpp" />
|
<ClCompile Include="Serial.cpp" />
|
||||||
<ClCompile Include="SHA1.cpp" />
|
<ClCompile Include="SHA1.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@@ -211,12 +220,10 @@
|
|||||||
<ClInclude Include="guid.h" />
|
<ClInclude Include="guid.h" />
|
||||||
<ClInclude Include="helpers.h" />
|
<ClInclude Include="helpers.h" />
|
||||||
<ClInclude Include="Logger.h" />
|
<ClInclude Include="Logger.h" />
|
||||||
<ClInclude Include="md5.h" />
|
|
||||||
<ClInclude Include="RfidCredential.h" />
|
<ClInclude Include="RfidCredential.h" />
|
||||||
<ClInclude Include="RfidProvider.h" />
|
<ClInclude Include="RfidProvider.h" />
|
||||||
<ClInclude Include="Registry.h" />
|
<ClInclude Include="Registry.h" />
|
||||||
<ClInclude Include="resource.h" />
|
<ClInclude Include="resource.h" />
|
||||||
<ClInclude Include="RfidReader.h" />
|
|
||||||
<ClInclude Include="Serial.h" />
|
<ClInclude Include="Serial.h" />
|
||||||
<ClInclude Include="SHA1.h" />
|
<ClInclude Include="SHA1.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -30,9 +30,6 @@
|
|||||||
<ClCompile Include="Serial.cpp">
|
<ClCompile Include="Serial.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="md5.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Registry.cpp">
|
<ClCompile Include="Registry.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -45,9 +42,6 @@
|
|||||||
<ClCompile Include="Logger.cpp">
|
<ClCompile Include="Logger.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="RfidReader.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Encryption.cpp">
|
<ClCompile Include="Encryption.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -91,9 +85,6 @@
|
|||||||
<ClInclude Include="Serial.h">
|
<ClInclude Include="Serial.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="md5.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Registry.h">
|
<ClInclude Include="Registry.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -109,9 +100,6 @@
|
|||||||
<ClInclude Include="Logger.h">
|
<ClInclude Include="Logger.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="RfidReader.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Encryption.h">
|
<ClInclude Include="Encryption.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "Serial.h"
|
#include "Serial.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "md5.h"
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "Registry.h"
|
#include "Registry.h"
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
@@ -25,12 +24,11 @@
|
|||||||
|
|
||||||
// RfidProvider ////////////////////////////////////////////////////////
|
// RfidProvider ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
RfidProvider::RfidProvider():
|
RfidProvider::RfidProvider() :
|
||||||
_cRef(1),
|
_cRef(1),
|
||||||
_dwNumCreds(0)
|
_dwNumCreds(0)
|
||||||
{
|
{
|
||||||
DllAddRef();
|
DllAddRef();
|
||||||
|
|
||||||
ZeroMemory(_rgpCredentials, sizeof(_rgpCredentials));
|
ZeroMemory(_rgpCredentials, sizeof(_rgpCredentials));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,49 +41,54 @@ RfidProvider::~RfidProvider()
|
|||||||
_rgpCredentials[i]->Release();
|
_rgpCredentials[i]->Release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DllRelease();
|
DllRelease();
|
||||||
}
|
}
|
||||||
|
|
||||||
char* sanatizeRfidReading(char* read){
|
char* sanatizeRfidReading(char* read)
|
||||||
|
{
|
||||||
char* out = new char[strlen(read)];
|
char* out = new char[strlen(read)];
|
||||||
memset(out, '\0', strlen(read));
|
memset(out, '\0', strlen(read));
|
||||||
|
|
||||||
bool hasTransmissionStarted = false;
|
bool hasTransmissionStarted = false;
|
||||||
|
|
||||||
HKEY hKey;
|
//HKEY hKey;
|
||||||
if(RegOpenKeyExW(HKEY_LOCAL_MACHINE, s2ws("SOFTWARE\\Tyler Menezes\\Rfid Login").c_str(), 0, KEY_READ, &hKey) != ERROR_SUCCESS){
|
//if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, s2ws("SOFTWARE\\KORNET\\WinLogin").c_str(), 0, KEY_READ, &hKey) != ERROR_SUCCESS)
|
||||||
delete hKey;
|
//{
|
||||||
return new char;
|
// delete hKey;
|
||||||
}
|
// return new char;
|
||||||
|
//}
|
||||||
|
|
||||||
char start = 0x00;
|
char start = 0x45; // "E" - Em-Marine... (Z-2 USB Reader)
|
||||||
DWORD dStart;
|
//DWORD dStart;
|
||||||
LONG sError = GetDWORDRegKey(hKey, L"Message Start", dStart, 0x00);
|
//LONG sError = GetDWORDRegKey(hKey, L"Message Start", dStart, 0x00);
|
||||||
start = (char)dStart;
|
//start = (char)dStart;
|
||||||
|
|
||||||
char end = 0x00;
|
char end = 0x0D;
|
||||||
DWORD dEnd;
|
//DWORD dEnd;
|
||||||
GetDWORDRegKey(hKey, L"Message End", dEnd, 0x00);
|
//GetDWORDRegKey(hKey, L"Message End", dEnd, 0x00);
|
||||||
end = (char)dEnd;
|
//end = (char)dEnd;
|
||||||
|
|
||||||
if(sError == 2){
|
//if (sError == 2)
|
||||||
hasTransmissionStarted = true;
|
//{
|
||||||
}
|
// hasTransmissionStarted = true;
|
||||||
|
//}
|
||||||
|
|
||||||
int c = 0;
|
int c = 0;
|
||||||
for(int i = 0; i < strlen(read); i++){
|
for (int i = 0; i < strlen(read); i++)
|
||||||
if(read[i] == start){
|
{
|
||||||
|
if (read[i] == start)
|
||||||
|
{
|
||||||
hasTransmissionStarted = true;
|
hasTransmissionStarted = true;
|
||||||
|
//continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasTransmissionStarted)
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!hasTransmissionStarted){
|
if (read[i] == end)
|
||||||
continue;
|
{
|
||||||
}
|
|
||||||
|
|
||||||
if(read[i] == end){
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,13 +100,14 @@ char* sanatizeRfidReading(char* read){
|
|||||||
|
|
||||||
HANDLE hThread;
|
HANDLE hThread;
|
||||||
bool rfidThreadRunning = true;
|
bool rfidThreadRunning = true;
|
||||||
RfidProvider *prp;
|
RfidProvider* prp;
|
||||||
bool doAutoLogin = false;
|
bool doAutoLogin = false;
|
||||||
|
|
||||||
void getCredentials(char* token){
|
void getCredentials(char* token)
|
||||||
|
{
|
||||||
HKEY hKey;
|
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;
|
delete hKey;
|
||||||
return; // Token not recognized.
|
return; // Token not recognized.
|
||||||
}
|
}
|
||||||
@@ -111,8 +115,7 @@ void getCredentials(char* token){
|
|||||||
std::wstring keySalt;
|
std::wstring keySalt;
|
||||||
GetStringRegKey(hKey, L"Salt", keySalt, L"bad");
|
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*)token, strlen(token));
|
||||||
sha1->Update((unsigned char*)s2cs(ws2s(keySalt)), wcslen(keySalt.c_str()));
|
sha1->Update((unsigned char*)s2cs(ws2s(keySalt)), wcslen(keySalt.c_str()));
|
||||||
sha1->Final();
|
sha1->Final();
|
||||||
@@ -120,10 +123,11 @@ void getCredentials(char* token){
|
|||||||
sha1->ReportHashStl(hash, CSHA1::REPORT_HEX_SHORT);
|
sha1->ReportHashStl(hash, CSHA1::REPORT_HEX_SHORT);
|
||||||
delete sha1;
|
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);
|
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;
|
delete hKey;
|
||||||
return; // Token not recognized.
|
return; // Token not recognized.
|
||||||
}
|
}
|
||||||
@@ -135,7 +139,7 @@ void getCredentials(char* token){
|
|||||||
|
|
||||||
char* cUsername = s2cs(GetCharRegKey(hKey, L"Username"));
|
char* cUsername = s2cs(GetCharRegKey(hKey, L"Username"));
|
||||||
char* cPassword = s2cs(GetCharRegKey(hKey, L"Password"));
|
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"");
|
GetStringRegKey(hKey, L"Salt", salt, L"");
|
||||||
|
|
||||||
@@ -180,50 +184,58 @@ void getCredentials(char* token){
|
|||||||
|
|
||||||
DWORD WINAPI _RfidReader(LPVOID lpParameter)
|
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);
|
memset(lastTag, '\0', 128);
|
||||||
while(lastTag[0] != '\0');
|
while (lastTag[0] != '\0');
|
||||||
|
|
||||||
int tagCount = 0;
|
int tagCount = 0;
|
||||||
|
|
||||||
while(rfidThreadRunning){
|
while (rfidThreadRunning)
|
||||||
|
{
|
||||||
Sleep(50);
|
Sleep(50);
|
||||||
|
|
||||||
char *id = new char[128];
|
char* id = new char[128];
|
||||||
memset(id, '\0', 128);
|
memset(id, '\0', 128);
|
||||||
while(id[0] != '\0');
|
while (id[0] != '\0');
|
||||||
|
|
||||||
if(tagCount >= 128){
|
if (tagCount >= 128)
|
||||||
|
{
|
||||||
tagCount = 0;
|
tagCount = 0;
|
||||||
memset(lastTag, '\0', 128);
|
memset(lastTag, '\0', 128);
|
||||||
while(lastTag[0] != '\0');
|
while (lastTag[0] != '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
s->ReadData(id, 1);
|
s->ReadData(id, 1);
|
||||||
|
|
||||||
if(strlen(id) > 0){
|
if (strlen(id) > 0)
|
||||||
for(int i = 0; i < strlen(id); i++){
|
{
|
||||||
|
for (int i = 0; i < strlen(id); i++)
|
||||||
|
{
|
||||||
lastTag[tagCount++] = id[i];
|
lastTag[tagCount++] = id[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete id;
|
delete id;
|
||||||
|
|
||||||
|
for (int i = 0; i < strlen(lastTag); i++)
|
||||||
for(int i = 0; i < strlen(lastTag); i++){
|
{
|
||||||
if(lastTag[i] == 0x03){
|
if (lastTag[i] == /*0x03*/0x0A)
|
||||||
|
{
|
||||||
char* fullTag = sanatizeRfidReading(lastTag);
|
char* fullTag = sanatizeRfidReading(lastTag);
|
||||||
|
|
||||||
printf(fullTag);
|
printf(fullTag);
|
||||||
|
//int n;
|
||||||
|
//for (n = 0; fullTag[n] != '\0'; n++)
|
||||||
|
// printf("%02x", (unsigned char)fullTag[n]);
|
||||||
|
|
||||||
getCredentials(fullTag);
|
getCredentials(fullTag);
|
||||||
|
|
||||||
tagCount = 0;
|
tagCount = 0;
|
||||||
memset(lastTag, '\0', 128);
|
memset(lastTag, '\0', 128);
|
||||||
while(lastTag[0] != '\0');
|
while (lastTag[0] != '\0');
|
||||||
|
|
||||||
delete fullTag;
|
delete fullTag;
|
||||||
|
|
||||||
@@ -233,28 +245,26 @@ DWORD WINAPI _RfidReader(LPVOID lpParameter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete lastTag;
|
delete lastTag;
|
||||||
delete s;
|
|
||||||
|
//delete s;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InitRfidReader()
|
||||||
void InitRfidReader(){
|
{
|
||||||
rfidThreadRunning = true;
|
rfidThreadRunning = true;
|
||||||
hThread = ::CreateThread(NULL, 0, _RfidReader, NULL , 0, NULL);
|
hThread = ::CreateThread(nullptr, 0, _RfidReader, nullptr, 0, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StopRfidReader(){
|
void StopRfidReader()
|
||||||
|
{
|
||||||
rfidThreadRunning = false;
|
rfidThreadRunning = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::SetUsageScenario(
|
HRESULT RfidProvider::SetUsageScenario(CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, DWORD dwFlags)
|
||||||
CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
|
|
||||||
DWORD dwFlags
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(dwFlags);
|
UNREFERENCED_PARAMETER(dwFlags);
|
||||||
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
static bool s_bCredsEnumerated = false;
|
static bool s_bCredsEnumerated = false;
|
||||||
switch (cpus)
|
switch (cpus)
|
||||||
@@ -269,81 +279,60 @@ HRESULT RfidProvider::SetUsageScenario(
|
|||||||
case CPUS_CHANGE_PASSWORD:
|
case CPUS_CHANGE_PASSWORD:
|
||||||
hr = E_NOTIMPL;
|
hr = E_NOTIMPL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
hr = E_INVALIDARG;
|
hr = E_INVALIDARG;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (!s_bCredsEnumerated)
|
||||||
if (!s_bCredsEnumerated)
|
{
|
||||||
{
|
prp = this;
|
||||||
prp = this;
|
hr = this->_EnumerateCredentials();
|
||||||
hr = this->_EnumerateCredentials();
|
s_bCredsEnumerated = true;
|
||||||
s_bCredsEnumerated = true;
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
hr = S_OK;
|
||||||
hr = S_OK;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP RfidProvider::SetSerialization(
|
STDMETHODIMP RfidProvider::SetSerialization(const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs)
|
||||||
const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(pcpcs);
|
UNREFERENCED_PARAMETER(pcpcs);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ICredentialProviderEvents* Pcpe;
|
ICredentialProviderEvents* Pcpe;
|
||||||
UINT_PTR UpAdviseContext;
|
UINT_PTR UpAdviseContext;
|
||||||
|
|
||||||
HRESULT RfidProvider::Advise(
|
HRESULT RfidProvider::Advise(ICredentialProviderEvents* pcpe, UINT_PTR upAdviseContext)
|
||||||
ICredentialProviderEvents* pcpe,
|
|
||||||
UINT_PTR upAdviseContext
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
InitRfidReader();
|
InitRfidReader();
|
||||||
|
Pcpe = pcpe;
|
||||||
Pcpe=pcpe;
|
|
||||||
Pcpe->AddRef();
|
Pcpe->AddRef();
|
||||||
UpAdviseContext=upAdviseContext;
|
UpAdviseContext = upAdviseContext;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::UnAdvise()
|
HRESULT RfidProvider::UnAdvise()
|
||||||
{
|
{
|
||||||
StopRfidReader();
|
StopRfidReader();
|
||||||
|
if (Pcpe)
|
||||||
if(Pcpe)
|
|
||||||
{
|
{
|
||||||
Pcpe->Release();
|
Pcpe->Release();
|
||||||
Pcpe=NULL;
|
Pcpe = nullptr;
|
||||||
}
|
}
|
||||||
UpAdviseContext=NULL;
|
UpAdviseContext = NULL;
|
||||||
|
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::GetFieldDescriptorCount(
|
HRESULT RfidProvider::GetFieldDescriptorCount(DWORD* pdwCount)
|
||||||
DWORD* pdwCount
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
*pdwCount = SFI_NUM_FIELDS;
|
*pdwCount = SFI_NUM_FIELDS;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::GetFieldDescriptorAt(
|
HRESULT RfidProvider::GetFieldDescriptorAt(DWORD dwIndex, CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd)
|
||||||
DWORD dwIndex,
|
|
||||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
if ((dwIndex < SFI_NUM_FIELDS) && ppcpfd)
|
if ((dwIndex < SFI_NUM_FIELDS) && ppcpfd)
|
||||||
@@ -354,26 +343,22 @@ HRESULT RfidProvider::GetFieldDescriptorAt(
|
|||||||
{
|
{
|
||||||
hr = E_INVALIDARG;
|
hr = E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::GetCredentialCount(
|
HRESULT RfidProvider::GetCredentialCount(DWORD* pdwCount, DWORD* pdwDefault, BOOL* pbAutoLogonWithDefault)
|
||||||
DWORD* pdwCount,
|
|
||||||
DWORD* pdwDefault,
|
|
||||||
BOOL* pbAutoLogonWithDefault
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
if (doAutoLogin && _dwNumCreds > 0 && !RfidCredential::lastLoginFailed)
|
||||||
if(doAutoLogin && _dwNumCreds > 0 && !RfidCredential::lastLoginFailed){
|
{
|
||||||
*pdwDefault = _dwNumCreds - 1;
|
*pdwDefault = _dwNumCreds - 1;
|
||||||
*pbAutoLogonWithDefault = TRUE;
|
*pbAutoLogonWithDefault = TRUE;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
*pdwDefault = CREDENTIAL_PROVIDER_NO_DEFAULT;
|
*pdwDefault = CREDENTIAL_PROVIDER_NO_DEFAULT;
|
||||||
*pbAutoLogonWithDefault = FALSE;
|
*pbAutoLogonWithDefault = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*pdwCount = _dwNumCreds;
|
*pdwCount = _dwNumCreds;
|
||||||
if (*pdwCount > 0)
|
if (*pdwCount > 0)
|
||||||
{
|
{
|
||||||
@@ -383,18 +368,13 @@ HRESULT RfidProvider::GetCredentialCount(
|
|||||||
{
|
{
|
||||||
hr = E_FAIL;
|
hr = E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::GetCredentialAt(
|
HRESULT RfidProvider::GetCredentialAt(DWORD dwIndex, ICredentialProviderCredential** ppcpc)
|
||||||
DWORD dwIndex,
|
|
||||||
ICredentialProviderCredential** ppcpc
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
if ((dwIndex < _dwNumCreds) && ppcpc)
|
||||||
if((dwIndex < _dwNumCreds) && ppcpc)
|
|
||||||
{
|
{
|
||||||
hr = _rgpCredentials[dwIndex]->QueryInterface(IID_ICredentialProviderCredential, reinterpret_cast<void**>(ppcpc));
|
hr = _rgpCredentials[dwIndex]->QueryInterface(IID_ICredentialProviderCredential, reinterpret_cast<void**>(ppcpc));
|
||||||
}
|
}
|
||||||
@@ -402,25 +382,17 @@ HRESULT RfidProvider::GetCredentialAt(
|
|||||||
{
|
{
|
||||||
hr = E_INVALIDARG;
|
hr = E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::_EnumerateOneCredential(
|
HRESULT RfidProvider::_EnumerateOneCredential(DWORD dwCredentialIndex, PWSTR pwzUsername, PWSTR pwzPassword, PWSTR pwzDomain)
|
||||||
DWORD dwCredentialIndex,
|
|
||||||
PWSTR pwzUsername,
|
|
||||||
PWSTR pwzPassword,
|
|
||||||
PWSTR pwzDomain
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
RfidCredential* ppc = new RfidCredential();
|
RfidCredential* ppc = new RfidCredential();
|
||||||
|
|
||||||
if (ppc)
|
if (ppc)
|
||||||
{
|
{
|
||||||
hr = ppc->Initialize(s_rgCredProvFieldDescriptors, s_rgFieldStatePairs, pwzUsername, pwzPassword, pwzDomain);
|
hr = ppc->Initialize(s_rgCredProvFieldDescriptors, s_rgFieldStatePairs, pwzUsername, pwzPassword, pwzDomain);
|
||||||
ppc->lastLoginFailed = false;
|
ppc->lastLoginFailed = false;
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
_rgpCredentials[dwCredentialIndex] = ppc;
|
_rgpCredentials[dwCredentialIndex] = ppc;
|
||||||
@@ -435,21 +407,19 @@ HRESULT RfidProvider::_EnumerateOneCredential(
|
|||||||
{
|
{
|
||||||
hr = E_OUTOFMEMORY;
|
hr = E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider::_EnumerateCredentials()
|
HRESULT RfidProvider::_EnumerateCredentials()
|
||||||
{
|
{
|
||||||
HRESULT hr = _EnumerateOneCredential(0, NULL, NULL, NULL);
|
HRESULT hr = _EnumerateOneCredential(0, NULL, NULL, NULL);
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT RfidProvider_CreateInstance(REFIID riid, void** ppv)
|
HRESULT RfidProvider_CreateInstance(REFIID riid, void** ppv)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
RfidProvider* pProvider = new RfidProvider();
|
RfidProvider* pProvider = new RfidProvider();
|
||||||
|
|
||||||
if (pProvider)
|
if (pProvider)
|
||||||
{
|
{
|
||||||
hr = pProvider->QueryInterface(riid, ppv);
|
hr = pProvider->QueryInterface(riid, ppv);
|
||||||
@@ -459,6 +429,5 @@ HRESULT RfidProvider_CreateInstance(REFIID riid, void** ppv)
|
|||||||
{
|
{
|
||||||
hr = E_OUTOFMEMORY;
|
hr = E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
#define MAX_CREDENTIALS 1
|
#define MAX_CREDENTIALS 1
|
||||||
|
|
||||||
RfidCredential *_rgpCredentials[MAX_CREDENTIALS]; // Pointers to the credentials which will be enumerated by
|
RfidCredential* _rgpCredentials[MAX_CREDENTIALS]; // Pointers to the credentials which will be enumerated by
|
||||||
// this Provider.
|
// this Provider.
|
||||||
|
|
||||||
class RfidProvider : public ICredentialProvider
|
class RfidProvider : public ICredentialProvider
|
||||||
{
|
{
|
||||||
@@ -41,7 +41,7 @@ public:
|
|||||||
return cRef;
|
return cRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
|
STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
if (IID_IUnknown == riid ||
|
if (IID_IUnknown == riid ||
|
||||||
@@ -67,7 +67,7 @@ public:
|
|||||||
IFACEMETHODIMP UnAdvise();
|
IFACEMETHODIMP UnAdvise();
|
||||||
|
|
||||||
IFACEMETHODIMP GetFieldDescriptorCount(__out DWORD* pdwCount);
|
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(
|
IFACEMETHODIMP GetCredentialCount(
|
||||||
__out DWORD* pdwCount,
|
__out DWORD* pdwCount,
|
||||||
@@ -89,18 +89,13 @@ public:
|
|||||||
__in PWSTR pwzDomain
|
__in PWSTR pwzDomain
|
||||||
);
|
);
|
||||||
|
|
||||||
DWORD _dwNumCreds;
|
DWORD _dwNumCreds;
|
||||||
|
|
||||||
ICredentialProviderEvents* Pcpe;
|
ICredentialProviderEvents* Pcpe;
|
||||||
UINT_PTR UpAdviseContext;
|
UINT_PTR UpAdviseContext;
|
||||||
protected:
|
protected:
|
||||||
RfidProvider();
|
RfidProvider();
|
||||||
__override ~RfidProvider();
|
__override ~RfidProvider();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
LONG _cRef;
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
LONG _cRef;
|
|
||||||
};
|
};
|
||||||
@@ -63,26 +63,26 @@ void CSHA1::Transform(UINT_32* pState, const UINT_8* pBuffer)
|
|||||||
memcpy(m_block, pBuffer, 64);
|
memcpy(m_block, pBuffer, 64);
|
||||||
|
|
||||||
// 4 rounds of 20 operations each. Loop unrolled.
|
// 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(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(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(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);
|
_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);
|
_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(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(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(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(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);
|
_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(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(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(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(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);
|
_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(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(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(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(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);
|
_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
|
// Add the working vars back into state
|
||||||
pState[0] += a;
|
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);
|
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]; // Overflow
|
||||||
|
|
||||||
m_count[1] += (uLen >> 29);
|
m_count[1] += (uLen >> 29);
|
||||||
|
|
||||||
UINT_32 i;
|
UINT_32 i;
|
||||||
if((j + uLen) > 63)
|
if ((j + uLen) > 63)
|
||||||
{
|
{
|
||||||
i = 64 - j;
|
i = 64 - j;
|
||||||
memcpy(&m_buffer[j], pbData, i);
|
memcpy(&m_buffer[j], pbData, i);
|
||||||
Transform(m_state, m_buffer);
|
Transform(m_state, m_buffer);
|
||||||
|
|
||||||
for( ; (i + 63) < uLen; i += 64)
|
for (; (i + 63) < uLen; i += 64)
|
||||||
Transform(m_state, &pbData[i]);
|
Transform(m_state, &pbData[i]);
|
||||||
|
|
||||||
j = 0;
|
j = 0;
|
||||||
}
|
}
|
||||||
else i = 0;
|
else i = 0;
|
||||||
|
|
||||||
if((uLen - i) != 0)
|
if ((uLen - i) != 0)
|
||||||
memcpy(&m_buffer[j], &pbData[i], uLen - i);
|
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
|
// Hash in file contents
|
||||||
bool CSHA1::HashFile(const TCHAR* tszFileName)
|
bool CSHA1::HashFile(const TCHAR* tszFileName)
|
||||||
{
|
{
|
||||||
if(tszFileName == NULL) return false;
|
if (tszFileName == NULL) return false;
|
||||||
|
|
||||||
FILE* fpIn = _tfopen(tszFileName, _T("rb"));
|
FILE* fpIn = _tfopen(tszFileName, _T("rb"));
|
||||||
if(fpIn == NULL) return false;
|
if (fpIn == NULL) return false;
|
||||||
|
|
||||||
_fseeki64(fpIn, 0, SEEK_END);
|
_fseeki64(fpIn, 0, SEEK_END);
|
||||||
const INT_64 lFileSize = _ftelli64(fpIn);
|
const INT_64 lFileSize = _ftelli64(fpIn);
|
||||||
@@ -142,13 +142,13 @@ bool CSHA1::HashFile(const TCHAR* tszFileName)
|
|||||||
UINT_8 vData[SHA1_MAX_FILE_BUFFER];
|
UINT_8 vData[SHA1_MAX_FILE_BUFFER];
|
||||||
INT_64 lRemaining = lFileSize;
|
INT_64 lRemaining = lFileSize;
|
||||||
|
|
||||||
while(lRemaining > 0)
|
while (lRemaining > 0)
|
||||||
{
|
{
|
||||||
const size_t uMaxRead = static_cast<size_t>((lRemaining > lMaxBuf) ?
|
const size_t uMaxRead = static_cast<size_t>((lRemaining > lMaxBuf) ?
|
||||||
lMaxBuf : lRemaining);
|
lMaxBuf : lRemaining);
|
||||||
|
|
||||||
const size_t uRead = fread(vData, 1, uMaxRead, fpIn);
|
const size_t uRead = fread(vData, 1, uMaxRead, fpIn);
|
||||||
if(uRead == 0)
|
if (uRead == 0)
|
||||||
{
|
{
|
||||||
fclose(fpIn);
|
fclose(fpIn);
|
||||||
return false;
|
return false;
|
||||||
@@ -169,9 +169,9 @@ void CSHA1::Final()
|
|||||||
UINT_32 i;
|
UINT_32 i;
|
||||||
|
|
||||||
UINT_8 finalcount[8];
|
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)]
|
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);
|
Update((UINT_8*)"\200", 1);
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@ void CSHA1::Final()
|
|||||||
|
|
||||||
Update(finalcount, 8); // Cause a SHA1Transform()
|
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);
|
m_digest[i] = (UINT_8)((m_state[i >> 2] >> ((3 - (i & 3)) * 8)) & 0xFF);
|
||||||
|
|
||||||
// Wipe variables for security reasons
|
// Wipe variables for security reasons
|
||||||
@@ -197,28 +197,28 @@ void CSHA1::Final()
|
|||||||
// Get the final hash as a pre-formatted string
|
// Get the final hash as a pre-formatted string
|
||||||
bool CSHA1::ReportHash(TCHAR* tszReport, REPORT_TYPE rtReportType) const
|
bool CSHA1::ReportHash(TCHAR* tszReport, REPORT_TYPE rtReportType) const
|
||||||
{
|
{
|
||||||
if(tszReport == NULL) return false;
|
if (tszReport == NULL) return false;
|
||||||
|
|
||||||
TCHAR tszTemp[16];
|
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]);
|
_sntprintf(tszTemp, 15, _T("%02X"), m_digest[0]);
|
||||||
_tcscpy(tszReport, tszTemp);
|
_tcscpy(tszReport, tszTemp);
|
||||||
|
|
||||||
const TCHAR* lpFmt = ((rtReportType == REPORT_HEX) ? _T(" %02X") : _T("%02X"));
|
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]);
|
_sntprintf(tszTemp, 15, lpFmt, m_digest[i]);
|
||||||
_tcscat(tszReport, tszTemp);
|
_tcscat(tszReport, tszTemp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(rtReportType == REPORT_DIGIT)
|
else if (rtReportType == REPORT_DIGIT)
|
||||||
{
|
{
|
||||||
_sntprintf(tszTemp, 15, _T("%u"), m_digest[0]);
|
_sntprintf(tszTemp, 15, _T("%u"), m_digest[0]);
|
||||||
_tcscpy(tszReport, tszTemp);
|
_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]);
|
_sntprintf(tszTemp, 15, _T(" %u"), m_digest[i]);
|
||||||
_tcscat(tszReport, tszTemp);
|
_tcscat(tszReport, tszTemp);
|
||||||
@@ -235,7 +235,7 @@ bool CSHA1::ReportHashStl(std::basic_string<TCHAR>& strOut, REPORT_TYPE rtReport
|
|||||||
{
|
{
|
||||||
TCHAR tszOut[84];
|
TCHAR tszOut[84];
|
||||||
const bool bResult = ReportHash(tszOut, rtReportType);
|
const bool bResult = ReportHash(tszOut, rtReportType);
|
||||||
if(bResult) strOut = tszOut;
|
if (bResult) strOut = tszOut;
|
||||||
return bResult;
|
return bResult;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -243,7 +243,7 @@ bool CSHA1::ReportHashStl(std::basic_string<TCHAR>& strOut, REPORT_TYPE rtReport
|
|||||||
// Get the raw message digest
|
// Get the raw message digest
|
||||||
bool CSHA1::GetHash(UINT_8* pbDest) const
|
bool CSHA1::GetHash(UINT_8* pbDest) const
|
||||||
{
|
{
|
||||||
if(pbDest == NULL) return false;
|
if (pbDest == NULL) return false;
|
||||||
memcpy(pbDest, m_digest, 20);
|
memcpy(pbDest, m_digest, 20);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,12 @@
|
|||||||
|
|
||||||
Serial::Serial()
|
Serial::Serial()
|
||||||
{
|
{
|
||||||
//We're not yet connected
|
// We're not yet connected
|
||||||
this->connected = false;
|
this->connected = false;
|
||||||
|
|
||||||
HKEY hKey;
|
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;
|
delete hKey;
|
||||||
return; // Token not recognized.
|
return; // Token not recognized.
|
||||||
}
|
}
|
||||||
@@ -16,24 +17,23 @@ Serial::Serial()
|
|||||||
std::wstring port;
|
std::wstring port;
|
||||||
GetStringRegKey(hKey, L"Port", port, L"COM3");
|
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(),
|
this->hSerial = CreateFile(port.c_str(),
|
||||||
GENERIC_READ | GENERIC_WRITE,
|
GENERIC_READ | GENERIC_WRITE,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
OPEN_EXISTING,
|
OPEN_EXISTING,
|
||||||
FILE_ATTRIBUTE_NORMAL,
|
FILE_ATTRIBUTE_NORMAL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
//Check if the connection was successfull
|
// Check if the connection was successfull
|
||||||
if(this->hSerial==INVALID_HANDLE_VALUE)
|
if (this->hSerial == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
//If not success full display an Error
|
// If not success full display an Error
|
||||||
if(GetLastError()==ERROR_FILE_NOT_FOUND){
|
if (GetLastError() == ERROR_FILE_NOT_FOUND)
|
||||||
|
{
|
||||||
//Print Error if neccessary
|
// Print Error if neccessary
|
||||||
printf("ERROR: Handle was not attached. Reason: %s not available.\n");
|
printf("ERROR: Handle was not attached. Reason: %s not available.\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -42,69 +42,68 @@ Serial::Serial()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//If connected we try to set the comm parameters
|
// If connected we try to set the comm parameters
|
||||||
DCB dcbSerialParams = {0};
|
DCB dcbSerialParams = { 0 };
|
||||||
|
|
||||||
//Try to get the current
|
// Try to get the current
|
||||||
if (!GetCommState(this->hSerial, &dcbSerialParams))
|
if (!GetCommState(this->hSerial, &dcbSerialParams))
|
||||||
{
|
{
|
||||||
//If impossible, show an error
|
// If impossible, show an error
|
||||||
printf("failed to get current serial parameters!");
|
printf("failed to get current serial parameters!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Define serial connection parameters for the arduino board
|
// Define serial connection parameters for the arduino board
|
||||||
dcbSerialParams.BaudRate=CBR_9600;
|
dcbSerialParams.BaudRate = CBR_9600;
|
||||||
dcbSerialParams.ByteSize=8;
|
dcbSerialParams.ByteSize = 8;
|
||||||
dcbSerialParams.StopBits=ONESTOPBIT;
|
dcbSerialParams.StopBits = ONESTOPBIT;
|
||||||
dcbSerialParams.Parity=NOPARITY;
|
dcbSerialParams.Parity = NOPARITY;
|
||||||
|
|
||||||
//Set the parameters and check for their proper application
|
// Set the parameters and check for their proper application
|
||||||
if(!SetCommState(hSerial, &dcbSerialParams))
|
if (!SetCommState(hSerial, &dcbSerialParams))
|
||||||
{
|
{
|
||||||
printf("ALERT: Could not set Serial Port parameters");
|
printf("ALERT: Could not set Serial Port parameters");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//If everything went fine we're connected
|
// If everything went fine we're connected
|
||||||
this->connected = true;
|
this->connected = true;
|
||||||
//We wait 2s as the arduino board will be reseting
|
// We wait 2s as the arduino board will be reseting
|
||||||
Sleep(ARDUINO_WAIT_TIME);
|
Sleep(ARDUINO_WAIT_TIME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial::~Serial()
|
Serial::~Serial()
|
||||||
{
|
{
|
||||||
//Check if we are connected before trying to disconnect
|
// Check if we are connected before trying to disconnect
|
||||||
if(this->connected)
|
if (this->connected)
|
||||||
{
|
{
|
||||||
//We're no longer connected
|
// We're no longer connected
|
||||||
this->connected = false;
|
this->connected = false;
|
||||||
//Close the serial handler
|
// Close the serial handler
|
||||||
CloseHandle(this->hSerial);
|
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;
|
DWORD bytesRead;
|
||||||
//Number of bytes we'll really ask to read
|
// Number of bytes we'll really ask to read
|
||||||
unsigned int toRead;
|
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);
|
ClearCommError(this->hSerial, &this->errors, &this->status);
|
||||||
|
|
||||||
//Check if there is something to read
|
// Check if there is something to read
|
||||||
if(this->status.cbInQue>0)
|
if (this->status.cbInQue > 0)
|
||||||
{
|
{
|
||||||
//If there is we check if there is enough data to read the required number
|
// 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
|
// of characters, if not we'll read only the available characters to prevent
|
||||||
//locking of the application.
|
// locking of the application.
|
||||||
if(this->status.cbInQue>nbChar)
|
if (this->status.cbInQue > nbChar)
|
||||||
{
|
{
|
||||||
toRead = nbChar;
|
toRead = nbChar;
|
||||||
}
|
}
|
||||||
@@ -113,30 +112,27 @@ int Serial::ReadData(char *buffer, unsigned int nbChar)
|
|||||||
toRead = this->status.cbInQue;
|
toRead = this->status.cbInQue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Try to read the require number of chars, and return the number of read bytes on success
|
// 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)
|
if (ReadFile(this->hSerial, buffer, toRead, &bytesRead, nullptr) && bytesRead != 0)
|
||||||
{
|
{
|
||||||
return bytesRead;
|
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;
|
return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Serial::WriteData(char *buffer, unsigned int nbChar)
|
bool Serial::WriteData(char* buffer, unsigned int nbChar)
|
||||||
{
|
{
|
||||||
DWORD bytesSend;
|
DWORD bytesSend;
|
||||||
|
|
||||||
//Try to write the buffer on the Serial port
|
// Try to write the buffer on the Serial port
|
||||||
if(!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
|
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);
|
ClearCommError(this->hSerial, &this->errors, &this->status);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -145,6 +141,6 @@ bool Serial::WriteData(char *buffer, unsigned int nbChar)
|
|||||||
|
|
||||||
bool Serial::IsConnected()
|
bool Serial::IsConnected()
|
||||||
{
|
{
|
||||||
//Simply return the connection status
|
// Simply return the connection status
|
||||||
return this->connected;
|
return this->connected;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,35 +9,32 @@
|
|||||||
|
|
||||||
class Serial
|
class Serial
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
//Serial comm handler
|
//Serial comm handler
|
||||||
HANDLE hSerial;
|
HANDLE hSerial;
|
||||||
//Connection status
|
//Connection status
|
||||||
bool connected;
|
bool connected;
|
||||||
//Get various information about the connection
|
//Get various information about the connection
|
||||||
COMSTAT status;
|
COMSTAT status;
|
||||||
//Keep track of last error
|
//Keep track of last error
|
||||||
DWORD errors;
|
DWORD errors;
|
||||||
|
public:
|
||||||
public:
|
//Initialize Serial communication with the given COM port
|
||||||
//Initialize Serial communication with the given COM port
|
Serial();
|
||||||
Serial();
|
//Close the connection
|
||||||
//Close the connection
|
//NOTA: for some reason you can't connect again before exiting
|
||||||
//NOTA: for some reason you can't connect again before exiting
|
//the program and running it again
|
||||||
//the program and running it again
|
~Serial();
|
||||||
~Serial();
|
//Read data in a buffer, if nbChar is greater than the
|
||||||
//Read data in a buffer, if nbChar is greater than the
|
//maximum number of bytes available, it will return only the
|
||||||
//maximum number of bytes available, it will return only the
|
//bytes available. The function return -1 when nothing could
|
||||||
//bytes available. The function return -1 when nothing could
|
//be read, the number of bytes actually read.
|
||||||
//be read, the number of bytes actually read.
|
int ReadData(char* buffer, unsigned int nbChar);
|
||||||
int ReadData(char *buffer, unsigned int nbChar);
|
//Writes data from a buffer through the Serial connection
|
||||||
//Writes data from a buffer through the Serial connection
|
//return true on success.
|
||||||
//return true on success.
|
bool WriteData(char* buffer, unsigned int nbChar);
|
||||||
bool WriteData(char *buffer, unsigned int nbChar);
|
//Check if we are actually connected
|
||||||
//Check if we are actually connected
|
bool IsConnected();
|
||||||
bool IsConnected();
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SERIALCLASS_H_INCLUDED
|
#endif // SERIALCLASS_H_INCLUDED
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
|
|
||||||
// {817D38B3-57BA-4478-B8E8-B50A0B48D839}
|
// {817D38B3-57BA-4478-B8E8-B50A0B48D839}
|
||||||
DEFINE_GUID(CLSID_RfidProvider,
|
DEFINE_GUID(CLSID_RfidProvider, 0x817d38b3, 0x57ba, 0x4478, 0xb8, 0xe8, 0xb5, 0xa, 0xb, 0x48, 0xd8, 0x39);
|
||||||
0x817d38b3, 0x57ba, 0x4478, 0xb8, 0xe8, 0xb5, 0xa, 0xb, 0x48, 0xd8, 0x39);
|
|
||||||
|
|||||||
@@ -15,29 +15,22 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
#define cchOUTPUT 1024
|
#define cchOUTPUT 1024
|
||||||
#define szOUTPUT_TAG "Sample"
|
#define szOUTPUT_TAG "Sample"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Copies the field descriptor pointed to by rcpfd into a buffer allocated
|
// Copies the field descriptor pointed to by rcpfd into a buffer allocated
|
||||||
// using CoTaskMemAlloc. Returns that buffer in ppcpfd.
|
// using CoTaskMemAlloc. Returns that buffer in ppcpfd.
|
||||||
//
|
//
|
||||||
HRESULT FieldDescriptorCoAllocCopy(
|
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 hr;
|
HRESULT hr;
|
||||||
DWORD cbStruct = sizeof(CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR);
|
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)
|
if (pcpfd)
|
||||||
{
|
{
|
||||||
pcpfd->dwFieldID = rcpfd.dwFieldID;
|
pcpfd->dwFieldID = rcpfd.dwFieldID;
|
||||||
pcpfd->cpft = rcpfd.cpft;
|
pcpfd->cpft = rcpfd.cpft;
|
||||||
|
|
||||||
if (rcpfd.pszLabel)
|
if (rcpfd.pszLabel)
|
||||||
{
|
{
|
||||||
hr = SHStrDupW(rcpfd.pszLabel, &pcpfd->pszLabel);
|
hr = SHStrDupW(rcpfd.pszLabel, &pcpfd->pszLabel);
|
||||||
@@ -61,8 +54,6 @@ HRESULT FieldDescriptorCoAllocCopy(
|
|||||||
CoTaskMemFree(pcpfd);
|
CoTaskMemFree(pcpfd);
|
||||||
*ppcpfd = NULL;
|
*ppcpfd = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,17 +62,12 @@ HRESULT FieldDescriptorCoAllocCopy(
|
|||||||
// allocating pcpfd. This function uses CoTaskMemAlloc to allocate memory for
|
// allocating pcpfd. This function uses CoTaskMemAlloc to allocate memory for
|
||||||
// pcpfd->pszLabel.
|
// pcpfd->pszLabel.
|
||||||
//
|
//
|
||||||
HRESULT FieldDescriptorCopy(
|
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 hr;
|
HRESULT hr;
|
||||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR cpfd;
|
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR cpfd;
|
||||||
|
|
||||||
cpfd.dwFieldID = rcpfd.dwFieldID;
|
cpfd.dwFieldID = rcpfd.dwFieldID;
|
||||||
cpfd.cpft = rcpfd.cpft;
|
cpfd.cpft = rcpfd.cpft;
|
||||||
|
|
||||||
if (rcpfd.pszLabel)
|
if (rcpfd.pszLabel)
|
||||||
{
|
{
|
||||||
hr = SHStrDupW(rcpfd.pszLabel, &cpfd.pszLabel);
|
hr = SHStrDupW(rcpfd.pszLabel, &cpfd.pszLabel);
|
||||||
@@ -91,12 +77,10 @@ HRESULT FieldDescriptorCopy(
|
|||||||
cpfd.pszLabel = NULL;
|
cpfd.pszLabel = NULL;
|
||||||
hr = S_OK;
|
hr = S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
*pcpfd = cpfd;
|
*pcpfd = cpfd;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
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
|
// 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.
|
// exact GetSerialization call where the sample uses it.
|
||||||
//
|
//
|
||||||
HRESULT UnicodeStringInitWithString(
|
HRESULT UnicodeStringInitWithString(PWSTR pwz, UNICODE_STRING* pus)
|
||||||
PWSTR pwz,
|
|
||||||
UNICODE_STRING* pus
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
if (pwz)
|
if (pwz)
|
||||||
@@ -151,16 +132,11 @@ HRESULT UnicodeStringInitWithString(
|
|||||||
// You can read more about the UNICODE_STRING type at:
|
// 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
|
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/unicode_string.asp
|
||||||
//
|
//
|
||||||
static void _UnicodeStringPackedUnicodeStringCopy(
|
static void _UnicodeStringPackedUnicodeStringCopy(const UNICODE_STRING& rus, PWSTR pwzBuffer, UNICODE_STRING* pus)
|
||||||
const UNICODE_STRING& rus,
|
|
||||||
PWSTR pwzBuffer,
|
|
||||||
UNICODE_STRING* pus
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
pus->Length = rus.Length;
|
pus->Length = rus.Length;
|
||||||
pus->MaximumLength = rus.Length;
|
pus->MaximumLength = rus.Length;
|
||||||
pus->Buffer = pwzBuffer;
|
pus->Buffer = pwzBuffer;
|
||||||
|
|
||||||
CopyMemory(pus->Buffer, rus.Buffer, pus->Length);
|
CopyMemory(pus->Buffer, rus.Buffer, pus->Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,11 +158,7 @@ static void _UnicodeStringPackedUnicodeStringCopy(
|
|||||||
// http://msdn.microsoft.com/msdnmag/issues/05/06/SecurityBriefs/#void
|
// http://msdn.microsoft.com/msdnmag/issues/05/06/SecurityBriefs/#void
|
||||||
//
|
//
|
||||||
|
|
||||||
HRESULT KerbInteractiveLogonPack(
|
HRESULT KerbInteractiveLogonPack(const KERB_INTERACTIVE_LOGON& rkil, BYTE** prgb, DWORD* pcb)
|
||||||
const KERB_INTERACTIVE_LOGON& rkil,
|
|
||||||
BYTE** prgb,
|
|
||||||
DWORD* pcb
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
@@ -232,7 +204,6 @@ HRESULT KerbInteractiveLogonPack(
|
|||||||
{
|
{
|
||||||
hr = E_OUTOFMEMORY;
|
hr = E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +219,7 @@ HRESULT LsaInitString(PSTRING pszDestinationString, PCSTR pszSourceString)
|
|||||||
{
|
{
|
||||||
pszDestinationString->Buffer = (PCHAR)pszSourceString;
|
pszDestinationString->Buffer = (PCHAR)pszSourceString;
|
||||||
pszDestinationString->Length = usLength;
|
pszDestinationString->Length = usLength;
|
||||||
pszDestinationString->MaximumLength = pszDestinationString->Length+1;
|
pszDestinationString->MaximumLength = pszDestinationString->Length + 1;
|
||||||
hr = S_OK;
|
hr = S_OK;
|
||||||
}
|
}
|
||||||
return hr;
|
return hr;
|
||||||
@@ -259,15 +230,13 @@ HRESULT LsaInitString(PSTRING pszDestinationString, PCSTR pszSourceString)
|
|||||||
// For more information on auth packages see this msdn page:
|
// 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
|
// 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;
|
HRESULT hr;
|
||||||
HANDLE hLsa;
|
HANDLE hLsa;
|
||||||
|
|
||||||
NTSTATUS status = LsaConnectUntrusted(&hLsa);
|
NTSTATUS status = LsaConnectUntrusted(&hLsa);
|
||||||
if (SUCCEEDED(HRESULT_FROM_NT(status)))
|
if (SUCCEEDED(HRESULT_FROM_NT(status)))
|
||||||
{
|
{
|
||||||
|
|
||||||
ULONG ulAuthPackage;
|
ULONG ulAuthPackage;
|
||||||
LSA_STRING lsaszKerberosName;
|
LSA_STRING lsaszKerberosName;
|
||||||
LsaInitString(&lsaszKerberosName, NEGOSSP_NAME_A);
|
LsaInitString(&lsaszKerberosName, NEGOSSP_NAME_A);
|
||||||
@@ -286,9 +255,8 @@ HRESULT RetrieveNegotiateAuthPackage(ULONG * pulAuthPackage)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hr= HRESULT_FROM_NT(status);
|
hr = HRESULT_FROM_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,46 +272,44 @@ std::wstring s2ws(const std::string& s)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ws2s(const std::wstring& si){
|
std::string ws2s(const std::wstring& si)
|
||||||
|
{
|
||||||
std::wstring ws(si);
|
std::wstring ws(si);
|
||||||
std::string s;
|
std::string s;
|
||||||
s.assign(ws.begin(), ws.end());
|
s.assign(ws.begin(), ws.end());
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
wchar_t* wcs2cs(std::wstring& s){
|
wchar_t* wcs2cs(std::wstring& s)
|
||||||
|
{
|
||||||
std::vector<wchar_t> v(s.length() + 1);
|
std::vector<wchar_t> v(s.length() + 1);
|
||||||
std::wcscpy(&v[0], s.c_str());
|
std::wcscpy(&v[0], s.c_str());
|
||||||
wchar_t* w = &v[0];
|
wchar_t* w = &v[0];
|
||||||
s = w;
|
s = w;
|
||||||
|
|
||||||
wchar_t* w2 = new wchar_t[wcslen(w) + 1];
|
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[i] = w[i];
|
||||||
}
|
}
|
||||||
w2[wcslen(w)] = L'\0';
|
w2[wcslen(w)] = L'\0';
|
||||||
|
|
||||||
return w2;
|
return w2;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* s2cs(std::string& s){
|
char* s2cs(std::string& s)
|
||||||
|
{
|
||||||
std::vector<char> v(s.length() + 1);
|
std::vector<char> v(s.length() + 1);
|
||||||
std::strcpy(&v[0], s.c_str());
|
std::strcpy(&v[0], s.c_str());
|
||||||
char* w = &v[0];
|
char* w = &v[0];
|
||||||
s = w;
|
s = w;
|
||||||
|
|
||||||
char* w2 = new char[strlen(w) + 1];
|
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[i] = w[i];
|
||||||
}
|
}
|
||||||
w2[strlen(w)] = L'\0';
|
w2[strlen(w)] = L'\0';
|
||||||
|
|
||||||
return w2;
|
return w2;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char* s2ucs(std::string& s){
|
unsigned char* s2ucs(std::string& s)
|
||||||
|
{
|
||||||
unsigned char* cs = (unsigned char*)s2cs(s);
|
unsigned char* cs = (unsigned char*)s2cs(s);
|
||||||
return cs;
|
return cs;
|
||||||
}
|
}
|
||||||
@@ -12,29 +12,29 @@
|
|||||||
#pragma warning(pop)
|
#pragma warning(pop)
|
||||||
|
|
||||||
HRESULT FieldDescriptorCoAllocCopy(
|
HRESULT FieldDescriptorCoAllocCopy(
|
||||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd
|
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd
|
||||||
);
|
);
|
||||||
|
|
||||||
HRESULT FieldDescriptorCopy(
|
HRESULT FieldDescriptorCopy(
|
||||||
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR& rcpfd,
|
||||||
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd
|
CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* pcpfd
|
||||||
);
|
);
|
||||||
|
|
||||||
HRESULT UnicodeStringInitWithString(
|
HRESULT UnicodeStringInitWithString(
|
||||||
PWSTR pwz,
|
PWSTR pwz,
|
||||||
UNICODE_STRING* pus
|
UNICODE_STRING* pus
|
||||||
);
|
);
|
||||||
|
|
||||||
HRESULT KerbInteractiveLogonPack(
|
HRESULT KerbInteractiveLogonPack(
|
||||||
const KERB_INTERACTIVE_LOGON& rkil,
|
const KERB_INTERACTIVE_LOGON& rkil,
|
||||||
BYTE** prgb,
|
BYTE** prgb,
|
||||||
DWORD* pcb
|
DWORD* pcb
|
||||||
);
|
);
|
||||||
|
|
||||||
HRESULT RetrieveNegotiateAuthPackage(
|
HRESULT RetrieveNegotiateAuthPackage(
|
||||||
ULONG * pulAuthPackage
|
ULONG* pulAuthPackage
|
||||||
);
|
);
|
||||||
|
|
||||||
std::wstring s2ws(const std::string& s);
|
std::wstring s2ws(const std::string& s);
|
||||||
std::string ws2s(const std::wstring& si);
|
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
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 2010
|
# 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}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CredUILauncher", "Provider\CredUILauncher\CredUILauncher.vcxproj", "{D1F100CA-0215-405D-9B43-7C0AAAAC8880}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RfidCredentialProvider", "Provider\RfidCredentialProvider\RfidCredentialProvider.vcxproj", "{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}"
|
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
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegisterSystem", "Installer\RegisterSystem\RegisterSystem.csproj", "{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegisterSystem", "Installer\RegisterSystem\RegisterSystem.csproj", "{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}"
|
||||||
EndProject
|
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
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
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|Win32 = Debug|Win32
|
||||||
Debug|x64 = Debug|x64
|
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|Win32 = Release|Win32
|
||||||
Release|x64 = Release|x64
|
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
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
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.ActiveCfg = Debug|Win32
|
||||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|Win32.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Debug|x64.Build.0 = 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.ActiveCfg = Release|Win32
|
||||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|Win32.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880}.Release|x64.Build.0 = 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.ActiveCfg = Debug|Win32
|
||||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|Win32.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Debug|x64.Build.0 = 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.ActiveCfg = Release|Win32
|
||||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|Win32.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x64.Build.0 = Release|x64
|
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x64.Build.0 = Release|x64
|
||||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x86.ActiveCfg = Release|Win32
|
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Win32.ActiveCfg = Debug|x86
|
||||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314}.Release|x86.Build.0 = Release|Win32
|
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|Win32.Build.0 = Debug|x86
|
||||||
{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|x64.ActiveCfg = Debug|x64
|
{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|x64.Build.0 = Debug|x64
|
||||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Win32.ActiveCfg = Release|x86
|
||||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Debug|x86.Build.0 = Debug|Any CPU
|
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|Win32.Build.0 = Release|x86
|
||||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
|
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x64.ActiveCfg = Release|x64
|
||||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
|
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.Release|x64.Build.0 = Release|x64
|
||||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Win32.ActiveCfg = Debug|x86
|
||||||
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
|
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|Win32.Build.0 = Debug|x86
|
||||||
{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
|
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|x64.ActiveCfg = Debug|x64
|
{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|x64.Build.0 = Debug|x64
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Win32.ActiveCfg = Release|x86
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Debug|x86.Build.0 = Debug|Any CPU
|
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|Win32.Build.0 = Release|x86
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
|
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x64.ActiveCfg = Release|x64
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
|
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.Release|x64.Build.0 = Release|x64
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Win32.ActiveCfg = Debug|x86
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
|
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|Win32.Build.0 = Debug|x86
|
||||||
{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
|
|
||||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|x64.ActiveCfg = Debug|x64
|
{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|x64.Build.0 = Debug|x64
|
||||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Win32.ActiveCfg = Release|x86
|
||||||
{80614F74-563D-418E-9BF6-1294F73521C0}.Debug|x86.Build.0 = Debug|Any CPU
|
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|Win32.Build.0 = Release|x86
|
||||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
|
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x64.ActiveCfg = Release|x64
|
||||||
{80614F74-563D-418E-9BF6-1294F73521C0}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
|
{80614F74-563D-418E-9BF6-1294F73521C0}.Release|x64.Build.0 = Release|x64
|
||||||
{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
|
|
||||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|Win32.ActiveCfg = Debug|x86
|
{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|Win32.Build.0 = Debug|x86
|
||||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Debug|x64.ActiveCfg = Debug|x64
|
{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|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.ActiveCfg = Release|x86
|
||||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|Win32.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB}.Release|x64.Build.0 = 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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{DD093E4D-DFE5-4ECD-ADBD-AA71A05F1314} = {10910983-E6AF-4824-88CD-992A97E780D4}
|
|
||||||
{D1F100CA-0215-405D-9B43-7C0AAAAC8880} = {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}
|
{C4C2A78E-01F3-4D2C-A3FB-1C90D8F58033} = {3E73C0BD-A239-468D-9302-26B12CFA90F5}
|
||||||
{23AD43FF-38F2-4FEC-9FAA-D7B2FA54492B} = {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}
|
{80614F74-563D-418E-9BF6-1294F73521C0} = {3E73C0BD-A239-468D-9302-26B12CFA90F5}
|
||||||
{392410E4-C8FF-4E9F-BA6F-D791F95A6CDB} = {55ED87CD-50E1-4D9D-8F82-64C7E131B5C2}
|
{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
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
Reference in New Issue
Block a user