mirror of
https://github.com/pbatard/rufus.git
synced 2025-06-01 23:38:30 -04:00
[net] force a disk flush after downloading a file
* Also add a retry in PKI's GetSignatureName() * This should help with getting a "The downloaded executable is missing a digital signature" message when launching an update. * Closes #1130
This commit is contained in:
parent
1f6e09720a
commit
be2f7342f7
3 changed files with 33 additions and 17 deletions
21
src/pki.c
21
src/pki.c
|
@ -141,6 +141,7 @@ char* GetSignatureName(const char* path, const char* country_code)
|
|||
static char szSubjectName[128];
|
||||
char szCountry[3] = "__";
|
||||
char *p = NULL, *mpath = NULL;
|
||||
int i;
|
||||
BOOL r;
|
||||
HMODULE hm;
|
||||
HCERTSTORE hStore = NULL;
|
||||
|
@ -174,13 +175,21 @@ char* GetSignatureName(const char* path, const char* country_code)
|
|||
}
|
||||
|
||||
// Get message handle and store handle from the signed file.
|
||||
r = CryptQueryObject(CERT_QUERY_OBJECT_FILE, szFileName,
|
||||
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, CERT_QUERY_FORMAT_FLAG_BINARY,
|
||||
0, &dwEncoding, &dwContentType, &dwFormatType, &hStore, &hMsg, NULL);
|
||||
if (!r) {
|
||||
uprintf("PKI: Failed to get signature for '%s': %s", (path==NULL)?mpath:path, WinPKIErrorString());
|
||||
goto out;
|
||||
for (i = 0; i < 5; i++) {
|
||||
r = CryptQueryObject(CERT_QUERY_OBJECT_FILE, szFileName,
|
||||
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, CERT_QUERY_FORMAT_FLAG_BINARY,
|
||||
0, &dwEncoding, &dwContentType, &dwFormatType, &hStore, &hMsg, NULL);
|
||||
if (r)
|
||||
break;
|
||||
if (i == 0)
|
||||
uprintf("PKI: Failed to get signature for '%s': %s", (path==NULL)?mpath:path, WinPKIErrorString());
|
||||
if (path == NULL)
|
||||
break;
|
||||
uprintf("PKI: Retrying...");
|
||||
Sleep(2000);
|
||||
}
|
||||
if (!r)
|
||||
goto out;
|
||||
|
||||
// Get signer information size.
|
||||
r = CryptMsgGetParam(hMsg, CMSG_SIGNER_INFO_PARAM, 0, NULL, &dwSignerInfo);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue