#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 $
*
* $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
* either of the following licenses
@ -119,8 +119,16 @@ public:
cssu::Reference< css::lang::XMultiServiceFactory >& rxMSF,
cssu::Reference< dcss::xml::crypto::XSecurityEnvironment >& rxSecurityEnvironment );
virtual ~MacroSecurity();
inline void EnableReset( bool _bEnable = true );
};
inline void MacroSecurity::EnableReset( bool _bEnable )
{
maResetBtn.Enable ( _bEnable );
}
class MacroSecurityTP : public TabPage
{

View file

@ -2,9 +2,9 @@
*
* $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
* either of the following licenses
@ -79,6 +79,29 @@ using namespace ::com::sun::star::security;
// Only for bigIntegerToNumericString
#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 "resourcemanager.hxx"
@ -134,6 +157,7 @@ MacroSecurityLevelTP::MacroSecurityLevelTP( Window* _pParent, MacroSecurity* _pD
void MacroSecurityLevelTP::ActivatePage()
{
mpDlg->EnableReset();
}
@ -144,10 +168,13 @@ IMPL_LINK( MacroSecurityTrustedSourcesTP, AddCertPBHdl, void*, EMTYARG )
{
uno::Reference< css::security::XCertificate > xCert = aChooser.GetSelectedCertificate();
// InsertCert( xCert );
if( xCert.is() )
{
// mpDlg->maCurrentSignatureInformations.push_back( ;
FillCertLB();
}
}
return 0;
}
@ -175,16 +202,58 @@ IMPL_LINK( MacroSecurityTrustedSourcesTP, ViewCertPBHdl, 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;
}
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;
}
IMPL_LINK( MacroSecurityTrustedSourcesTP, RemoveLocPBHdl, void*, EMTYARG )
{
USHORT nSel = maTrustFileLocLB.GetSelectEntryPos();
if( nSel != LISTBOX_ENTRY_NOTFOUND )
{
maTrustFileLocLB.RemoveEntry( nSel );
}
return 0;
}
@ -228,33 +297,14 @@ void MacroSecurityTrustedSourcesTP::FillCertLB( void )
const SignatureInformation& rInfo = mpDlg->maCurrentSignatureInformations[n];
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() )
{
aSubject = XmlSec::GetContentPart( xCert->getSubjectName(), aCN_Id );
aIssuer = XmlSec::GetContentPart( rInfo.ouX509IssuerName, aCN_Id );
// aDateTimeStr = XmlSec::GetDateString( xCert->getNotAfter() );
aDateTimeStr = XmlSec::GetDateTimeString( rInfo.ouDate, rInfo.ouTime );
}
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 );
SvLBoxEntry* pEntry = maTrustCertLB.InsertEntry( XmlSec::GetContentPart( xCert->getSubjectName(), aCN_Id ) );
maTrustCertLB.SetEntryText( XmlSec::GetContentPart( rInfo.ouX509IssuerName, aCN_Id ), pEntry, 1 );
maTrustCertLB.SetEntryText( XmlSec::GetDateTimeString( rInfo.ouDate, rInfo.ouTime ), pEntry, 2 );
pEntry->SetUserData( ( void* ) n ); // missuse user data as index
}
}
TrustCertLBSelectHdl( NULL );
}
@ -292,4 +342,5 @@ MacroSecurityTrustedSourcesTP::MacroSecurityTrustedSourcesTP( Window* _pParent,
void MacroSecurityTrustedSourcesTP::ActivatePage()
{
mpDlg->EnableReset( false );
}