2 * PROJECT: ReactOS CryptExt Shell Extension
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: cryptext implementation
5 * COPYRIGHT: Copyright 2019 Mark Jansen (mark.jansen@reactos.org)
10 HINSTANCE g_hInstance
;
12 BOOL WINAPI
DllMain(HINSTANCE hInstance
, DWORD dwReason
, LPVOID lpReserved
)
16 case DLL_PROCESS_ATTACH
:
17 g_hInstance
= hInstance
;
18 DisableThreadLibraryCalls(hInstance
);
26 VOID WINAPI
CryptExtOpenCERW(HWND hWnd
, HINSTANCE hInst
, LPCWSTR file
, DWORD nCmdShow
)
28 PCCERT_CONTEXT pvContext
;
31 if (CryptQueryObject(CERT_QUERY_OBJECT_FILE
, file
, CERT_QUERY_CONTENT_FLAG_CERT
, CERT_QUERY_FORMAT_FLAG_ALL
,
32 0, NULL
, NULL
, NULL
, NULL
, NULL
, (CONST VOID
**)&pvContext
))
34 CRYPTUI_VIEWCERTIFICATE_STRUCTW CertViewInfo
= {0};
35 CertViewInfo
.dwSize
= sizeof(CertViewInfo
);
36 CertViewInfo
.pCertContext
= pvContext
;
37 CryptUIDlgViewCertificateW(&CertViewInfo
, NULL
);
38 CertFreeCertificateContext(pvContext
);
42 WCHAR Message
[MAX_PATH
];
44 if (LoadStringW(g_hInstance
, IDS_INVALIDFILE
, Message
, MAX_PATH
))
46 MessageBoxW(NULL
, Message
, NULL
, MB_OK
);
50 MessageBoxW(NULL
, L
"This is not a valid certificate file.", NULL
, MB_OK
);
57 VOID WINAPI
CryptExtOpenCER(HWND hWnd
, HINSTANCE hInst
, LPCSTR file
, DWORD nCmdShow
)
65 len
= MultiByteToWideChar(CP_ACP
, 0, file
, -1, NULL
, 0);
66 fileW
= HeapAlloc(GetProcessHeap(), 0, len
* sizeof(WCHAR
));
69 MultiByteToWideChar(CP_ACP
, 0, file
, -1, fileW
, len
);
70 CryptExtOpenCERW(hWnd
, hInst
, fileW
, nCmdShow
);
71 HeapFree(GetProcessHeap(), 0, fileW
);