VBoxCertUtil.cpp revision e0aea2581bc6b2ef936af38b0915b2a95001c069
1N/A * available from http://www.virtualbox.org. This file is free software;
1N/A#include <Wincrypt.h>
if (pWinComMsg)
return s_szErr;
void *pvFile;
if (pCertCtx)
NULL))
RTMsgInfo("Successfully added '%s' to the '%ls' store (ctx type %u)", pszFilename, pwszStore, dwContextType);
return rcExit;
bool fRc = false;
void *pvFile;
if (*ppOutCtx)
fRc = true;
return fRc;
return hStore;
bool fRc = false;
if (hDstStore)
if (pSrcCtx)
fRc = true;
unsigned cDeleted = 0;
if (CertCompareCertificate(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pCurCtx->pCertInfo, pSrcCtx->pCertInfo))
if (pDeleteCtx)
cDeleted++;
RTMsgError("CertDuplicateCertificateContext('%ls') failed: %s\n", wszName, errorToString(GetLastError()));
if (!cDeleted)
if (pSrcCtx)
if (hSrcStore)
return fRc;
static bool addCertToStore(DWORD dwDst, const char *pszStoreNm, const char *pszCertFile, DWORD dwDisposition)
bool fRc = false;
if (hDstStore)
if (pSrcCtx)
fRc = true;
if (pSrcCtx)
if (hSrcStore)
return fRc;
static BOOL WINAPI displaySystemStoreCallback(const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo,
RTPrintf(" pvSystemStore=%p dwFlags=%#x pStoreInfo=%p pvReserved=%p\n", pvSystemStore, dwFlags, pStoreInfo, pvReserved);
const CERT_SYSTEM_STORE_RELOCATE_PARA *pRelPara = (const CERT_SYSTEM_STORE_RELOCATE_PARA *)pvSystemStore;
if (hStore)
if (CertGetNameStringW(pCertCtx, CERT_NAME_SIMPLE_DISPLAY_TYPE, CERT_NAME_ISSUER_FLAG, NULL /*pvTypePara*/,
RTMsgError("CertOpenStore failed opening %#x:'%ls': %s\n", dwDst, pwszStoreNm, errorToString(GetLastError()));
return TRUE;
static BOOL WINAPI displaySystemStoreLocation(LPCWSTR pwszStoreLocation, DWORD dwFlags, void *pvReserved, void *pvArg)
return TRUE;
return RTMsgErrorExit(RTEXITCODE_SYNTAX, "CertEnumSystemStoreLocation failed: %s\n", errorToString(GetLastError()));
return RTEXITCODE_SUCCESS;
int rc;
switch (rc)
return RTEXITCODE_SUCCESS;
if (pszRootCert)
case VINF_GETOPT_NOT_OPTION:
if (pszTrustedCert)
if (!pszTrustedCert)
if ( pszRootCert
return RTEXITCODE_FAILURE;
if (!removeCertFromStoreByFile(CERT_SYSTEM_STORE_LOCAL_MACHINE, "TrustedPublisher", pszTrustedCert))
return RTEXITCODE_FAILURE;
if (g_cVerbosityLevel > 0)
if (pszRootCert)
RTMsgInfo("Successfully removed '%s' as root and '%s' as trusted publisher", pszRootCert, pszTrustedCert);
return RTEXITCODE_SUCCESS;
int rc;
switch (rc)
return RTEXITCODE_SUCCESS;
if (pszRootCert)
case VINF_GETOPT_NOT_OPTION:
if (pszTrustedCert)
if (!pszTrustedCert)
if ( pszRootCert
return RTEXITCODE_FAILURE;
if (!addCertToStore(CERT_SYSTEM_STORE_LOCAL_MACHINE, "TrustedPublisher", pszTrustedCert, CERT_STORE_ADD_NEW))
return RTEXITCODE_FAILURE;
if (g_cVerbosityLevel > 0)
if (pszRootCert)
RTMsgInfo("Successfully added '%s' as root and '%s' as trusted publisher", pszRootCert, pszTrustedCert);
return RTEXITCODE_SUCCESS;
} VCUACTION;
switch (rc)
if (g_cVerbosityLevel > 0)
return RTEXITCODE_SUCCESS;
return RTEXITCODE_SUCCESS;
case VCUACTION_DISPLAY_ALL:
return RTEXITCODE_SYNTAX;