Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
84a26e5c
Commit
84a26e5c
authored
Dec 17, 2008
by
Juan Lang
Committed by
Alexandre Julliard
Dec 18, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cryptui: Show cert chain in hierarchy page.
parent
e958485f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
115 additions
and
14 deletions
+115
-14
Makefile.in
dlls/cryptui/Makefile.in
+1
-1
cryptui.rc
dlls/cryptui/cryptui.rc
+3
-0
cryptuires.h
dlls/cryptui/cryptuires.h
+1
-0
main.c
dlls/cryptui/main.c
+110
-13
smallicons.bmp
dlls/cryptui/smallicons.bmp
+0
-0
No files found.
dlls/cryptui/Makefile.in
View file @
84a26e5c
...
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
...
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
SRCDIR
=
@srcdir@
SRCDIR
=
@srcdir@
VPATH
=
@srcdir@
VPATH
=
@srcdir@
MODULE
=
cryptui.dll
MODULE
=
cryptui.dll
IMPORTS
=
uuid crypt32 ole32 comctl32 user32 kernel32
IMPORTS
=
uuid crypt32 ole32 comctl32 user32
gdi32
kernel32
DELAYIMPORTS
=
wintrust urlmon
DELAYIMPORTS
=
wintrust urlmon
IMPORTLIB
=
cryptui
IMPORTLIB
=
cryptui
...
...
dlls/cryptui/cryptui.rc
View file @
84a26e5c
...
@@ -25,6 +25,9 @@
...
@@ -25,6 +25,9 @@
#include "cryptuires.h"
#include "cryptuires.h"
/* @makedep: smallicons.bmp */
IDB_SMALL_ICONS BITMAP LOADONCALL DISCARDABLE smallicons.bmp
/* @makedep: cert.bmp */
/* @makedep: cert.bmp */
IDB_CERT BITMAP LOADONCALL DISCARDABLE cert.bmp
IDB_CERT BITMAP LOADONCALL DISCARDABLE cert.bmp
...
...
dlls/cryptui/cryptuires.h
View file @
84a26e5c
...
@@ -83,6 +83,7 @@
...
@@ -83,6 +83,7 @@
#define IDD_HIERARCHY 102
#define IDD_HIERARCHY 102
#define IDD_USERNOTICE 103
#define IDD_USERNOTICE 103
#define IDB_SMALL_ICONS 200
#define IDB_CERT 201
#define IDB_CERT 201
#define IDB_CERT_ERROR 202
#define IDB_CERT_ERROR 202
#define IDB_CERT_WARNING 203
#define IDB_CERT_WARNING 203
...
...
dlls/cryptui/main.c
View file @
84a26e5c
...
@@ -1744,14 +1744,96 @@ static BOOL init_detail_page(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo,
...
@@ -1744,14 +1744,96 @@ static BOOL init_detail_page(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo,
struct
hierarchy_data
struct
hierarchy_data
{
{
PCCRYPTUI_VIEWCERTIFICATE_STRUCTW
pCertViewInfo
;
PCCRYPTUI_VIEWCERTIFICATE_STRUCTW
pCertViewInfo
;
HIMAGELIST
imageList
;
DWORD
selectedCert
;
DWORD
selectedCert
;
};
};
static
WCHAR
*
get_cert_property_as_string
(
PCCERT_CONTEXT
cert
,
DWORD
prop
)
{
WCHAR
*
name
=
NULL
;
DWORD
cb
;
if
(
CertGetCertificateContextProperty
(
cert
,
prop
,
NULL
,
&
cb
))
{
name
=
HeapAlloc
(
GetProcessHeap
(),
0
,
cb
);
if
(
name
)
{
if
(
!
CertGetCertificateContextProperty
(
cert
,
prop
,
(
LPBYTE
)
name
,
&
cb
))
{
HeapFree
(
GetProcessHeap
(),
0
,
name
);
name
=
NULL
;
}
}
}
return
name
;
}
static
WCHAR
*
get_cert_display_name
(
PCCERT_CONTEXT
cert
)
{
WCHAR
*
name
=
get_cert_property_as_string
(
cert
,
CERT_FRIENDLY_NAME_PROP_ID
);
if
(
!
name
)
name
=
get_cert_name_string
(
cert
,
CERT_NAME_SIMPLE_DISPLAY_TYPE
,
0
);
return
name
;
}
static
void
show_cert_chain
(
HWND
hwnd
,
struct
hierarchy_data
*
data
)
{
HWND
tree
=
GetDlgItem
(
hwnd
,
IDC_CERTPATH
);
CRYPT_PROVIDER_SGNR
*
provSigner
=
WTHelperGetProvSignerFromChain
(
(
CRYPT_PROVIDER_DATA
*
)
data
->
pCertViewInfo
->
u
.
pCryptProviderData
,
data
->
pCertViewInfo
->
idxSigner
,
data
->
pCertViewInfo
->
fCounterSigner
,
data
->
pCertViewInfo
->
idxCounterSigner
);
DWORD
i
;
HTREEITEM
parent
=
NULL
;
SendMessageW
(
tree
,
TVM_SETIMAGELIST
,
TVSIL_NORMAL
,
(
LPARAM
)
data
->
imageList
);
for
(
i
=
provSigner
->
csCertChain
;
i
;
i
--
)
{
LPWSTR
name
;
name
=
get_cert_display_name
(
provSigner
->
pasCertChain
[
i
-
1
].
pCert
);
if
(
name
)
{
TVINSERTSTRUCTW
tvis
;
tvis
.
hParent
=
parent
;
tvis
.
hInsertAfter
=
TVI_LAST
;
tvis
.
u
.
item
.
mask
=
TVIF_TEXT
|
TVIF_STATE
|
TVIF_IMAGE
|
TVIF_SELECTEDIMAGE
;
tvis
.
u
.
item
.
pszText
=
name
;
tvis
.
u
.
item
.
state
=
TVIS_EXPANDED
;
tvis
.
u
.
item
.
stateMask
=
TVIS_EXPANDED
;
if
(
i
==
1
&&
(
provSigner
->
pChainContext
->
TrustStatus
.
dwErrorStatus
&
CERT_TRUST_IS_PARTIAL_CHAIN
))
{
/* The root of the chain has a special case: if the chain is
* a partial chain, the icon is a warning icon rather than an
* error icon.
*/
tvis
.
u
.
item
.
iImage
=
2
;
}
else
if
(
provSigner
->
pasCertChain
[
i
-
1
].
pChainElement
->
TrustStatus
.
dwErrorStatus
==
0
)
tvis
.
u
.
item
.
iImage
=
0
;
else
tvis
.
u
.
item
.
iImage
=
1
;
tvis
.
u
.
item
.
iSelectedImage
=
tvis
.
u
.
item
.
iImage
;
parent
=
(
HTREEITEM
)
SendMessageW
(
tree
,
TVM_INSERTITEMW
,
0
,
(
LPARAM
)
&
tvis
);
HeapFree
(
GetProcessHeap
(),
0
,
name
);
}
}
}
static
void
show_cert_hierarchy
(
HWND
hwnd
,
struct
hierarchy_data
*
data
)
static
void
show_cert_hierarchy
(
HWND
hwnd
,
struct
hierarchy_data
*
data
)
{
{
/* Disable view certificate button until a certificate is selected */
/* Disable view certificate button until a certificate is selected */
EnableWindow
(
GetDlgItem
(
hwnd
,
IDC_VIEWCERTIFICATE
),
FALSE
);
EnableWindow
(
GetDlgItem
(
hwnd
,
IDC_VIEWCERTIFICATE
),
FALSE
);
FIXME
(
"show cert chain
\n
"
);
show_cert_chain
(
hwnd
,
data
);
FIXME
(
"show cert status
\n
"
);
}
}
static
LRESULT
CALLBACK
hierarchy_dlg_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wp
,
static
LRESULT
CALLBACK
hierarchy_dlg_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wp
,
...
@@ -1782,6 +1864,7 @@ static UINT CALLBACK hierarchy_callback(HWND hwnd, UINT msg,
...
@@ -1782,6 +1864,7 @@ static UINT CALLBACK hierarchy_callback(HWND hwnd, UINT msg,
{
{
case
PSPCB_RELEASE
:
case
PSPCB_RELEASE
:
data
=
(
struct
hierarchy_data
*
)
page
->
lParam
;
data
=
(
struct
hierarchy_data
*
)
page
->
lParam
;
ImageList_Destroy
(
data
->
imageList
);
HeapFree
(
GetProcessHeap
(),
0
,
data
);
HeapFree
(
GetProcessHeap
(),
0
,
data
);
break
;
break
;
}
}
...
@@ -1797,18 +1880,32 @@ static BOOL init_hierarchy_page(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo,
...
@@ -1797,18 +1880,32 @@ static BOOL init_hierarchy_page(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo,
if
(
data
)
if
(
data
)
{
{
data
->
pCertViewInfo
=
pCertViewInfo
;
data
->
imageList
=
ImageList_Create
(
16
,
16
,
ILC_COLOR4
|
ILC_MASK
,
2
,
0
);
data
->
selectedCert
=
0xffffffff
;
if
(
data
->
imageList
)
{
memset
(
page
,
0
,
sizeof
(
PROPSHEETPAGEW
));
HBITMAP
bmp
;
page
->
dwSize
=
sizeof
(
PROPSHEETPAGEW
);
COLORREF
backColor
=
RGB
(
255
,
0
,
255
);
page
->
dwFlags
=
PSP_USECALLBACK
;
page
->
hInstance
=
hInstance
;
data
->
pCertViewInfo
=
pCertViewInfo
;
page
->
u
.
pszTemplate
=
MAKEINTRESOURCEW
(
IDD_HIERARCHY
);
data
->
selectedCert
=
0xffffffff
;
page
->
pfnDlgProc
=
hierarchy_dlg_proc
;
page
->
lParam
=
(
LPARAM
)
data
;
bmp
=
LoadBitmapW
(
hInstance
,
MAKEINTRESOURCEW
(
IDB_SMALL_ICONS
));
page
->
pfnCallback
=
hierarchy_callback
;
ImageList_AddMasked
(
data
->
imageList
,
bmp
,
backColor
);
ret
=
TRUE
;
DeleteObject
(
bmp
);
ImageList_SetBkColor
(
data
->
imageList
,
CLR_NONE
);
memset
(
page
,
0
,
sizeof
(
PROPSHEETPAGEW
));
page
->
dwSize
=
sizeof
(
PROPSHEETPAGEW
);
page
->
dwFlags
=
PSP_USECALLBACK
;
page
->
hInstance
=
hInstance
;
page
->
u
.
pszTemplate
=
MAKEINTRESOURCEW
(
IDD_HIERARCHY
);
page
->
pfnDlgProc
=
hierarchy_dlg_proc
;
page
->
lParam
=
(
LPARAM
)
data
;
page
->
pfnCallback
=
hierarchy_callback
;
ret
=
TRUE
;
}
else
HeapFree
(
GetProcessHeap
(),
0
,
data
);
}
}
return
ret
;
return
ret
;
}
}
...
...
dlls/cryptui/smallicons.bmp
0 → 100644
View file @
84a26e5c
2.3 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment