ok(data.pasSigners[0].pasCertChain != NULL,
"Expected pasCertChain to be allocated\n");
if (data.pasSigners[0].pasCertChain)
+ {
ok(data.pasSigners[0].pasCertChain[0].pCert == cert,
"Unexpected cert\n");
+ CertFreeCertificateContext(
+ data.pasSigners[0].pasCertChain[0].pCert);
+ }
CertFreeCertificateContext(cert);
}
else
PROVDATA_SIP provDataSIP = { 0 };
static const GUID unknown = { 0xC689AAB8, 0x8E78, 0x11D0, { 0x8C,0x47,
0x00,0xC0,0x4F,0xC2,0x95,0xEE } };
+ static GUID bogusGuid = { 0xdeadbeef, 0xbaad, 0xf00d, { 0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00 } };
ret = funcs->pfnObjectTrust(&data);
ok(ret == S_FALSE, "Expected S_FALSE, got %08x\n", ret);
ok(provDataSIP.psSipSubjectInfo != NULL,
"Expected a subject info\n");
}
+ /* Specifying the GUID results in that GUID being the subject GUID */
+ fileInfo.pgKnownSubject = &bogusGuid;
+ ret = funcs->pfnObjectTrust(&data);
+ ok(ret == S_FALSE, "Expected S_FALSE, got %08x\n", ret);
+ ok(data.padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] ==
+ TRUST_E_NOSIGNATURE ||
+ data.padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] ==
+ TRUST_E_SUBJECT_FORM_UNKNOWN ||
+ data.padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] ==
+ TRUST_E_PROVIDER_UNKNOWN,
+ "Expected TRUST_E_NOSIGNATURE or TRUST_E_SUBJECT_FORM_UNKNOWN or TRUST_E_PROVIDER_UNKNOWN, got %08x\n",
+ data.padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV]);
+ if (data.padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] ==
+ TRUST_E_NOSIGNATURE)
+ {
+ ok(!memcmp(&provDataSIP.gSubject, &bogusGuid, sizeof(bogusGuid)),
+ "unexpected subject GUID\n");
+ }
+ /* Specifying a bogus GUID pointer crashes */
+ if (0)
+ {
+ fileInfo.pgKnownSubject = (GUID *)0xdeadbeef;
+ ret = funcs->pfnObjectTrust(&data);
+ }
funcs->pfnFree(data.padwTrustStepErrors);
}
}
(CERT_CONFIDENCE_SIG | CERT_CONFIDENCE_TIMENEST),
"Expected CERT_CONFIDENCE_SIG | CERT_CONFIDENCE_TIMENEST, got %08x\n",
data.pasSigners[0].pasCertChain[0].dwConfidence);
+ CertFreeCertificateContext(
+ data.pasSigners[0].pasCertChain[0].pCert);
+ CertFreeCertificateChain(data.pasSigners[0].pChainContext);
CertFreeCertificateContext(cert);
}
}