#i20883# macro security

This commit is contained in:
gt 2004-07-16 09:26:28 +00:00
parent a76bcea1de
commit 8b021fa1b3
2 changed files with 88 additions and 29 deletions

View file

@ -2,9 +2,9 @@
* *
* $RCSfile: macrosecurity.hxx,v $ * $RCSfile: macrosecurity.hxx,v $
* *
* $Revision: 1.2 $ * $Revision: 1.3 $
* *
* last change: $Author: gt $ $Date: 2004-07-16 07:52:00 $ * last change: $Author: gt $ $Date: 2004-07-16 10:26:28 $
* *
* The Contents of this file are made available subject to the terms of * The Contents of this file are made available subject to the terms of
* either of the following licenses * either of the following licenses
@ -119,8 +119,16 @@ public:
cssu::Reference< css::lang::XMultiServiceFactory >& rxMSF, cssu::Reference< css::lang::XMultiServiceFactory >& rxMSF,
cssu::Reference< dcss::xml::crypto::XSecurityEnvironment >& rxSecurityEnvironment ); cssu::Reference< dcss::xml::crypto::XSecurityEnvironment >& rxSecurityEnvironment );
virtual ~MacroSecurity(); virtual ~MacroSecurity();
inline void EnableReset( bool _bEnable = true );
}; };
inline void MacroSecurity::EnableReset( bool _bEnable )
{
maResetBtn.Enable ( _bEnable );
}
class MacroSecurityTP : public TabPage class MacroSecurityTP : public TabPage
{ {

View file

@ -2,9 +2,9 @@
* *
* $RCSfile: macrosecurity.cxx,v $ * $RCSfile: macrosecurity.cxx,v $
* *
* $Revision: 1.2 $ * $Revision: 1.3 $
* *
* last change: $Author: gt $ $Date: 2004-07-16 07:51:43 $ * last change: $Author: gt $ $Date: 2004-07-16 10:25:38 $
* *
* The Contents of this file are made available subject to the terms of * The Contents of this file are made available subject to the terms of
* either of the following licenses * either of the following licenses
@ -79,6 +79,29 @@ using namespace ::com::sun::star::security;
// Only for bigIntegerToNumericString // Only for bigIntegerToNumericString
#include <xmlsecurity/xmlsignaturehelper.hxx> #include <xmlsecurity/xmlsignaturehelper.hxx>
#ifndef _FILEDLGHELPER_HXX
#include <sfx2/filedlghelper.hxx>
#endif
#ifndef _PICKERHELPER_HXX
#include <svtools/pickerhelper.hxx>
#endif
#ifndef _COMPHELPER_PROCESSFACTORY_HXX_
#include <comphelper/processfactory.hxx>
#endif
#ifndef _COM_SUN_STAR_UNO_EXCEPTION_HPP_
#include <com/sun/star/uno/Exception.hpp>
#endif
#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#endif
#ifndef _COM_SUN_STAR_UI_DIALOGS_XFOLDERPICKER_HPP_
#include <com/sun/star/ui/dialogs/XFolderPicker.hpp>
#endif
#ifndef _COM_SUN_STAR_UI_DIALOGS_EXECUTABLEDIALOGRESULTS_HPP_
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#endif
#include <tools/urlobj.hxx>
#include "dialogs.hrc" #include "dialogs.hrc"
#include "resourcemanager.hxx" #include "resourcemanager.hxx"
@ -134,6 +157,7 @@ MacroSecurityLevelTP::MacroSecurityLevelTP( Window* _pParent, MacroSecurity* _pD
void MacroSecurityLevelTP::ActivatePage() void MacroSecurityLevelTP::ActivatePage()
{ {
mpDlg->EnableReset();
} }
@ -144,9 +168,12 @@ IMPL_LINK( MacroSecurityTrustedSourcesTP, AddCertPBHdl, void*, EMTYARG )
{ {
uno::Reference< css::security::XCertificate > xCert = aChooser.GetSelectedCertificate(); uno::Reference< css::security::XCertificate > xCert = aChooser.GetSelectedCertificate();
// InsertCert( xCert ); if( xCert.is() )
{
// mpDlg->maCurrentSignatureInformations.push_back( ;
FillCertLB(); FillCertLB();
}
} }
return 0; return 0;
@ -175,16 +202,58 @@ IMPL_LINK( MacroSecurityTrustedSourcesTP, ViewCertPBHdl, void*, EMTYARG )
IMPL_LINK( MacroSecurityTrustedSourcesTP, RemoveCertPBHdl, void*, EMTYARG ) IMPL_LINK( MacroSecurityTrustedSourcesTP, RemoveCertPBHdl, void*, EMTYARG )
{ {
if( maTrustCertLB.FirstSelected() )
{
USHORT nSelected = (USHORT) maTrustCertLB.FirstSelected()->GetUserData();
mpDlg->maCurrentSignatureInformations.erase( mpDlg->maCurrentSignatureInformations.begin()+nSelected );
FillCertLB();
}
return 0; return 0;
} }
IMPL_LINK( MacroSecurityTrustedSourcesTP, AddLocPBHdl, void*, EMTYARG ) IMPL_LINK( MacroSecurityTrustedSourcesTP, AddLocPBHdl, void*, EMTYARG )
{ {
try
{
rtl::OUString aService( RTL_CONSTASCII_USTRINGPARAM( FOLDER_PICKER_SERVICE_NAME ) );
uno::Reference < lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
uno::Reference < ui::dialogs::XFolderPicker > xFolderPicker( xFactory->createInstance( aService ), uno::UNO_QUERY );
short nRet = xFolderPicker->execute();
if( ui::dialogs::ExecutableDialogResults::OK != nRet )
return 0;
String aPathStr = xFolderPicker->getDirectory();
INetURLObject aNewObj( aPathStr );
aNewObj.removeFinalSlash();
// then the new path also an URL else system path
String aNewPathStr = ( aNewObj.GetProtocol() != INET_PROT_NOT_VALID )? aPathStr : aNewObj.getFSysPath( INetURLObject::FSYS_DETECT );
if( maTrustFileLocLB.GetEntryPos( aNewPathStr ) == LISTBOX_ENTRY_NOTFOUND )
{
maTrustFileLocLB.InsertEntry( aNewPathStr );
}
}
catch( uno::Exception& )
{
DBG_ERRORFILE( "MacroSecurityTrustedSourcesTP::AddLocPBHdl(): exception from folder picker" )
}
return 0; return 0;
} }
IMPL_LINK( MacroSecurityTrustedSourcesTP, RemoveLocPBHdl, void*, EMTYARG ) IMPL_LINK( MacroSecurityTrustedSourcesTP, RemoveLocPBHdl, void*, EMTYARG )
{ {
USHORT nSel = maTrustFileLocLB.GetSelectEntryPos();
if( nSel != LISTBOX_ENTRY_NOTFOUND )
{
maTrustFileLocLB.RemoveEntry( nSel );
}
return 0; return 0;
} }
@ -228,32 +297,13 @@ void MacroSecurityTrustedSourcesTP::FillCertLB( void )
const SignatureInformation& rInfo = mpDlg->maCurrentSignatureInformations[n]; const SignatureInformation& rInfo = mpDlg->maCurrentSignatureInformations[n];
xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, numericStringToBigInteger( rInfo.ouX509SerialNumber ) ); xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, numericStringToBigInteger( rInfo.ouX509SerialNumber ) );
// If we don't get it, create it from signature data:
if ( !xCert.is() )
xCert = xSecEnv->createCertificateFromAscii( rInfo.ouX509Certificate ) ;
DBG_ASSERT( xCert.is(), "Certificate not found and can't be created!" );
String aSubject;
String aIssuer;
String aDateTimeStr;
if( xCert.is() ) if( xCert.is() )
{ {
aSubject = XmlSec::GetContentPart( xCert->getSubjectName(), aCN_Id ); SvLBoxEntry* pEntry = maTrustCertLB.InsertEntry( XmlSec::GetContentPart( xCert->getSubjectName(), aCN_Id ) );
aIssuer = XmlSec::GetContentPart( rInfo.ouX509IssuerName, aCN_Id ); maTrustCertLB.SetEntryText( XmlSec::GetContentPart( rInfo.ouX509IssuerName, aCN_Id ), pEntry, 1 );
// aDateTimeStr = XmlSec::GetDateString( xCert->getNotAfter() ); maTrustCertLB.SetEntryText( XmlSec::GetDateTimeString( rInfo.ouDate, rInfo.ouTime ), pEntry, 2 );
aDateTimeStr = XmlSec::GetDateTimeString( rInfo.ouDate, rInfo.ouTime ); pEntry->SetUserData( ( void* ) n ); // missuse user data as index
} }
else
{
#if OSL_DEBUG_LEVEL > 1
aSubject = String::CreateFromAscii( "ERROR getting certificate!" );
#endif
}
SvLBoxEntry* pEntry = maTrustCertLB.InsertEntry( aSubject );
maTrustCertLB.SetEntryText( aIssuer, pEntry, 1 );
maTrustCertLB.SetEntryText( aDateTimeStr, pEntry, 2 );
pEntry->SetUserData( ( void* ) n ); // missuse user data as index
} }
TrustCertLBSelectHdl( NULL ); TrustCertLBSelectHdl( NULL );
@ -292,4 +342,5 @@ MacroSecurityTrustedSourcesTP::MacroSecurityTrustedSourcesTP( Window* _pParent,
void MacroSecurityTrustedSourcesTP::ActivatePage() void MacroSecurityTrustedSourcesTP::ActivatePage()
{ {
mpDlg->EnableReset( false );
} }