mirror of
https://github.com/reactos/reactos.git
synced 2025-05-18 00:31:27 +00:00
[CRYPT32] Bring back the code path that had r64026 and r66349 until we adapt our changes to the new code. CORE-12409 CORE-12446
svn path=/trunk/; revision=73353
This commit is contained in:
parent
dc7472be71
commit
e98102ef8a
1 changed files with 83 additions and 1 deletions
|
@ -428,6 +428,57 @@ static BOOL import_certs_from_path(LPCSTR path, HCERTSTORE store,
|
|||
return ret;
|
||||
}
|
||||
|
||||
#ifdef __REACTOS__
|
||||
|
||||
static BOOL WINAPI CRYPT_RootWriteCert(HCERTSTORE hCertStore,
|
||||
PCCERT_CONTEXT cert, DWORD dwFlags)
|
||||
{
|
||||
/* The root store can't have certs added */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL WINAPI CRYPT_RootDeleteCert(HCERTSTORE hCertStore,
|
||||
PCCERT_CONTEXT cert, DWORD dwFlags)
|
||||
{
|
||||
/* The root store can't have certs deleted */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL WINAPI CRYPT_RootWriteCRL(HCERTSTORE hCertStore,
|
||||
PCCRL_CONTEXT crl, DWORD dwFlags)
|
||||
{
|
||||
/* The root store can have CRLs added. At worst, a malicious application
|
||||
* can DoS itself, as the changes aren't persisted in any way.
|
||||
*/
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL WINAPI CRYPT_RootDeleteCRL(HCERTSTORE hCertStore,
|
||||
PCCRL_CONTEXT crl, DWORD dwFlags)
|
||||
{
|
||||
/* The root store can't have CRLs deleted */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void *rootProvFuncs[] = {
|
||||
NULL, /* CERT_STORE_PROV_CLOSE_FUNC */
|
||||
NULL, /* CERT_STORE_PROV_READ_CERT_FUNC */
|
||||
CRYPT_RootWriteCert,
|
||||
CRYPT_RootDeleteCert,
|
||||
NULL, /* CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC */
|
||||
NULL, /* CERT_STORE_PROV_READ_CRL_FUNC */
|
||||
CRYPT_RootWriteCRL,
|
||||
CRYPT_RootDeleteCRL,
|
||||
NULL, /* CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC */
|
||||
NULL, /* CERT_STORE_PROV_READ_CTL_FUNC */
|
||||
NULL, /* CERT_STORE_PROV_WRITE_CTL_FUNC */
|
||||
NULL, /* CERT_STORE_PROV_DELETE_CTL_FUNC */
|
||||
NULL, /* CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC */
|
||||
NULL, /* CERT_STORE_PROV_CONTROL_FUNC */
|
||||
};
|
||||
|
||||
#endif /* __REACTOS__ */
|
||||
|
||||
static const char * const CRYPT_knownLocations[] = {
|
||||
"/etc/ssl/certs/ca-certificates.crt",
|
||||
"/etc/ssl/certs",
|
||||
|
@ -736,17 +787,48 @@ static void read_trusted_roots_from_known_locations(HCERTSTORE store)
|
|||
|
||||
static HCERTSTORE create_root_store(void)
|
||||
{
|
||||
#ifdef __REACTOS__
|
||||
HCERTSTORE root = NULL;
|
||||
#endif
|
||||
HCERTSTORE memStore = CertOpenStore(CERT_STORE_PROV_MEMORY,
|
||||
X509_ASN_ENCODING, 0, CERT_STORE_CREATE_NEW_FLAG, NULL);
|
||||
|
||||
if (memStore)
|
||||
{
|
||||
#ifdef __REACTOS__
|
||||
HCERTSTORE regStore;
|
||||
CERT_STORE_PROV_INFO provInfo = {
|
||||
sizeof(CERT_STORE_PROV_INFO),
|
||||
sizeof(rootProvFuncs) / sizeof(rootProvFuncs[0]),
|
||||
rootProvFuncs,
|
||||
NULL,
|
||||
0,
|
||||
NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
read_trusted_roots_from_known_locations(memStore);
|
||||
add_ms_root_certs(memStore);
|
||||
#ifdef __REACTOS__
|
||||
root = CRYPT_ProvCreateStore(0, memStore, &provInfo);
|
||||
regStore = CertOpenStore(CERT_STORE_PROV_SYSTEM_W, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, L"AuthRoot");
|
||||
if (regStore)
|
||||
{
|
||||
HCERTSTORE collStore = CertOpenStore(CERT_STORE_PROV_COLLECTION, 0, 0,
|
||||
CERT_STORE_CREATE_NEW_FLAG, NULL);
|
||||
CertAddStoreToCollection(collStore, regStore, 0, 0);
|
||||
CertAddStoreToCollection(collStore, root, 0, 0);
|
||||
root = collStore;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef __REACTOS__
|
||||
TRACE("returning %p\n", root);
|
||||
return root;
|
||||
#else
|
||||
TRACE("returning %p\n", memStore);
|
||||
return memStore;
|
||||
#endif
|
||||
}
|
||||
|
||||
static const WCHAR certs_root_pathW[] =
|
||||
|
|
Loading…
Reference in a new issue