1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_xmlsecurity.hxx"
26 
27 #include <xmlsecurity/warnings.hxx>
28 #include <xmlsecurity/certificateviewer.hxx>
29 #include <com/sun/star/xml/crypto/XSecurityEnvironment.hpp>
30 #include <comphelper/sequence.hxx>
31 
32 // MM : added for password exception
33 #include <vcl/msgbox.hxx>
34 #include <com/sun/star/security/NoPasswordException.hpp>
35 using namespace ::com::sun::star::security;
36 
37 
38 #include "dialogs.hrc"
39 #include "resourcemanager.hxx"
40 
41 /* HACK: disable some warnings for MS-C */
42 #ifdef _MSC_VER
43 #pragma warning (disable : 4355)	// 4355: this used in initializer-list
44 #endif
45 
46 using namespace ::com::sun::star;
47 using namespace ::com::sun::star;
48 
49 
MacroWarning(Window * _pParent,uno::Reference<dcss::xml::crypto::XSecurityEnvironment> & _rxSecurityEnvironment,cssu::Reference<dcss::security::XCertificate> & _rxCert)50 MacroWarning::MacroWarning( Window* _pParent, uno::Reference< dcss::xml::crypto::XSecurityEnvironment >& _rxSecurityEnvironment, cssu::Reference< dcss::security::XCertificate >& _rxCert )
51 	:ModalDialog		( _pParent, XMLSEC_RES( RID_XMLSECTP_MACROWARN ) )
52 	,maDocNameFI		( this, ResId( FI_DOCNAME ) )
53 	,maDescr1aFI		( this, ResId( FI_DESCR1A ) )
54 	,maDescr1bFI		( this, ResId( FI_DESCR1B ) )
55 	,maSignsFI			( this, ResId( FI_SIGNS ) )
56 	,maViewSignsBtn		( this, ResId( PB_VIEWSIGNS ) )
57 	,maDescr2FI			( this, ResId( FI_DESCR2 ) )
58 	,maAlwaysTrustCB	( this, ResId( CB_ALWAYSTRUST ) )
59 	,maBottomSepFL		( this, ResId( FL_BOTTOM_SEP ) )
60 	,maEnableBtn		( this, ResId( PB_DISABLE ) )
61 	,maDisableBtn		( this, ResId( PB_DISABLE ) )
62 	,maHelpBtn			( this, ResId( BTN_HELP ) )
63 	,mbSignedMode		( true )
64 {
65 	FreeResource();
66 
67 	mxSecurityEnvironment = _rxSecurityEnvironment;
68 	mxCert = _rxCert;
69 
70 	// hide unused parts
71 	maDescr1bFI.Hide();
72 
73 	maViewSignsBtn.SetClickHdl( LINK( this, MacroWarning, ViewSignsBtnHdl ) );
74 	maEnableBtn.SetClickHdl( LINK( this, MacroWarning, EnableBtnHdl ) );
75 //	maDisableBtn.SetClickHdl( LINK( this, MacroWarning, DisableBtnHdl ) );
76 
77 	if( mxCert.is() )
78         maSignsFI.SetText( XmlSec::GetContentPart( mxCert->getSubjectName() ) );
79 	else
80 		// nothing to view!
81 		maViewSignsBtn.Disable();
82 }
83 
MacroWarning(Window * _pParent)84 MacroWarning::MacroWarning( Window* _pParent )
85 	:ModalDialog		( _pParent, XMLSEC_RES( RID_XMLSECTP_MACROWARN ) )
86 	,maDocNameFI		( this, ResId( FI_DOCNAME ) )
87 	,maDescr1aFI		( this, ResId( FI_DESCR1A ) )
88 	,maDescr1bFI		( this, ResId( FI_DESCR1B ) )
89 	,maSignsFI			( this, ResId( FI_SIGNS ) )
90 	,maViewSignsBtn		( this, ResId( PB_VIEWSIGNS ) )
91 	,maDescr2FI			( this, ResId( FI_DESCR2 ) )
92 	,maAlwaysTrustCB	( this, ResId( CB_ALWAYSTRUST ) )
93 	,maBottomSepFL		( this, ResId( FL_BOTTOM_SEP ) )
94 	,maEnableBtn		( this, ResId( PB_DISABLE ) )
95 	,maDisableBtn		( this, ResId( PB_DISABLE ) )
96 	,maHelpBtn			( this, ResId( BTN_HELP ) )
97 	,mbSignedMode		( false )
98 {
99 	FreeResource();
100 
101 	// hide unused parts
102 	maDescr1aFI.Hide();
103 	maSignsFI.Hide();
104 	maViewSignsBtn.Hide();
105 	maAlwaysTrustCB.Hide();
106 	maDescr2FI.Hide();
107 
108 	// move hint up to position of signer list
109 	maDescr1bFI.SetPosPixel( maSignsFI.GetPosPixel() );
110 }
111 
~MacroWarning()112 MacroWarning::~MacroWarning()
113 {
114 }
115 
IMPL_LINK(MacroWarning,ViewSignsBtnHdl,void *,EMPTYARG)116 IMPL_LINK( MacroWarning, ViewSignsBtnHdl, void*, EMPTYARG )
117 {
118 	DBG_ASSERT( mxCert.is(), "*MacroWarning::ViewSignsBtnHdl(): no certificate set!" );
119 
120 	CertificateViewer	aViewer( this, mxSecurityEnvironment, mxCert );
121 	aViewer.Execute();
122 
123     return 0;
124 }
125 
IMPL_LINK(MacroWarning,EnableBtnHdl,void *,EMPTYARG)126 IMPL_LINK( MacroWarning, EnableBtnHdl, void*, EMPTYARG )
127 {
128 	if( mbSignedMode && maAlwaysTrustCB.IsChecked() )
129 	{	// insert path into trusted path list
130 
131 	}
132 
133 	EndDialog( RET_OK );
134     return 0;
135 }
136 
137 /*IMPL_LINK( MacroWarning, DisableBtnHdl, void*, EMPTYARG )
138 {
139     return 0;
140 }*/
141 
142