#include "os/c-api/il2cpp-config-platforms.h" #if IL2CPP_TARGET_WINDOWS_DESKTOP || IL2CPP_TARGET_WINRT || IL2CPP_TARGET_WINDOWS_GAMES #include "os/SystemCertificates.h" #include "WindowsHeaders.h" namespace il2cpp { namespace os { void* SystemCertificates::OpenSystemRootStore() { HCERTSTORE hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_STORE_READONLY_FLAG, L"ROOT"); if (hStore == NULL) return 0; return hStore; } int SystemCertificates::EnumSystemCertificates(void* certStore, void** iter, int *format, int* size, void** data) { HCERTSTORE hStore = (HCERTSTORE)certStore; *format = DATATYPE_INTPTR; // Build list of system certificates PCCERT_CONTEXT pContext = (PCCERT_CONTEXT)*iter; if (pContext = CertEnumCertificatesInStore(hStore, pContext)) { *iter = (void*)pContext; *data = pContext->pbCertEncoded; *size = pContext->cbCertEncoded; return TRUE; } else if (*iter) { CertFreeCertificateContext((PCCERT_CONTEXT)*iter); } return FALSE; } void SystemCertificates::CloseSystemRootStore(void* cStore) { CertCloseStore((HCERTSTORE)cStore, 0); } } } #endif // IL2CPP_TARGET_WINDOWS_DESKTOP || IL2CPP_TARGET_WINRT || IL2CPP_TARGET_WINDOWS_GAMES