crypt32: Also import user/admin defined root certificates on macOS.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
2129e335f2
commit
c53d6a4a7c
|
@ -580,26 +580,35 @@ static void load_root_certs(void)
|
|||
DWORD i;
|
||||
|
||||
#ifdef HAVE_SECURITY_SECURITY_H
|
||||
const SecTrustSettingsDomain domains[] = {
|
||||
kSecTrustSettingsDomainSystem,
|
||||
kSecTrustSettingsDomainAdmin,
|
||||
kSecTrustSettingsDomainUser
|
||||
};
|
||||
OSStatus status;
|
||||
CFArrayRef rootCerts;
|
||||
CFArrayRef certs;
|
||||
DWORD domain;
|
||||
|
||||
status = SecTrustCopyAnchorCertificates(&rootCerts);
|
||||
if (status == noErr)
|
||||
for (domain = 0; domain < ARRAY_SIZE(domains); domain++)
|
||||
{
|
||||
for (i = 0; i < CFArrayGetCount(rootCerts); i++)
|
||||
status = SecTrustSettingsCopyCertificates(domains[domain], &certs);
|
||||
if (status == noErr)
|
||||
{
|
||||
SecCertificateRef cert = (SecCertificateRef)CFArrayGetValueAtIndex(rootCerts, i);
|
||||
CFDataRef certData;
|
||||
if ((status = SecKeychainItemExport(cert, kSecFormatX509Cert, 0, NULL, &certData)) == noErr)
|
||||
for (i = 0; i < CFArrayGetCount(certs); i++)
|
||||
{
|
||||
BYTE *data = add_cert( CFDataGetLength(certData) );
|
||||
if (data) memcpy( data, CFDataGetBytePtr(certData), CFDataGetLength(certData) );
|
||||
CFRelease(certData);
|
||||
SecCertificateRef cert = (SecCertificateRef)CFArrayGetValueAtIndex(certs, i);
|
||||
CFDataRef certData;
|
||||
if ((status = SecKeychainItemExport(cert, kSecFormatX509Cert, 0, NULL, &certData)) == noErr)
|
||||
{
|
||||
BYTE *data = add_cert( CFDataGetLength(certData) );
|
||||
if (data) memcpy( data, CFDataGetBytePtr(certData), CFDataGetLength(certData) );
|
||||
CFRelease(certData);
|
||||
}
|
||||
else
|
||||
WARN("could not export certificate %d to X509 format: 0x%08x\n", i, (unsigned int)status);
|
||||
}
|
||||
else
|
||||
WARN("could not export certificate %d to X509 format: 0x%08x\n", i, (unsigned int)status);
|
||||
CFRelease(certs);
|
||||
}
|
||||
CFRelease(rootCerts);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue