20#include <com/sun/star/xml/crypto/XSecurityEnvironment.hpp>
21#include <com/sun/star/security/DocumentDigitalSignatures.hpp>
24#include <osl/file.hxx>
25#include <rtl/ustrbuf.hxx>
41 std::u16string_view
GetContentPart( std::u16string_view _rRawString, std::u16string_view _rPartId )
43 std::u16string_view s;
45 size_t nContStart = _rRawString.find( _rPartId );
46 if( nContStart != std::u16string_view::npos )
48 nContStart = nContStart + _rPartId.size();
51 size_t nContEnd = _rRawString.find(
',', nContStart );
53 if ( nContEnd != std::u16string_view::npos )
54 s = _rRawString.substr( nContStart, nContEnd - nContStart );
56 s = _rRawString.substr( nContStart );
64 : MessageDialogController(pParent,
"uui/ui/macrowarnmedium.ui",
"MacroWarnMedium",
"grid")
65 , mxGrid(m_xBuilder->weld_widget(
"grid"))
66 , mxSignsFI(m_xBuilder->weld_label(
"signsLabel"))
67 , mxViewSignsBtn(m_xBuilder->weld_button(
"viewSignsButton"))
68 , mxAlwaysTrustCB(m_xBuilder->weld_check_button(
"alwaysTrustCheckbutton"))
69 , mxEnableBtn(m_xBuilder->weld_button(
"ok"))
70 , mxDisableBtn(m_xBuilder->weld_button(
"cancel"))
72 , mbShowSignatures ( _bWithSignatures )
92 osl::FileBase::getFileURLFromSystemPath(rDocURL, aPath);
99 DBG_ASSERT( mxCert.is(),
"*MacroWarning::ViewSignsBtnHdl(): no certificate set!" );
101 uno::Reference< security::XDocumentDigitalSignatures > xD(
105 xD->setParentWindow(
m_xDialog->GetXWindow());
107 xD->showCertificate( mxCert );
108 else if( mxStore.is() )
109 xD->showScriptingContentSignatures( mxStore, uno::Reference< io::XInputStream >() );
115 if (mxAlwaysTrustCB->get_active())
117 uno::Reference< security::XDocumentDigitalSignatures > xD(
119 xD->setParentWindow(
m_xDialog->GetXWindow());
121 xD->addAuthorToTrustedSources( mxCert );
122 else if( mxStore.is() )
124 DBG_ASSERT( mpInfos,
"-MacroWarning::EnableBtnHdl(): no infos, search in nirvana..." );
126 sal_Int32 nCnt = mpInfos->getLength();
127 for( sal_Int32
i = 0 ;
i < nCnt ; ++
i )
128 xD->addAuthorToTrustedSources( (*mpInfos)[
i ].Signer );
141 const bool bEnable = (mnActSecLevel < 2 || mxAlwaysTrustCB->get_active());
142 mxEnableBtn->set_sensitive(bEnable);
143 mxDisableBtn->set_sensitive(!mxAlwaysTrustCB->get_active());
170 const OUString& aODFVersion,
171 const css::uno::Sequence< security::DocumentSignatureInformation >& rInfos )
175 sal_Int32 nCnt = rInfos.getLength();
176 if( !(
mxStore.is() && nCnt > 0) )
180 OUString aCN_Id(
"CN");
181 OUStringBuffer s(
GetContentPart( rInfos[ 0 ].Signer->getSubjectName(), aCN_Id ));
183 for( sal_Int32
i = 1 ;
i < nCnt ; ++
i )
185 s.append(OUString::Concat(
"\n")
189 mxSignsFI->set_label(s.makeStringAndClear());
Reference< XExecutableDialog > m_xDialog
OUString GetLastName(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
std::unique_ptr< weld::Widget > mxGrid
MacroWarning(weld::Window *pParent, bool _bShowSignatures)
std::unique_ptr< weld::Button > mxEnableBtn
void SetStorage(const css::uno::Reference< css::embed::XStorage > &rxStore, const OUString &aODFVersion, const css::uno::Sequence< css::security::DocumentSignatureInformation > &_rInfos)
void SetDocumentURL(const OUString &rDocURL)
css::uno::Reference< css::embed::XStorage > mxStore
std::unique_ptr< weld::CheckButton > mxAlwaysTrustCB
std::unique_ptr< weld::Button > mxDisableBtn
void SetCertificate(const css::uno::Reference< css::security::XCertificate > &_rxCert)
std::unique_ptr< weld::Label > mxSignsFI
css::uno::Reference< css::security::XCertificate > mxCert
std::unique_ptr< weld::Button > mxViewSignsBtn
const bool mbShowSignatures
const css::uno::Sequence< css::security::DocumentSignatureInformation > * mpInfos
std::unique_ptr< weld::MessageDialog > m_xDialog
#define DBG_ASSERT(sCon, aError)
#define LINK(Instance, Class, Member)
bool IsReadOnly(EOption eOption)
sal_Int32 GetMacroSecurityLevel()
OUString GetContentPart(const OUString &_rRawString, const css::security::CertificateKind &rKind)
Reference< XComponentContext > getProcessComponentContext()
IMPL_LINK_NOARG(MacroWarning, ViewSignsBtnHdl, weld::Button &, void)
IMPL_STATIC_LINK_NOARG(MacroWarning, InstallLOKNotifierHdl, void *, vcl::ILibreOfficeKitNotifier *)
VCL_DLLPUBLIC Application * GetpApp()