From 3c43b372dc69862a7cbf971018227bc4c12fb80b Mon Sep 17 00:00:00 2001 From: ElenaSubbotina Date: Tue, 26 Jul 2016 16:23:43 +0300 Subject: [PATCH] OoxCryptReader --- ASCOfficeDocxFile2/X2tConverter_win_test.sln | 337 ++++++++++++++++-- OfficeCryptReader/source/CryptTransform.cpp | 302 ++++++++++++++++ .../source}/CryptTransform.h | 70 +++- OfficeCryptReader/source/ECMACryptReader.cpp | 165 ++++++--- OfficeCryptReader/source/ECMACryptReader.h | 17 +- .../win32/ECMACryptReader.vcproj | 6 +- OfficeCryptTransform/CryptTransform.cpp | 34 -- X2tConverter/src/ASCConverters.cpp | 50 ++- X2tConverter/src/ASCConverters.h | 5 +- 9 files changed, 838 insertions(+), 148 deletions(-) create mode 100644 OfficeCryptReader/source/CryptTransform.cpp rename {OfficeCryptTransform => OfficeCryptReader/source}/CryptTransform.h (64%) delete mode 100644 OfficeCryptTransform/CryptTransform.cpp diff --git a/ASCOfficeDocxFile2/X2tConverter_win_test.sln b/ASCOfficeDocxFile2/X2tConverter_win_test.sln index 534cc074ac..7b6d26f3f7 100644 --- a/ASCOfficeDocxFile2/X2tConverter_win_test.sln +++ b/ASCOfficeDocxFile2/X2tConverter_win_test.sln @@ -16,13 +16,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphics", "..\DesktopEdito EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cximage", "..\DesktopEditor\cximage\CxImage\cximage_vs2005.vcproj", "{BC52A07C-A797-423D-8C4F-8678805BBB36}" ProjectSection(ProjectDependencies) = postProject - {818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470} - {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} - {9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E} - {40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E} - {0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3} - {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} {43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7} + {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} + {0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3} + {40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E} + {9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E} + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} + {818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jasper", "..\DesktopEditor\cximage\jasper\jasper_vs2005.vcproj", "{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}" @@ -63,29 +63,30 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "X2tTest", "..\X2tConverter\test\win32Test\X2tTest.vcproj", "{355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}" ProjectSection(ProjectDependencies) = postProject {C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383} - {C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C} - {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} - {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} - {7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15} - {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} - {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} - {A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0} - {36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302} - {AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345} - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} - {C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56} - {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} - {21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0} - {609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812} - {50E20601-4A8D-4AFB-8870-63828D328429} = {50E20601-4A8D-4AFB-8870-63828D328429} - {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} - {94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A} - {BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E} - {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} - {F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363} - {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} - {BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36} + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} {41BED424-4EAF-4053-8A5F-1E2A387D53D1} = {41BED424-4EAF-4053-8A5F-1E2A387D53D1} + {BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36} + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} + {F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363} + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} + {BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E} + {94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A} + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} + {50E20601-4A8D-4AFB-8870-63828D328429} = {50E20601-4A8D-4AFB-8870-63828D328429} + {609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812} + {21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0} + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} + {C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56} + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} + {AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345} + {36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302} + {A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0} + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} + {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} + {7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15} + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XlsFormat", "..\ASCOfficeXlsFile2\source\win32\XlsFormat.vcproj", "{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}" @@ -106,10 +107,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Oox2OdfConverter", "..\ASCO EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ECMACryptReader", "..\OfficeCryptReader\win32\ECMACryptReader.vcproj", "{C27E9A9F-3A17-4482-9C5F-BF15C01E747C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "..\Common\3dParty\cryptopp\cryptlib.vcproj", "{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 + DLL-Import Debug|Win32 = DLL-Import Debug|Win32 + DLL-Import Debug|x64 = DLL-Import Debug|x64 + DLL-Import Release|Win32 = DLL-Import Release|Win32 + DLL-Import Release|x64 = DLL-Import Release|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 ReleaseASC|Win32 = ReleaseASC|Win32 @@ -122,6 +129,14 @@ Global {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.Build.0 = Debug|Win32 {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|x64.ActiveCfg = Debug|x64 {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|x64.Build.0 = Debug|x64 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.DLL-Import Release|x64.Build.0 = Release|x64 {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.ActiveCfg = Release|Win32 {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.Build.0 = Release|Win32 {A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|x64.ActiveCfg = Release|Win32 @@ -136,6 +151,14 @@ Global {36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|Win32.Build.0 = Debug|Win32 {36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|x64.ActiveCfg = Debug|x64 {36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|x64.Build.0 = Debug|x64 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {36636678-AE25-4BE6-9A34-2561D1BCF302}.DLL-Import Release|x64.Build.0 = Release|x64 {36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|Win32.ActiveCfg = Release|Win32 {36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|Win32.Build.0 = Release|Win32 {36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|x64.ActiveCfg = Release|Win32 @@ -149,6 +172,14 @@ Global {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32 {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64 {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|x64.Build.0 = Release|x64 {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32 {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32 {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|Win32 @@ -162,6 +193,14 @@ Global {C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.Build.0 = Debug|Win32 {C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.ActiveCfg = Debug|x64 {C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.Build.0 = Debug|x64 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|x64.Build.0 = Release|x64 {C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.ActiveCfg = Release|Win32 {C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.Build.0 = Release|Win32 {C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.ActiveCfg = Release|Win32 @@ -175,6 +214,14 @@ Global {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.Build.0 = Debug|Win32 {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.ActiveCfg = Debug|x64 {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.Build.0 = Debug|x64 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|x64.Build.0 = Release|x64 {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.ActiveCfg = Release|Win32 {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.Build.0 = Release|Win32 {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.ActiveCfg = Release|Win32 @@ -188,6 +235,14 @@ Global {BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.Build.0 = Debug|Win32 {BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.ActiveCfg = Debug|x64 {BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.Build.0 = Debug|x64 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|x64.Build.0 = Release|x64 {BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.ActiveCfg = Release|Win32 {BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.Build.0 = Release|Win32 {BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.ActiveCfg = Release|Win32 @@ -201,6 +256,14 @@ Global {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.Build.0 = Debug|Win32 {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.ActiveCfg = Debug|x64 {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.Build.0 = Debug|x64 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|x64.Build.0 = Release|x64 {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.ActiveCfg = Release|Win32 {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.Build.0 = Release|Win32 {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.ActiveCfg = Release|Win32 @@ -214,6 +277,14 @@ Global {40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.Build.0 = Debug|Win32 {40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.ActiveCfg = Debug|x64 {40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.Build.0 = Debug|x64 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|x64.Build.0 = Release|x64 {40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.ActiveCfg = Release|Win32 {40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.Build.0 = Release|Win32 {40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.ActiveCfg = Release|Win32 @@ -227,6 +298,14 @@ Global {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.Build.0 = Debug|Win32 {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.ActiveCfg = Debug|x64 {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.Build.0 = Debug|x64 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|x64.Build.0 = Release|x64 {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.ActiveCfg = Release|Win32 {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.Build.0 = Release|Win32 {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.ActiveCfg = Release|Win32 @@ -240,6 +319,14 @@ Global {0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.Build.0 = Debug|Win32 {0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.ActiveCfg = Debug|x64 {0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.Build.0 = Debug|x64 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|x64.Build.0 = Release|x64 {0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.ActiveCfg = Release|Win32 {0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.Build.0 = Release|Win32 {0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.ActiveCfg = Release|Win32 @@ -253,6 +340,14 @@ Global {818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.Build.0 = Debug|Win32 {818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.ActiveCfg = Debug|x64 {818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.Build.0 = Debug|x64 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|x64.Build.0 = Release|x64 {818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.ActiveCfg = Release|Win32 {818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.Build.0 = Release|Win32 {818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.ActiveCfg = Release|Win32 @@ -266,6 +361,14 @@ Global {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.Build.0 = Debug|Win32 {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.ActiveCfg = Debug|x64 {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.Build.0 = Debug|x64 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|x64.Build.0 = Release|x64 {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.ActiveCfg = Release|Win32 {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.Build.0 = Release|Win32 {9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.ActiveCfg = Release|Win32 @@ -279,6 +382,14 @@ Global {DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.Build.0 = Debug|Win32 {DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.ActiveCfg = Debug|x64 {DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.Build.0 = Debug|x64 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|x64.Build.0 = Release|x64 {DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.ActiveCfg = Release|Win32 {DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.Build.0 = Release|Win32 {DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.ActiveCfg = Release|Win32 @@ -292,6 +403,14 @@ Global {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.Build.0 = Debug|Win32 {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.ActiveCfg = Debug|x64 {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.Build.0 = Debug|x64 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|x64.Build.0 = Release|x64 {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.ActiveCfg = Release|Win32 {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.Build.0 = Release|Win32 {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.ActiveCfg = Release|Win32 @@ -305,6 +424,14 @@ Global {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.Build.0 = Debug|Win32 {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.ActiveCfg = Debug|x64 {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.Build.0 = Debug|x64 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|x64.Build.0 = Release|x64 {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.ActiveCfg = Release|Win32 {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.Build.0 = Release|Win32 {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.ActiveCfg = Release|Win32 @@ -318,6 +445,14 @@ Global {21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.Build.0 = Debug|Win32 {21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.ActiveCfg = Debug|x64 {21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.Build.0 = Debug|x64 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|x64.Build.0 = Release|x64 {21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.ActiveCfg = Release|Win32 {21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.Build.0 = Release|Win32 {21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.ActiveCfg = Release|Win32 @@ -331,6 +466,14 @@ Global {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.Debug|Win32.Build.0 = Debug|Win32 {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.Debug|x64.ActiveCfg = Debug|x64 {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.Debug|x64.Build.0 = Debug|x64 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.DLL-Import Release|x64.Build.0 = Release|x64 {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.Release|Win32.ActiveCfg = Release|Win32 {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.Release|Win32.Build.0 = Release|Win32 {AF2D00A7-A351-4700-AE88-C1D9ADE29345}.Release|x64.ActiveCfg = Release|x64 @@ -345,6 +488,14 @@ Global {C5371405-338F-4B70-83BD-2A5CDF64F383}.Debug|Win32.Build.0 = Debug|Win32 {C5371405-338F-4B70-83BD-2A5CDF64F383}.Debug|x64.ActiveCfg = Debug|x64 {C5371405-338F-4B70-83BD-2A5CDF64F383}.Debug|x64.Build.0 = Debug|x64 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {C5371405-338F-4B70-83BD-2A5CDF64F383}.DLL-Import Release|x64.Build.0 = Release|x64 {C5371405-338F-4B70-83BD-2A5CDF64F383}.Release|Win32.ActiveCfg = Release|Win32 {C5371405-338F-4B70-83BD-2A5CDF64F383}.Release|Win32.Build.0 = Release|Win32 {C5371405-338F-4B70-83BD-2A5CDF64F383}.Release|x64.ActiveCfg = Release|x64 @@ -359,6 +510,14 @@ Global {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Debug|Win32.Build.0 = Debug|Win32 {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Debug|x64.ActiveCfg = Debug|x64 {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Debug|x64.Build.0 = Debug|x64 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.DLL-Import Release|x64.Build.0 = Release|x64 {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Release|Win32.ActiveCfg = Release|Win32 {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Release|Win32.Build.0 = Release|Win32 {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Release|x64.ActiveCfg = Release|x64 @@ -373,6 +532,14 @@ Global {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.Build.0 = Debug|Win32 {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.ActiveCfg = Debug|x64 {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.Build.0 = Debug|x64 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|x64.Build.0 = Release|x64 {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.ActiveCfg = Release|Win32 {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.Build.0 = Release|Win32 {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.ActiveCfg = Release|x64 @@ -387,6 +554,14 @@ Global {7B27E40E-F70A-4A74-A77C-0944D7931D15}.Debug|Win32.Build.0 = Debug|Win32 {7B27E40E-F70A-4A74-A77C-0944D7931D15}.Debug|x64.ActiveCfg = Debug|x64 {7B27E40E-F70A-4A74-A77C-0944D7931D15}.Debug|x64.Build.0 = Debug|x64 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {7B27E40E-F70A-4A74-A77C-0944D7931D15}.DLL-Import Release|x64.Build.0 = Release|x64 {7B27E40E-F70A-4A74-A77C-0944D7931D15}.Release|Win32.ActiveCfg = Release|Win32 {7B27E40E-F70A-4A74-A77C-0944D7931D15}.Release|Win32.Build.0 = Release|Win32 {7B27E40E-F70A-4A74-A77C-0944D7931D15}.Release|x64.ActiveCfg = Release|x64 @@ -401,6 +576,14 @@ Global {F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.Build.0 = Debug|Win32 {F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.ActiveCfg = Debug|x64 {F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.Build.0 = Debug|x64 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|x64.Build.0 = Release|x64 {F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.ActiveCfg = Release|Win32 {F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.Build.0 = Release|Win32 {F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.ActiveCfg = Release|x64 @@ -414,6 +597,12 @@ Global {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.Debug|Win32.ActiveCfg = Debug|Win32 {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.Debug|Win32.Build.0 = Debug|Win32 {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.Debug|x64.ActiveCfg = Debug|Win32 + {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.DLL-Import Debug|x64.ActiveCfg = Debug|Win32 + {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.DLL-Import Release|x64.ActiveCfg = Release|Win32 {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.Release|Win32.ActiveCfg = Release|Win32 {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.Release|Win32.Build.0 = Release|Win32 {355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}.Release|x64.ActiveCfg = Release|Win32 @@ -427,6 +616,14 @@ Global {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.Debug|Win32.Build.0 = Debug|Win32 {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.Debug|x64.ActiveCfg = Debug|x64 {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.Debug|x64.Build.0 = Debug|x64 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.DLL-Import Release|x64.Build.0 = Release|x64 {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.Release|Win32.ActiveCfg = Release|Win32 {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.Release|Win32.Build.0 = Release|Win32 {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}.Release|x64.ActiveCfg = Release|x64 @@ -441,6 +638,14 @@ Global {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.Debug|Win32.Build.0 = Debug|Win32 {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.Debug|x64.ActiveCfg = Debug|x64 {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.Debug|x64.Build.0 = Debug|x64 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.DLL-Import Release|x64.Build.0 = Release|x64 {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.Release|Win32.ActiveCfg = Release|Win32 {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.Release|Win32.Build.0 = Release|Win32 {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}.Release|x64.ActiveCfg = Release|x64 @@ -455,6 +660,14 @@ Global {609ED938-3CA8-4BED-B363-25096D4C4812}.Debug|Win32.Build.0 = Debug|Win32 {609ED938-3CA8-4BED-B363-25096D4C4812}.Debug|x64.ActiveCfg = Debug|x64 {609ED938-3CA8-4BED-B363-25096D4C4812}.Debug|x64.Build.0 = Debug|x64 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {609ED938-3CA8-4BED-B363-25096D4C4812}.DLL-Import Release|x64.Build.0 = Release|x64 {609ED938-3CA8-4BED-B363-25096D4C4812}.Release|Win32.ActiveCfg = Release|Win32 {609ED938-3CA8-4BED-B363-25096D4C4812}.Release|Win32.Build.0 = Release|Win32 {609ED938-3CA8-4BED-B363-25096D4C4812}.Release|x64.ActiveCfg = Release|x64 @@ -469,6 +682,14 @@ Global {50E20601-4A8D-4AFB-8870-63828D328429}.Debug|Win32.Build.0 = Debug|Win32 {50E20601-4A8D-4AFB-8870-63828D328429}.Debug|x64.ActiveCfg = Debug|x64 {50E20601-4A8D-4AFB-8870-63828D328429}.Debug|x64.Build.0 = Debug|x64 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {50E20601-4A8D-4AFB-8870-63828D328429}.DLL-Import Release|x64.Build.0 = Release|x64 {50E20601-4A8D-4AFB-8870-63828D328429}.Release|Win32.ActiveCfg = Release|Win32 {50E20601-4A8D-4AFB-8870-63828D328429}.Release|Win32.Build.0 = Release|Win32 {50E20601-4A8D-4AFB-8870-63828D328429}.Release|x64.ActiveCfg = Release|x64 @@ -483,6 +704,14 @@ Global {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.Debug|Win32.Build.0 = Debug|Win32 {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.Debug|x64.ActiveCfg = Debug|x64 {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.Debug|x64.Build.0 = Debug|x64 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.DLL-Import Release|x64.Build.0 = Release|x64 {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.Release|Win32.ActiveCfg = Release|Win32 {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.Release|Win32.Build.0 = Release|Win32 {41BED424-4EAF-4053-8A5F-1E2A387D53D1}.Release|x64.ActiveCfg = Release|x64 @@ -497,6 +726,14 @@ Global {94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug|Win32.Build.0 = Debug|Win32 {94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug|x64.ActiveCfg = Debug|x64 {94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug|x64.Build.0 = Debug|x64 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {94954A67-A853-43B1-A727-6EF2774C5A6A}.DLL-Import Release|x64.Build.0 = Release|x64 {94954A67-A853-43B1-A727-6EF2774C5A6A}.Release|Win32.ActiveCfg = Release|Win32 {94954A67-A853-43B1-A727-6EF2774C5A6A}.Release|Win32.Build.0 = Release|Win32 {94954A67-A853-43B1-A727-6EF2774C5A6A}.Release|x64.ActiveCfg = Release|x64 @@ -511,6 +748,14 @@ Global {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|Win32.Build.0 = Debug|Win32 {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|x64.ActiveCfg = Debug|x64 {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|x64.Build.0 = Debug|x64 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.DLL-Import Release|x64.Build.0 = Release|x64 {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|Win32.ActiveCfg = Release|Win32 {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|Win32.Build.0 = Release|Win32 {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|x64.ActiveCfg = Release|x64 @@ -525,6 +770,14 @@ Global {BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug|Win32.Build.0 = Debug|Win32 {BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug|x64.ActiveCfg = Debug|x64 {BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug|x64.Build.0 = Debug|x64 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Debug|x64.ActiveCfg = Debug|x64 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Debug|x64.Build.0 = Debug|x64 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Release|x64.ActiveCfg = Release|x64 + {BEE01B53-244A-44E6-8947-ED9342D9247E}.DLL-Import Release|x64.Build.0 = Release|x64 {BEE01B53-244A-44E6-8947-ED9342D9247E}.Release|Win32.ActiveCfg = Release|Win32 {BEE01B53-244A-44E6-8947-ED9342D9247E}.Release|Win32.Build.0 = Release|Win32 {BEE01B53-244A-44E6-8947-ED9342D9247E}.Release|x64.ActiveCfg = Release|x64 @@ -538,6 +791,12 @@ Global {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|Win32.ActiveCfg = Debug|Win32 {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|Win32.Build.0 = Debug|Win32 {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|x64.ActiveCfg = Debug|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.DLL-Import Debug|Win32.Build.0 = Debug|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.DLL-Import Debug|x64.ActiveCfg = Debug|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.DLL-Import Release|Win32.ActiveCfg = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.DLL-Import Release|Win32.Build.0 = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.DLL-Import Release|x64.ActiveCfg = Release|Win32 {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Release|Win32.ActiveCfg = Release|Win32 {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Release|Win32.Build.0 = Release|Win32 {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Release|x64.ActiveCfg = Release|Win32 @@ -547,6 +806,28 @@ Global {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseOpenSource|Win32.ActiveCfg = Release|Win32 {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseOpenSource|Win32.Build.0 = Release|Win32 {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseOpenSource|x64.ActiveCfg = Release|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.ActiveCfg = Debug|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.Build.0 = Debug|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.ActiveCfg = Debug|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.Build.0 = Debug|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|Win32.ActiveCfg = DLL-Import Debug|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|Win32.Build.0 = DLL-Import Debug|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|x64.ActiveCfg = DLL-Import Debug|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|x64.Build.0 = DLL-Import Debug|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|Win32.ActiveCfg = DLL-Import Release|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|Win32.Build.0 = DLL-Import Release|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|x64.ActiveCfg = DLL-Import Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|x64.Build.0 = DLL-Import Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.ActiveCfg = Release|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.Build.0 = Release|Win32 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.ActiveCfg = Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.Build.0 = Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.ReleaseASC|Win32.ActiveCfg = Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.ReleaseASC|x64.ActiveCfg = Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.ReleaseASC|x64.Build.0 = Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.ReleaseOpenSource|x64.ActiveCfg = Release|x64 + {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.ReleaseOpenSource|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/OfficeCryptReader/source/CryptTransform.cpp b/OfficeCryptReader/source/CryptTransform.cpp new file mode 100644 index 0000000000..073ad28ee8 --- /dev/null +++ b/OfficeCryptReader/source/CryptTransform.cpp @@ -0,0 +1,302 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2016 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, + * EU, LV-1021. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * + */ +#include +#include + +#include "CryptTransform.h" + +#include "../../Common/3dParty/cryptopp/modes.h" +#include "../../Common/3dParty/cryptopp/aes.h" +#include "../../Common/3dParty/cryptopp/sha.h" +#include "../../Common/3dParty/cryptopp/pwdbased.h" +#include "../../Common/3dParty/cryptopp/filters.h" + + +static const unsigned char encrVerifierHashInputBlockKey[8] = { 0xfe, 0xa7, 0xd2, 0x76, 0x3b, 0x4b, 0x9e, 0x79 }; +static const unsigned char encrVerifierHashValueBlockKey[8] = { 0xd7, 0xaa, 0x0f, 0x6d, 0x30, 0x61, 0x34, 0x4e }; +static const unsigned char encrKeyValueBlockKey[8] = { 0x14, 0x6e, 0x0b, 0xe7, 0xab, 0xac, 0xd0, 0xd6 }; +static const unsigned char encrDataIntegritySaltBlockKey[8] = { 0x5f, 0xb2, 0xad, 0x01, 0x0c, 0xb9, 0xe1, 0xf6 }; +static const unsigned char encrDataIntegrityHmacValueBlockKey[8] = { 0xa0, 0x67, 0x7f, 0x02, 0xb2, 0x2c, 0x84, 0x33 }; + +ECMADecryptor::ECMADecryptor() +{ +//default ms2010 + cryptData.cipherAlgorithm = CRYPT_METHOD::AES_CBC; + cryptData.hashAlgorithm = CRYPT_METHOD::SHA1; + cryptData.spinCount = 100000; + cryptData.keySize = 0x10; + cryptData.hashSize = 0x14; + cryptData.blockSize = 0x10; + cryptData.saltSize = 0x10; +//default ms2016 + //cryptData.cipherAlgorithm = AES_CBC; + //cryptData.hashAlgorithm = SHA256; + //cryptData.spinCount = 100000; + //cryptData.keySize = 0x20; + //cryptData.hashSize = 0x40; + //cryptData.blockSize = 0x10; + //cryptData.saltSize = 0x10; +} + +class _buf +{ +private: + bool bDelete; +public: + unsigned char *ptr; + int size; +//----------------------------------------------------------------------------------- + _buf() {ptr = NULL; size = 0; bDelete = true;} + _buf(int sz) {ptr = new unsigned char [sz]; size = sz; bDelete = true;} + _buf(unsigned char * p, int sz, bool bDelete_ = true ) + { + bDelete = bDelete_; + if (bDelete) + { + ptr = new unsigned char [sz]; size = sz; + memcpy(ptr, p , sz); + } + else + { + ptr = p; size = sz; + } + } + + void Clear() + { + if (bDelete && ptr) delete []ptr; + ptr = NULL; size = 0; + + bDelete = true; + } + + virtual ~_buf() {Clear();} + + _buf& operator=(const _buf& oSrc) + { + Clear(); + + size = oSrc.size; + ptr = new unsigned char [oSrc.size]; + memcpy(ptr, oSrc.ptr, oSrc.size); + bDelete = true; + + return *this; + } + + _buf& operator=(_buf& oSrc) + { + Clear(); + + size = oSrc.size; + ptr = new unsigned char [oSrc.size]; + memcpy(ptr, oSrc.ptr, oSrc.size); + bDelete = true; + + return *this; + } +}; +bool operator==(const _buf& oBuf1, const _buf& oBuf2) +{ + if (!oBuf1.ptr || !oBuf2.ptr) return false; + + return 0 == memcmp(oBuf1.ptr, oBuf2.ptr, (std::min)(oBuf1.size, oBuf2.size)); +} +void CorrectHashSize(_buf & hashBuf, int size, unsigned char padding) +{ + if (hashBuf.size < size) + { + unsigned char *newPtr = new unsigned char[size]; + memset(newPtr, padding, size); + memcpy(newPtr, hashBuf.ptr, hashBuf.size); + delete []hashBuf.ptr; + + hashBuf.ptr = newPtr; + hashBuf.size = size; + } + else if (hashBuf.size > size) + { + hashBuf.size = size; + } +} + +_buf HashAppend(_buf & hashBuf, _buf & block, CRYPT_METHOD::_hashAlgorithm algorithm) +{//todooo переделать + if (algorithm == CRYPT_METHOD::SHA1) + { + CryptoPP::SHA1 hash; + + if (hashBuf.ptr && hashBuf.size > 0) hash.Update( hashBuf.ptr, hashBuf.size); + if (block.ptr && block.size > 0) hash.Update( block.ptr , block.size); + + CryptoPP::SecByteBlock buffer(hash.DigestSize()); + hash.Final(buffer); + + return _buf(buffer.BytePtr(), buffer.SizeInBytes()); + } + else if (algorithm == CRYPT_METHOD::SHA256) + { + CryptoPP::SHA256 hash; + + if (hashBuf.ptr && hashBuf.size > 0) hash.Update( hashBuf.ptr, hashBuf.size); + if (block.ptr && block.size > 0) hash.Update( block.ptr , block.size); + + CryptoPP::SecByteBlock buffer(hash.DigestSize()); + hash.Final(buffer); + + return _buf(buffer.BytePtr(), buffer.SizeInBytes()); + } + else if (algorithm == CRYPT_METHOD::SHA512) + { + CryptoPP::SHA512 hash; + + if (hashBuf.ptr && hashBuf.size > 0) hash.Update( hashBuf.ptr, hashBuf.size); + if (block.ptr && block.size > 0) hash.Update( block.ptr , block.size); + + CryptoPP::SecByteBlock buffer(hash.DigestSize()); + hash.Final(buffer); + + return _buf(buffer.BytePtr(), buffer.SizeInBytes()); + } + else + return _buf(); +} + +_buf GenerateKey(_buf & salt, _buf & password, _buf & blockKey, int hashSize, int spin, CRYPT_METHOD::_hashAlgorithm algorithm) +{ + _buf pHashBuf = HashAppend(salt, password, algorithm); + + for (int i = 0; i < spin; i++) + { + pHashBuf = HashAppend(_buf((unsigned char*)&i, 4, false), pHashBuf, algorithm); + } + + pHashBuf = HashAppend(pHashBuf, blockKey, algorithm); + + CorrectHashSize(pHashBuf, hashSize, 0x36); + + return _buf(pHashBuf.ptr, pHashBuf.size); +} + +bool DecryptAES(_buf & key, _buf & iv, _buf & data_inp, _buf & data_out) +{ + CryptoPP::AES::Decryption aesDecryption(key.ptr, key.size); + CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption( aesDecryption, iv.ptr ); + + if (!data_out.ptr) + { + data_out = _buf(data_inp.size); + } + CryptoPP::StreamTransformationFilter stfDecryptor(cbcDecryption, new CryptoPP::ArraySink( data_out.ptr, data_out.size), CryptoPP::StreamTransformationFilter::NO_PADDING); + + stfDecryptor.Put( data_inp.ptr, data_inp.size ); + stfDecryptor.MessageEnd(); + + return true; +} + +bool ECMADecryptor::SetPassword(std::wstring password_) +{ + password = password_; + + _buf pPassword ((unsigned char*)password.c_str() , password.length() * 2); + _buf pSalt ((unsigned char*)cryptData.saltValue.c_str() , cryptData.saltValue.length()); + _buf pInputBlockKey ((unsigned char*)encrVerifierHashInputBlockKey , 8); + _buf pValueBlockKey ((unsigned char*)encrVerifierHashValueBlockKey , 8); + + _buf pEncVerInput ((unsigned char*)cryptData.encryptedVerifierInput.c_str() , cryptData.encryptedVerifierInput.length()); + _buf pEncVerValue ((unsigned char*)cryptData.encryptedVerifierValue.c_str() , cryptData.encryptedVerifierValue.length()); + + + _buf verifierInputKey = GenerateKey( pSalt, pPassword, pInputBlockKey, cryptData.keySize, cryptData.spinCount, cryptData.hashAlgorithm ); + _buf decryptedVerifierHashInputBytes; + + DecryptAES(verifierInputKey, pSalt, pEncVerInput, decryptedVerifierHashInputBytes); +//-------------------------------------------- + + _buf hashBuf = HashAppend(decryptedVerifierHashInputBytes, _buf(), cryptData.hashAlgorithm); + +//-------------------------------------------- + _buf decryptedVerifierHashBytes; + + _buf verifierHashKey = GenerateKey(pSalt, pPassword, pValueBlockKey, cryptData.keySize, cryptData.spinCount, cryptData.hashAlgorithm); + DecryptAES(verifierHashKey, pSalt, pEncVerValue, decryptedVerifierHashBytes); + + return (decryptedVerifierHashBytes==hashBuf); +} + +void ECMADecryptor::SetCryptData(_cryptData &data) +{ + cryptData = data; +} + +void ECMADecryptor::Decrypt(unsigned char* data_inp, int size, unsigned char*& data_out) +{ + data_out = NULL; + + _buf pBlockKey ((unsigned char*)encrKeyValueBlockKey, 8); + _buf pPassw ((unsigned char*)password.c_str(), password.length() * 2); + + _buf pDataSalt ((unsigned char*)cryptData.dataSaltValue.c_str(), cryptData.dataSaltValue.length()); + _buf pSalt ((unsigned char*)cryptData.saltValue.c_str(), cryptData.saltValue.length()); + _buf pKeyValue ((unsigned char*)cryptData.encryptedKeyValue.c_str(), cryptData.encryptedKeyValue.length()); + + _buf Key = GenerateKey( pSalt, pPassw, pBlockKey, cryptData.keySize, cryptData.spinCount, cryptData.hashAlgorithm); + + _buf pDecryptedKey; + DecryptAES( Key, pSalt, pKeyValue, pDecryptedKey); + + _buf iv(cryptData.blockSize); + memset( iv.ptr, 0x00, cryptData.blockSize ); + + int i = 0, sz = 4096, pos = 0; + + data_out = new unsigned char[size]; + + while (pos < size) + { + if (pos + sz > size) + sz = size - pos; + + _buf pIndex((unsigned char*)&i, 4); + iv = HashAppend(pDataSalt, pIndex, cryptData.hashAlgorithm); + + CorrectHashSize(iv, cryptData.blockSize, 0x36); + + _buf pInp(data_inp + pos, sz, false); + _buf pOut(data_out + pos, sz, false); + + DecryptAES(pDecryptedKey, iv, pInp, pOut); + + pos += sz; i++; + } +} \ No newline at end of file diff --git a/OfficeCryptTransform/CryptTransform.h b/OfficeCryptReader/source/CryptTransform.h similarity index 64% rename from OfficeCryptTransform/CryptTransform.h rename to OfficeCryptReader/source/CryptTransform.h index 50415c53fe..bea8640247 100644 --- a/OfficeCryptTransform/CryptTransform.h +++ b/OfficeCryptReader/source/CryptTransform.h @@ -34,36 +34,76 @@ #include #include -class Decryptor +namespace CRYPT_METHOD +{ + enum _hashAlgorithm + { + SHA1, + SHA224, + SHA256, + SHA384, + SHA512 + }; + + enum _cipherAlgorithm + { + XOR, + RC4, + AES_CBC, + AES_CFB + }; +} + +class ECMADecryptor { public: - Decryptor(int type); - virtual ~Decryptor(); - void Decrypt(void* data, int size); + struct _cryptData + { + CRYPT_METHOD::_cipherAlgorithm cipherAlgorithm; + CRYPT_METHOD::_hashAlgorithm hashAlgorithm; - bool IsVerify(); + int spinCount; + int keySize; + int hashSize; + int blockSize; + int saltSize; + + std::string dataSaltValue; + std::string saltValue; + std::string encryptedKeyValue; + std::string encryptedVerifierInput; + std::string encryptedVerifierValue; + + std::string encryptedHmacKey; + std::string encryptedHmacValue; + +//.......... + + }; + ECMADecryptor(); + virtual ~ECMADecryptor(){} + + void Decrypt(unsigned char* data, int size, unsigned char*& data_out); + + bool IsVerify(){} bool SetPassword(std::wstring password); - void SetCryptData(std::string salt, std::string verifier, std::string verifier_hash); + void SetCryptData(_cryptData &data); private: - - void *impl_; + _cryptData cryptData; + std::wstring password; }; // -//class Encryptor +//class ECMAEncryptor //{ //public: -// Encryptor(int type); -// virtual ~Encryptor(); +// ECMAEncryptor(int type); +// virtual ~ECMAEncryptor(); // // void Encrypt(char* data, int size); // // bool SetPassword(std::wstring password); -// -//private: -// -// void *impl_; //}; \ No newline at end of file diff --git a/OfficeCryptReader/source/ECMACryptReader.cpp b/OfficeCryptReader/source/ECMACryptReader.cpp index ce189556c1..3ad2267806 100644 --- a/OfficeCryptReader/source/ECMACryptReader.cpp +++ b/OfficeCryptReader/source/ECMACryptReader.cpp @@ -31,12 +31,13 @@ */ #include "ECMACryptReader.h" +#include "CryptTransform.h" #include "../../Common/3dParty/pole/pole.h" #include "../../Common/DocxFormat/Source/Base/Types_32.h" #include "../../Common/DocxFormat/Source/XML/xmlutils.h" -#include "../../OfficeCryptTransform/CryptTransform.h" +#include "../../DesktopEditor/common/File.h" #define WritingElement_ReadAttributes_Start(Reader) \ if ( Reader.GetAttributesCount() <= 0 )\ @@ -106,10 +107,25 @@ void ReadMapEntry(POLE::Stream *pStream, ECMACryptReader::_mapEntry & m) } m.dataSpaceName= ReadUnicodeLP(pStream); } -//-------------------------------------------------------------- -bool ECMACryptReader::DecryptOfficeFile(std::wstring file_name, std::wstring folder_out, std::wstring password) + +std::string DecodeBase64(const std::string & value) { - POLE::Storage *pStorage = new POLE::Storage(file_name.c_str()); + int nLength = 0; + unsigned char *pData = NULL; + std::string result; + + NSFile::CBase64Converter::Decode(value.c_str(), value.length(), pData, nLength); + if (pData) + { + result = std::string((char*)pData, nLength); + delete []pData; pData = NULL; + } + return result; +} +//-------------------------------------------------------------- +bool ECMACryptReader::DecryptOfficeFile(std::wstring file_name_inp, std::wstring file_name_out, std::wstring password) +{ + POLE::Storage *pStorage = new POLE::Storage(file_name_inp.c_str()); if (!pStorage)return false; @@ -148,15 +164,44 @@ bool ECMACryptReader::DecryptOfficeFile(std::wstring file_name, std::wstring fol } } - //Decryptor decryptor(1); + ECMADecryptor decryptor; - //decryptor.SetCryptData(keyData.saltValue, keyData.encryptedVerifierHashInput, keyData.encryptedVerifierHashValue); + ECMADecryptor::_cryptData cryptData; + + cryptData.spinCount = atoi(keyEncryptors[0].spinCount.c_str()); + cryptData.blockSize = atoi(keyEncryptors[0].blockSize.c_str()); + cryptData.hashSize = atoi(keyEncryptors[0].hashSize.c_str()); + cryptData.saltSize = atoi(keyEncryptors[0].saltSize.c_str()); + cryptData.keySize = atoi(keyEncryptors[0].keyBits.c_str() ) / 8; + + cryptData.dataSaltValue = DecodeBase64(keyData.saltValue); + cryptData.saltValue = DecodeBase64(keyEncryptors[0].saltValue); + cryptData.encryptedKeyValue = DecodeBase64(keyEncryptors[0].encryptedKeyValue); + cryptData.encryptedVerifierInput = DecodeBase64(keyEncryptors[0].encryptedVerifierHashInput); + cryptData.encryptedVerifierValue = DecodeBase64(keyEncryptors[0].encryptedVerifierHashValue); + + cryptData.encryptedHmacKey = DecodeBase64(dataIntegrity.encryptedHmacKey); + cryptData.encryptedHmacValue = DecodeBase64(dataIntegrity.encryptedHmacValue); - //if (!decryptor.SetPassword(password)) - //{ - // delete pStorage; - // return false; - //} + if (keyData.cipherAlgorithm == "AES") + { + if (keyData.cipherChaining == "ChainingModeCBC") cryptData.cipherAlgorithm = CRYPT_METHOD::AES_CBC; + if (keyData.cipherChaining == "ChainingModeCFB") cryptData.cipherAlgorithm = CRYPT_METHOD::AES_CFB; + } + else + { + } + + if (keyData.hashAlgorithm == "SHA1") cryptData.hashAlgorithm = CRYPT_METHOD::SHA1; + if (keyData.hashAlgorithm == "SHA224") cryptData.hashAlgorithm = CRYPT_METHOD::SHA224; + if (keyData.hashAlgorithm == "SHA256") cryptData.hashAlgorithm = CRYPT_METHOD::SHA256; + if (keyData.hashAlgorithm == "SHA384") cryptData.hashAlgorithm = CRYPT_METHOD::SHA384; + if (keyData.hashAlgorithm == "SHA512") cryptData.hashAlgorithm = CRYPT_METHOD::SHA512; + + decryptor.SetCryptData(cryptData); + + if (!decryptor.SetPassword(password)) + return false; //pStream = new POLE::Stream(pStorage, "DataSpaces/DataSpaceMap"); // савершенно ненужная инфа //if (pStream) @@ -179,27 +224,36 @@ bool ECMACryptReader::DecryptOfficeFile(std::wstring file_name, std::wstring fol bool result = false; - pStream = new POLE::Stream(pStorage, "EncryptionPackage"); - if (pStream) + pStream = new POLE::Stream(pStorage, "EncryptedPackage"); + if (pStream->size() > 0) { - _UINT64 length; - pStream->read((unsigned char*)&length, 8); + _UINT64 lengthData, lengthRead = pStream->size() - 8; + pStream->read((unsigned char*)&lengthData, 8); - while (true) - { - break; - } + unsigned char* data = new unsigned char[lengthRead]; + unsigned char* data_out = NULL; + pStream->read(data, lengthRead); + + decryptor.Decrypt(data, lengthRead, data_out);//todoo сделать покусочное чтение декриптование delete pStream; + + if (data_out) + { + NSFile::CFileBinary f; + f.CreateFile(file_name_out); + f.WriteFile(data_out, lengthData); + f.CloseFile(); + + result = true; + } } //------------------------------------------------------------------- - - delete pStorage; - return result; } + bool ECMACryptReader::ReadEncryptionInfo(const std::string & xml_string) { XmlUtils::CXmlLiteReader xmlReader; @@ -217,44 +271,55 @@ bool ECMACryptReader::ReadEncryptionInfo(const std::string & xml_string) if ( L"keyData" == sName ) { WritingElement_ReadAttributes_Start( xmlReader) - WritingElement_ReadAttributes_Read_if ( xmlReader, "saltSize", keyData.saltSize ) - WritingElement_ReadAttributes_Read_else_if ( xmlReader, "blockSize", keyData.blockSize ) - WritingElement_ReadAttributes_Read_else_if ( xmlReader, "keyBits", keyData.keyBits ) - WritingElement_ReadAttributes_Read_else_if ( xmlReader, "hashSize", keyData.hashSize ) - WritingElement_ReadAttributes_Read_else_if ( xmlReader, "cipherAlgorithm", keyData.cipherAlgorithm ) - WritingElement_ReadAttributes_Read_else_if ( xmlReader, "cipherChaining", keyData.cipherChaining ) - WritingElement_ReadAttributes_Read_else_if ( xmlReader, "hashAlgorithm", keyData.hashAlgorithm ) - WritingElement_ReadAttributes_Read_else_if ( xmlReader, "saltValue", keyData.saltValue ) + WritingElement_ReadAttributes_Read_if ( xmlReader, "saltSize", keyData.saltSize ) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "blockSize", keyData.blockSize ) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "keyBits", keyData.keyBits ) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "hashSize", keyData.hashSize ) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "cipherAlgorithm", keyData.cipherAlgorithm ) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "cipherChaining", keyData.cipherChaining ) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "hashAlgorithm", keyData.hashAlgorithm ) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "saltValue", keyData.saltValue ) WritingElement_ReadAttributes_End( xmlReader ) } else if ( L"dataIntegrity" == sName ) { - + WritingElement_ReadAttributes_Start( xmlReader) + WritingElement_ReadAttributes_Read_if ( xmlReader, "encryptedHmacKey", dataIntegrity.encryptedHmacKey) + WritingElement_ReadAttributes_Read_else_if ( xmlReader, "encryptedHmacValue", dataIntegrity.encryptedHmacValue) + WritingElement_ReadAttributes_End( xmlReader ) } else if (L"keyEncryptors" == sName) { while( xmlReader.ReadNextSiblingNode( nCurDepth + 1 ) ) { - if (L"keyEncryptor" == sName) + sName = xmlReader.GetName(); + if (L"keyEncryptor" == sName) { - _keyEncryptor k; - - WritingElement_ReadAttributes_Start( xmlReader) - WritingElement_ReadAttributes_Read_if ( xmlReader, "spinCount", k.spinCount ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "saltSize", k.saltSize ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "blockSize", k.blockSize ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "keyBits", k.keyBits ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "hashSize", k.hashSize ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "cipherAlgorithm", k.cipherAlgorithm ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "cipherChaining", k.cipherChaining ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "hashAlgorithm", k.hashAlgorithm ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "saltValue", k.saltValue ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "encryptedVerifierHashInput", k.encryptedVerifierHashInput ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "encryptedVerifierHashValue", k.encryptedVerifierHashValue ) - WritingElement_ReadAttributes_Read_else_if( xmlReader, "encryptedKeyValue", k.encryptedKeyValue ) - WritingElement_ReadAttributes_End( xmlReader ) - - keyEncryptors.push_back(k); + while( xmlReader.ReadNextSiblingNode( nCurDepth + 2 ) ) + { + sName = xmlReader.GetName(); + if (L"p:encryptedKey" == sName) + { + _keyEncryptor k={}; + + WritingElement_ReadAttributes_Start( xmlReader) + WritingElement_ReadAttributes_Read_if ( xmlReader, "spinCount", k.spinCount ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "saltSize", k.saltSize ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "blockSize", k.blockSize ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "keyBits", k.keyBits ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "hashSize", k.hashSize ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "cipherAlgorithm", k.cipherAlgorithm ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "cipherChaining", k.cipherChaining ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "hashAlgorithm", k.hashAlgorithm ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "saltValue", k.saltValue ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "encryptedVerifierHashInput", k.encryptedVerifierHashInput ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "encryptedVerifierHashValue", k.encryptedVerifierHashValue ) + WritingElement_ReadAttributes_Read_else_if( xmlReader, "encryptedKeyValue", k.encryptedKeyValue ) + WritingElement_ReadAttributes_End( xmlReader ) + + keyEncryptors.push_back(k); + } + } } } } diff --git a/OfficeCryptReader/source/ECMACryptReader.h b/OfficeCryptReader/source/ECMACryptReader.h index 364b302492..e381ff9301 100644 --- a/OfficeCryptReader/source/ECMACryptReader.h +++ b/OfficeCryptReader/source/ECMACryptReader.h @@ -36,10 +36,9 @@ class ECMACryptReader { -public: - - bool DecryptOfficeFile(std::wstring file_name, std::wstring folder_out, std::wstring password); - +public: + bool DecryptOfficeFile(std::wstring file_name_inp, std::wstring file_name_out, std::wstring password); + struct _keyEncryptor { std::string spinCount; @@ -57,6 +56,12 @@ public: std::string encryptedVerifierHashValue; std::string encryptedKeyValue; }; + struct _dataIntegrity + { + std::string encryptedHmacKey; + std::string encryptedHmacValue; + }; + struct _refComponent { int type; @@ -74,8 +79,6 @@ private: std::vector<_mapEntry> mapEntries; //-------------------------------------------------------------- _keyEncryptor keyData; - std::string encryptedHmacKey; - std::string encryptedHmacValue; + _dataIntegrity dataIntegrity; std::vector<_keyEncryptor> keyEncryptors; - }; diff --git a/OfficeCryptReader/win32/ECMACryptReader.vcproj b/OfficeCryptReader/win32/ECMACryptReader.vcproj index 973a9136f0..1bb809825d 100644 --- a/OfficeCryptReader/win32/ECMACryptReader.vcproj +++ b/OfficeCryptReader/win32/ECMACryptReader.vcproj @@ -2,7 +2,7 @@ empty()) return AVS_FILEUTILS_ERROR_CONVERT_DRM; - //decrypt to temp - std::wstring sResultDecryptDir = sTemp + FILE_SEPARATOR_STR + _T("crypt_unpacked"); - FileSystem::Directory::CreateDirectory(sResultDecryptDir); + //decrypt to sTo ECMACryptReader cryptReader; - if (cryptReader.DecryptOfficeFile(sFrom, sResultDecryptDir, *params.m_sPassword) == false) + if (cryptReader.DecryptOfficeFile(sFrom, sTo, *params.m_sPassword) == false) return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; - //convert from format (detect before) to temp binary folder - return 0; + return S_OK; + } + int mscrypt2oot_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath, InputParams& params) + { + if (!params.m_sPassword) return AVS_FILEUTILS_ERROR_CONVERT_DRM; + if ( params.m_sPassword->empty()) return AVS_FILEUTILS_ERROR_CONVERT_DRM; + + //decrypt to temp file + std::wstring sResultDecryptFile = sTemp + FILE_SEPARATOR_STR + L"uncrypt_file.oox"; + + ECMACryptReader cryptReader; + if (cryptReader.DecryptOfficeFile(sFrom, sResultDecryptFile, *params.m_sPassword) == false) + return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + + COfficeFileFormatChecker OfficeFileFormatChecker; + + if (OfficeFileFormatChecker.isOfficeFile(sResultDecryptFile)) + { + switch (OfficeFileFormatChecker.nFileType) + { + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: + { + return docx2doct_bin(sResultDecryptFile, sTo, sTemp, sFontPath); + }break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: + { + const std::wstring & sXmlOptions = params.getXmlOptions(); + return xlsx2xlst_bin(sResultDecryptFile, sTo, sTemp, sFontPath, sXmlOptions); + }break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + { + return pptx2pptt_bin(sResultDecryptFile, sTo, sTemp, sFontPath); + }break; + } + } + return AVS_FILEUTILS_ERROR_CONVERT; } //html diff --git a/X2tConverter/src/ASCConverters.h b/X2tConverter/src/ASCConverters.h index 60691f9960..1239ab4e3e 100644 --- a/X2tConverter/src/ASCConverters.h +++ b/X2tConverter/src/ASCConverters.h @@ -115,8 +115,9 @@ namespace NExtractTools int xlsx2ods (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath); int xlsx_dir2ods (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath); - int mscrypt2oot (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath, const InputParams& params); - int mscrypt2oot_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath, const InputParams& params); + int mscrypt2oox (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath, const InputParams& params); + int mscrypt2oot (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath, InputParams& params); + int mscrypt2oot_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, const std::wstring &sFontPath, InputParams& params); //------------------------------------------------------------------------------------------------------------------------------------------------- int dir2zip (const std::wstring &sFrom, const std::wstring &sTo);