[core] add SHA-256 validation DB for downloadable content

* Downloadable content will now be indicating, in the log, whether it can be trusted with ✓ (validated) or ✗ (caution)
* Of course this validation only applies for files we know of, i.e. the downloadable content that existed at the time the DB was
  created. So, if Syslinux 8.x gets released tomorrow and we put it on our server, you'll get an ✗ regardless of its integrity.
* Closes #758
This commit is contained in:
Pete Batard 2016-05-25 12:20:20 +01:00
parent 04d6ac0cdd
commit 790aacd49a
10 changed files with 201 additions and 43 deletions

View file

@ -148,7 +148,8 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int fs_type)
uprintf("Could not read %s", path);
goto out;
}
uprintf("Using existing './%s'", path);
uprintf("Using existing './%s' %s", path,
IsBufferInDB(syslinux_ldlinux[i], (size_t)syslinux_ldlinux_len[i])?"":"");
}
} else {
for (i=0; i<2; i++) {
@ -313,8 +314,9 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int fs_type)
uprintf("Caution: No '%s' was provided. The target will be missing a required Syslinux file!", &path[3]);
} else {
fclose(fd);
if (CopyFileA(&path[3], path, TRUE)) {
uprintf("Created '%s' (from '%s/%s-%s/%s')", path, FILES_DIR, syslinux, embedded_sl_version_str[1], &path[3]);
if (CopyFileU(&path[3], path, TRUE)) {
uprintf("Created '%s' (from '%s/%s-%s/%s') %s", path, FILES_DIR, syslinux,
embedded_sl_version_str[1], &path[3], IsFileInDB(&path[3])?"":"");
} else {
uprintf("Failed to create '%s': %s", path, WindowsErrorString());
}