aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/payload.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-05-03 14:41:33 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-05-11 19:11:19 -0500
commit2f4287fdcee83b30e0f7f3ce548bcdff2ee85e1f (patch)
treef2413b7c18e22ecc4398c28df5acdfd9feebd310 /src/burn/engine/payload.cpp
parentcd921db764df9578733c85c29e8c6c368f4c7e78 (diff)
downloadwix-2f4287fdcee83b30e0f7f3ce548bcdff2ee85e1f.tar.gz
wix-2f4287fdcee83b30e0f7f3ce548bcdff2ee85e1f.tar.bz2
wix-2f4287fdcee83b30e0f7f3ce548bcdff2ee85e1f.zip
Bring back Burn's implementation of signature verification.
partial #6447
Diffstat (limited to 'src/burn/engine/payload.cpp')
-rw-r--r--src/burn/engine/payload.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/burn/engine/payload.cpp b/src/burn/engine/payload.cpp
index 392a3dd4..84c32eec 100644
--- a/src/burn/engine/payload.cpp
+++ b/src/burn/engine/payload.cpp
@@ -132,6 +132,28 @@ extern "C" HRESULT PayloadsParseFromXml(
132 fValidFileSize = TRUE; 132 fValidFileSize = TRUE;
133 } 133 }
134 134
135 // @CertificateAuthorityKeyIdentifier
136 hr = XmlGetAttributeEx(pixnNode, L"CertificateRootPublicKeyIdentifier", &scz);
137 if (E_NOTFOUND != hr)
138 {
139 ExitOnFailure(hr, "Failed to get @CertificateRootPublicKeyIdentifier.");
140
141 hr = StrAllocHexDecode(scz, &pPayload->pbCertificateRootPublicKeyIdentifier, &pPayload->cbCertificateRootPublicKeyIdentifier);
142 ExitOnFailure(hr, "Failed to hex decode @CertificateRootPublicKeyIdentifier.");
143
144 pPayload->verification = BURN_PAYLOAD_VERIFICATION_AUTHENTICODE;
145 }
146
147 // @CertificateThumbprint
148 hr = XmlGetAttributeEx(pixnNode, L"CertificateRootThumbprint", &scz);
149 if (E_NOTFOUND != hr)
150 {
151 ExitOnFailure(hr, "Failed to get @CertificateRootThumbprint.");
152
153 hr = StrAllocHexDecode(scz, &pPayload->pbCertificateRootThumbprint, &pPayload->cbCertificateRootThumbprint);
154 ExitOnFailure(hr, "Failed to hex decode @CertificateRootThumbprint.");
155 }
156
135 // @Hash 157 // @Hash
136 hr = XmlGetAttributeEx(pixnNode, L"Hash", &scz); 158 hr = XmlGetAttributeEx(pixnNode, L"Hash", &scz);
137 if (E_NOTFOUND != hr) 159 if (E_NOTFOUND != hr)
@@ -191,6 +213,8 @@ extern "C" void PayloadUninitialize(
191 ReleaseStr(pPayload->sczKey); 213 ReleaseStr(pPayload->sczKey);
192 ReleaseStr(pPayload->sczFilePath); 214 ReleaseStr(pPayload->sczFilePath);
193 ReleaseMem(pPayload->pbHash); 215 ReleaseMem(pPayload->pbHash);
216 ReleaseMem(pPayload->pbCertificateRootThumbprint);
217 ReleaseMem(pPayload->pbCertificateRootPublicKeyIdentifier);
194 ReleaseStr(pPayload->sczSourcePath); 218 ReleaseStr(pPayload->sczSourcePath);
195 ReleaseStr(pPayload->sczLocalFilePath); 219 ReleaseStr(pPayload->sczLocalFilePath);
196 ReleaseStr(pPayload->downloadSource.sczUrl); 220 ReleaseStr(pPayload->downloadSource.sczUrl);