OSDN Git Service

Add routines to check for software updates (incomplete).
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 12 Apr 2014 12:35:05 +0000 (21:35 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 12 Apr 2014 12:35:05 +0000 (21:35 +0900)
12 files changed:
FFFTP.vc80ee.vcproj
FFFTP.vc90.vcproj
FFFTP.vcproj
FFFTP_Eng_Release/FFFTP.exe
FFFTP_English.vc80ee.vcproj
FFFTP_English.vc90.vcproj
FFFTP_English.vcproj
Release/FFFTP.exe
protectprocess.c
protectprocess.h
socketwrapper.c
socketwrapper.h

index ce74271..fa0ad87 100644 (file)
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\Debug_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\Release_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="17"\r
                                >\r
                        </File>\r
                        <File\r
+                               RelativePath=".\updater.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\wildcard.c"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\updater.h"\r
+                               >\r
+                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Header Files"\r
index fb8628f..14f062b 100644 (file)
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\Debug_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                RandomizedBaseAddress="1"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\Release_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                                RandomizedBaseAddress="1"\r
                                >\r
                        </File>\r
                        <File\r
+                               RelativePath=".\updater.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\wildcard.c"\r
                                >\r
                        </File>\r
                                RelativePath=".\socketwrapper.h"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\updater.h"\r
+                               >\r
+                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Resource Files"\r
index 66b9c41..1dff84a 100644 (file)
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\Debug_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\Release_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="17"\r
                                >\r
                        </File>\r
                        <File\r
+                               RelativePath=".\updater.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\wildcard.c"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\updater.h"\r
+                               >\r
+                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Header Files"\r
index da7cf1a..857b0ae 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index e1a141d..4630e61 100644 (file)
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="17"\r
                                >\r
                        </File>\r
                        <File\r
+                               RelativePath=".\updater.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\wildcard.c"\r
                                >\r
                        </File>\r
                                RelativePath=".\socketwrapper.h"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\updater.h"\r
+                               >\r
+                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Resource Files"\r
index c4eb34e..c63c153 100644 (file)
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                RandomizedBaseAddress="1"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                                RandomizedBaseAddress="1"\r
                                >\r
                        </File>\r
                        <File\r
+                               RelativePath=".\updater.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\wildcard.c"\r
                                >\r
                        </File>\r
                                RelativePath=".\socketwrapper.h"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\updater.h"\r
+                               >\r
+                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Resource Files"\r
index bd83203..bba58fc 100644 (file)
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib winhttp.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;ws2_32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;imagehlp.dll;ole32.dll;oleaut32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;winhttp.dll;ws2_32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release_64\FFFTP.pdb"\r
                                SubSystem="2"\r
                                TargetMachine="17"\r
                                >\r
                        </File>\r
                        <File\r
+                               RelativePath=".\updater.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\wildcard.c"\r
                                >\r
                        </File>\r
                                RelativePath=".\socketwrapper.h"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\updater.h"\r
+                               >\r
+                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Resource Files"\r
index afafc1b..65403d2 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 317e699..ad8583b 100644 (file)
@@ -798,40 +798,23 @@ void SetProcessProtectionLevel(DWORD Level)
        g_ProcessProtectionLevel = Level;\r
 }\r
 \r
-// ファイルのSHA1ハッシュを取得\r
-BOOL GetSHA1HashOfFile(LPCWSTR Filename, void* pHash)\r
+//     メモリのSHA1ハッシュを取得\r
+BOOL GetSHA1HashOfMemory(const void* pData, DWORD Size, void* pHash)\r
 {\r
        BOOL bResult;\r
        HCRYPTPROV hProv;\r
        HCRYPTHASH hHash;\r
-       HANDLE hFile;\r
-       DWORD Size;\r
-       void* pData;\r
        DWORD dw;\r
        bResult = FALSE;\r
        if(CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_FULL, 0) || CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET))\r
        {\r
                if(CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hHash))\r
                {\r
-                       if((hFile = CreateFileW(Filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
+                       if(CryptHashData(hHash, (BYTE*)pData, Size, 0))\r
                        {\r
-                               Size = GetFileSize(hFile, NULL);\r
-                               if(pData = VirtualAlloc(NULL, Size, MEM_COMMIT, PAGE_READWRITE))\r
-                               {\r
-                                       VirtualLock(pData, Size);\r
-                                       if(ReadFile(hFile, pData, Size, &dw, NULL))\r
-                                       {\r
-                                               if(CryptHashData(hHash, (BYTE*)pData, Size, 0))\r
-                                               {\r
-                                                       dw = 20;\r
-                                                       if(CryptGetHashParam(hHash, HP_HASHVAL, (BYTE*)pHash, &dw, 0))\r
-                                                               bResult = TRUE;\r
-                                               }\r
-                                       }\r
-                                       VirtualUnlock(pData, Size);\r
-                                       VirtualFree(pData, Size, MEM_DECOMMIT);\r
-                               }\r
-                               CloseHandle(hFile);\r
+                               dw = 20;\r
+                               if(CryptGetHashParam(hHash, HP_HASHVAL, (BYTE*)pHash, &dw, 0))\r
+                                       bResult = TRUE;\r
                        }\r
                        CryptDestroyHash(hHash);\r
                }\r
@@ -840,6 +823,34 @@ BOOL GetSHA1HashOfFile(LPCWSTR Filename, void* pHash)
        return bResult;\r
 }\r
 \r
+// ファイルのSHA1ハッシュを取得\r
+BOOL GetSHA1HashOfFile(LPCWSTR Filename, void* pHash)\r
+{\r
+       BOOL bResult;\r
+       HANDLE hFile;\r
+       DWORD Size;\r
+       void* pData;\r
+       DWORD dw;\r
+       bResult = FALSE;\r
+       if((hFile = CreateFileW(Filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
+       {\r
+               Size = GetFileSize(hFile, NULL);\r
+               if(pData = VirtualAlloc(NULL, Size, MEM_COMMIT, PAGE_READWRITE))\r
+               {\r
+                       VirtualLock(pData, Size);\r
+                       if(ReadFile(hFile, pData, Size, &dw, NULL))\r
+                       {\r
+                               if(GetSHA1HashOfMemory(pData, Size, pHash))\r
+                                       bResult = TRUE;\r
+                       }\r
+                       VirtualUnlock(pData, Size);\r
+                       VirtualFree(pData, Size, MEM_DECOMMIT);\r
+               }\r
+               CloseHandle(hFile);\r
+       }\r
+       return bResult;\r
+}\r
+\r
 // DLLのハッシュを登録\r
 BOOL RegisterTrustedModuleSHA1Hash(void* pHash)\r
 {\r
index 22c1152..e0ef66f 100644 (file)
@@ -67,6 +67,7 @@ EXTERN_HOOK_FUNCTION_VAR(LoadLibraryExW)
 \r
 HMODULE System_LoadLibrary(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags);\r
 void SetProcessProtectionLevel(DWORD Level);\r
+BOOL GetSHA1HashOfMemory(const void* pData, DWORD Size, void* pHash);\r
 BOOL GetSHA1HashOfFile(LPCWSTR Filename, void* pHash);\r
 BOOL RegisterTrustedModuleSHA1Hash(void* pHash);\r
 BOOL UnregisterTrustedModuleSHA1Hash(void* pHash);\r
index d8db7aa..10c35ee 100644 (file)
@@ -50,10 +50,16 @@ typedef int (__cdecl* _X509_print_ex)(BIO*, X509*, unsigned long, unsigned long)
 typedef X509_NAME* (__cdecl* _X509_get_subject_name)(X509*);\r
 typedef int (__cdecl* _X509_NAME_print_ex)(BIO*, X509_NAME*, int, unsigned long);\r
 typedef void (__cdecl* _X509_CRL_free)(X509_CRL*);\r
+typedef EVP_PKEY* (__cdecl* _PEM_read_bio_PUBKEY)(BIO*, EVP_PKEY**, pem_password_cb*, void*);\r
 typedef X509* (__cdecl* _PEM_read_bio_X509)(BIO*, X509**, pem_password_cb*, void*);\r
 typedef X509_CRL* (__cdecl* _PEM_read_bio_X509_CRL)(BIO*, X509_CRL**, pem_password_cb*, void*);\r
 typedef int (__cdecl* _X509_STORE_add_cert)(X509_STORE*, X509*);\r
 typedef int (__cdecl* _X509_STORE_add_crl)(X509_STORE*, X509_CRL*);\r
+typedef void (__cdecl* _EVP_PKEY_free)(EVP_PKEY*);\r
+typedef RSA* (__cdecl* _EVP_PKEY_get1_RSA)(EVP_PKEY*);\r
+typedef void (__cdecl* _RSA_free)(RSA*);\r
+typedef int (__cdecl* _RSA_size)(const RSA*);\r
+typedef int (__cdecl* _RSA_public_decrypt)(int, const unsigned char*, unsigned char*, RSA*,int);\r
 \r
 _SSL_load_error_strings p_SSL_load_error_strings;\r
 _SSL_library_init p_SSL_library_init;\r
@@ -87,10 +93,16 @@ _X509_print_ex p_X509_print_ex;
 _X509_get_subject_name p_X509_get_subject_name;\r
 _X509_NAME_print_ex p_X509_NAME_print_ex;\r
 _X509_CRL_free p_X509_CRL_free;\r
+_PEM_read_bio_PUBKEY p_PEM_read_bio_PUBKEY;\r
 _PEM_read_bio_X509 p_PEM_read_bio_X509;\r
 _PEM_read_bio_X509_CRL p_PEM_read_bio_X509_CRL;\r
 _X509_STORE_add_cert p_X509_STORE_add_cert;\r
 _X509_STORE_add_crl p_X509_STORE_add_crl;\r
+_EVP_PKEY_free p_EVP_PKEY_free;\r
+_EVP_PKEY_get1_RSA p_EVP_PKEY_get1_RSA;\r
+_RSA_free p_RSA_free;\r
+_RSA_size p_RSA_size;\r
+_RSA_public_decrypt p_RSA_public_decrypt;\r
 \r
 #define MAX_SSL_SOCKET 16\r
 \r
@@ -172,10 +184,16 @@ BOOL LoadOpenSSL()
                || !(p_X509_get_subject_name = (_X509_get_subject_name)GetProcAddress(g_hOpenSSLCommon, "X509_get_subject_name"))\r
                || !(p_X509_NAME_print_ex = (_X509_NAME_print_ex)GetProcAddress(g_hOpenSSLCommon, "X509_NAME_print_ex"))\r
                || !(p_X509_CRL_free = (_X509_CRL_free)GetProcAddress(g_hOpenSSLCommon, "X509_CRL_free"))\r
+               || !(p_PEM_read_bio_PUBKEY = (_PEM_read_bio_PUBKEY)GetProcAddress(g_hOpenSSLCommon, "PEM_read_bio_PUBKEY"))\r
                || !(p_PEM_read_bio_X509 = (_PEM_read_bio_X509)GetProcAddress(g_hOpenSSLCommon, "PEM_read_bio_X509"))\r
                || !(p_PEM_read_bio_X509_CRL = (_PEM_read_bio_X509_CRL)GetProcAddress(g_hOpenSSLCommon, "PEM_read_bio_X509_CRL"))\r
                || !(p_X509_STORE_add_cert = (_X509_STORE_add_cert)GetProcAddress(g_hOpenSSLCommon, "X509_STORE_add_cert"))\r
-               || !(p_X509_STORE_add_crl = (_X509_STORE_add_crl)GetProcAddress(g_hOpenSSLCommon, "X509_STORE_add_crl")))\r
+               || !(p_X509_STORE_add_crl = (_X509_STORE_add_crl)GetProcAddress(g_hOpenSSLCommon, "X509_STORE_add_crl"))\r
+               || !(p_EVP_PKEY_free = (_EVP_PKEY_free)GetProcAddress(g_hOpenSSLCommon, "EVP_PKEY_free"))\r
+               || !(p_EVP_PKEY_get1_RSA = (_EVP_PKEY_get1_RSA)GetProcAddress(g_hOpenSSLCommon, "EVP_PKEY_get1_RSA"))\r
+               || !(p_RSA_free = (_RSA_free)GetProcAddress(g_hOpenSSLCommon, "RSA_free"))\r
+               || !(p_RSA_size = (_RSA_size)GetProcAddress(g_hOpenSSLCommon, "RSA_size"))\r
+               || !(p_RSA_public_decrypt = (_RSA_public_decrypt)GetProcAddress(g_hOpenSSLCommon, "RSA_public_decrypt")))\r
        {\r
                if(g_hOpenSSL)\r
                        FreeLibrary(g_hOpenSSL);\r
@@ -490,6 +508,40 @@ BOOL IsHostNameMatched(LPCSTR HostName, LPCSTR CommonName)
        return bResult;\r
 }\r
 \r
+// RSA復号化\r
+// 主に自動更新ファイルのハッシュの改竄確認\r
+BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, void* pOut, DWORD OutLength, DWORD* pOutLength)\r
+{\r
+       BOOL bResult;\r
+       BIO* pBIO;\r
+       EVP_PKEY* pPKEY;\r
+       RSA* pRSA;\r
+       int i;\r
+       bResult = FALSE;\r
+       if(pBIO = p_BIO_new_mem_buf((void*)PublicKey, sizeof(char) * strlen(PublicKey)))\r
+       {\r
+               if(pPKEY = p_PEM_read_bio_PUBKEY(pBIO, NULL, NULL, NULL))\r
+               {\r
+                       if(pRSA = p_EVP_PKEY_get1_RSA(pPKEY))\r
+                       {\r
+                               if(p_RSA_size(pRSA) <= (int)OutLength)\r
+                               {\r
+                                       i = p_RSA_public_decrypt((int)InLength, (const unsigned char*)pIn, (unsigned char*)pOut, pRSA, RSA_PKCS1_PADDING);\r
+                                       if(i >= 0)\r
+                                       {\r
+                                               *pOutLength = (DWORD)i;\r
+                                               bResult = TRUE;\r
+                                       }\r
+                               }\r
+                               p_RSA_free(pRSA);\r
+                       }\r
+                       p_EVP_PKEY_free(pPKEY);\r
+               }\r
+               p_BIO_free(pBIO);\r
+       }\r
+       return bResult;\r
+}\r
+\r
 // SSLセッションを開始\r
 BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted)\r
 {\r
index f1c8457..4f5570e 100644 (file)
@@ -20,6 +20,7 @@ void SetSSLTimeoutCallback(DWORD Timeout, LPSSLTIMEOUTCALLBACK pCallback);
 void SetSSLConfirmCallback(LPSSLCONFIRMCALLBACK pCallback);\r
 BOOL SetSSLRootCertificate(const void* pData, DWORD Length);\r
 BOOL IsHostNameMatched(LPCSTR HostName, LPCSTR CommonName);\r
+BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, void* pOut, DWORD OutLength, DWORD* pOutLength);\r
 BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted);\r
 BOOL DetachSSL(SOCKET s);\r
 BOOL IsSSLAttached(SOCKET s);\r